迅维网

楼主: luotuo001231
打印 上一主题 下一主题

CPU 是怎么认识代码的?

[复制链接]
21#
发表于 2020-2-23 20:58:03 | 只看该作者 来自: 中国 来自 中国
谢邀,作为一个嵌入式工程师,从MCU的角度来看这个问题,分三点吧~
1. CPU/MCU的程序在哪里执行?
我们要让一个MCU(以基于Cortex M4内核的MCU为例)跑起来(程序运行起来),电源、时钟(外部晶振or内部晶振都可)、复位电路必不可少,也就是我们说的最小系统(图很丑),当然需要将程序烧录到Flash或者RAM中,另外还需要烧录调试接口。
最小系统有了,程序在哪里运行呢?程序一般放在内部或者外部Flash中,参考如下厂商给我们分配好了Flash,RAM地址,我们根据程序的设置可以选择从Flash或者RAM启动。
2. 高级语言转换成机器可执行语言需要哪些步骤?
程序烧录到MCU的flash中了,怎么转换为机器识别码呢,一般的有Compile 、Link 、Loader的过程以及Image(二进制程序)启动几个步骤,这些过程一般有IDE(集成开发环境)来实现,当然也可以自己慢慢折腾,上图吧~
一般的基于Cortex M4内核MCU厂商提供的启动代码一般为汇编源文件(.s).当然也有例外比如TI。
3. MCU怎么执行这些执行文件的呢?
上面已经将程序编译成可执行的映像文件了,MCU就可以执行这些代码了~
基于Cortex M4的MCU内部实际上是各种晶体管,经过不同的设计排列组合成指令后的集合体;该架构属于哈佛结构。
如下中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。如ST公司的STM32F4系列芯片的程序指令是16/32位宽度,而数据是32位宽度。
推荐《System-on-Chip Design with Arm Cortex-M Processors》,可以看看市面上这些厂商是怎么一步一步设计一颗基于ARM Cortex M内核的MCU。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复