我正在尝试使用 pegdb 控制台、bootloader.elf 和 app.elf 将 2 个 .elf 文件闪存到 S32K116。
以下是我正在执行的步骤:使用命令“ pegdbserver_console.exe -startserver -device= NXP_S32K1xx_S32K116F128M4”
启动 gdb 服务器
然后使用 arm-none-eabi-gdb.exe,我连接到 S32K116 并尝试使用命令“ arm-none-eabi-gdb.exe --command=load_sw.txt”刷新 .elf 文件
load_sw.txt 的内容是:
设置样式启用关闭
文件 bootloader.elf
目标远程 localhost:7224
设置分页关闭
echo \n \t [OK] STEP-1:连接到设备 \n
load bootloader.elf
echo \n \t [OK] STEP-2:FLASHED BOOTLOADER \n
load app.elf
echo \n \t [OK] STEP-3 : FLASHED APPLICA
tiON \n
continue
quit
执行命令时,我只能看到应用程序正在运行,因为引导加载程序不会打印其日志。我的猜测是我遗漏了一些东西,所以 app.elf 覆盖了内存区域。可以看到.ld文件中定义的内存区域
应用内存区:
MEMORY
{
/* Flash */
m_interrupts (RX) : ORIGIN = 0x0000C000, LENGTH = 0x000000C0
m_flash_config (RX) : ORIGIN = 0x0000C200, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x0000C210, LENG TH = 0x00013FFF
/* SRAM_L */
m_custom (RW) : ORIGIN = 0x1FFFFC00, LENGTH = 0x00000400
/* SRAM_U */
m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x000020C0
m_data_2 (RW) : ORIGIN = 0x200020C0, L英文 = 0x00001740
}
------
引导加载程序内存区域:
MEMORY
{
/* Flash */
m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x000000C0
m_flash_config (RX) : ORIGIN = 0x00000200, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00000210, LENG TH = 0x00000BBEF
/* SRAM_L */
m_custom (RW) : ORIGIN = 0x1FFFFC00, LENGTH = 0x00000400
/* SRAM_U */
m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x000020C0
m_data_2 (RW) : ORIGIN = 0x200020C0, L英文 = 0x00001740
}
你认为这个问题可能是什么问题?
在模块中保留第一个加载的 .elf 内存区域时我是否遗漏了什么,或者我在指定内存区域时犯了错误?