【MCU简单且容易理解的工作原理】

2024-01-04

SOC是啥?System on Chip. 一个芯片,但是片上有好多东西的意思。市面上的AI芯片、包括你知道的麒麟xxx,骁龙xxx等等一些列手机芯片都是SOC。对于SOC设计者来讲,显然要知道码农们码出来的一行行代码是如何在SOC上跑起来的。

本文是科普向的,只介绍重要的步骤,省略了大量细节,希望用尽量非专业的词汇介绍概念。如果要真的研究这些东西,还需要大量阅读文档。

0.概览

一段C代码要在SOC上跑起来,一般需要6个步骤。

v2-5305c7a90a38be1df6e400584cca6106_1440w.webp

这是一个总图。包括了最简单的编译流程以及一个SOC可以跑的最小系统。左面绿框里的东西是在PC机上进行的,主要就是把你写的C代码变成二进制的机器码。

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

  • FLASH是存储你写的程序的二进制文件的。
  • 电源是干啥的你应当很清楚?
  • 晶振是给芯片提供时钟(Clock)的。当然芯片内部会有PLL来接收晶振的时钟。
  • Reset是个按钮。重置芯片的。你可以理解为上电后自动按一下。你手动也可以按一下。
  • UART是输出信息用的。毕竟你要知道你的helloworld到底跑了没有,需要把结果通过某个东西输出来。

红框里就是芯片内的东西。此处画了一个最最最简单的AI芯片SOC。此处介绍一个最最最小的SOC架构。稍微复杂一点的设计见 桔里猫:AI SOC芯片里面有什么

  • ARM-M3是个CPU。你可以换成RISC-V或者其他系列的CPU。都没问题。
  • AXI是个总线。你要想知道具体怎么连接的看这篇文章 桔里猫:SOC中AXI总线是如何连接的 。你要是想进一步了解一下AXI协议看这篇文章 桔里猫:AXI总线你需要知道的事儿
  • SRAM是片上的存储器。用来存储堆栈啊什么的。速度很快。
  • NPU是个神经网络加速单元。这个东西现在市面上一堆一堆。比如寒武纪最原始就是给华为提供这个IP。(当然,后来华为把寒武纪踹了开始自己写这个NPU)
  • APB。AXI是高速总线,但总有好多外设其实不需要那么快的速度。为了防止AXI太忙,所以一般有个慢速的总线,APB。挂一些慢的东西。例如UART。

STEP1 准备启动文件

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

1.1 堆栈初始化

v2-67986615ceece7e62044b659d01f01c8_1440w.webp

上图是中startup.s里面栈的初始化。。。主要就是分配一下大小。重置一下指针。堆原理一样。

1.2 定义中断向量表

v2-8bc46aa9f54acdd3f95ea6bd65f5607c_1440w.webp

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

1.3 调用ResetHandler

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

v2-4492877b4f433e241ae080ae76e590a2_1440w.webp

STEP2 编写业务代码

这一步应该你比较熟。就是你的c文件。一般来讲学c语言写的第一个程序就是这个。

printf("Hello Word!\n");

STEP3 编译生成机器码

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

v2-e018df0200f1329bec0c370a867a548e_1440w.webp

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

STEP4 烧写FLASH

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

v2-f747906474b4484776d7eb83e18d7a4e_1440w.webp

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

STEP5 RESET

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

STEP6 CPU开始执行

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

STEP7 输出计算结果

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

总结

emmm 感觉上述就是如何设计一个最小SOC系统并在系统上跑一个helloworld. 实际上里面涉及到的细节非常多。比如UART如何用起来的, FLASH怎么接进去的。复位信号也不时一个RESET这么简单。往往有power-on reset, system reset等等一堆。但是原理上就是上面讲的这些。写的时候好多东西我比较熟悉了所以想当然的给省略了,如果有什么不清楚的可以讨论。往后有机会再令写文章补充比较细节的步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MCU简单且容易理解的工作原理】 的相关文章

