六、loader app分离工程
6.1 概述
6.2 官方资料与不足
6.3 loader app分离工程的优化
6.3.1 自动调节合并appsection
6.3.2 loader中使用外设
6.3.3 app使用sram mirror
6.3.4 sram atcm同时使用
六、从0开始卷出一个新项目之瑞萨RZN2L loader app分离工程优化
6.1 概述
对比“3.2 base project构建”中的单个工程,本章节介绍loader app分离的双工程。可以实现更为灵活和复杂的功能,例如多协议支持、固件升级等等。
6.2 官方资料与不足
-
例程源码
RZN2L_bsp_xspi0bootx1_app
RZN2L_bsp_xspi0bootx1_loader -
文档
r01an6737ej0110-rzn2l-separating-loader-and-application.pdf -
仅展示
以官方loader app双工程为base去移植应用代码,会碰到很多问题
6.3 loader app分离工程的优化
6.3.1 自动调节合并appsection
6.3.2 loader中使用外设
//正确完整的编译loader+app
// 1: 必须首先clean loader,构建前增加make -r -j8 clean
// 2: 使能startu的初始化mpu代码 #if 1 // Original program
/* Invalid these settings for loader project.
* These settings are done in the application program.
* Settings can also be made in the loader program if necessary. */
#if 1
__enable_irq();
g_uart0.p_api->open(g_uart0.p_ctrl, g_uart0.p_cfg);
g_uart0.p_api->write(g_uart0.p_ctrl, (uint8_t const *)"Loader start!\n*****\nReady to Jump to the app!\n\n", strlen("Loader start!\n*****\nReady to Jump to the app!\n\n"));
while(!uartTxCompleteFlg);
uartTxCompleteFlg = 0;
g_uart0.p_api->close(g_uart0.p_ctrl);
__disable_irq();
#endif
6.3.3 app使用sram mirror
参考fsp_xspi0_boot_SRAM_ATCM.ld
6.3.4 sram atcm同时使用
-
参考fsp_xspi0_boot_SRAM_ATCM.ld
-
在loader中复制atcm和sram