完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大家好,我想把官方给的TMS570L04的CAN 的bootloader 移植到 TMS570LS0232上,在执行CAN_COMMAND_DOWNLOAD命令过程中,程序卡在BLInternalFlashStartAddrCheck(g_ulTransferAddress, g_ulTransferSize)里出不来。该函数已经被我改了,如下:
uint32_t BLInternalFlashStartAddrCheck(uint32_t ulAddr, uint32_t ulImgSize) [ uint32_t count=0, i; uint32_t ulWholeFlashSize; uint8_t ucStatus; // // Determine the size of the flash available on the part in use. // ulWholeFlashSize = (uint32_t)flash_sector[NUMBEROFSECTORS-1].start + flash_sector[NUMBEROFSECTORS-1].length; /* 128K */ /* The start address must be at the begining of the sector */ for (i = 0; i < NUMBEROFSECTORS-1; i++)[ if (ulAddr == (uint32_t)(flash_sector.start)) [ count++; ] ] if (count == 0)[ #ifdef DEBUG_MSG_L3 //UART_putString(UART, "r Application Address should be aligned with flash sector start address!r"); // ucStatus = data_start_address_error; // PacketWrite(CAN_PORT, CAN_COMMAND_ACK, &ucStatus, 1); #endif return(0); ] // // Is the address we were passed a valid start address? We allow: // // 1. Address 0 if configured to update the boot loader. // 2. The start of the reserved block if parameter space is reserved (to // allow a download of the parameter block contents). // 3. The application start address specified in bl_config.h. // // The function fails if the address is not one of these, if the image // size is larger than the available space or if the address is not word // aligned. // if(( #ifdef ENABLE_BL_UPDATE (ulAddr != 0) && #endif (ulAddr != APP_START_ADDRESS)) || ((ulAddr + ulImgSize) > ulWholeFlashSize) || ((ulAddr & 3) != 0)) [ #ifdef DEBUG_MSG_L3 // UART_putString(UART, "r Flash address and size check failed!r"); #endif return(0); ] else [ #ifdef DEBUG_MSG_L3 // UART_putString(UART, "r Flash address and size check passed!r"); // ucStatus = data_address_size_error; // PacketWrite(CAN_PORT, CAN_COMMAND_ACK, &ucStatus, 1); #endif return(1); ] ] 我移植的过程如下: 第一步:添加头文件路径和添加F021的库,如下图: 库添加后,出现了警告,警告如下图: 请问这是不是我的库添加错了,我换了 F021_API_CortexR4_LE.lib 库,发现错误还是存在。 第二步:改CMD TMS570LS0232的FLASH如下图: 我写的CMD如下: MEMORY [ VECTORS (X) : origin=0x00000000 length=0x00000200 BOOT_LOAD (RX) : origin=0x00000200 length=0x00001000 FLASH_API (RX) : origin=0x00001200 length=0x00001000 FLASH0 (RX) : origin=0x00002200 length=0x00005200 //32K flash for bootloader STACK (RW) : origin=0x08000000 length=0x00001500 //5K RAM for Stack SRAM (RW) : origin=0x08001500 length=0x00006B00 //27K RAM for others ] SECTIONS [ .intvecs : [] > VECTORS boot_code : [..Debugsrcsys_core.obj (.text)] > BOOT_LOAD eabi_start : [..Debugsrcsys_startup.obj (.text)] > BOOT_LOAD flashAPI : [ ..DebugsrcFapi_UserDefinedFunctions.obj (.text) ..Debugsrcbl_flash.obj (.text) --library= F021_API_CortexR4_BE.lib Init.obj Utilities.obj Async.obj> (.text) ] load = FLASH_API, run = SRAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size) .text > FLASH0 .const > FLASH0 .cinit > FLASH0 .pinit > FLASH0 .data > SRAM .bss > SRAM ] 麻烦大家指教一下,非常感谢! |
|
相关推荐
4 个讨论
|
|
|
Hi yuanqiang,
1. 就F021库而言,毋庸置疑,你应该选择F021_API_CortexR4_BE.lib。 BE和LE分别指大端序和小端序,Hercules系列产品中,TMS570系列为大端序,RM系列为小端序; 2. 上面警告为路径的问题。cmd文件你可以参考附件的cmd内容进行修改。另外,在你导入CCS工程时,不要勾选Copy projects into workspace。否则,--library= ......libF021_API_CortexR4_BE.lib有可能报路径错误。因为copy后,其项目的根路径会改变。 SECTIONS[ .intvecs : [] > VECTORS flashAPI : [ Fapi_UserDefinedFunctions.obj (.text) bl_flash.obj (.text) --library= ......libF021_API_CortexR4_BE.lib (.text) ] load = FLASH_API, run = SRAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size) .text > FLASH0 .const > FLASH0 .cinit > FLASH0 .pinit > FLASH0 .data > SRAM .bss > SRAM] |
|
|
|
|
|
|
|
阳光790105 发表于 2018-8-13 08:59 谢谢您 David Bai1 ,问题解决了。我现在又碰到了新问题。 我的程序在Bootlaoder中跳转到App的起始地址后,程序直接跑飞。可以保证app程序下载是正确的。 是否在App中对于中断向量表需要处理? |
|
|
|
|
|
|
|
ben233 发表于 2018-8-13 09:19 Hi Yuanqiang, 建议你检查一下App的cmd文件中对应起始地址是否正确,与Bootloader的跳转地址是否一致; 另外,若App程序的地址确认无误,将你的App的程序的起始地址改为0x00000000,单独下载运行一下App程序看是否正常,验证一下你的App程序单独运行是否会跑飞。 |
|
|
|
|
|
|
|
阳光790105 发表于 2018-8-13 09:35 David Bai1,您好!我的App的cmd文件中对应起始地址是与Bootloader的跳转地址一致,App的程序的起始地址改为0x00000000可以正常运行。我用bootloader例程基础上写APP程序可以正常跳转,用HALCoGen生成的APP就不可以正常跳转,请问这是不是由于bootloader对内核初始化和APP对内核初始化不同导致的? |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
577 浏览 0 评论
1639 浏览 0 评论
2075 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1530 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1368 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1779浏览 29评论
2806浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1738浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1651浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1665浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-8 19:02 , Processed in 0.844889 second(s), Total 64, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5379