首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JTAG恢复STM32单片机磨掉的标记

通过JTAG恢复STM32单片机磨掉的标记
EN

Stack Overflow用户
提问于 2018-01-19 02:01:33
回答 3查看 413关注 0票数 1

我有一个可能是STM32单片机的电路板。我想使自定义固件的板,因为股票之一是非常错误的。不幸的是,电路板制造商很友好,把所有的标记都磨掉了。有没有办法通过jtag获取设备/系列id并将其交叉引用到型号?我能找到的所有东西都是关于获取芯片的唯一id的,这不是我需要的。

EN

回答 3

Stack Overflow用户

发布于 2018-01-19 06:51:50

你可以通过设备的JTAG IDCODE得到一系列的STM32,但要得到确切的部件号需要更多的猜测,比如实际的闪存和内存大小,或者可选的功能。

我会做以下事情:

  • 从边界扫描JTAG抽头获取IDCODE,确认是ST和STM;
  • 在ST的手册中查找,找到家庭;
  • 查看家庭是否实现了闪存识别功能(有些家庭在内存空间中以固定偏移量暴露闪存大小和页面大小);
  • 如果没有,则通过内存访问探测实际闪存大小(合理地址空间的二分法将获得良好结果);

对ram执行相同的操作。H210F211

最后,你可以肯定的知道你在黑板上的包。这样,您应该能够缩小到匹配的部件号。

票数 1
EN

Stack Overflow用户

发布于 2018-01-20 16:06:07

pystlink (SWD programmer)中实现,它几乎成功地识别了任何STM32单片机。

原则是:

  1. 从地址为0xe000ed00的寄存器CPUID中读取PART_NO,由此可以识别MCU是否为CortexM0、M3、M4、..在此文件中,stm32devices.py
  2. read IDCODE_REG (M0和M0+的此寄存器与M3、M4和M7的地址不同)的前12位是DEV_ID,它标识系列,并再次查看stm32devices.py文件
  3. 从寄存器FLASH_SIZE_REG读取闪存大小(每个系列的此寄存器位于不同的地址),并通过stm32devices.py文件

再次标识具体设备

或者简单地连接SWD并保持pystlink来检测正确的MCU。

票数 1
EN

Stack Overflow用户

发布于 2018-01-22 21:41:17

如果您可以访问引导加载程序UART,则可以使用stm32flash来识别设备并对其进行编程,除非它被锁定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48327625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档