打印
[DemoCode下载]

M031系列BootLoader实现

[复制链接]
524|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2022-11-18 11:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
EC_M031_Bootloader_w_IAP_V1.00.zip (5 MB)
演示当启动程序的大小超过 LDROM 的空间时,如何使用内存布局和使能启动程序的 IAP 功能,管理内存分配。

此范例程序演示当启动程序的大小超过LDROM的空间时,如何使用内存布局和使能启动程序的IAP功能,管理内存分配。
用户可以使用启动程序,经由许多常见的通讯界面,如UART、USB等,更新目前APROM的应用程序。使用者也可以增加额外的处理,如校验码认证、对更新档案加密/解密,完善更新程序。 这些额外的处理会增加启动程序的大小,并且可能超过LDROM的空间。如果启动程序的大小超过LDROM的空间,用户可以使用内存布局和使能启动程序的IAP功能,管理内存分配到APROM以及LDROM。
此范例程序提供NuMaker-M032LD使用USB接口的启动程序,并且分配到LDROM以及APROM的最后4 KB位置。


实现原理
根据芯片启动选择CBS (Config0[7:6]),将闪存映像到系统内存,提供CPU抓取指令或是数据。
CBS[0]决定是否使能IAP功能,而CBS[1]决定引导块域。
如果CBS[0] = 0,则禁能IAP功能,且根据CBS[1]的设定,FMC只映射LDROM或APROM到系统内存。禁能IAP功能的系统内存,如下所示:


当禁能IAP功能时,CPU无法抓取不同区域的指令。如果启动选择是LDROM,CPU不能抓取在APROM的指令

如果CBS[0] = 1,则使能IAP功能,FMC会同时映像LDROM和APROM到系统内存。根据CBS[1]的设定,LDROM或APROM的向量表会被映射到系统内存的第一页。使能IAP功能的系统内存,如下所示:


当始能IAP功能时,CPU可以抓取不同区域的指令。如果启动程序的大小超过LDROM的空间,用户可以始能IAP功能,并且分配部分启动程序到APROM。
在Keil RVMDK,使用者可以在“Options for Target”的设定页面,决定链接器的设定。
在”Linker”卷标勾选”Use Memory Layout from Target Dialog”项目后,链接器会根据”Target”标签中的”Read/Only Memory Areas”配置,产生分散加载描述文件。用户可以一个区域在LDROM,而另一个区域在APROM,让链接器以此管理内存分配。如果启动程序的大小超过LDROM的空间,链接器会使用上述配置,配置到APROM。由于始能IAP功能,启动程序可以执行在APROM的指令。


执行结果

此范例程序演示当启动程序的大小超过LDROM的空间时,如何使用内存布局和使能启动程序的IAP功能,管理内存分配。使用者可以使用附加的ISP编程工具”NuvoISP_v3_04.exe”,测试更新程序。要进入更新程序,使用使需要在上电前,将PB.12 (NuMaker-M032LD的脚位44) 接到VSS。然后使用者可以使用USB线,连接PC和NuMaker-M032LD的连接器J2。在ISP编程工具上选择连接接口为USB,然后点击”Connect”按键。连接成功后,用户可以如常执行更新程序。由于APROM的最后4 KB位置被启动程序使用,更新档案需要小于60 KB大小。
结果如下所示




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

5359

帖子

22

粉丝