单片机启动流程和存储架构详解

最近在给公司的ADAS DCU做内存分配(Memory Allocation),在这儿记录一下相关知识点,也算是给中文社区做贡献了。

 

目录:

1. ECU启动流程

2. 存储空间解析

3. TC397单片机的Memory Map和一些备注

 

 

1. ECU启动流程

图总比文字直观:

如上图所示,上电以后其实就三步:  "运行ROM的启动函数 -- 跳转到FLASH里的Startup函数 -- 跳转到我们熟悉的main函数"  。 所以FLASH里的Startup函数其实才是最先执行,且用户可以修改的函数。只是它一般都被封装好了,所以才没有接触到。

如果你想写BootLoader,就在Startup函数的基础上改就ok了。

 

2. 存储空间解析

 

以下将对上面那张图的PFLASH,DFLASH等名词进行解释:

重要且有用的:

2.1  掉电后数据不会消失的FLASH,EEPROM

PFLASH: Program Flash用来存程序,价格便宜,配的容量也大,我用的这款足有16M

DFLASH: Data Flash用来存用户数据,虽然叫Flash其实它是EEPROM,成本比FLASH高,我这款才1M多

FLASH 和EEPROM的最大区别是FLASH按扇区(section)擦写,用来存储程序这种大但不太频繁更改的data,成本低。EEPROM则按字节(Byte)擦写,存储用户数据这种小的,零碎的,总是在变的data时,擦写速度快。

 

 

2.2 掉电后数据会消失的RAM

RAM:速度快,甚至会比Flash快50%以上。由于RAM空间有限,单片机运行的时候,程序存储在flash,但数据会存储在RAM,即CPU从flash中取指令,从RAM中抓数据。

 

重要但没啥用的:【直接转到第三章如果你赶时间】

扩展阅读:

a: 当然你也可以可以通过#pragma CODE_SECTION等将程序先从Flash拷到RAM里面,再在RAM里面运行,来提升运行速度。详见Running an Application from Internal Flash Memory 第四章“Copying Sections from Flash to RAM” [1]

b: 冯诺依曼,哈佛结构: [2]

 


2.3 链接文件(Linker File)

总的来说linker file用来定义数据和代码具体存放在哪一块。比如它会规定存储在Flash的启动函数_START()的存储地址和BootROM里面reset vector内预设的地址匹配,这样复位以后就总会从启动函数_START()开始执行

  • 即reg.h 里面将寄存器的地址重命名,所以向寄存器写其实就等于向该地址赋值
  • 而link file里面则是将函数变量存在哪个地址做了规定

具体定义见下图:

这张图进一步解释了linker file在存储中的作用[3] :

 

 

 

3. TC397单片机的Memory Map和一些备注

先来一张从用户手册里拿来的单片机Memory Map:

 

 

可以看到:

1. 对这款6核ECU,core0到5都有自己的专属FLASH,大小为3M(core5是1M),读取它有专属的接口FPIn,速度快 

2. 每个core内部都有16k的program cache和16k的data cache。 PSPR和DSPR稍大,看起来是2级缓存

3. 这6个core没有太大的区别,唯一就是core0和core1的DSPR(data scrachpad RAM)大一些。240KB,其他的core是96KB

4. 可以用的RAM还有LMU,DAM和4M的EMEM。但根据datasheet,DAM不支持ASIL B及以上的软件【becasue of hardware safety mechanism】

5. 对于第一条里提到的FLASH,对于同一块物理存储空间。它们可以在地址0x8000,0000通过总线进行cache access,也可以在地址0xA000,0000通过总线进行non-cache access, 这是比较有意思的

6. 因为是TC397 -ADAS,所以有额外的EMES,SPU,RIF,CIF以及扩展的HSM

 

 

Reference:

1. http://www.ti.com/lit/an/spra958l/spra958l.pdf

2. https://blog.csdn.net/jj163zhuangzi/article/details/47088843 

3. http://downloads.ti.com/docs/esd/SLAU131U/introduction-to-sections-stdz0691509.html 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章