工具/软件:Code Composer Studio
您好!
我正在尝试将 UART 引导加载程序项目集成到我的设计中。 我成功接收到第一个数据包(通过 YMODEM)、但无法通过 F021闪存 API 初始化闪存。 我可以单步执行代码、当它调用 Fapi_setActiveFlashBank()时它会失败、并在未定义指令中断(0x0004)处结束。
不过、我认为这有点令人发指的是、因为在其他帖子中进行读操作听起来好像我的闪存 API 可能不会复制到 RAM 中并从中执行。 人们建议在.cmd 文件中使用 ramfuncs 定义、但我完全不知道如何执行此操作、我还觉得 UART 引导加载程序项目可能已经设置了此设置?
有人能否提供一些有关如何将 F021闪存 API .lib 链接到工程中的见解? 我很确定这就是我的问题所在。
这是我的.cmd 文件:
//
//
// bl_link.cmd:链接器命令文件
//作者 :王杰。 qjwang@ti.com
//日期 :2012年9月19日
//
版权所有(c) 2006-2011 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//德州仪器(TI)提供此软件仅供
和//仅供 TI 的微控制器产品使用。 软件归
// TI 和/或其供应商所有,并受适用的版权
//法律保护。 您不能将此软件与"病毒"开源
//软件组合在一起以形成更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//对于
本软件,不作任何明示、暗示或法定的保证,包括但不限于对适销性和适用性的暗示保证//特定用途。 在任何
//情况下、TI 不对任何
原因造成的特殊、意外或必然//损害负责。
////
*****************
--retain="*(.intvecs)"
内存
{
向量(X):origin=0x00000000 length=0x00000200
BOOT_LOAD (RX):origin=0x00000200 length=0x00001000
Flash_API (RX):origin=0x00001200 length=0x00001000
FLASH0 (Rx):origin=0x00002200 length=0x00018000
FLASH1 (Rx):origin=0x00020000 length=0x00060000
FLASH2 (Rx):origin=0x00080000 length=0x00080000
FLASH3 (Rx):origin=0x00100000 length=0x00080000
FLASH4. (Rx):origin=0x00180000 length=0x00080000
SRAM (RW):origin=0x08002000 length=0x0002D000
堆栈 (RW):origin=0x08000000 length=0x00001FF0
// RSV (RW):origin=0x08000000 length=0x00000010 fill=0
}
SECTIONS
{
.intvecs :{}> vectors
//boot_code :{..\Release\sys_core.obj (.text)}> boot_load
///eabi_start :{..\Release\sys_startup.obj (.text)}> boot_load_obj (.text
):{.boot_load.obj (.obj .text
//..\Release\BL_FLASH.obj (.text)
//..\Releases\Fapi_UserDefinedFunctions.obj (.text)
bl_flash.obj (.text)
fapi_UserDefinedFunctions.obj (.text)
//--library= F021_API_CortexR4_LE.lib <FlashStateMachine.obj
--library=.\lib\f021_API_CortexR4_LE.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
}
感谢您提供的任何帮助。
-Brian