RSL10的片上内存资源
本帖最后由 cruelfox 于 2021-4-27 23:31 编辑<p> RSL10的内部是有两个处理器的,除了主控的ARM Cortex-m3, 还有一个专用的 LPDSP32. 两处理器有各自的专用内存用来运行程序,也有公共的数据内存。</p>
<p> 我们熟悉的 ARM Cortex-M3 有三条总线,地址0x20000000以下的空间是通过I-Code或D-Code总线访问的,适合运行程序和数据存储。S总线用于访问硬件设备,包括可以被DMA访问的系统内存。在 RSL10 中,所有的内存都可以被Cortex-M3访问,但 LPDSP32 不能访问 Cortex-M3 私有的 Boot ROM、Flash、NVR和程序RAM. DMA控制器则不能访问 Cortex-M3 及 LPDSP32 的程序存储内存。因为有多个bus master可能同时访问某块内存,总线结构中存在多处仲裁器(arbiter)来解决总线争用的问题。</p>
<p> 实际上上面框图中的 RAM 还分为了许多小块,比如Data RAM是3个8kB的SRAM. 分成多块的好处有:(1)不同块可以同时被不同bus master访问。(2)不用的可以关掉,减小功耗。</p>
<p> 用于代码存放的 Flash 有 384kB,地址从 0x100000 开始,这是开发软件要留意的。放程序数据、堆栈的SRAM可以用 0x20000000 处的,也可以用 0x200000 处的 (32kB).</p>
<p> </p>
<p> 按手册上说,RSL10 上电复位之后是执行 Boot ROM 的程序,由 ROM 程序验证 Flash 中的用户程序之后再跳转执行用户程序的。</p>
<p> 在J-link commander中,connet命令选择SWD连接开发板之后,查看 Cortex-M3 的 VTOR 寄存器,值为 0x100000, 即中断向量表在 Flash 起始地址。</p>
<p><span style="font-size:16px;"><span style="font-family:Courier;"><span style="background-color:#dddddd;">Cortex-M3 identified.</span><br />
<span style="background-color:#dddddd;">J-Link>halt</span><br />
<span style="background-color:#dddddd;">PC = 00101428, CycleCnt = 00000000</span><br />
<span style="background-color:#dddddd;">R0 = 00000000, R1 = 20005FCF, R2 = 02B1E211, R3 = 40000300</span><br />
<span style="background-color:#dddddd;">R4 = 00000000, R5 = 00000000, R6 = 0010017C, R7 = 20005FE8</span><br />
<span style="background-color:#dddddd;">R8 = 4200A700, R9 = 00081A00, R10= 3B0EAFAB, R11= 9DB74B1E</span><br />
<span style="background-color:#dddddd;">R12= 00000000</span><br />
<span style="background-color:#dddddd;">SP(R13)= 20005FE8, MSP= 20005FE8, PSP= 1D36F2F0, R14(LR) = 00101427</span><br />
<span style="background-color:#dddddd;">XPSR = 81000000: APSR = Nzcvq, EPSR = 01000000, IPSR = 000 (NoException)</span><br />
<span style="background-color:#dddddd;">CFBP = 00000000, CONTROL = 00, FAULTMASK = 00, BASEPRI = 00, PRIMASK = 00</span><br />
<span style="background-color:#dddddd;">J-Link>mem32 e000ed08 1</span><br />
<span style="background-color:#f1c40f;">E000ED08 = 00100000</span><br />
<span style="background-color:#dddddd;">J-Link>mem32 100000 4</span><br />
<span style="background-color:#dddddd;">00100000 = 20006000 00100165 00120CCB 00120CCD</span></span></span></p>
<p>所以RSL10的Cortex-m3程序镜像文件格式和STM32的比,可以看成是Flash起始地址不同而已。</p>
<p>学习了</p>
<p>华健兄总是研究的最底层最核心的东西!</p>
<p>RSL10 上电复位之后,是执行 Boot ROM 的程序,由 ROM 程序验证 Flash 中的用户程序,再跳转执行用户程序的。手册是有这样说</p>
<p> </p>
页:
[1]