嵌入式代码是如何在芯片(SOC)上跑起来的? | 您所在的位置:网站首页 › 手机b站的嵌入代码在哪里看 › 嵌入式代码是如何在芯片(SOC)上跑起来的? |
SOC是啥?System on Chip。一个芯片,但是片上有好多东西的意思。市面上的AI芯片、包括你知道的麒麟xxx,骁龙xxx等等一系列手机芯片都是SOC。对于SOC设计者来讲,显然要知道码农们码出来的一行行代码是如何在SOC上跑起来的。 一段C代码要在SOC上跑起来,一般需要6个步骤。 左面绿框里的东西是在PC机上进行的,主要就是把你写的C代码变成二进制的机器码。 右面紫框里是PCB板,红框就是一颗芯片。只有红框里的芯片显然是不可能运行的。你至少要有电源,FLASH,晶振这些。 红框里就是芯片内的东西。此处画了一个最最最简单的AI芯片SOC。此处介绍一个最最最小的SOC架构: 1)ARM-M3是个CPU,可以换成RISC-V或者其他系列的CPU,都没问题。 2)AXI是个总线。你可以理解为一种用于传输数据的模块或者总线。用于两个模块或者多个模块之间相互递数据。反正它有一堆优点。。被SOC广泛采用了。 3)SRAM是片上存储器,用来存储堆栈,速度很快。 4)NPU是个神经网络加速单元。这个东西现在市面上一堆一堆。比如寒武纪最原始就是给华为提供这个IP。(当然,后来华为把寒武纪踹了开始自己写这个NPU) 5)APB,AXI是高速总线,但总有好多外设其实不需要那么快的速度。为了防止AXI太忙,所以一般有个慢速的总线,APB。挂一些慢的东西,例如UART。
堆栈初始化 定义中断向量表
这个小程序就是默认的初始化操作。其实就干了两件事儿,把你写的二进制代码文件从FLASH里搬到SRAM里,然后开始运行(bl main).
emmm 感觉上述就是如何设计一个最小SOC系统并在系统上跑一个helloworld,实际上里面涉及到的细节非常多。比如UART如何用起来的, FLASH怎么接进去的。复位信号也不是一个RESET这么简单,往往有power-on reset, system reset等等一堆。但是原理上就是上面讲的这些。 以上来自桔里猫的原创分享: zhuanlan.zhihu.com/p/157520100 |
CopyRight 2018-2019 实验室设备网 版权所有 |