使用aardio写一个基于pyocd的单片机下载器

news2025/1/20 7:06:56

1 新建工程

最开始本来是打算调用pyocd 的python api的,但是一个是内嵌包一直安装出问题,一个是考虑到本地pack不想重复安装和管理,于是就转做pyocd的前端了,也就是直接调用pyocd,根据返回数据解析,然后执行要做的命令。

所以新建一个普通工程就可以。

2 基本功能

下载 擦除 复位,主要是这几个常用的,
然后要能选择对应的仿真器和单片机型号,能支持的列表,就要用一下pyocd list和pyocd list -t命令查询,根据返回的结果解析。
p.s 其实直接用pyocd json 命令返回json会很容易,但是我一开始没看到这个命令,就算了,正好生成命令pyocd list的执行结果也可以给人看。
其中pyocd list会返回仿真器的列表,我是通过head也就是第一行的标题的位置来得到下面每行内容的分割位置,得到正确的结果。这里发现是每隔一行为一个仿真器信息。
而pyocd list -t 返回可用器件型号,分割方法类似,不过这里不是每隔一行而是连续的每行都是对应结果,一开始这里没看到导致少了一半。
另外这里在使用aardio遇到一个bug就是结构体的值发生了变换(aardio实际上没有结构体而是表),不知道为什么,类似的方法直接赋值给数组就不会出问题。

3 基本实现

在这里插入图片描述

除了基本界面,调整了一下布局,让他能缩放合适,内嵌了字体(软件凭空大了1M多,本来只有几百kb),主要是好不容易调整好了不想改。
把一些生成命令的语句例如pyocd gdbserver收纳到了菜单栏。
基本就这样。

csdn这个鸟平台连附件功能都没有。
这里有我上传的:
http://www.51hei.com/bbs/dpj-228512-1.html

4 总结

aardio确实挺好用的,很能缝合,布局上也是自动缩放,要求不高的话很容易调整到还不错的效果。写起来很快,高分屏的问题也自动处理了,第一次用观感不错。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NumPy之矩阵、向量、线性代数等的操作

NumPy之矩阵、向量、线性代数 NumPy矩阵和向量矩阵向量创建向量创建矩阵访问元素转置矩阵矩阵加减乘除矩阵向量乘法矩阵求逆矩阵的迹向量点积向量范数 NumPy线性代数计算矩阵乘积计算矩阵的逆解线性方程组 NumPy矩阵和向量 矩阵 在NumPy中,矩阵可以看作是一个二维数…

【Django】Django ORM Cookbook--20230427

英文版http://books.agiliq.com/projects/django-orm-cookbook/en/latest/ 中文版https://django-orm-cookbook-zh-cn.readthedocs.io/zh_CN/latest/query.html 查询和筛选 1. 如何查看Django ORM查询集的原生SQL? >>> queryset Event.objects.all() &…

JVM内存模型和结构

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,有着自己完善的硬件架构,如处理器、堆栈等。 为什么需要JVM? Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使…

QT笔记——第三方开源库停靠窗口类似QDockWidget

我们想要一个类似于Visual Studio 2019的dockwidget 停靠窗口 一个开源库:类似于Visual Studio 2019 dockwidget 的开源库 下载,解压下来 使用vs qt 插件打开src文件夹下的 src.pro 生成如下: 我们来运行它的例子: 使用vs qt …

【Vue工程】001-Vite 创建 Vue-TypeScript 项目

【Vue工程】001-Vite 创建 Vue-TypeScript 项目 文章目录 【Vue工程】001-Vite 创建 Vue-TypeScript 项目一、环境二、创建项目1、pnpm 创建 Vite 项目2、设置项目名3、选择vue4、选择 TypeScript5、创建完成6、安装与启动7、访问 http://localhost:5173/8、默认生成的项目结构…

LeetCode0718.最长重复子数组 Go语言AC笔记

