CRP for LPC2132

本文针对J-Link无法识别ARM芯片的问题进行了分析,主要包括硬件连接不当及ARM芯片内部启用CRP功能两大原因,并提供了相应的解决方法。

SEGGER J-Link Commander V4.46a ('?' for help)
Compiled Apr 13 2012 19:32:19
DLL version V4.46a, compiled Apr 13 2012 19:32:02
Firmware: J-Link ARM V8 compiled Dec  1 2015 11:42:48
Hardware: V8.00
S/N: 20080643
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 3.229V
Info: Could not measure total IR len. TDO is constant high.
Info: Could not measure total IR len. TDO is constant high.
No devices found on JTAG chain. Trying to find device on SWD.

WARNING: RESET (pin 15) high, but should be low. Please check target hardware.

WARNING: RESET (pin 15) high, but should be low. Please check target hardware.
No device found on SWD.
Did not find any core.
Info: Could not measure total IR len. TDO is constant high.
Info: Could not measure total IR len. TDO is constant high.
No devices found on JTAG chain. Trying to find device on SWD.

WARNING: RESET (pin 15) high, but should be low. Please check target hardware.

WARNING: RESET (pin 15) high, but should be low. Please check target hardware.
No device found on SWD.
Did not find any core.
J-Link> 

出现上述问题的原因主要有以下几个方面:

【1】硬件连接,可以按照NXP官方提供的标准接法如下图

需要检查ARM芯片的JTAG定义的引脚和JLink接口定义的引脚一一对应(注,这里是10PIN接头),如下图

裸片LPC的ARM7(LPC2129)调试过程

如果硬件连接没有问题,需要检查各连线之间有没有虚焊,然后再JLink的命令窗口的"J-Link>"提示符后面键入"r"命令,用示波器分别测量TCK、TDI、TDO引脚的信号,如果正常,是可以测量到脉冲信号的。

【2】ARM芯片内部使能了CRP(Code Read Protection)功能

如果LPC系列的ARM芯片使能了CRP功能,JLink将无法读取ARM内部寄存器的内容,从而不能找到ARM core ID。
详细信息请参考LPC2100系列ARM7微控制器的加密方法LPC2478加密设置(LPC)(加密)

 

If the CRP has been enabled, there is nothing J-Link can do to erase the device since the JTAG interfaceis disabled.
The LPC devices provide a so called ISP mode (UART communication) in which a device erase command can be sent to mass erase the device which also causes the CRP to be lifted.

If the CRP is disabled but there is a malfunctioning application in the flash memory which for example locks-up the device by incorrectly setting up the PLL or things like that
which also prevents a connection via JTAG and makes it impossible to identify the core,
you can force the device to boot in ISP mode which does not start the application but the JTAG interfaceis enabled.
In this mode the device can easily be erased via J-Flash, Flasher ARM etc.

此种情况, 可以使用ISP清除CRP。

### 关于LPC2132微控制器的技术文档与应用示例 #### 技术文档概述 LPC2132是一款基于ARM7TDMI-S内核的高性能微控制器,集成了丰富的外设资源和高效的存储管理能力。其主要特点包括支持实时模拟、嵌入式跟踪以及高达512KB的片上Flash存储器[^1]。对于开发者而言,了解该芯片的具体特性及其配套工具链至关重要。 以下是几类重要的技术文档: 1. **官方数据手册** 数据手册详细描述了LPC2132的核心架构、引脚定义、工作模式及各类外设的功能参数。这是进行硬件设计的基础参考资料[^1]。 2. **用户指南** 用户指南提供了如何配置和初始化LPC2132的关键指导,例如时钟树设置、电源管理模式切换等内容。此外还涵盖了ISP(In-System Programming)功能的操作细节,这对于通过串口更新固件尤为重要[^2]。 3. **软件开发环境说明** 使用ADS1.2或其他IDE编写应用程序时,需熟悉编译选项的选择、链接脚本定制等方面的知识点。特别是当目标系统受到严格的空间约束时——如案例中提到仅允许占用32K+8K内存的情况,则更应注重优化策略的应用[^2]。 4. **加密保护机制解析** 如果项目涉及知识产权保护需求,则有必要深入研究CRP(Code Read Protection)相关实现原理。一旦启用此功能,常规调试手段可能受限甚至失效;因此提前规划好生产阶段后的维护路径显得尤为必要[^3]。 #### 应用实例分享 下面列举了一些典型应用场景下的解决方案思路供参考: ##### 实现RTOS移植 成功完成μC/OS-II系统的适配工作后,能够显著提升多任务并发执行效率并简化复杂业务逻辑表达形式。期间针对特定模块进行了必要的调整,比如重写了部分通信协议栈代码片段来匹配实际网络拓扑结构特征[^4]。 ```c // 示例:自定义延时函数以兼容不同平台间差异 void OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli) { OS_ENTER_CRITICAL(); OSTCB *ptcb; ptcb = (OSTCB *)OSTCBCurPtr; if(ptcb->OSTaskStat != OS_STAT_PEND){ // 计算总延迟周期数... TickType_t ticks_to_delay = ... ; vTaskDelay(ticks_to_delay); } OS_EXIT_CRITICAL(); } ``` ##### EEPROM读写操作改进 面对某些特殊型号存储单元访问规则时,合理组织高层API封装有助于提高代码可读性和跨平台迁移便利度。以下是从已有实践中提炼出来的经验总结之一[^5]: ```c /* 设置子地址长度 */ if(suba_type == TYPE_8_PLUS_X){ I2C_sla += ((suba >> SHIFT_BITS)& MASK_VAL); I2C_suba = suba & LOWER_BYTE_MASK; I2C_suba_num = SUBA_NUM_ONE; } bool WriteByteToEeprom(uint8_t device_addr,uint16_t mem_loc,void* data_ptr,size_t size){ bool success_flag=false; uint8_t tx_buffer[size+sizeof(mem_loc)]; memcpy(&tx_buffer[0],&mem_loc,sizeof(mem_loc)); memcpy(&tx_buffer[sizeof(mem_loc)],data_ptr,size); HAL_I2C_Master_Transmit(&hi2c1,(device_addr<<1),tx_buffer,size+sizeof(mem_loc),HAL_MAX_DELAY)==HAL_OK ? \ (success_flag=true):(success_flag=false); return success_flag; } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值