工具/软件:
我正在尝试构建代码并指示链接器将 CMSIS_DSP 代码和常量定位在闪存存储器的特殊保留位置。 在启用了十六进制实用程序的情况下构建代码时、project.map 文件看起来正确、但 project.hex 文件缺少与 DSP 库关联的.text 和.const 段。
Linker.cmd 文件似乎可以使用链接器、但 Hex Utility 不行。 我猜我的 Linker.cmd 文件语法并不完全正确。 十六进制实用程序“警告:重复的段名“是一条线索。 如有任何帮助、我们将不胜感激。
我复制了 Linker.cmd 文件的编辑片段和下面的构建控制台输出:
移动数据
{
boot_vectors (RX):origin = 0x00000000、length = 0x00000200
主要 (Rx):origin = 0x00003200、length = 0x000FCE00
MUF_VECTORS (Rx):origin = 0x00100000、length = 0x00000100
模型 (Rx):origin = 0x00100100、length = 0x000FFF00
信息 (Rx):origin = 0x00200000、length = 0x00008000
别名
{
SRAM_CODE (RWX):origin = 0x01000000
SRAM_DATA (RW):origin = 0x20000000
}长度= 0x00040000
很重要
{
.intvecs: > boot_vectors
.text : > main
.text : >型号
{
--- library=DSP_CMSIS580_CM4F.lib (.text)
}
.const : > main
.const : > model
{
--- library=DSP_CMSIS580_CM4f.lib (.const)
}
.emuf_vect : > MUF_VECTORS
.cinit : > main
.pinit : > main
.binit : {}> main
.data : > sram_data
.bss : > sram_data
.sysmem : > sram_data
.stack : > sram_data(高)
/*信息闪存用于以下器件特定用途: */
.flashMailbox :> 0x00200000 /*用于设备安全操作的闪存邮箱 */
.tlvTable :>0x00201000 /* TLV 表、用于设备识别和表征 */
.bslArea :>0x00202000 /*器件 TI 引导加载程序的 BSL 区域 */
.TI.ramfunc : {}load=main、run=sram_code、table (BINIT)
}
调用:ARM Hex 实用程序
“c:/ti/ccs1210/ccs/tools/compiler/ti-cgt-arm_18.12.8.LTS/bin/armhex --memwidth=8 --romwidth=8 --diag_swrap=off --intel -o “eCBM_V45_Muf.hex""eCBM_V45_Muf.out"“"eCBM_V45_Muf.out"</s>“ “
正在转换为 Intel 格式...
“eCBM_V45_MUF.out".intvecs“.intvecs ==>.intvecs
“eCBM_V45_MUF.out".text“.text =>.text
“eCBM_V45_MUF.out".TI.ramfunc“.TI.ramfunc =>.TI.ramfunc
“eCBM_V45_MUF.out".const“.const =>.const
“eCBM_V45_MUF.out".cinit“.cinit =>.cinit
“eCBM_V45_MUF.out".binit“.binit ==>.binit
“eCBM_V45_MUF.out".emuf_vect“.emuf_vect =>.emuf_vect
“eCBM_V45_MUF.OUT".MODELCODE“.MODELCODE =>.MODELCODE
“eCBM_V45_MUF.OUT".MODELDATA“.MODELDATA =>.MODELDATA
已完成二级目标的构建:“eCBM_V45_MUF.hex"</s>“
警告:重复的段名 eCBM_V45_MUF.out (.text)(忽略)
警告:重复的段名称 eCBM_V45_muf.out (.const)(忽略)
****构建完成****