首页 » 智能 » 你码的代码是若安在SOC芯片上跑起来的_芯片_是个

你码的代码是若安在SOC芯片上跑起来的_芯片_是个

乖囧猫 2024-12-25 15:17:30 0

扫一扫用手机浏览

文章目录 [+]

来自清华大学工学博士桔里猫用科普的办法为先容SOC代码的主要步骤,个中省略了大量细节,只管即便用非专业的词汇讲清楚。
当然,如果要真的研究这些东西,还须要大量阅读文档。

1.概览

一段C代码要在SOC上跑起来,一样平常须要6个步骤。

你码的代码是若安在SOC芯片上跑起来的_芯片_是个 你码的代码是若安在SOC芯片上跑起来的_芯片_是个 智能

这是一个总图,包括了最大略的编译流程以及一个SOC可以跑的最小系统。

你码的代码是若安在SOC芯片上跑起来的_芯片_是个 你码的代码是若安在SOC芯片上跑起来的_芯片_是个 智能
(图片来自网络侵删)

左面绿框里的东西是在PC机上进行的,紧张便是把你写的C代码变成二进制的机器码。

右面紫框里是PCB板,红框便是一颗芯片
只有红框里的芯片显然是不可能运行的。
你至少要有电源,FLASH,晶振这些。

FLASH是存储你写的程序的二进制文件的。

电源是干啥的,应该很清楚。

晶振是给芯片供应时钟(Clock)的。
当然芯片内部会有PLL来吸收晶振的时钟。

Reset是个按钮,重置芯片的,理解为上电后自动按一下。
你手动也可以按一下。

UART是输出信息用的。
毕竟你要知道你的helloworld到底跑了没有,须要把结果通过某个东西输出来。

红框里便是芯片内的东西。
此处画了一个最最最大略的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。

嵌入式物联网的学习之路非常漫长,不少人由于学习路线不对或者学习内容不足专业而错失落高薪offer。
不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。
点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!
记得点赞、关注、收藏、转发哦!

点击这里找小助理0元领取:扫码进群领资料

2.准备启动文件

此处我们先要写好一个叫startup.s的文件。
这个文件直接是用汇编写的,紧张完成三个事情:堆栈的初始化,定位中断向量表,调用启动函数。

堆栈初始化

上图是startup.s里面栈的初始化,紧张便是分配一下大小,重置一下指针。

定义中断向量表

上图便是定义的中断向量表,实在你可以理解这个便是各个小函数的地址。
要放在Flash的0位置处。
例如你要运行Reset_Handler这个小程序,PC就会先先访问这个中断向量表,得知Resethandler在哪个地址,然后PC跳到相应的位置开始实行Resethandler, 里面定义了各种中断发生后CPU要做的事儿(小程序)。

调用ResetHandler

这个小程序便是默认的初始化操作。
实在就干了两件事儿,把你写的二进制代码文件从FLASH里搬到SRAM里,然后开始运行(bl main).

3.编写业务代码

这一步你该当比较熟,便是你的c文件。
一样平常来讲学c措辞写的第一个程序便是这个。

4.编译天生机器码

第三步是把写的代码变成机器可以认识的二进制文件。
一样平常用到的工具是GCC,包括了链接、编译等等一大堆东西。
此处为了大略阐明,你可以理解为把startup.s翻译成二进制,把hellowolrd.c翻译成二进制。
然后把两段二进制拼起来,最终生成code.bin。
里面的东西如下图所示。

天生这个code.bin往后,基本上电脑编译这一步就算完成了。
下一步便是下载到开拓板了。

5.烧写FLASH

第三步天生的code.bin总归是个文件。
在你的PC机上,如何让它跑在SOC上呢?这须要一个媒介,便是FLASH,这是个小的存储芯片。
至于怎么烧写进去,就要用这个烧写器。
实在一样平常来讲接口都会设计的很优雅,比如用个micro usb啥的,不会让你抱着砖写FLASH的。

总之,第四步结束往后code.bin就到flash里面了。

6.烧写FLASH

第五步是要复位一下芯片系统。
为什么要复位一下这个,你可能要对数字芯片有一定的理解,让芯片里的各个寄存器规复到初始状态。
大体阐明一下的话,CPU里存在一个寄存器叫PC。
例如PC=2,就从存储2位置处取出指令来实行。
这个复位便是让PC规复到0,开始跑。

7.CPU开始实行

emmm 到这一步,CPU开始跑程序。
先跑startup.s, 再跑helloworld.c。

8.输出打算结果

等打算结束往后,要输出结果(结果也是一串二进制数)。
这时候数据先从ARM写到AXI总线,然后通过AXI-APB纵线桥写到APB,然后写到UART串口。
末了你用串口线就能把结果在PC机上看到。

总结

emmm 觉得上述便是如何设计一个最小SOC系统并在系统上跑一个helloworld,实际上里面涉及到的细节非常多。
比如UART如何用起来的, FLASH怎么接进去的。
复位旗子暗记也不是一个RESET这么大略,每每有power-on reset, system reset等等一堆。
但是事理上便是上面讲的这些。

标签:

相关文章

自学IT之路,一位女孩的奋斗与突破

在这个信息化时代,科技的发展日新月异,IT行业成为了许多年轻人的梦想之地。而在这个领域,一位女孩凭借自己的努力,自学IT,最终实现...

智能 2024-12-27 阅读0 评论0

自由海燕,翱翔在蓝色星空的勇者

在浩瀚的海洋中,有一群勇敢的海燕,它们不畏艰险,自由翱翔。它们就是被誉为“海洋中的精灵”的自由海燕。本文将从自由海燕的特点、生活习...

智能 2024-12-27 阅读0 评论0

关于BGA老化座的优势_探针_耐高温

•紧凑型设计,提高老化测试板容量; •采取翻盖加螺旋下压构造,操作方便; •压块构造合理,下压速率线性可控,下压力度平...

智能 2024-12-27 阅读0 评论0

Inconel751镍铬合金成分介绍_合金_核能

Inconel751是一种镍铬合金,它具有良好的高温耐磨性、强度、耐堕落性和热稳定性。紧张由镍、铬、钛等元素组成。广泛运用于航空航...

智能 2024-12-27 阅读0 评论0