前言
记录制作 .axf 文件转换为 .bin 文件的 python 脚本过程遇到的难题和思考,脚本地址是nixgnauhcuy/python_script (github.com)。
之前写过一篇 《关于嵌入式的bin、hex、axf、map》的文章,讲述了 .bin、.hex、.axf、.map 文件的概念和用途,那个时候对 .axf 文件的理解过于片面,在制作脚本的过程中,发现了自己的不足,所以这次就来详细记录一下。
之前都是依赖于 fromelf.exe 工具来转换 .axf 文件为 .bin 文件,但是不知道具体的实现过程,就想自己体验一下这个流程,所以尝试用 python 实现。
准备工作
在制作脚本之前,我用 Keil 实现了某款芯片的程序,生成了 .axf 文件,然后使用 fromelf.exe 工具转换为 .bin 文件,这里生成的 .axf 文件和 .bin 文件就作为我后面验证脚本的输入文件和验证是否正确的输出文件。
初步实现
先分析 .axf 文件,打开后,第一反应,“WTF,这怎么看!”,
第一眼,一脸懵逼,无从下手,所以我用对比工具对比下,与 .bin 文 ...
完整代码我已经上传到 Github 上了,可前往 https://github.com/nixgnauhcuy/QCustomPlot_Pyqt_Study 获取。
完整文章路径:
Pyqt QCustomPlot 简介、安装与实用代码示例(一) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(二) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(三) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(四) | nixgnauhcuy
前言
继上文,继续补充官方示例 demo 实现~
实用代码示例
Interaction Example
The interaction example showing the user selection of graphs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555 ...
完整代码我已经上传到 Github 上了,可前往 https://github.com/nixgnauhcuy/QCustomPlot_Pyqt_Study 获取。
完整文章路径:
Pyqt QCustomPlot 简介、安装与实用代码示例(一) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(二) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(三) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(四) | nixgnauhcuy
前言
继上文,继续补充官方示例 demo 实现~
实用代码示例
Line Style Demo
A demonstration of several line styles
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import sys, mathfrom PyQt5.QtWidgets ...
完整代码我已经上传到 Github 上了,可前往 https://github.com/nixgnauhcuy/QCustomPlot_Pyqt_Study 获取。
完整文章路径:
Pyqt QCustomPlot 简介、安装与实用代码示例(一) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(二) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(三) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(四) | nixgnauhcuy
前言
继上文,继续补充官方示例 demo 实现~
实用代码示例
彩色图演示
A 2D color map with color scale. Color scales can be dragged and zoomed just like axes
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495 ...
完整代码我已经上传到 Github 上了,可前往 https://github.com/nixgnauhcuy/QCustomPlot_Pyqt_Study 获取。
完整文章路径:
Pyqt QCustomPlot 简介、安装与实用代码示例(一) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(二) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(三) | nixgnauhcuy
Pyqt QCustomPlot 简介、安装与实用代码示例(四) | nixgnauhcuy
简介
QCustomPlot 是一个用于绘图和数据可视化的 Qt C++ 小部件。它没有其他依赖项,并且有详细的文档说明。这个绘图库专注于制作高质量的、适合发表的二维图表和图形,同时在实时可视化应用中提供高性能。
QCustomPlot 可以导出为多种格式,例如矢量化的 PDF 文件和光栅化图像(如 PNG、JPG 和 BMP)。QCustomPlot 是在应用程序内部显示实时数据以及为其他媒体制作高质量图表的解决方案。
QCu ...
前言
这一篇与上一篇介绍 Keil MDK IDE 基本一致,所以直接引用上一篇的前言。
Keil MDK 是嵌入式开发中高频使用的 IDE 工具,许多芯片的 SDK 都包含 keil 对应的开发工程。
最近在使用过程中,同事提出了一个需求,希望将编译的输出文件(如 bin、hex、axf、map)统一输出到整个项目的根目录,便于统一管理,这样就不用每次进入项目里,一层一层的查找输出的文件。这些文件还可能分布在不同的地方,例如 ./Listings 目录中存放 .bin 和 .map 文件,而 ./Objects 目录中存放 .axf 和 .hex 文件。这对不了解项目结构的工程师非常不友好。
对于他的考虑,我完全赞同,因为在一个项目中,后续接手的人可能不需要了解代码的具体实现和工程结构,他们只需要找到对应的输出文件,拿来对芯片进行烧录。
既然需求有了,那么就需要考虑怎样实现了,原先我想的是在根目录里,写一个 python 脚本,直接运行定位到具体文件路径并拷贝出来,但是这样还需要多一个步骤,就是手动运行脚本,所以不是特别的自动化,那么有没有办法直接在运行的过程中,就将文件处理好呢? ...
前言
Keil MDK 是嵌入式开发中高频使用的 IDE 工具,许多芯片的 SDK 都包含 keil 对应的开发工程。
最近在使用过程中,同事提出了一个需求,希望将编译的输出文件(如 bin、hex、axf、map)统一输出到整个项目的根目录,便于统一管理,这样就不用每次进入项目里,一层一层的查找输出的文件。这些文件还可能分布在不同的地方,例如 ./Listings 目录中存放 .bin 和 .map 文件,而 ./Objects 目录中存放 .axf 和 .hex 文件。这对不了解项目结构的工程师非常不友好。
对于他的考虑,我完全赞同,因为在一个项目中,后续接手的人可能不需要了解代码的具体实现和工程结构,他们只需要找到对应的输出文件,拿来对芯片进行烧录。
既然需求有了,那么就需要考虑怎样实现了,原先我想的是在根目录里,写一个 python 脚本,直接运行定位到具体文件路径并拷贝出来,但是这样还需要多一个步骤,就是手动运行脚本,所以不是特别的自动化,那么有没有办法直接在运行的过程中,就将文件处理好呢?
当然是有的,不然就没有这篇文章了,Keil 提供的 Command Items,可以 ...
最近在学习蓝牙多点测距的内容,故此记录一下。
基于 RSSI 的距离计算方法
在蓝牙定位技术中,最常用的方法是基于信号强度 RSSI 值,测距方法的本质是通过计算当前环境下信号强度与距离的关系,从信号强度的 RSSI 值计算出两个设备之间的距离。
首先 RSSI 信号的衰减和距离的对数成正比,在最简单的情况下,RSSI 的计算方式可以表示为:
RSSI=TxPower−10∗n∗log(d)RSSI = TxPower - 10 * n * log(d)
RSSI=TxPower−10∗n∗log(d)
转换为距离公式为:
d=10(TxPower−RSSI10∗n)d = 10 ^{(\frac{TxPower - RSSI}{10 * n})}
d=10(10∗nTxPower−RSSI)
其中,
TxPower - 发射和接收相隔 1 米时的信号强度
d - 距离
n - 环境衰减因子
RSSI - 接收信号强度
使用 C 代码实现:
1234#define ALG_LOG_10_VALUE 2.3026#define ALG_TXPOWER_1M 50#define A ...
1 前期准备
安装依赖工具,
1> sudo pacman -S netbpm
将要显示的 logo 图片准备好,logo 格式可以是 png,bmp 或 jpge。
我用的是 png 格式的 logo,
uboot 的 logo 是 bmp 格式的,那么需要先转化为 bmp 格式,这里不能直接用 windows 的画图软件直接转化,直接转化后烧录 logo 会不显示,使用下述命令:
1pngtopnm ./mylogo.png | ppmquant 31 | ppmtobmp -bpp 8 > ./mylogo.bmp
命令及输出如下:
12345678910> pngtopnm ./mylogo.png | ppmquant 31 | ppmtobmp -bpp 8 > ./mylogo.bmppnmcolormap: making histogram... pnmcolormap: Scanning image 0 pnmcolormap: 8753 colors so far pnmcolormap: 8753 colors found pnm ...
1 前言
复习下,SPI、DSPI、QSPI 对应的接口时序,并作笔记。
2 SPI
2.1 简介
SPI(Serial Peripheral Interface),是一种同步串行通信协议,用于在微控制器与各种外围设备进行全双工通信,它是一种全双工通讯协议,意味着数据可以同时在两个方向上传输。它是由摩托摩拉公司设计。
SPI 协议通常由一个主设备(主机)和一个或多个从设备(从机)组成。主设备负责发起通信并控制数据传输的时序,而从设备则被动地响应主设备的指令并提供数据。
2.2 接口
SPI 通信涉及四条线:
SCLK:串行时钟(Serial Clock),由主设备产生,用于同步数据传输。
MOSI:主出从入(Master Out Slave In),用于从主设备向从设备传输数据。
MISO:主入从出(Master In Slave Out),用于从从设备向主设备传输数据。
SS(或CS):片选(Slave Select),主设备用来选中特定的从设备进行通信。
SPI 协议的工作方式是通过主设备产生时钟信号来同步数据传输。主设备通过 SCLK 线产生时钟脉冲,每个时钟脉冲对应一个数 ...