文章目录

  • 0x01 数据异常?
  • 0x02 排查过程
  • 0x03 究其原因
    • 下面有空更新,内部解锁FLASH操作。出差期间发文,很累了,暂时先写到这里
  • 更多

0x01 数据异常?

在一次偶然的情况下,大佬发现他的JTAG出现了莫名其妙的操作——每次烧写之后进行Connect数据就会出现内部FLASH全擦写。而我自己的就不会全擦写。这也是最初的问题源。

0x02 排查过程

首先,我和大佬对调了JTAG,测试了一下JTAG的方式,我的JTAG显示固件版本是9.3.0,大佬的固件版本为8.0.0,但是我的J-FLASH是可以使用两者进行烧写的。而大佬的J-FLASH两者也是都会擦写。我们使用的J-FLASH是同一个版本的。应该是不会出现特别的操作的。
这样唯一的不同点就在于所建立的工程的不同。
我将大佬的工程文件换成我的工程文件,结果成功的读取到了数据。也就证明了当前的数据工程文件出现了问题。

0x03 究其原因

根据对于两个文件的比对发现,我的文件——下文称为可读工程文件,对比于大佬的文件——下文称为擦写工程文件。这两个工程文件的差异主要在两点:擦写地址为0x08000000和0x06000000,而一个工程的刷写脚本为XXXX,而另一个工程的刷写脚本为XXXX(Allow opt bytes)。而就此而言我们真正找到了原因。
根据多方面的查找,终于大佬在SEGGER的手册中找到了相应的介绍。

Allow opt bytes device selection

The “allow opt. bytes” device selection is only available for STM32F1 series devices. For later devices, memory mapped programming of the option bytes is not feasible as for some series, the option bytes become valid immediately which would cause immediate connection loss to a device (in case readout protection is enabled) before the option byte programming can be verified.

The STM32 series devices provide option bytes which allow “permanent” configuration as well as readout protection for the device. In order to enable or disable readout protection, a sequence of multiple read / write accesses to special function registers of the STM32 MCU has to be performed. The sequence is different for each sub-family of the STM32 device series and is described in the respective reference manual of the device. A list of example J-Link commander files and J-Flash projects which enable or disable the readout protection of an STM32 device is provided below. Please note that the provided files serves as an example / proof of concept. A user may alter them in order to suit their specific use case, e.g. using smaller timeouts, programming other values, etc.

也就是说,当时是因为开启了相应的FLASH程序刷写,导致了当前芯片FLASH被保护了,而Connect之前没有在片内进行相应的FLASH动作,引发了擦写。
而相应的避免擦写的解锁操作在SEGGER的手册里面也有,但是想在芯片之中直接进行FLASH防止读取的方式的话只能查阅该手册.

下面有空更新,内部解锁FLASH操作。出差期间发文,很累了,暂时先写到这里

更多

本文首发自 记:一次意外JTAG使用引发对于STM32内核的了解-我的博客,更多文章可进入我的博客详查。

记:一次意外JTAG使用引发对于STM32内核的了解相关推荐

  1. 记一次意外的自定义控件

    有时候,意外也许就会造成一个不经意间的成功. [注意:本文章前两节尽是吐槽,要看代码,实现方案什么的,请直接看第三节] [注意:本文章前两节尽是吐槽,要看代码,实现方案什么的,请直接看第三节] [注意 ...

  2. 记一次代码编写规范引发的惨案 | perl脚本转前端平台代码之‘天坑’

    前言 在一次修改后台脚本的途中,几经挫折,一顿缝缝补补,以为百无一疏之时,信心满满的提交到前端运行上线.结果喜闻乐见,呵呵,又双叒叕报错了- 经过 报错代码类似如下: #错误日志: 2020-07-2 ...

  3. 升级jenkins 导致jenkins启动失败_害你加班的Bug是我写的,记一次升级Jenkins插件引发的加班

    本文主要记录了下Jenkins升级插件过程中出现的场景,一次加班经历,事发时没有截图,有兴趣可以看看. 起因 需求 最近有个需求:在Jenkins流水线中完成下载Git上的文件简单修改并提交的功能 起 ...

  4. 害你加班的bug就是我写的,记一次升级Jenkins插件引发的加班

    主旨 本文主要记录了下Jenkins升级插件过程中出现的场景,一次加班经历,事发时没有截图,有兴趣可以看看. 起因 需求 最近有个需求:在Jenkins流水线中完成下载Git上的文件简单修改并提交的功 ...

  5. 干货 | 记一次跨域配置引发的思考

    作者简介 Flora,携程高级研发经理,关注Node.js相关领域. 本文主要记录一次静态资源服务源站更新了跨域策略后,引发的客户端跨域请求失败的案例. 如果对跨域不太熟悉的同学,可以阅读一下MDN ...

  6. 记一次升级Oracle驱动引发的死锁

    问题描述 近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了2次"死锁(deadlock)"的问题,部分关键日志如下: Found one ...

  7. 记一次synchronized锁字符串引发的坑兼再谈Java字符串

    问题描述 业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间. 并发下,取IP是有一定策略的,取到IP之后拿IP对应的 ...

  8. 【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私

    前言

  9. 记一次Mac上launchctl引发的问题

    问题 在一次偶然打开终端,查看系统日志的时候,发现一直有sunlogin相关的打印输出,这不是早就卸载了的向日葵软件么!作为强迫症患者肯定不能容忍这多余的输出,一定要把它给干掉. Apr 27 17: ...

最新文章

  1. C#WinForm制作异形窗体/控件
  2. l usr bin mysql,解决/usr/bin/ld: cannot find -lmysqlclient错误
  3. python写乘法口诀-如何用python编写乘法口诀表
  4. oracle实现自增字段
  5. docker快速搭建RabbitMQ集群
  6. 使用spring的@autowired注解,无法实例化dao
  7. Xml转换成html表格代码,如何用C++代码将XML文件转换为HTML表格?
  8. 第一行代码(第二版)全书代码下载
  9. KNN算法(K近邻学习)
  10. 3d激光雷达开发(基于参数模型的滤波)
  11. LeetCode 776. Split BST
  12. 观点丨企业云管平台(CMP)项目成功的关键因素
  13. java 抽象工厂 类图_Java设计模式——抽象工厂模式
  14. 腾讯视频国际版(Android)电量测试方法研究与总结
  15. 鸿蒙曰意心养翻译,文言文情话及翻译
  16. Jdk8下载安装配置教程
  17. 炫酷动漫游戏网站页面设计html页面前端源码
  18. 第一次读 “Clean” 系列,并没有觉得这是一本多好的书
  19. HDU - 3237 Help Bubu (好题)
  20. php 扑克牌洗牌算法,随机洗牌算法 | 学步园

热门文章

  1. 境界--------相濡以沫,不如相忘于江湖
  2. 【设计模式】- 观察者模式
  3. 新特性速递 | InnoDB redo log archiving(归档)
  4. 在威联通NAS上实现硬盘独立休眠
  5. 模拟新浪微博随便看看界面布局
  6. 【积跬步以至千里】Excel行列互换
  7. Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版
  8. 前端获取微信头像 base64 数据的踩坑实践
  9. vue开发公众号-关闭浏览器返回主公众号
  10. 一键体验 Istio