通过JTAG恢复STM32 MCU的标记

时间:2018-01-18 18:01:33

标签: microcontroller stm32 jtag

我有一块可能是STM32 mcu的电路板。我想为该板制作自定义固件,因为库存非常多。不幸的是,电路板制造商非常友好地研究了所有标记。有没有办法通过jtag获取设备/系列ID并将其交叉引用到型号?我能找到的一切都是关于获得芯片的唯一ID,这不是我需要的。

3 个答案:

答案 0 :(得分:1)

您可以通过设备的JTAG IDCODE进入STM32系列,但是获取确切的部件号将需要更多猜测,例如实际闪光和柱塞尺寸,或可选功能。

我会做以下事情:

  • 从边界扫描JTAG TAP获取IDCODE,确认它是ST和STM;
  • 在ST的手册中找到它,找到家人;
  • 查看该系列是否实现了闪存识别功能(某些系列在内存空间中以固定偏移量显示闪存大小和页面大小);
  • 如果没有,通过内存访问探测实际的闪存大小(在合理的地址空间中的二分法将产生良好的结果);
  • 为ram做同样的事。

最后,你肯定知道你在电路板上的包装。有了这个,您应该能够缩小到匹配的部件号。

答案 1 :(得分:0)

pystlink(SWD编程器)中实现,几乎成功识别任何STM32 MCU。

原则是:

  1. 在地址PART_NO的寄存器CPUID中读取0xe000ed00,此时可以识别MCU是否为此文件中的CortexM0,M3,M4,.. stm32devices.py < / LI>
  2. IDCODE_REG(M0和M0 +在不同于M3,M4和M7的地址上有此寄存器)前12位是DEV_ID,它识别族并再次查看stm32devices.py文件
  3. 从寄存器FLASH_SIZE_REG读取闪存大小(每个系列在不同的地址上都有此寄存器)并通过stm32devices.py文件再次识别具体设备
  4. 或者只是连接SWD并保持pystlink以检测正确的MCU。

答案 2 :(得分:0)

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