eddy0317 发表于 2018-5-9 14:00:08

NOR Flash启动怎么将code部分加载到TCM运行?

这两天折腾DCB,IVT,DCD什么的,总算是在nor flash上实现XIP了。不过看了DCB等一系列配置文件,好像都没看到有让Boot ROM将代码加载到TCM的功能,而文档说判断是否XIP,否的化加载到OCRAM运行这部分,又如何实现?nor flash的固件固定只能XIP?

eric2013 发表于 2018-5-9 14:19:29

BOOT ROM搬运的话,灵活性太差,适合量产的时候用用。 实际上建议放弃这种方式,详情可看此贴做的讨论和总结,简单易用。

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86360

eric2013 发表于 2018-5-9 14:28:42

BOOT ROM搬运适合SD卡,eMMC , NAND等启动方式,他们本身不支持XIP,可以把代码加载到SDRAM或者TCM运行。

alexyzhov 发表于 2018-5-9 14:47:50

修改一下linkerfile,把ROdata塞到TCM的空间去

unknownuser 发表于 2018-5-9 15:14:35

如果要从 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

eddy0317 发表于 2018-5-9 17:08:33

可能是因为我说不清楚,或者是我还没了解的这玩意。

例如我按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,在哪里设置?

unknownuser 发表于 2018-5-9 18:56:40

eddy0317 发表于 2018-5-9 17:08
可能是因为我说不清楚,或者是我还没了解的这玩意。

例如我按MIMXRT1052xxxxx_ram.scf这个散列加载文件 ...

我得澄清一下,编译器自带的Flashloader是不支持你这样需求的,所以你得用MfgTool来烧。ITCM里的方式和DTCM类似的改动。

eddy0317 发表于 2018-5-9 19:03:48

unknownuser 发表于 2018-5-9 18:56
我得澄清一下,编译器自带的Flashloader是不支持你这样需求的,所以你得用MfgTool来烧。ITCM里的方式和DT ...

我知道,不能用编译器直接弄,要靠elftosb等工具。在官方论坛看到有人有相同的需求了。等会晚点去看看。谢谢大神回复。
页: [1]
查看完整版本: NOR Flash启动怎么将code部分加载到TCM运行?