这就跟你问声好!我感到困惑,想要一些帮助来理解引导过程中的QSPI缓存模式与ble (DA14681)。
在文件UM-B-044(软件参考)中,我不清楚,在flash中从图像的保留区域中截取8字节(参考图43)?正如我所理解的,必须有两个补丁条目(4×2),必须在启动过程复制到RAM。我们要把这些条目弄丢吗?
根据我的理解:IVT(192)+64(patch)=256, 48个patch字节来自0x8000 0000,所以预留区域必须是64,而不是56。
请告诉我,我心里怎么了?
也……嗯- b - 044:
简单地将头文件添加到二进制图像中会使整个图像在flash中移位并损坏
所有函数地址的代码都是错误的。相反,bin2image只修改第一个
0 x100字节。
但是在一个- b - 046 - _da1468x_booting_from_serial_interface:
flash头包含添加在flash二进制图像上的8个字节,将前248个字节向下移动8个字节。
这是否意味着248字节后有8个零字节?但是248-192=56,不是64 (patch)
设备:
嗨Mikle,
感谢您的在线查询。让我来解释一下重定向到RAM是如何发生的。
因此,(192 + 64)= 256字节(0x100)将被重定向到第一个RAM单元,该单元是固定的,不会因任何闪存地址移位而改变。
谢谢,PM_Dialog
非常感谢您的回复
1.flash的内存布局是否需要所有的应用程序,即在112个补丁字节之后总是有208个字节在保留区雷竞技安卓下载域?
2.也在数据表da14681-01-ds-v3.0在第36段“memory map”说:QSPI flash from 0x800 0000。
但是在软件参考um-b-044-da1468x中…在图43中显示:0x8000 0100,即在0x8之后有3个零,而不是n数据表中的2个零。
也许我错了?
3.还有,你回答说:
第一个RAM单元(0x07C000),图0x7c0000,但在数据表RAM开始于0x7fc 0000。
什么是正确的?
正如我所看到的,section .init_text在ble_adv示例.elf开始于0x800 0100,而不是在数据集(我关于MSB字节)。
4.所以我的主要问题是:a)加载器执行后映射的地址(从0x0000 0000)指向48个补丁字节?
B)什么映射地址指向代码(208后保留字节)在flash?
请不要因为我愚蠢的问题而扔石头。
嗨Mikle,
是的,这个区域总是保留的,以便为跳转表保留可扩展性,以实现ROM补丁。QSPI flash从0x800 0000开始。代码和数据从0x800 0100开始。RAM从0x7FC0000开始,您是正确的-这是一个输入错误!关于你的最后一个问题,你能解释一下吗?
谢谢,PM_Dialog
非常感谢。
我的最后一个问题是关于重新映射到0x0后的代码地址(在flash中为800100的代码)。即IVT在0x0000 0000, 48补丁字节在0x0000 0100, 208保留字节在0x0000 0130。
有真正的应用程序代码吗?
在0 x0000 0200吗?
嗨Mikle,
flash中的代码和数据从0x80000200开始。
谢谢,PM_Dialog
是的,我明白。但是将07fc 0000重新映射到0000 0000之后,有0800 0200(不是8000 0200)。
这是正确的:0x0800 0200 => 0x0000 0200 ??