|
发表于 2017-10-18 18:30:10
|
显示全部楼层
本帖最后由 xivisi 于 2017-10-18 18:37 编辑
我试了,无法上传脚本文件压缩包。
对于第一个核,不需要额外的脚本,Jlink即可正确识别和调试。
对于第二个核,因为Jlink不能自动检测和识别调试总线的地址,所以需要加额外的初始化脚本。
- void ResetTarget(void)
- {
- //core1不能对整个CPU进行复位,如果你的R5处理器的复位信号不是和内核复位关联的,可以去掉这个函数。
- }
- void InitTarget(void)
- {
- int WordAcc;
- int v;
- //正常情况下,Jlink会对没有配置的参数进行检测,或者采用默认值
- //最简单的情况下,只需要配置CORESIGHT_CoreBaseAddr即可
- WordAcc = ((2 << 0) | (0 << 4) | (1 << 24) | (1 << 25) | (1 << 29)); // Word access no auto-inc
- CPU = CORTEX_R5; // Pre-select that we have a Cortex-R5 connected
- JTAG_AllowTAPReset = 1; // J-Link is allowed to use a TAP reset for JTAG-chain auto-detection
- JLINK_CORESIGHT_Configure("IRPre=0;DRPre=0;IRPost=9;DRPost=2;IRLenDevice=4");
- JLINK_CORESIGHT_WriteDP(JLINK_CORESIGHT_DP_REG_CTRL_STAT, (1 << 30) | (1 << 28) | (1 << 1)); // Set SYSPWRUPREQ and DBGPWRUPREQ and clear STICKYORUN
- JLINK_CORESIGHT_WriteDP(JLINK_CORESIGHT_DP_REG_SELECT, (0 << 24) | (0 << 4)); // Select AHB-AP bank 0 (data read/write registers)
- JLINK_CORESIGHT_WriteAP(JLINK_CORESIGHT_AP_REG_CTRL, WordAcc);
- JLINK_CORESIGHT_WriteAP(JLINK_CORESIGHT_AP_REG_ADDR, 0x020C4054); // CCM_CLPCR
- v = JLINK_CORESIGHT_ReadAP(JLINK_CORESIGHT_AP_REG_DATA);
- v |= (1 << 23); // Mask WFI of core1
- JLINK_CORESIGHT_WriteAP(JLINK_CORESIGHT_AP_REG_DATA, v);
- JLINK_CORESIGHT_WriteAP(JLINK_CORESIGHT_AP_REG_ADDR, 0x020D8000); // SRC_SCR
- v = JLINK_CORESIGHT_ReadAP(JLINK_CORESIGHT_AP_REG_DATA);
- v |= (1 << 22); // Enable core1
- JLINK_CORESIGHT_WriteAP(JLINK_CORESIGHT_AP_REG_DATA, v);
- v = JLINK_CORESIGHT_ReadDP(JLINK_CORESIGHT_DP_REG_RDBUF); // Force DAP to perform the write NOW (otherwise it may be delayed until the next DP/AP access)
- CORESIGHT_CoreBaseAddr = 0x82152000; // Core0: 0x82150000; Core1: 0x82152000;
- CORESIGHT_AddAP(0, CORESIGHT_AHB_AP);
- CORESIGHT_AddAP(1, CORESIGHT_APB_AP);
- }
复制代码
另外,如果你的R5处理,启动另外一个核有额外的寄存器控制, 也需要在初始化脚本中控制。
当正确连接后,可以开两个IAR IDE 借助同一个物理JLINK 同时调试一个SMP CPU的多个核。
|
|