请选择 进入手机版 | 继续访问电脑版
查看: 218|回复: 1

[求助] LPC4370单片机官方例程使用IAR选择程序时无法仿真

[复制链接]

该用户从未签到

7

主题

13

帖子

0

注册会员

Rank: 2

积分
127
最后登录
2025-3-21
发表于 2025-3-12 10:02:49 | 显示全部楼层 |阅读模式
在恩智浦官网下载的例程,用IAR编译下载,发现仿真不了,只能下载到flash中,不知道是什么原因,我只有用IAR默认自带的.icf文件才能仿真,但是这个文件又不能下载程序到flash,有大神知道是什么原因吗?下面是我用官方例程里的.icf文件下载时的调试日志:
Wed Mar 12, 2025 09:54:18: IAR Embedded Workbench 9.10.1 (C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armPROC.dll)
Wed Mar 12, 2025 09:54:18: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\debugger\NXP\LPC18xx_LPC43xx.dmac
Wed Mar 12, 2025 09:54:18: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\flashloader\NXP\FlashLPC18xx_SPIFI.mac
Wed Mar 12, 2025 09:54:18: Loading the CMSIS-DAP driver
Wed Mar 12, 2025 09:54:18: Probe: CMSIS-DAP probe SW module ver 1.24
Wed Mar 12, 2025 09:54:18: Probe: Connecting to MCU-LINK CMSIS-DAP V0.078:0KN3CBW5F21PI firmware v.1.10
Wed Mar 12, 2025 09:54:18: Emulation layer version 4.79
Wed Mar 12, 2025 09:54:18: Notification to core-connect hookup.
Wed Mar 12, 2025 09:54:18: Connected DAP v1 on SWD. Detected DP ID=0x2ba01477.
Wed Mar 12, 2025 09:54:18: Connecting to TAP#2 DAP AHB-AP-CM port 0x0 (IDR=0x2477'0011).
Wed Mar 12, 2025 09:54:18: Recognized CPUID=0x410fc241 Cortex-M4 r0p1 arch ARMv7-M
Wed Mar 12, 2025 09:54:18: Debug resources: 6 instruction comparators, 4 data watchpoints.
Wed Mar 12, 2025 09:54:18: LowLevelReset(script, delay 200)
Wed Mar 12, 2025 09:54:18: Calling reset script: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\debugger\NXP\LPC18xx.ProbeScript@ResetAndStopAtUser
Wed Mar 12, 2025 09:54:18: Executing build-in reset routine ResetAndStopAtUser for LPC18
Wed Mar 12, 2025 09:54:18: LPC18xx: CPU status 0x1
Wed Mar 12, 2025 09:54:18: LPC18xx: MEMMAP before system reset: 0x10000000
Wed Mar 12, 2025 09:54:18: LPC18xx: Applying system reset.
Wed Mar 12, 2025 09:54:18: LPC18xx: PC = 0x1000118C
Wed Mar 12, 2025 09:54:18: LPC18xx: Reset vector: 0x1000118D
Wed Mar 12, 2025 09:54:18: LPC18xx: MEMMAP after system reset: 0x10000000
Wed Mar 12, 2025 09:54:18: LPC18xx: Remap the reset vector to ROM at 0x10400000
Wed Mar 12, 2025 09:54:18: LPC18xx: Applying core reset to stop at the ROM entry point.
Wed Mar 12, 2025 09:54:18: LPC18xx: PC = 0x10402C40
Wed Mar 12, 2025 09:54:18: LPC18xx: Reset vector: 0x10402C41
Wed Mar 12, 2025 09:54:18: LPC18xx: MEMMAP after core reset: 0x10400000
Wed Mar 12, 2025 09:54:18: LPC18xx: ROM(32K) CRC = 0x712ED588, no workaround needed.
Wed Mar 12, 2025 09:54:18: LPC18xx: CREG6 = 0
Wed Mar 12, 2025 09:54:18: LPC18xx: Resume till a watchpoint on write to 0x40043100
Wed Mar 12, 2025 09:54:19: LPC18xx: PC = 0x10400042
Wed Mar 12, 2025 09:54:19: LPC18xx: MEMMAP is now 0x10400000
Wed Mar 12, 2025 09:54:19: LPC18xx: WARNING: The boot ROM didn't remapped the vector table (left in the boot ROM).
Wed Mar 12, 2025 09:54:19: LPC18xx: Remapping the vector table to 0x10000000
Wed Mar 12, 2025 09:54:19: LPC18xx: Got user program entry at 0x1000118C
Wed Mar 12, 2025 09:54:19: LPC18xx: Resume till a breakpoint at the entry address.
Wed Mar 12, 2025 09:54:19: LPC18xx: PC = 0x10400042
Wed Mar 12, 2025 09:54:19: LPC18xx: WARNING: The CPU didn't stop at the user program entry point.
Wed Mar 12, 2025 09:54:19: ----- execUserFlashInit
Wed Mar 12, 2025 09:54:19: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\flashloader\NXP\FlashLPC18xx_SPIFI.out
Wed Mar 12, 2025 09:54:19: Target reset
Wed Mar 12, 2025 09:54:19: Unloaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\flashloader\NXP\FlashLPC18xx_SPIFI.mac
Wed Mar 12, 2025 09:54:19: Downloaded C:\Users\h1382\Desktop\lpcopen_3_02_keil_iar_lpclink2_4370_TEST_250311\LPC43xx_18xx\prj_link4370\iar\periph_hsadc\iar_output\Exe\hsadc.out to flash memory.
Wed Mar 12, 2025 09:54:19: 4516 bytes downloaded into FLASH (3.51 Kbytes/sec)
Wed Mar 12, 2025 09:54:20: Loaded debugee: C:\Users\h1382\Desktop\lpcopen_3_02_keil_iar_lpclink2_4370_TEST_250311\LPC43xx_18xx\prj_link4370\iar\periph_hsadc\iar_output\Exe\hsadc.out
Wed Mar 12, 2025 09:54:20: LowLevelReset(software, delay 200)
Wed Mar 12, 2025 09:54:20: LowLevelReset(script, delay 200)
Wed Mar 12, 2025 09:54:20: Calling reset script: C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\debugger\NXP\LPC18xx.ProbeScript@ResetAndStopAtUser
Wed Mar 12, 2025 09:54:20: Executing build-in reset routine ResetAndStopAtUser for LPC18
Wed Mar 12, 2025 09:54:20: LPC18xx: CPU status 0x1
Wed Mar 12, 2025 09:54:20: LPC18xx: MEMMAP before system reset: 0x10000000
Wed Mar 12, 2025 09:54:20: LPC18xx: Applying system reset.
Wed Mar 12, 2025 09:54:20: LPC18xx: PC = 0x10001B30
Wed Mar 12, 2025 09:54:20: LPC18xx: Reset vector: 0x10001B31
Wed Mar 12, 2025 09:54:20: LPC18xx: MEMMAP after system reset: 0x10000000
Wed Mar 12, 2025 09:54:20: LPC18xx: Remap the reset vector to ROM at 0x10400000
Wed Mar 12, 2025 09:54:20: LPC18xx: Applying core reset to stop at the ROM entry point.
Wed Mar 12, 2025 09:54:20: LPC18xx: PC = 0x10402C40
Wed Mar 12, 2025 09:54:20: LPC18xx: Reset vector: 0x10402C41
Wed Mar 12, 2025 09:54:20: LPC18xx: MEMMAP after core reset: 0x10400000
Wed Mar 12, 2025 09:54:20: LPC18xx: ROM(32K) CRC = 0x712ED588, no workaround needed.
Wed Mar 12, 2025 09:54:20: LPC18xx: CREG6 = 0
Wed Mar 12, 2025 09:54:20: LPC18xx: Resume till a watchpoint on write to 0x40043100
Wed Mar 12, 2025 09:54:20: LPC18xx: PC = 0x10400042
Wed Mar 12, 2025 09:54:20: LPC18xx: MEMMAP is now 0x10400000
Wed Mar 12, 2025 09:54:20: LPC18xx: WARNING: The boot ROM didn't remapped the vector table (left in the boot ROM).
Wed Mar 12, 2025 09:54:20: LPC18xx: Remapping the vector table to 0x10000000
Wed Mar 12, 2025 09:54:20: LPC18xx: Got user program entry at 0x10001B30
Wed Mar 12, 2025 09:54:20: LPC18xx: Resume till a breakpoint at the entry address.
Wed Mar 12, 2025 09:54:20: LPC18xx: PC = 0x10400042
Wed Mar 12, 2025 09:54:20: LPC18xx: WARNING: The CPU didn't stop at the user program entry point.
Wed Mar 12, 2025 09:54:20: Download completed.
Wed Mar 12, 2025 09:54:20: LowLevelReset(software, delay 200)
Wed Mar 12, 2025 09:54:20: Failed to read SP and PC from vector table at 0x1400'0000
Wed Mar 12, 2025 09:54:20: Target reset
Wed Mar 12, 2025 09:54:20: INFO: Configuring trace using 'SWO,ETB' setting ...
Wed Mar 12, 2025 09:54:20: Trace: Using detected ETMv3CM at address 0xe0041000
Wed Mar 12, 2025 09:54:20: Trace: Access to detected ETMv3CM(architecture=3.5) initialized (CONF=0x8c842000, CTRL=0xc10, IDR=0x4114f250)
Wed Mar 12, 2025 09:54:20: INFO: SWO trace mode is not supported by the probe (use I-jet/I-jet-Trace probe) - trace is disabled.
Wed Mar 12, 2025 09:54:20: There were 5 warnings during the initialization of the debugging session.
Wed Mar 12, 2025 09:54:26: IAR Embedded Workbench 9.10.1 (C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armPROC.dll)
Wed Mar 12, 2025 09:54:27: Loading the CMSIS-DAP driver


