基于STM/APM32F072制作的J-Link OB调试器项目验证

基于STM/APM32F072制作的J-Link OB调试器项目验证


  • 📍本文基于github项目:https://github.com/geekchun/Jlink-OB/tree/master
  • ⚡申明:仅限个人研究学习,无其他用途。
  • 🌿采用该项目提供的固件,烧录STM32f4时信息以及硬件信息:
    在这里插入图片描述
✨该项目是基于STM32F072CBTx制作的,正好手上之前制作过一款stm32f072RBT6的最小系统板,于是进行功能验证一下,实际采用的是极海的APM32F072RBT6主控芯片,成功验证了项目可行性。
  • 👉在JLINK没有添加license情况下,不支持JLINK软件下载。
  • 🌿J-Link OB-STM32F072 最快下载速度2M,设置2MHz下载速度,需要将J-Link OB-STM32F072的PA1连接到目标板上的NRST引脚,才能达到此速度,没有连接此引脚,只能选择500KHz的下载速度.否则,在设置高于500KHz速度参数时,下载会报错。
    在这里插入图片描述

📓STM32F072的OB调试器简介

  • 📍segger官方对J-Link OB介绍:https://www.segger.com/products/debug-probes/j-link/models/j-link-ob/#supported-devices
  • 🔖仅支持SWD接口
  • 🔖仅支持Cortex-M MCU
  • 🔖支持SWO功能
  • 🔖使用STM32F072的硬件串口来实现的CDC虚拟串口
  • 🔖无需外部晶振,使用内部48MHz的HSI
    🔖 外部器件更少,体积更小巧.
  • 🔖下载速度慢,固件限制jtag时钟最高2MHz。
  • ✨使用个人开发板验证时测试,时钟调至500KHz,下载程序时才不会报错。
  • 🔰如果个人进行验证的话,硬件+制作成本可能就5元以内(主控3.5元+其他元件算1.5)就可以制作,前提是使用立创免费PCB打样。

  • 🍁原理图:
    在这里插入图片描述

  • 📌项目的在线原理图以及PCB文件:https://365.altium.com/files/E4666ADF-0253-4355-9297-A74E3173189E?openedFrom=files&variant=[No+Variations]
    在这里插入图片描述

  • 🌿APM32F072可以参考:(D+需要1.5K上拉):https://www.geehy.com/uploads/tool/APM32F072VB-MINIBOARD%20V1.0.pdf
    在这里插入图片描述

  • ✨stm32f072cxt6芯片的DP线是内置上拉电阻的,可以不需要此上拉电阻。可以参考:https://oshwhub.com/lsanor/j-link-ob-stm32f072_v1-2
  • 📑基于STM/APM32F072 JLINK OB烧录连接方式:
PA2  ---   连接目标板的PA14(swclk)
PA4  ---	连接目标板的PA13(SWDIO)
PA1	 --- 连接目标板的NRST(RST)
---虚拟串口---
PA9(OB_TX)
PA10(OB_RX)
  • 🔧J-Link驱动下载地址:https://www.segger.com/downloads/jlink/

📑固件烧录说明

  • ✨个人直接使用的是项目提供的jlink-ob-072-cortex-m.bin文件直接使用STM32 ST-LINK Utility工具进行烧录。
  • 🌿使用APM32F072芯片,需要注意,如果使用STM32 ST-LINK Utility工具烧录,那么版本不能太高,否则无法连接和识别APM32芯片,新版本的STM32所有上位机软件都有排他性识别。
  • 🏷极海Geehy-ISP软件通过串口下载:https://www.geehy.com/apm32?id=16
  • 🌿烧录完固件后,需要安装驱动,才能正常识别J-LINK,否则在电脑设备管理器中只显示bulk interface设备,必须手动更新驱动才行。🔖具体可以参考:https://wiki.segger.com/J-Link_shown_as_generic_BULK_device_in_Windows
    在这里插入图片描述
  • 🌿驱动下载地址:https://www.segger.com/downloads/jlink/

