从QSPI启动DA1468x过程

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
Mikle
离线
最后看到:1年11个月前
加入:2019-06-20 07:19
从QSPI启动DA1468x过程

这就跟你问声好!我感到困惑,想要一些帮助来理解引导过程中的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)

设备:
PM_Dialog
离线
最后看到:19小时54分钟前
工作人员
加入:2018-02-08 11:03
嗨Mikle,

嗨Mikle,

感谢您的在线查询。让我来解释一下重定向到RAM是如何发生的。

  • 中断向量表(Interrupt Vector Table, IVT)大小为192字节(= 0xC0)。
  • BLE的Patch Controller有112个字节(0x70)大小,并且是4个字节对齐的,所以Patch的最大条目是122/4 = 28个条目。
  • 由于启动加载程序被执行,只有256字节(=0x100)将从flash复制到第一个RAM单元(0x07C000)独立的移位发生在添加flash头。256字节将被重定向,包括IVT和来自补丁控制器的一些条目。下面你会发现,一旦引导加载程序运行,字节就会被镜像:
  1. IVT: 192bytes (= 0xC0)
  2. Patch Controller: 64bytes (= 0x40),对应16个打补丁的地址

因此,(192 + 64)= 256字节(0x100)将被重定向到第一个RAM单元,该单元是固定的,不会因任何闪存地址移位而改变。

  • 为此,112个字节中只有64个字节会被复制到RAM中。剩余的(112-64)字节= 48字节(0x30)将仍然存在于flash中。
  • 您还可以查看sdk/ldscripts/sections.ld.h文件的init_text部分,您将看到前面提到的内容:0x100字节将被复制到第一个ram单元,其中包括IVT和16个补丁项。剩余的(0x130 - 0x100)字节= 0x30(=48字节)对应于flash中的12个补丁项。

谢谢,PM_Dialog

附件:
Mikle
离线
最后看到:1年11个月前
加入:2019-06-20 07:19
非常感谢您的回复

非常感谢您的回复
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?

请不要因为我愚蠢的问题而扔石头。

PM_Dialog
离线
最后看到:19小时54分钟前
工作人员
加入:2018-02-08 11:03
嗨Mikle,

嗨Mikle,

是的,这个区域总是保留的,以便为跳转表保留可扩展性,以实现ROM补丁。QSPI flash从0x800 0000开始。代码和数据从0x800 0100开始。RAM从0x7FC0000开始,您是正确的-这是一个输入错误!关于你的最后一个问题,你能解释一下吗?

谢谢,PM_Dialog

Mikle
离线
最后看到:1年11个月前
加入:2019-06-20 07:19
非常感谢。

非常感谢。

我的最后一个问题是关于重新映射到0x0后的代码地址(在flash中为800100的代码)。即IVT在0x0000 0000, 48补丁字节在0x0000 0100, 208保留字节在0x0000 0130。

有真正的应用程序代码吗?

在0 x0000 0200吗?

PM_Dialog
离线
最后看到:19小时54分钟前
工作人员
加入:2018-02-08 11:03
嗨Mikle,

嗨Mikle,

flash中的代码和数据从0x80000200开始。

谢谢,PM_Dialog

Mikle
离线
最后看到:1年11个月前
加入:2019-06-20 07:19
是的,我明白。但

是的,我明白。但是将07fc 0000重新映射到0000 0000之后,有0800 0200(不是8000 0200)。

这是正确的:0x0800 0200 => 0x0000 0200 ??