时间复杂度:O(n),空间复杂度:O(n) 解题思路 动态规划思想。令dp[i][j]表示两数组以nums1[i]和nums2[j]为起始元素的公共前缀最大长度,所以如果nums1[i]和nums2[j]元素相同,那么dp[i][j]dp[i1][j1],否则dp[…

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp合并偏振相机4个角度的图像并显示(C#)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp合并偏振相机4个角度的图像并显示(C#) Baumer工业相机Baumer工业相机偏振相机的技术背景代码案例分享1:引用合适的类文件2:回调函数里联合BGAPI SDK和OpenCVSharp合并偏…

Leetcode刷题日志2.0

目录 前言: 1.数字的补数 2.最大连续 1 的个数 3.下一个更大元素 I 4.斐波那契数 5.提莫攻击 6.557. 反转字符串中的单词 III 前言: 今天就分享一下最近刷到的leetcode习题吧 ,编程语言:Python3。废话不多说&#xff0…

【备战蓝桥杯国赛-国赛真题】2022

思路 题目的一是就是从1~2022这2022个数中挑选十个数,使其的总和为2022,如果做过背包问题,那么思路就很好出来了,每个数无非就是选与不选,每个数有他们的权值,权值就等于它们本身的值,抽象成背…

java调用百度的接口获取起始位置的距离

需求:校验收货地址是否超出配送范围 重要: 做该需求的思路就是通过卖家和卖家具体的地址信息,来获取到二者的经纬度, 此时可以使用百度的 "地理编码服务",即可获取对应的经纬度 第二步,就是通过二者的经纬度,按照百度接口的要求,发送,即可获取到包含二者距离的JSON串…

循环语句for

for循环 循环和遍历的概念 循环(Loop)和遍历(Traversal)是两个在计算机编程中经常使用的概念。 循环是一种重复执行一段代码的结构。通过循环,可以在满足一定条件的情况下,多次执行相同的代码。循环语句…

mysql8.0最新版本超详细安装教程

mysql8.0最新版本超详细安装教程 第一步: 百度搜索MySQL 第二步:进入MySQL官方网站后点击DOWNLOADS 第三步:下拉页面找到图中标识 并点击 第四步:点击图中标识 第五步:点击下载第一个 第六步:点击图中标识 第七步:在D盘创建mysql文件夹 第八步:将下载好的mysq压缩包放入到新建…

深度学习:Opencv的blobFromImage是如何工作的

文章目录 1 OpenCV中blobFromImage函数简介2 blobFromImage是如何工作的2.1 介绍2.2 blobFromImage 的工作流程2.3 blobFromImage 和 blobFromImages1 OpenCV中blobFromImage函数简介 如果训练模型时图像的尺寸 与实际使用的图像尺寸不一致,需要对图像尺寸进行变换; blobFr…

第一次使用服务器部署项目

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

HCIA-RS实验-STP和RSTP(2)

接上一篇文章;其他的不多说,新建一个新的配置设备;如果接上一个实验的配置的话,建议先把所有配置删除后再执行;新的拓扑也与上一个实验一致; 目录 创建新配置 配置RSTP 查看stp版本 配置边缘端口 …

如何防止重复下单

一、问题背景 最简单的:DB 事务。如创建订单时,同时往订单表、订单商品表插数据,这些 Insert 须在同一事务执行。 Order 服务调用 Pay 服务,刚好网络超时,然后 Order 服务开始重试机制,于是 Pay 服务对同…

算法基础第一章

算法基础 第一章:基础算法1、排序2、二分查找3、大数据量的加法和减法(高精度加减法)3.1、加法3.2、减法 4、前缀和4.1、一维前缀和4.2、二维前缀和 5、差分5.1、一维差分5.2、二维差分 6、双指针7、位运算7.1、lowbit的应用 8、离散化9、区间…

基于c与数据库实现的电子词典

1.搭建客户端与服务器,客户端使用多线程方式,主线程跑发送信息给服务器功能,分支线程跑循环接收服务器信息功能 客户端代码: //TCP客户端的搭建 int tcp_kehuduan() {//创建字节流套接字cfd socket(AF_INET,SOCK_STREAM,0);if(c…

【TCP服务器的演变过程】C++使用libevent库开发服务器程序

C使用libevent库开发服务器程序 一、引言二、libevent简介三、Libevent库的封装层级3.1、reactor对象封装struct event_base3.2、事件对象struct event3.3、struct bufferevent对象3.4、evconnlistener对象3.5、事件循环3.6、事件处理 四、完整示例代码小结 一、引言 手把手教…

病毒的遗传分析

噬菌体的生活周期 烈性噬菌体 噬菌体吸附到宿主细胞上尾丝鞘收缩,中轴刺穿宿主细胞头部的DNA被送入宿主细胞在数分钟内,所有的细菌核算和蛋白质合成都被抑制 噬菌体大分子合成(DNA,蛋白外壳),细菌的核算被降解 噬菌体组装:DNA被包到头部,组装尾部,装上尾丝 宿主细胞破裂:约20…