🛠烧录配置参考

  • 🔧Keil MDK烧录配置参考选项:
    在这里插入图片描述

⛳序列号和license添加

  • ✨添加这2项内容主要是为了使用JLINK软件直接对目标对象进行烧录。添加序列号操作必须使用JLINKV7以下的版本才支持修改序列号的命令。
  • 🌿烧录完成固件后,并且安装了JLINK软件以及打好驱动后,运行JLINK的J-Link Commander窗口,会S/N序列号会显示-1显示:
    在这里插入图片描述
  • 🌿输入exec setsn=20231231,其中setsn=后面的数字字符串中自己随便填写。
    在这里插入图片描述
  • 🌿在JLINK菜单help - license-选择Add license按钮进行添加。
    在这里插入图片描述
  • 🔖添加license序列号需要根据上面所设定的序列号进行生成。忘记了可以提供JLINK command进行查看。
    在这里插入图片描述
  • 📌工具来源于:https://oshwhub.com/LSanor/jlink-ob_32f103
    在这里插入图片描述

在这里插入图片描述

  • 🌿有关固件版本修改说明

使用ST-LINK Utility软件加载烧录文件,定位到固件信息处,双击进行编辑,然后保持。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282827.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WeNet语音识别调用通义千问

WeNet语音识别调用通义千问 WeNet语音识别对通义千问(Qwen-72B-Chat Bot)调用,首先通过WeNet将用户的语音输入转录为文本,然后将此文本输入通用问答模型以获取答案。 本人原创作品,体验一下 连续对话 WeNet语音识别…

Zookeeper实现分布式锁和注册中心

目录 分布式锁 实现方式 分布式锁场景如何选择Redis和zookeeper 用InterProcessMutex实现分布式锁 zookeeper实现注册中心 分布式锁 实现方式 数据库唯一索引Redis的setnxZookeeper创建临时节点及监听机制Zookeeper创建临时有序节点 分布式锁场景如何选择Redis和zookeepe…

为即将到来的量子攻击做好准备的 4 个步骤

当谈到网络和技术领域时,一场风暴正在酝酿——这场风暴有可能摧毁我们数字安全的根本结构。这场风暴被称为 Q-Day,是即将到来的量子计算时代的简写,届时量子计算机的功能将使最复杂的加密算法变得过时。 这场量子革命正以惊人的速度到来&am…

RFC6749-OAuth2.0

前言 最近在项目中需要实现SSO(单点登录)功能,以实现一处注册,即可在任何平台之间登录的功能。我们项目中并没有直接对接第三方认证系统而是通过集成keycloak 完成一系类安全协议的对接工作。如果我们在代码级别自己完成各种安全协议的对接是一项十分大的工程。不仅要走统一的…

论文解读:Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

