This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Wang、
要正确使用映像,我将 应用程序的链接命令设置如下所示;
------------------------------------------------------------------
/*链接器设置*/
--retain="*(.intvecs)"
/*用户代码开始(1)*/
/*用户代码结束*/
/*------------------ *
/*内存映射*/
存储器
{
/*用户代码开始(2)*/
/*用户代码结束*/
引导程序(X):origin=0x00200000 length=0x00000020
FLASH0 (RX):origin=0x00000000 length=0x00200000
FLASH1 (RX):origin=0x00200020 length=0x001FFFE0
RAM (rwx):origin=0x08002000 length=0x0007E000
栈(RW):origin=0x08000000 length=0x00002000
}
/*------------------ *
/*段配置*/
部分
{
/*用户代码开始(5)*从 MecitPMK 添加的 flashAPI!/
/*用户代码结束*/
.intvecs:{}>向量
.text align(32):{}>FLASH1
.const align (32):{}> FLASH1
.cinit align (32):{}> FLASH1
.pinit align (32):{}> FLASH1
.bss:{}> RAM
.data :{}> RAM
.sysmem:{}>RAM
闪存 API:
{
--library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be_L2FMC.lib"(.text、.data)
} palign =8 load = FLASH1,run = RAM,load_start (apiLoadStars),run_start (apiRunStars),size (apiLoadSizes)
}
------------------------------------------------------------------
İn 我的引导加载程序链接命令设置与此类似;
------------------------------------------------------------------
存储器
{
/*用户代码开始(2)*/
引导程序(X):origin=0x00000000 length=0x00000020 vfill =0xFFFF
FLASH0 (RX):origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
FLASH1 (RX):origin=0x00200000 length=0x00200000 vfill = 0xffffffff
RAM (rwx):origin=0x08002000 length=0x0007E000
栈(RW):origin=0x08000000 length=0x00002000
#if 1.
ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
length=(size (vectors)>> 3)
ecc={algoL2R5F021、input_range=vectors}
ECC_FLA0 (R):origin=(0xf0400000 +(开始(FLASH0)>> 3))
length=(size (FLASH0)>> 3)
ecc={algoL2R5F021、input_range=FLASH0}
ECC_FLA1 (R):origin=(0xf0400000 +(开始(FLASH1)>> 3))
length=(size (FLASH1)>> 3)
ecc={algoL2R5F021、input_range=FLASH1}
#endif
/*用户代码结束*/
}
/*用户代码开始(4)*/
ECC
{
algoL2R5F021:address_mask = 0xfffffff8 //地址位31:3 */
汉明_mask = R4 /*使用掩码中的 R4/R5构建*/
奇偶校验掩码= 0x0c //设置哪些 ECC 位是偶校验和奇校验*/
镜像= F021 //* RM57Lx 和 TMS570LCx 在 F021中编译
}
/*用户代码结束*/
/*------------------ *
/*段配置*/
部分
{
/*用户代码开始(5)*/
/*用户代码结束*/
.intvecs:{}>向量
.text align (32):{}> FLASH0
.const align (32):{}> FLASH0
.cinit align (32):{}> FLASH0
.pinit align (32):{}> FLASH0
.bss:{}> RAM
.data :{}> RAM
.sysmem:{}>RAM
//.MYSECTION:{}> MYSTACK
闪存 API:
{
..\Boot\Fapi_UserDefinedFunctions.obj (.text)
.\Boot\BL_FLASH.obj (.text、.data)
--library="c:\ti\hercules\F021闪存 API\02.01.01\F021_API_CortexR4_be_L2FMC.lib"(.text、.data)
}palign =8 load = FLASH0、run = RAM、load_start (apiLoadStart)、run_start (apiRunStart)、size (apiLoadSize)
}
------------------------------------------------------------------
此外 ,应用程序启动地址定义为 : 0x0020020
应用程序状态地址定义为 :0x0020000
当我更改映像的 cmd 链接设置 时,引导加载程序跳转新映像不起作用。
顺便说一下,在新的映像 cmd 链接设置中,虽然我从设置中删除了闪存 API 部分,但如果设置从默认值更改,程序仍然不起作用。
请帮助 王先生。
您好!
应用程序的起始地址应与 应用程序链接器 cmd 文件中的向量的起始地址一致:
存储器
{
/*用户代码开始(2)*/
/*用户代码结束*/
引导程序(X):origin=0x00200000 length=0x00000020
FLASH0 (RX):origin=0x00000000 length=0x00200000
…
因此 APP_START_ADDR 应为0x200020
应用程序状态地址= 0x200000
我确实喜欢这个,但是新的图像没有运行。。。 我应该更改 intvectors asm 中的某个内容吗?
您的应用链接器 CMD 文件中的地址为0x200000、但您的应用程序已编程为0x20020
因此、您可以更改其中一个
1.应用程序映像的链接器 cmd 文件
引导程序(X):origin=0x00020020 length=0x00000020
或
2.引导加载程序 bl_config.h 中的应用程序起始地址
#define APP_START_ADDRESS 0x00200020
#define APP_STATUS_ADDRESS 0x00200000
因此,在 bl_config.h 应用程序地址 中,我不必更改应用程序的链接器权限(引导程序来源等)?
我认为您需要更改两个文件中的地址:bl_config.h 和链接器 cmd 文件