我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-8 16:43
  • 签到天数: 299 天

    连续签到: 1 天

    [LV.8]以坛为家I

    3744

    主题

    7313

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    37888
    最后登录
    2025-4-27
    发表于 2025-3-13 11:03:17 | 显示全部楼层
    步骤1:检查并调整.icf文件中的内存配置
    确认Flash和RAM地址范围:
    打开官方例程的.icf文件,确保定义的Flash和RAM地址与芯片手册中的内存映射一致。例如,LPC18xx系列通常从0x1A000000开始执行SPIFI Flash代码,内部Flash可能位于0x00000000或0x10000000。

    设置正确的向量表地址:
    在.icf文件中,确保向量表(如vector_table段)被正确分配到芯片启动时预期的地址(例如0x10000000)。示例修改:
    1. define symbol __ICFEDIT_region_ROM_start__ = 0x10000000;
    2. define symbol __ICFEDIT_region_ROM_end__   = 0x1003FFFF;
    复制代码

    步骤2:验证芯片启动模式
    检查硬件启动配置:
    LPC18xx/LPC43xx通过BOOT引脚选择启动源(如内部Flash、SPI Flash等)。确保开发板的BOOT引脚设置与.icf文件中的内存布局匹配。例如:
    从内部Flash启动:BOOT引脚拉低,向量表应位于0x10000000。
    从SPIFI启动:BOOT引脚拉高,代码需链接到SPIFI地址(如0x14000000)。

    步骤3:调整调试器复位脚本
    修改复位策略:
    在IAR项目选项 > Debugger > Setup中,尝试更换复位方式(如使用“Hardware Reset”替代“Software Reset”),或选择其他ProbeScript(如ResetAndRun)。

    自定义复位脚本:
    如果官方脚本ResetAndStopAtUser无法正确停止,可修改复位脚本(.mac文件)或联系恩智浦获取更新的调试脚本。

    步骤4:检查Flash编程算法
    确认Flash Loader适用性:
    在IAR项目选项 > Debugger > Download中,确保选择了正确的Flash编程算法(如FlashLPC18xx_SPIFI)。如果程序链接到SPIFI Flash,需使用对应的加载器。

    步骤5:更新调试工具固件和IAR版本
    升级MCU-LINK固件:
    使用NXP MCU-LINK固件升级工具,确保固件版本支持LPC18xx调试。

    更新IAR至最新版本:
    旧版本可能存在兼容性问题,访问IAR官网获取更新。

    步骤6:验证向量表重映射
    检查启动代码:
    在startup_LPC18xx.s或system_LPC18xx.c中,确认系统初始化代码执行了向量表重映射(如SCB->VTOR = 0x10000000;)。

    步骤7:简化测试代码
    创建最小测试工程:
    使用IAR自带的.icf文件新建一个闪烁LED的简单工程,测试下载和仿真功能。若正常,逐步替换为官方例程组件,定位冲突点。
    签到签到
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-4-27 18:03 , Processed in 0.116209 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表