论文前言 原理其实很简单,但是论文作者说得很抽象,时间紧的建议直接看3.1中原理简述CBMA、原理简述CBMA以及3.2中原理简述coordinate attention block即可。 Abstract 最近关于mobile network设计的研究已经证明了通道注意(例如,the Squee…

【解决复杂链式任务打造全能助手】大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT

大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT,解决复杂链式任务打造全能助手 思维链 CoTlangchainlangchain 大模型结合打造 AutoGPT 思维链 CoT 最初的语言模型都是基于经验的,只能根据词汇之间的相关性输出答案,根…

现阶段SDH,MPLS-VPN,MSTP等广域网几种互联技术介绍

广域网也称远程网,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网可以分为公共传输网络、专用传输网络和无线传输网…

学习SpringCloud微服务

SpringCloud 微服务单体框架微服务框架SpringCloud微服务拆分微服务差分原则拆分商品服务拆分购物车服务拆分用户服务拆分交易服务拆分支付服务服务调用RestTemplate远程调用 微服务拆分总结 服务治理注册中心Nacos注册中心服务注册服务发现 OpenFeign实现远程调用快速入门引入…

面向对象基础-类与对象-封装

1、类与对象 1.1 概念 类:类是一个抽象的概念,用于描述一类对象的特点。 对象:根据类的概念所创造的实体。 【思考】一个对象可以没有对应的类嘛? 不可以,因为必须现有类才能创建对象。 1.2 类的内容 类中最基础的内容…

【SD】一致性角色 - 同一人物 不同姿势 - 2

首先生成4张不同姿势的图片 masterpiece,high quality,(white background:1.6),(simple background:1.4),1gril,solo,black footwear,black hair,brown eyes,closed mouth,full body,glasses,jacket,long hair,long sleeves,lookig at viewer,plaid,plaid skirt,pleated shirt,…

12.31_黑马数据结构与算法笔记Java

目录 345 设计跳表 Leetcode 1206 346 设计最小栈 Leetcode 155 347 设计端网址 Leetcode 355 348 设计推特 Leetcode 355 349 股票系列问题 Leetcode 121 350 股票系列问题 Leetcode 122 351 股票系列问题 Leetcode 714 352 股票系列问题 Leetcode 309 353 股票系列问…

接入Cloudflare后Nginx和Django获取用户真实IP的办法

可以用Nginx的real_ip的相关命令来实现这个需求。 01-real_ip命令集详解 real_ip命令的使用分为两个步骤: 01-1-设置从哪些代理IP获取真实IP 第1个步骤:通过set_real_ip_from命令设置从哪些代理IP请求获取真实的IP,比如下面的命令: set_real_ip_from…

Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建 Visual Studio 2015 中 SDL2 开发环境的搭建新建控制台工程拷贝并配置 SDL2 开发文件拷贝 SDL2 开发文件配置 SDL2 开发文件 测试SDL2 开发文件的下载链接 Visual Studio 2015 中 SDL2 开发环境的搭建 新建控制台工程 新建 Win32 …

Vue.js和Node.js的关系--类比Java系列

首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到,node.js是基础,提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式,以加速开发。

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn不能正常启动,而在CHD Web页面,flink日志报错提示不明确,不能定位具体错误。CM WEB启动失败错误日志如下图所示: CM查看完成错误日志 [31/Dec/2023 10:45:09 0000] 26000…

Java设计模式实战:从If-Else到策略+工厂方法的演变

引言 可能很多开发者,虽然理解了设计模式的概念,但在实际工作中应用却是另一回事。本篇文章旨在用一个具体的案例来展示如何将设计模式应用到工作的编程问题中。正所谓:“纸上得来终觉浅,绝知此事要躬行。”理论的学习固然重要&a…

若依generator模块解读,Java小白入门(七)

模块基本内容 若依的核心模块基本除了安全那一块,现在还是剩下一个比较重要的章节,是ruoyi-generator,就是代码根据模板来生成,这一块很有必要进行深入了解,本章节我们弄清楚基本框架,以后,我们会在这一块…

回顾 2023,展望 2024

by zhengkai.blog.csdn.net 项目与心得 今年最大的项目和心得,非GCP莫属,作为全球顶尖的云平台, GCP有他的优势,也有很多难用的地方。但是作为当时的一个strategic solution,我们的印度本地化项目必须使用GCP&#xf…

丰田「退股」电装,传统汽车供应链体系走到十字路口

就在中国市场热衷于车企与零部件厂商的合纵连横之际,本周,传统汽车巨头丰田公司宣布,将出售部分电装(Denso)公司股份,资金用于投入电动化、智能驾驶等新技术研发。 按照计划,丰田汽车拟出售超过…

OpenCV-11颜色通道的分离与合并

本次我们使用两个比较重要的API split(mat)将图像的通道进行分割。 merge((ch1,ch2,ch3))将多个通道进行融合。 示例代码如下: import cv2 import numpy as npimg np.zeros((480, 640, 3),…