NOR Flash启动怎么将code部分加载到TCM运行?
这两天折腾DCB,IVT,DCD什么的,总算是在nor flash上实现XIP了。不过看了DCB等一系列配置文件,好像都没看到有让Boot ROM将代码加载到TCM的功能,而文档说判断是否XIP,否的化加载到OCRAM运行这部分,又如何实现?nor flash的固件固定只能XIP? BOOT ROM搬运的话,灵活性太差,适合量产的时候用用。 实际上建议放弃这种方式,详情可看此贴做的讨论和总结,简单易用。http://www.armbbs.cn/forum.php?mod=viewthread&tid=86360
BOOT ROM搬运适合SD卡,eMMC , NAND等启动方式,他们本身不支持XIP,可以把代码加载到SDRAM或者TCM运行。 修改一下linkerfile,把ROdata塞到TCM的空间去 如果要从 TCM boot,就需要改变IVT 和 boot data了,假如你的 linker file里应用从0x2000_2000开始(前4KB 是 reserved的,IVT 从 DTCM offset 0x1000处开始)
那IVT放在地址放在地址0x2000_1000. IVT 结构体里各个field分别为:
header = 0x422000d1
entry = 0x20002000
reserved1 = 0
dcd = 0
boot_data = 0x20001020
self = 0x20001000
csf = 0
reserved2=0,
boot_data里各个field分别为
start = 0x20000000
length = <actual image size> (从 0x2000_0000 到 image end)
plugin = 0
可能是因为我说不清楚,或者是我还没了解的这玩意。
例如我按MIMXRT1052xxxxx_ram.scf这个散列加载文件编译出来的程序,直接debug(IDE直接load到RAM)没问题,如何实现将这个程序直接塞进NOR Flash里面运行?自带BOOT ROM有没有这个功能?还是只能自己弄个loader?能否直接在前面添加那堆configuration block,IVT,boot_data,DCD来实现?现在我知道的操作只有改用nor flash xip的方式运行(编译的时候就改为0x6000XXXX的地址)。
不知道有没有文档详细说BOOT ROM的工作流程。
按照unknownuser大神所说,IVT跟boot_data改为DTCM的地址,ROOT ROM就会将image 加载过去运行?TCM是0x00000000,在哪里设置? eddy0317 发表于 2018-5-9 17:08
可能是因为我说不清楚,或者是我还没了解的这玩意。
例如我按MIMXRT1052xxxxx_ram.scf这个散列加载文件 ...
我得澄清一下,编译器自带的Flashloader是不支持你这样需求的,所以你得用MfgTool来烧。ITCM里的方式和DTCM类似的改动。 unknownuser 发表于 2018-5-9 18:56
我得澄清一下,编译器自带的Flashloader是不支持你这样需求的,所以你得用MfgTool来烧。ITCM里的方式和DT ...
我知道,不能用编译器直接弄,要靠elftosb等工具。在官方论坛看到有人有相同的需求了。等会晚点去看看。谢谢大神回复。
页:
[1]