硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2770|回复: 7
收起左侧

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

[复制链接]

7

主题

102

回帖

123

积分

初级会员

积分
123
发表于 2018-5-9 14:00:08 | 显示全部楼层 |阅读模式
这两天折腾DCB,IVT,DCD什么的,总算是在nor flash上实现XIP了。不过看了DCB等一系列配置文件,好像都没看到有让Boot ROM将代码加载到TCM的功能,而文档说判断是否XIP,否的化加载到OCRAM运行这部分,又如何实现?nor flash的固件固定只能XIP?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2018-5-9 14:19:29 | 显示全部楼层
BOOT ROM搬运的话,灵活性太差,适合量产的时候用用。 实际上建议放弃这种方式,详情可看此贴做的讨论和总结,简单易用。

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

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2018-5-9 14:28:42 | 显示全部楼层
BOOT ROM搬运适合SD卡,eMMC , NAND等启动方式,他们本身不支持XIP,可以把代码加载到SDRAM或者TCM运行。
回复

使用道具 举报

5

主题

197

回帖

212

积分

高级会员

积分
212
发表于 2018-5-9 14:47:50 | 显示全部楼层
修改一下linkerfile,把ROdata塞到TCM的空间去
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 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

回复

使用道具 举报

7

主题

102

回帖

123

积分

初级会员

积分
123
 楼主| 发表于 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,在哪里设置?
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 2018-5-9 18:56:40 | 显示全部楼层
eddy0317 发表于 2018-5-9 17:08
可能是因为我说不清楚,或者是我还没了解的这玩意。

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

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

使用道具 举报

7

主题

102

回帖

123

积分

初级会员

积分
123
 楼主| 发表于 2018-5-9 19:03:48 | 显示全部楼层
unknownuser 发表于 2018-5-9 18:56
我得澄清一下,编译器自带的Flashloader是不支持你这样需求的,所以你得用MfgTool来烧。ITCM里的方式和DT ...

我知道,不能用编译器直接弄,要靠elftosb等工具。在官方论坛看到有人有相同的需求了。等会晚点去看看。谢谢大神回复。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-12 14:11 , Processed in 0.295250 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表