Part Number:CC2642R-Q1Other Parts Discussed in Thread:SYSBIOS, CC2650
Hello Ti,
我们使用 ti-cgt-armllvm_2.1.2.LTS/bin/tiarmhex.exe 编译处理的bin,烧录后无法正常启动,编程出来的 hex 文件是正常,具体日志如下,帮忙看一下 ccs编程生成的 bin 和hex有什么差异?
Building target: "arryve_CC26X2R1_tirtos7_ticlang.out"
Invoking: Arm Linker
"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmclang.exe" @"E:/djt/arryve_CC26X2R1_tirtos7_ticlang_2023/Release/syscfg/ti_ble_app_config.opt" @"E:/djt/arryve_CC26X2R1_tirtos7_ticlang_2023/Release/syscfg/ti_build_config.opt" @"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/ble5stack/config/build_components.opt" @"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/ble5stack/config/factory_config.opt" -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mlittle-endian -mthumb -Oz -DDeviceFamily_CC26X2 -DFLASH_ROM_BUILD -DNVOCMP_NWSAMEITEM=1 -DHEAPMGR_CONFIG=0x80 -DHEAPMGR_SIZE=0x0 -gdwarf-3 -march=armv7e-m -Wl,-m"arryve_CC26X2R1_tirtos7_ticlang.map" -Wl,-i"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source" -Wl,-i"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages" -Wl,-i"E:/djt/arryve_CC26X2R1_tirtos7_ticlang_2023/Release/syscfg" -Wl,-i"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/lib" -Wl,–reread_libs -Wl,–define=FLASH_ROM_BUILD=2 -Wl,–diag_suppress=16002-D -Wl,–diag_suppress=10247-D -Wl,–diag_suppress=10325-D -Wl,–diag_suppress=10229-D -Wl,–diag_suppress=16032-D -Wl,–diag_wrap=off -Wl,–display_error_number -Wl,–warn_sections -Wl,–xml_link_info="arryve_CC26X2R1_tirtos7_ticlang_linkInfo.xml" -Wl,–rom_model -o "arryve_CC26X2R1_tirtos7_ticlang.out" "./syscfg/ti_ble_config.o" "./syscfg/ti_devices_config.o" "./syscfg/ti_radio_config.o" "./syscfg/ti_drivers_config.o" "./syscfg/ti_sysbios_config.o" "./Application/board_key.o" "./Application/multi_role.o" "./Application/multi_role_menu.o" "./Application/two_btn_menu.o" "./Application/util.o" "./Application/yk_gatt_server_app.o" "./Communication/yk_comm_queue_task.o" "./Communication/yk_comm_task.o" "./Communication/yk_uart.o" "./Drivers/NV/crc.o" "./Drivers/NV/nvocmp.o" "./ICCE/Crc16/crc16_ccit.o" "./ICCE/yk_command_hadler.o" "./Profiles/arryve_profile/cc26xx/yk_ble_gatt_service.o" "./Profiles/dev_info/cc26xx/devinfoservice.o" "./SDK/ti/ble5stack/icall/app/ble_user_config.o" "./SDK/ti/ble5stack/icall/app/icall_api_lite.o" "./SDK/ti/ble5stack/icall/src/icall.o" "./SDK/ti/ble5stack/icall/src/icall_cc2650.o" "./SDK/ti/ble5stack/icall/src/icall_user_config.o" "./SDK/ti/ble5stack/icall/stack/ble_user_config_stack.o" "./SDK/ti/ble5stack/rom/agama_r1/common_rom_init.o" "./SDK/ti/ble5stack/rom/agama_r1/rom_init.o" "./Startup/main.o" "./Startup/osal_icall_ble.o" "./custom/arryve_cc2642_golble.o" "./custom/yk_sleep.o" "./custom/uartlog/CustomUartLog.o" "../cc13x2_cc26x2_app_tirtos7.cmd" -Wl,-lti_utils_build_linker.cmd.genlibs -Wl,-l"ti/devices/cc13x2_cc26x2/driverlib/bin/ticlang/driverlib.lib" -Wl,-llibc.aFinished building target: "arryve_CC26X2R1_tirtos7_ticlang.out"
Building secondary target: "arryve_CC26X2R1_tirtos7_ticlang.bin"
Building secondary target: "arryve_CC26X2R1_tirtos7_ticlang.hex"
Invoking: Arm Hex Utility
"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmhex.exe" –diag_wrap=off –binary -o "arryve_CC26X2R1_tirtos7_ticlang.bin" "arryve_CC26X2R1_tirtos7_ticlang.out"Invoking: Arm Objcopy Utility
"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmobjcopy.exe" "arryve_CC26X2R1_tirtos7_ticlang.out" "arryve_CC26X2R1_tirtos7_ticlang.hex"
Translating to Binary format…
"arryve_CC26X2R1_tirtos7_ticlang.out" .resetVecs ==> .resetVecs
"arryve_CC26X2R1_tirtos7_ticlang.out" .rodata.1 ==> .rodata.1
"arryve_CC26X2R1_tirtos7_ticlang.out" .text ==> .text
"arryve_CC26X2R1_tirtos7_ticlang.out" .rodata.2 ==> .rodata.2
"arryve_CC26X2R1_tirtos7_ticlang.out" .cinit ==> .cinit
"arryve_CC26X2R1_tirtos7_ticlang.out" .ccfg ==> .ccfg
Finished building secondary target: "arryve_CC26X2R1_tirtos7_ticlang.bin"
Finished building secondary target: "arryve_CC26X2R1_tirtos7_ticlang.hex"
will deng:
Hello ,
帮忙确认一下如下两个命令生成的bin 文件有什么差异?为什么命令1 方式产生的bin 文件无法正常烧写。
命令1:
"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmhex.exe" –diag_wrap=off –binary -o "simple_peripheral_CC26X2R1_LAUNCHXL_tirtos7_ticlang.bin" "simple_peripheral_CC26X2R1_LAUNCHXL_tirtos7_ticlang.out"
// 同样的代码,此命令生成的bin 大小为 137KB,烧写之后芯片不能正常启动。
命令2:C:/ti/ccs1220/ccs/utils/tiobj2bin/tiobj2bin arryve_CC26X2R1_tirtos7_ticlang.out arryve_CC26X2R1_tirtos7_ticlang.bin C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmofd C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmhex C:/ti/ccs1220/ccs/utils/tiobj2bin/mkhex4bin
//同样的代码, 此命令生成的bin 文件大于hex 文件的大小,大小为352KB,此文件烧录后可以正常启动。
,
Cherry Zhou:
您好,您的问题我们升级到英文论坛给美国工程师看下。
,
Cherry Zhou:
请阅读以下文章An Introduction to Binary Files。 其中介绍了holes是如何发生的。 命令1完全忽略了hole。 hole任一侧的字节在命令1生成的二进制文件中相邻。 所以如您所见无法启动。 命令2用0填充了这些hole。
,
will deng:
你好,
我们bin 文件的实际大小是 138KB,使用命令2,hole 填充0 后文件大小变为352KB,hole 的填充大小如何控制呢?
,
Cherry Zhou:
我们跟进给工程师看下吧。
,
will deng:
你好,
工程师有反馈吗?
,
Cherry Zhou:
已经在An Introduction to Binary Files进行了讨论。 它是已初始化段末尾与下一个已初始化段开始之间的存储器gap。 这个gap可以是未初始化段使用的存储器。 或者也可能是系统中不存在的内存。 可能存在很多个gaps。
,
will deng:
Hi Cherry,
感谢支持,这个gaps 为啥会影响芯片启动呢?
有最终的讨论结果帮忙更新一下。
,
Cherry Zhou:
如果没有这些gaps,二进制文件就不表示系统启动时的存储器状态。 如果将其直接复制到存储器中,那么指令和数据最终会加载到错误的地址(前提是加载完全正常)。
,
will deng:
Hi Cherry,
感谢支持,
上文这个问题帮忙确认一下,有么有方法可以实现。
我们bin 文件的实际大小是 138KB,使用命令2,hole 填充0 后文件大小变为352KB,hole 的填充大小如何控制呢?
,
Cherry Zhou:
Hi,
Cherry Zhou 说:已经在An Introduction to Binary Files进行了讨论。 它是已初始化段末尾与下一个已初始化段开始之间的存储器gap。 这个gap可以是未初始化段使用的存储器。 或者也可能是系统中不存在的内存。 可能存在很多个gaps。
这一条答复就是针对这个问题的哦。