随机推荐

  • Python selenium模块的安装和配置教程

    一 selenium的安装以及简单应用 我们以谷歌浏览器的chromedriver为例 1 在Python虚拟环境中安装selenium模块 pip pip3 install selenium 2 下载版本符合的webdriver 以chr
  • 山西电力市场日前价格预测【2024-01-05】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 05 山西电力市场全天平均日前电价为259 10元 MWh 其中 最高日前电价为363 99元 MWh 预计出现在18 00 最低日前电价为0 00元 MWh 预计出现在11 1
  • 大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化

    文章目录 0 前言 1 环境准备 1 1 flink 下载相关 jar 包 1 2 生成 kafka 数据 1 3 开发前的三个小 tip 2 flink sql 客户端编写运行 sql 2 1 创建 kafka 数据源表
  • ICT行业“样品”相关业务挑战及解决方案介绍

    ICT行业供应链样品相关业务介绍 在信息通信技术 ICT 行业中 研发打样 结构件打样和非0价打样是研发和产品设计过程中的重要环节 下面我会通过具体的业务场景来解释这些概念 1 研发打样 场景例子 一家手机制造公司正在开发一款新型智能手机
  • 视频转文字用什么软件好?我来分享几款给你

    各位打工人是不是总是会接到整理会议视频的任务 你是否也曾为在整理会议视频时因为手速跟不上说话节奏而烦恼 你也曾因为转录大量内容而纠结于低效率的问题 你是否也曾为无法同时转录多个声音源而无法理解全场对话而苦恼 如果是的话不妨来看看下面这篇文章
  • Git Bash教程

    Git Bash教程 Pull操作 Pull操作 输入 git pull 呈现 base root xx git pull https github com xx xx git 得到 remote Enumerating objects 5
  • DC电源模块的应用范围与市场前景

    DC电源模块的应用范围与市场前景 DC电源模块广泛应用于各种电子设备和系统中 包括通信设备 计算机 工业自动化设备 医疗设备 航天航空设备 新能源设备等 它们为这些设备提供稳定的直流电源 保证设备的正常运行 DC电源模块主要用于为电子设备提
  • 判断字符串是否是16进制颜色工具类

    该方法接受一个字符串参数colorCode 表示需要校验的十六进制颜色值 方法内部使用正则表达式来匹配colorCode是否符合规则 如果 符合则返回true 否则返回false 正则表达式解释 表示匹配字符串的开头 表示匹配 字符 表示一
  • 光端机技术综述:从理论到实践的全面探索

    在当今数据驱动的时代 光端机技术 已成为通信领域的核心组成部分 从理论的深度研究到实践的广泛应用 光端机技术不断推动着信息社会的发展 成为连接不同设备和网络的关键技术 技术特点 高速数据传输 光端机 利用光纤传输数据 具有极高的传输速率 相
  • .cer格式证书文件和 .pfx格式证书文件有什么区别?

    这里我们将讨论 cer 和 pfx 文件类型之间的差异 什么是数字证书 数字证书在电子通信中用作验证身份的密码机制 我们需要这些证书来建立安全的在线通信渠道 并确保数字数据的隐私 真实性和正确性 数字证书包括主题 实体详细信息 颁发者 CA
  • 3 分钟为英语学习神器 Anki 部署一个专属同步服务器

    Anki 介绍 Anki 是一款基于间隔重复 Spaced Repetition 原理的学习软件 想象一下 你的大脑就像是一个需要定期维护的精密仪器 间隔重复就好比是一种精准的维护计划 它通过在最佳时刻复习信息 来确保知识在你的脑海中牢固地
  • 代码随想录算法训练营Day17 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

    LeetCode 530 二叉搜索树的最小绝对差 本题思路 看到二叉搜索树 我们可以知道 它的中序遍历的有序的 并且是单调递增 如下图所示 然后我们就可以计算出相隔的两个数之间的差值 然后找到最小的那一个即可 定义一个初始为 min 第二个
  • 组建一家IT公司的一些事项

    组建一家IT公司需要考虑多个方面 包括确定公司名称 选择注册地点 确定公司类型 组建团队 选择合适的技术和平台以及建立良好的客户关系等 以下是一些详细的步骤和建议 一 组建事项 确定公司名称 在选择公司名称时 需要考虑名称的含义和市场竞争性
  • 看完这篇 教你玩转镜像转换神器qumu实现虚拟机做题自由!

    前言 最近有小伙伴说比赛没设备 问有没有不需要设备也能实现做题自由的方法 今天这里分享一期 看完这篇你将学会 使用 qumu 转换镜像格式 一般我们做题都是 img 格式的环境 需要导入设备 有些小伙伴没有设备 就可以使用这种方法 把 im
  • 【2023最新版】黑客入门教程|三分钟手把手教会,非常简单

    前言 你知道在每天上网时 有多少黑客正在浏览我们计算机中的重要数据吗 黑客工具的肆意传播 使得即使是稍有点计算机基础的人 就可以使用简单的工具对网络中一些疏于防范的主机进行攻击 在入侵成功之后 对其中的数据信息为所欲为 当用户发现密码被盗
  • 【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

    对比学习允许模型从未标记的数据中提取有意义的表示 通过利用相似性和不相似性 对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起 同时将那些不同的实例分开 这种方法已被证明在计算机视觉 自然语言处理 NLP 和强化学习等不同领域都是有
  • 【计算机毕设选题】opencv python 深度学习垃圾图像分类系统

    文章目录 0 前言 课题简介 一 识别效果 二 实现 1 数据集 2 实现原理和方法 3 网络结构 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升
  • IPFS技术:构建可持久安全的全球文件系统

    IPFS InterPlanetary File System 是一种点对点的分布式文件系统 旨在建立一个可持久且安全的全球文件系统 它采用了一种创新的数据组织方式 将文件以Merkle有向无环图 DAG 的形式存储和分发 实现了去中心化的
  • 编译 nccl-tests 项目

    1 编译 下载源代码 git clone recursive https github com NVIDIA nccl tests git 编译源代码 cd nccl tests make j 2 运行 cd build all reduc
  • 【MCU简单且容易理解的工作原理】

    SOC是啥 System on Chip 一个芯片 但是片上有好多东西的意思 市面上的AI芯片 包括你知道的麒麟xxx 骁龙xxx等等一些列手机芯片都是SOC 对于SOC设计者来讲 显然要知道码农们码出来的一行行代码是如何在SOC上跑起来的