This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我目前正在使用位于0x00000000的引导加载程序。 引导加载程序代码由 halcogen 生成、只需使用函数指针从其主函数调用0x00200000处的函数。 在0x00200000处、我手动放置闪烁二进制文件、其作用类似于应用代码。 闪烁代码按照以下链接器脚本进行编译、因此闪烁代码的异常向量位于0x00200000。
这里的想法是、当处理器从0x00000000开始时、它完成了初始化、在引导加载程序的 main 函数中、它跳转到0x00200000处的闪烁代码的复位矢量。 然后、0x00200000处的分支指令分支到 blinky 的_c_int00、再次重新初始化一切、然后执行它的 main。
我能够使其从引导加载程序跳转到闪烁的复位处理程序、然后开始初始化。 然而、代码在 blinky 的_TI_auto_init ()函数(具体在 run_cinit 中)中时、会进入预取中止。 如果我在这里丢失了什么东西、有人会告诉我。 TI_auto_init (或 run_cinit)函数与位置无关吗?
Blinky 代码链接器脚本如下:
/*------------------ */
/*链接器设置*/
--retain="*(.intvecs)"
/*用户代码 begin (1)*/
/*用户代码结束*/
/*------------------ */
/*内存映射*/
小程序
{
/*用户代码 begin (2)*/
/*用户代码结束*/
VECTORS (X):origin=0x00000000 length=0x00000020
FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
FLASH1 (RX):origin=0x00200000 length=0x00200000
堆栈(RW):origin=0x08000000 length=0x00001500
RAM (RW):origin=0x08001500 length=0x0007EB00
/*用户代码 begin (3)*/
/*用户代码结束*/
}
/*用户代码 begin (4)*/
/*用户代码结束*/
/*------------------ */
/*段配置*/
部分中)
{
/*用户代码 begin (5)*/
/*用户代码结束*/
.intvecs :{}>向量
.text align (32):{}> FLASH0 | FLASH1.
.const align (32):{}> FLASH0 | FLASH1.
.cinit align (32):{}> FLASH0 | FLASH1
.pinit align (32):{}> FLASH0 | FLASH1.
.bss :{}>RAM.
.data :{}>RAM.
.sysmem :{}> RAM.
/*用户代码 begin (6)*/
/*用户代码结束*/
}
/*用户代码 begin (7)*/
/*用户代码结束*/
/*------------------ */
/*其他*/
/*用户代码 begin (8)*/
/*用户代码结束*/
/*------------------ */
尊敬的 Ravi Teja:
您能否参阅以下链接中的简单 UART 引导加载程序示例:
(+)[常见问题解答] TMS570LC4357:在 TMS570LC4357上执行 UART 引导加载程序的分步过程-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
我在这里附上了引导加载程序和应用程序的代码、它们正在成功执行、没有任何问题。
请参阅一次。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
我尝试了使用这里提到的以太网引导加载程序、因为它与我需要的更加接近。
但是、当我导入项目并尝试编译时、我会看到以下消息。 您能帮助我设置这个项目吗?
****项目 build-LAUNCHXL2-RM57Lx-tftpboot 仅清理配置调试****
"C:\\ti\\ccs1271\\ccs\\utils\\bin\\gmake"-k clean
del /F "build-LAUNCHXL2-RM57Lx-tftpboot.hex""build-LAUNCHXL2-RM57Lx-tftpboot.out"
Del /F "Boot\RM57np.obj\Hartstdio.obj" Fapi_User "Boot\bl_flash.obj""BBOOT\bl_tftp.obj""Boot\main\main.obj""Boot\uartstdio.obj"Boot\ustdlib.obj""HALCoGen-tft57Lx\source\EPC_EMAC.obj""HALCoGen\Hl\Hl\Hl_RM57\Hl\Hl\HL.obj_halCoGen.obj""HALCoGen\HALCoGen\HALCoGen\Hl\Hl_Hl_alCoGen.obj.hl\Hl\Hl_alCoGen\Hl_alCoGen.obj""HALCoGen\HALCoGen\HALCoGen\HALCoGen\HALCoGen\Hl_Hl_alCoGen.obj.hl\HALCoGen\HALCoGen\HALCoGen.obj.hl\HALCoGen\Hl\HALCoGen\HALCoGen\Hl_alCoGen.obj.hl\HALCoGen.obj"
del /F "HALCoGen-RM57Lx\source\hl_sys_vim.obj""HALCoGen-RM57Lx\source\hl_system.obj""lwIP-1.4.1\apps\httpserver_raw\fs.obj""lwIP-1.41.1\apps\httpserver_rawip\rtif\lpd.obj\lwip\wip-core1.4.obj\lwip\wip\woptif\wip\lldefi\wip-core1.4.obj\wip.obj\wip.obj\wip\wip-partif\wip.obj" src src src
del /F "Boot\HALCo\RM57Source\HLM57Functions.d" Fapi_User "BBOOT\BL_FLASH.d""BBOOT\BL_tftp.d""BBOOT\MAIN\main.d""Boot\Uartstdio\HL_RM57HL.d"Boot\ustdlib.d""HALCoGen-tft57Lx\source\EPC_EMAC.d
DEL /F "lwIP-1.4.1\lwip\core\def.d" src src core\timers.d" src \netif\ethernetif.d"
del /F "HALCoGen-RM57Lx\source\hl_sys_core.d""HALCoGen-RM57Lx\source\hl_sys_intvecs.d""HALCoGen-RM57Lx\source\hl_sys_mpu.d""HALCoGen-RM57Lx\source\hl_sys_PMU.d"
找不到 C:\Users\rdarbha\workspace_ti\laUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\build-LAUNCHXL2-RM57Lx-tftpboot.hex Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\sys\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\Boot\16.4edFunctions.obj Hercules_Ethernet_Bootloader Fapi_User
找不到 C:\Users\rdarbha\workspace_ti\LI\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\HALCoGen-RM57Lx\source\hl_emac.obj Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\hl\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\HALCoGen-RM57Lx\source\hl_sys_vim.obj Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\apps\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\apps\httpserver_raw\fs.obj Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\ports\hdk\lwiplib.obj Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\webench\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\core\def.obj Hercules_Ethernet_Bootloader src
找不到 C:\Users\rdarbha\workspace_ti\website\netif\ethernetif.obj:Hercules_Ethernet_Bootloader src
找不到 C:\Users\rdarbha\workspace_ti\sys\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\Boot\LinedFunctions.d Hercules_Ethernet_Bootloader Fapi_User
找不到 C:\Users\rdarbha\workspace_ti\LI\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\HALCoGen-RM57Lx\source\hl_emac.d Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\apps\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\apps\httpserver_raw\fs.d Hercules_Ethernet_Bootloader
找不到 C:\Users\rdarbha\workspace_ti\ports\hdk\lwipplib.d。Hercules_Ethernet_Bootloader \LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\ports\hdk\lwipplib.d
找不到 C:\Users\rdarbha\workspace_ti\webench\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\core\def.d Hercules_Ethernet_Bootloader src
找不到 C:\Users\rdarbha\workspace_ti\sys\launchXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\lwIP-1.4.1\getif\ethernetif.d Hercules_Ethernet_Bootloader src
找不到 C:\Users\rdarbha\workspace_ti\LI\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\HALCoGen-RM57Lx\source\hl_sys_core.d Hercules_Ethernet_Bootloader
已完成清洁
****构建完成****
****构建项目 build-LAUNCHXL2-RM57Lx-tftpboot 的配置调试****
没有要为项目 build-LAUNCHXL2-RM57Lx-tftpboot 构建的任何内容
谢谢!
Ravi
尊敬的 Ravi:
分享你的代码我将尝试纠正这些错误,并将再次重塑代码。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
给你。
e2e.ti.com/.../0407.Hercules_5F00_Ethernet_5F00_Bootloader.zip
尊敬的 Ravi Teja:
原因是没有正确配置文件夹路径。
您可以在文件夹上看到感叹号
如果您看到这些标记、请执行以下操作:
首先右键单击相应的文件夹、然后浏览其属性:
然后现在单击"Edit path"按钮(如上所示)。
现在点击 Folder 选项、如下所示:
单击文件夹选项后、 导航至 相应的文件夹目录并选择文件夹:
也对其他感叹号文件夹执行相同的过程、一旦完成该过程、就会编译工程并对其进行验证。 此时应该会成功构建。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
我尝试了此引导加载程序 COE、当我尝试将其加载到 RM57 HDK 电路板时、出现了验证失败错误。
CortexR5:GEL 输出:针对闪存@地址0x0CortexR5的内存映射设置:GEL 输出:由于系统复位、针对闪存@地址0x0的内存映射设置
CortexR5:加载器:程序的一个或多个部分进入了一个不可写入的存储器区域。 实际上、这些区域不会写入目标。 请检查链接器配置和/或存储器映射。
CortexR5:文件加载程序:验证失败:地址0xF0407FF0的值不匹配请验证目标内存和内存映射。
CortexR5:GEL:文件:C:\Users\rdarbha\workspace_ti\tftp\LAUNCHXL2-RM57Lx\build-LAUNCHXL2-RM57Lx\Debug\build-LAUNCHXL2-RM57Lx-tftpboot.out Hercules_Ethernet_Bootloader:发生数据验证错误、文件加载失败。
CortexR5:GEL 输出:由于系统复位、闪存@地址0x0的内存映射设置
Ravi
尊敬的 Ravi:
对于此以太网引导加载程序应用代码、我们将通过链接器 cmd 文件而不是从 CCS 对 ECC 进行编程。
因此、在这种情况下、最好保持 CCS 调试设置中的验证内容为无、如下所示:
确保上述两项设置并执行编程。
——
谢谢、此致、
Jagadish。
尊敬的 Ravi:
有关更多详细信息、请参阅以下主题:
——
谢谢、此致、
Jagadish。