您好!
我使用以下命令将输出文件转换为十六进制格式:
hex2000.exe -boot -sci8 -a example_2806xLEDBlink.out -o blinky_new.txt
它通过以下输出进行转换:
正在转换为 ASCII 十六进制格式...
"Example_2806xLEDBlink.out" codestart =>(引导表)
"Example_2806xLEDBlink.out" ramfuncs =>(引导表)
"Example_2806xLEDBlink.out".text =>(引导表)
"Example_2806xLEDBlink.out".cinit =>(引导表)
"Example_2806xLEDBlink.out".econst =>(引导表)
然后、我使用以下命令刷写文件:
serial_flash_programr.exe -d f2806x -k f28069_sci_flash_kernel.txt -p COM6 -b 9600 -v -a blinky_new.txt
然后获得以下输出:
C2000串行固件升级程序
版权所有(c) 2013 Texas Instruments Incorporated。 保留所有权利。
正在获取通信状态
建立通信 DCB
调整端口设置
调用 F05_DownloadImage
正在将 blinky_new.txt 下载到设备...
内核自动波特率成功
aA=aa.
8==8
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
0==0
62=62
83=83
2==2
0==0
0==0
0==0
0==0
0==0
40==40
0==0
57==57
83=83
B6=B6
0==0
0==0
0==0
50==50
0==0
C==c
fe=fe
40==40
76==76
5==5
。
。
。
内核
已完成等待内核引导...正在尝试自动波特
应用程序自动波特率成功
(无限期停留在这里)
如果我有任何问题、请告诉我。
编辑:
在用"/f28069/common/F28069.cmd"替换命令文件后、上述问题得到解决、现在我可以将闪烁示例固件上载到控制器、但当我尝试上传固件时、它会卡在同一位置。 我的固件可能太大、比如300KB、上载可能需要太多时间吗? 或者我的固件的命令文件是否有问题、我正在将其粘贴到这里、请检查一下。
// *版权所有(c) 2015-2020,Texas Instruments Incorporated *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 // /* === TMS320F28069.cmd === *定义 F28069的内存块开始/长度 */ /* 页0将用于组织程序段 *页1将用于组织数据段 * *注意: * F2806x 上的内存块是一致的(即相同 的* 物理存储器)。 * 相同的存储器区域不应 是* 同时为 PAGE 0和 PAGE 1定义。 * 这样做将导致程序损坏 * 和/或数据。 // _Cla1Prog_Start =_Cla1funcsRunStart; CLA_暂 存区大小= 0x100; --undef_sym=__cla_scratchpad_end --undef_sym=__cla_scratchpad_start MEMORY { PAGE 0://程序存储器*/RAML4L :origin = 0x00A000、length = 0x001C00 /*片上 RAM 块 L4 */ L03SARAM:origin = 0x008000、length = 0x002000 /*片上 RAM 块 L0-L3 */ OTP :origin = 0x3D7800,length = 0x000400 /*片上 OTP */ 闪存 :origin = 0x3D8000,length = 0x01FF80 /*片上闪存*/ csm_RSVD:origin = 0x3F7F80,length = 0x000076 /*使用 CSM 时使用所有0x0000进行编程。 * 开始 :origin = 0x3F7FF6,length = 0x000002 /*用于"引导至闪存"引导加载程序模式。 * CSM_PWL :origin = 0x3F7FF8、length = 0x000008 /*闪存中的 CSM 密码位置*/ FPUTABLES:origin = 0x3FD860,length = 0x0006A0 /*引导 ROM 中的 FPU 表*/ IQTABLES:origin = 0x3FDF00,length = 0x000B50 /*引导 ROM 中的 IQMath 表*/ IQTABLES2:origin = 0x3FEA50,length = 0x00008C /*引导 ROM 中的 IQMath 表*/ IQTABLES3:origin = 0x3FEADC,length = 0x0000AA/*引导 ROM 中的 IQMath 表*/ ROM :origin = 0x3FF3B0,length = 0x000C10 /*引导 ROM */ 复位 :origin = 0x3FFFC0,length = 0x000002 /*引导 ROM 的一部分*/ 矢量 :origin = 0x3FFFC2,length = 0x00003E /*部分引导 ROM */ 第1页:/*数据存储器*/ M01SARAM:origin = 0x000000,length = 0x000800 /*片上 RAM 块 M0、M1 */ PIEVECT :origin = 0xD00,length = 0x100 L46SARAM:origin = 0x00A000、length = 0x006000 /*片上 RAM 块 L4-L6 */ L78SARAM:origin = 0x010000,length = 0x004000 /*片上 RAM 块 L7、L8 */ CLARAM2 :origin = 0x008000、length = 0x000800//片上 RAM 块 L0 */ CLARAM0 :origin = 0x008800,length = 0x000400//片上 RAM 块 L1 */ CLARAM1 :origin = 0x008C00,length = 0x000400//片上 RAM 块 L1 */ CLA1_MSGRAMLOW :origin = 0x001480、length = 0x000080 CLA1_MSGRAMHIGH :origin = 0x001500,length = 0x000080 }/* 将段分配给内存块。 *注意: * DSP28_CodeStartBranch.asm *中的 codestart 用户定义的段 用于在引导至闪存 时重定向代码执行* ramfuncs 用户定义的段、用于存储将为 *的函数 从闪存复制到 RAM */ SECTIONS { /*分配计划领域:*/ .cinit :>闪存 PAGE = 0 .pinit :>闪存 PAGE = 0 .text :>闪存 PAGE = 0 codestart :>开始 PAGE = 0 ramfuncs :LOAD = FLASH PAGE = 0、 RUN = L03SARAM PAGE = 0、 load_start (_RamfuncsLoadStart)、 load_size (_RamfuncsLoadSize)、 load_end (_RamfuncsLoadEnd)、 run_start (_RamfuncsRunStart) csmpasswds :>CSM_PWL PAGE = 0 csm_rsvd :>csm_RSVD page = 0 /*分配未初始化的数据段:*/ 堆栈 :> M01SARAM | L46SARAM PAGE = 1. ebss :> M01SARAM | L46SARAM PAGE = 1. .data :> M01SARAM | L46SARAM PAGE = 1. 等斯梅姆 :> L78SARAM | L46SARAM | M01SARAM PAGE = 1. .cio :> L78SARAM | L46SARAM | M01SARAM PAGE = 1. /*初始化段进入闪存*/ /*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/ .econst :>闪存 PAGE = 0 切换 :>闪存 PAGE = 0 .args :>闪存 PAGE = 0 #ifdef __TI_Compiler_version__ #if __TI_Compiler_version__>=15009000 .TI.ramfunc :{}load = flash page = 0、 RUN = L03SARAM PAGE = 0、 表(BINIT) #endif #endif /*分配 IQ 数学区域:*/ IQMath :>闪存 PAGE = 0 /*数学代码*/ IQmathTables :> IQTABLES PAGE = 0,TYPE = NOLOAD /*分配 FPU 数学区域:*/ FPUmathTables :> FPUTABLES PAGE = 0,TYPE = NOLOAD /* *如果调用 IQNexp()或 IQexp(),请取消注释以下部分 * IQMath.lib 库中的函数、以便利用 *引导 ROM 中的相关 IQMath 表(这可以节省空间和引导 ROM *为1个等待状态)。 如果此部分未注释、则为 IQmathTables2 *将被加载到其他存储器(SARAM、闪存等)中并将采用 *向上计数空间、但0等待状态是可能的。 * /* IQmathTables2. :> IQTABLES2 page = 0,type = NoLoad { IQMath.lib (IQmathTablesRam) } * /* *如果调用 IQNasin ()或 IQasin (),请取消注释以下部分 * IQMath.lib 库中的函数、以便利用 *引导 ROM 中的相关 IQMath 表(这可以节省空间和引导 ROM *为1个等待状态)。 如果此部分未注释、则为 IQmathTables2 *将被加载到其他存储器(SARAM、闪存等)中并将采用 *向上计数空间、但0等待状态是可能的。 * /* IQmathTables3. :> IQTABLES3 page = 0,type = NoLoad { IQMath.lib (IQmathTablesRam) } */ .scratchpad :> CLARAM0,PAGE = 1.bss_CLA :> CLARAM0、PAGE = 1.CONST_CLA :> CLARAM0,PAGE = 1 dclfuncs:load = flash,page = 0, 运行= RAML4Lpage = 0 dcl32funcs:load = flash、page = 0、 运行= RAML4LPAGE = 0 Cla1Prog :>闪存, load_start (_Cla1funcsLoadStart)、 load_end (_Cla1funcsLoadEnd)、 load_size (_Cla1funcsLoadSize)、 run_start (_Cla1funcsRunStart)、 PAGE = 0 Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,PAGE = 1 CpuToCl1MsgRAM:> CLA1_MSGRAMIGH,PAGE = 1 Cla1DataRam0:> CLARAM0,PAGE = 1 Cla1DataRam1:> CLARAM1,PAGE = 1 Cla1DataRam2:>CLARAM2,页=1 CLA1mathTables:>CLARAM1, Load_start (_Cla1mathTablesLoadStart)、 Load_End (_Cla1mathTablesLoadEnd)、 load_size (_Cla1mathTablesLoadSize)、 run_start (_Cla1mathTablesRunStart)、 PAGE = 1 CLAscratch : {*。obj (CLAscratch) 。 += CLA_ScratchPad_size; *。obj (CLAscratch_end)}> CLARAM0、 PAGE = 1 }
谢谢、
Najeeb