全部学习汇总: GitHub - GreyZhang/g_TC275: happy hacking for TC275!
这一次看一个全新的章节,BootROM,这是我之前只听过但是没有接触过的一个功能。
1. BootROM包含的三个主要的功能:启动软件、引导加载程序、测试固件。
2. 启动代码只会在CPU0上运行,其他的CPU都会停止。在MCU的硬件设计上会确保PC在复位的时候指向这个位置。
3. 启动代码的最后一条指令会检查是否是测试模式,如果是的话会跳转到测试固件。
4. 启动代码会判断不同的触发事件,一次来执行不同的流程。
5. Flash的读取其实也是需要初始化的,这个在开发习以为常之后可能会被忽略掉。
1. 相比其他的复位事件,上电复位是最为繁琐的,因为处理的内容最多。所有的相关功能都需要进行一次处理。
2. 相比于上电复位,热启动少了RAM初始化的过程,因此速度会快一些。这个启动的过程中会检查一些EVR之类的供电是否正常之类的条件。热启动的几种触发方式:看门狗等内部硬件、复位PIN等外部部件、软件触发。
3. 还有一种复位方式是应用复位,触发方式跟热启动相似,但是这个触发模式是什么呢?
1. CPU0的DSPR比较特殊,因为可能会被BootROM给覆盖掉,因此在使用的时候需要专门注意。
2. standby的模式处理有一个很明确的流程需要注意,这一个在用到的时候需要仔细排查。
1. 用户软件的启动地址是固定的,这个是从A0000020H这个内部flash地址开启的。
2. 引导加载模式支持ASC和CAN两种模式,还有一种通用模式可以兼容2个进行选择。而两个模式正好使用了ASC和CAN公用复用功能的管脚。
3. ABM,选择启动模式。可以让用户选择自己的软件的启动地址。看起来,这个可能是APP脱离BootLoader依然可以继续进行独立启动的一个实现方式。
UCB可以实现启动锁定,这样前面的引导加载程序应该就无效了。
1. 启动模式的Header是一个固定值。
2. 软件的有效性有一个CRC校验,前面的8个字节计算出来的结果写入到第18个地址偏移位置上去。理解上,这个应该由编译器来实现的一种行为。
启动模式的选择有一套固定的流程,文字描述有时候会比较繁琐难懂。通过这种流程图的方式能够很容易看懂相应的过程。
这个流程图是启动模式Header中的一个模式选择。
这是对HWCFG配置进行的一个详细说明,之前看DS的时候也看到了,但是没有看到这样的准确描述。从描述看,HWCFG[3]似乎是没有什么用的。而启动,可以有4种启动的模式可以选择。
这里看到一个很值得注意的一个功能,那就是锁步功能的开启其实是在BootROM中的。
MCU有时钟的旁通模式,这个也是在BootROM中配置的。
ESR0是一个专门的硬件针脚,主要是提供外部复位请求用的。
这一次的BootROM梳理暂且到此,看了一下大概的章节内容信息,下一次应该能够把这个章节大概看完。