- 博客(38)
- 收藏
- 关注
原创 Windows 软件之常用软件推荐
推荐的软件都是个人认为的简约派软件,也就是功能够用、无广告、不要求登录。大部分软件都可以在腾讯软件中心(下载速度快)下载下来,对于其中无法下载的,建议去其官网下载。
2024-11-20 21:31:00 987
原创 Windows 系统之 PowerShell
官网:https://learn.microsoft.com/en-us/powershell/module/psreadline/1)DOS 下安装,命令:Install-Module -Name PSReadLine -AllowClobber -Force。参考:https://blog.csdn.net/qq_34548075/article/details/120108864。参考:https://zhuanlan.zhihu.com/p/401439255。:搜索以前输入的命令,回车执行。
2024-11-20 21:20:41 1089
原创 ssl证书,以 Nginx 为例
在 HTTPS(HTTP over SSL)请求的 SSL 握手阶段,服务端以数字证书的方式将 RSA 公钥传给客户端,以保证公钥在传输过程中不被篡改。随后在通信过程中,该公钥将用于加密一个密钥,这个密钥则会对通信数据进行对称加密。SSL 数字证书的主要目的是用于传递服务端公钥,以及验证服务器信息。2)X.509 数字证书标准,定义证书文件的结构和内容,详情参考RFC5280。X.509 标准的证书文件具有不同的编码格式,一般有 PEM 和 DER 两种格式3)
2024-11-20 20:59:13 1108
原创 Windows 软件之 7zip 使用
如果运行上述脚本后图标未变,则可以打开 7-zip,选择菜单栏下的 “工具” -> “选项”,根据文件后缀将图标重新关联一下。即目标压缩文件名为 book.7z 的分卷压缩中,当前目标下不能存在名为 book.7z.001 的文件。在第(5)处填写 “1m 1g”,表示压缩的第一卷大小 1MB,剩余的卷大小为 1GB。1)7zip 分卷压缩的以 .7z 为后缀的压缩文件,缺少任何一卷都无法解压。(4)推荐选择上述中的一种图标,然后将其 7z.dll 替换即可。
2024-11-20 20:39:19 911
原创 DAPLINK 源码学习(1)BL 之 main() 函数
移植点描述sdk_init()厂商 sdk 初始化。主要用来进行时钟 RCC 的初始化led、button 初始化。USB 状态指示灯、复位按钮初始化缺省。板子信息定义。包括 daplink 名称、mcu flash/ram 信息等。
2024-10-22 12:00:00 1677 2
原创 USB 模拟 U 盘
结合 daplink 来看,根据鸭子定律,当我们通过 USB 总线协议告诉 USB 主机:插入的设备识别为 64MB U 盘,用起来像 64MB U 盘,那么它就是容量为 64MB 的 U 盘。实际上,运行 daplink 的 MCU 怎么可能有那么大的 FLASH。而且别说是 64MB,就是 64GB 也可以(需要文件系统支持),因为 daplink 只需要一次性数据,并不需要把复制到 U 盘的数据再读取出来,那么这个 DAPLINK U 盘完全就是你强任你强,清风绕山岗了。
2024-10-21 12:00:00 1977
原创 DAPLINK 之 RTT 输出日志
1)RTT(Real Time Transfer,实时传输):SEGGER 的 Real Time Transfer (RTT) 是一种经过验证的技术,用于嵌入式应用中的系统监控和交互式用户 I/O。它结合了 SWO(Single Wire Output)和半主机模式(semihosting)的优点,同时提供了非常高的性能。大致原理是 RTT 在 MCU 的 RAM 中使用 SEGGER RTT 控制块结构管理数据读写。
2024-10-15 12:00:00 1293
原创 DAPLINK 之基于 AIR32F103 制作
备注2:在烧录 bl 时,最好通过 keil 或 OpenOCD 将 mcu 的 flash 整片擦除掉,否则会因为 bl 无法校验通过而运行失败(原因呢这里先按下不表,算了,还是表了吧,就是因为 bl 运行时会校验 flash 中 app 起始地址的内容,如果不为初始值就不运行 bl)。注意:不要直接烧录,而是将 stm32f103xb_stm32f103rb_if.hex “拖拽” 到 “MAINTENANCE” 的 U 盘中,如果 hex 正常的话,该 U 盘名称将变为 “DAPLINK”。
2024-10-14 12:00:00 1818
原创 DAPLINK 之仿真调试器介绍
本文算是 DAPLINK 学习的一个引子,主要介绍一下各类调试器及其使用。接下来我会首先使用合宙 AIR32F103 进行复刻,然后是分析 DAPLINK 源码,最后根据学习情况来自制 DAPLINK。烧录方式:1)ISP(In-System Preogramming,在系统编程):通过 MCU 片内 BootROM 完成在板 Flash 烧写操作(1)要求芯片出厂时带有 ISP 固件程序(2)一般通过串行方式烧写,速度较慢,不适合烧写容量大的代码。
2024-10-11 12:00:00 1266
原创 USB 鼠标的实现
说明:本文章节顺序按照 《圈圈教你学USB》 一书的学习顺序来组织,其中跳过了硬件代码相关的章节。参考:1)《圈圈教你学USB》2009 年第 1 版。
2024-10-10 12:30:00 724
原创 USB 概述及协议基础
中断传输是一种保证查询频率的传输。应用场景:数据量大、对数据的实时性要求不高的场合,如大容量存储设备(Mass Storage Device,MSD)、USB 打印机、扫描仪等。应用场景:适合数据量小,但时间要求严格的设备,如从机接口设备(Human Interface Device,HID)中的鼠标、键盘等设备。不同的是,SETUP 包后只使用 DATA0 数据包,且只能发送到设备控制端点,并且设备必须接收,而 OUT 包没有这些限制。通常把工作在什么模式下的端点,就叫做什么端点,如控制端点、批量端点。
2024-10-10 12:00:00 767
原创 新电脑 Windows 系统初始配置
分区(个人习惯):1TB SSD 分为 2 个分区,一个 256GB 分区为系统盘,剩下的为一个分区。之所以使用 256GB 为系统盘,是因为除开 30GB+ 的原生系统空间外,诸如 JetBrains 的下载缓存,Maven 的 .m2 仓库,STM32CubeMX 的下载缓存,Gradle 的 .gradle 缓存,Chrome 的缓存等等(可使用 git-bash 下的 du 命令查看空间使用情况),让 120GB 的空间根本不够使用。
2024-10-08 12:00:00 1546
原创 OpenOCD 代码学习(5)继续 openocd_thread()
1)server_init() 的执行逻辑如下:2)总的来说,添加了两个 service 到 struct service *services; 链表中:1)target init 命令的大概执行逻辑如下:2)init_targets、init_target_events、init_board 三个命令是定义在 src/target/startup.tcl 文件中三个调用过程 proc。可以让用户在初始化过程中的进行功能补充。3)接下来在 target_init() 函数中,主要有以下内容:(1)根据全局变
2024-09-30 07:30:00 726
原创 OpenOCD 代码学习(4)其它配置命令
1)上一节我们学习了 adapter 与 transport 命令,这一节我们接着学习配置文件中的其它命令。-d3 也作 --debug-level = 3。即指定输出日志级别。-f 也作 --file。这里指定开发板为合宙 air001 芯片。2)这一节主要是学习 air001.cfg 文件的内容。这里简单提一下加载的两个文件:swj-dp.tcl 和 mem_helper.tcl。
2024-09-29 07:30:00 1145
原创 OpenOCD 代码学习(3)adapter 与 transport
1)上一节中,我们知道 parse_config_file() 函数会边解析配置文件,边执行其中的命令,那么接下来我们将主要学习一下 OpenOCD 配置文件中涉及到的命令。2)我们知道,要编写一个 OpenOCD 驱动,除了要实现烧录算法外,还要编写关于 MCU 的配置文件。OpenOCD 主要有 3 类配置文件(具体内容见官方文档第 6 节 配置文件参考),这里我们简单看一下。3)interface:指定调试器的适配器驱动。
2024-09-28 07:30:00 1175
原创 OpenOCD 代码学习(2)执行命令
上一篇文章我们学习了 OpenOCD 注册命令的过程,这一篇我们来年一下 OpenOCD 执行命令的逻辑。
2024-09-27 07:30:00 1865
原创 OpenOCD 代码学习(1)注册命令
1)OpenOCD 与调试器、MCU 的关系:(1)OpenOCD 运行在 PC 机上,用户可以通过 GDB 调试、Telnet 连接 Socket 以及 CMD 命令行的方式执行命令(2)OpenOCD 将命令发送到 MCU 端需要双方约定协议。目前常用的协议为 SWD 和 JTAG,实现这些协议的工具有 DAPLink、ST-Link、JLink 等(3)在 MCU 端内置了 DAP(Debug Access Port)模块,它接收到命令,通过 AHB 总线控制 CPU 内核。
2024-09-26 07:30:00 1729
原创 Cubieboard2(六)RTL8188ETV 驱动
问题 1,编译时出现:/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x20): multiple definition of `yylloc’;2)quickreflex 仓库的 rtl8188eus 代码,经测试,如果按照 AIC8800 驱动的方式添加到源码中无法编译出驱动,而在驱动外引用内核编译则可以成功生成。1)lwfinger 仓库的 rtl8188eu 代码不需要合并到内核中一起编译,只需要在将内核编译一遍后引用内核自行即可。
2024-09-25 07:30:00 1039
原创 project generator 简单使用(二)之 CLion 与 AC6
通过其 “Write Once, Compile any Tool” (跨工具)的特性,可以让我们使用 Keil5 uVision 优秀的仿真器与编译器 AC6 的同时,享受 CLion 等现代编译器的优秀代码组织能力。在这篇文章中,我们将基于 project generator,让 CLion 可以调用 Keil5 uVision 优秀的编译器 AC6(armclang)。(5)对于其它厂商的芯片,只要他们提供基于 Keil 的 SDK,都可以通过这种方式来生成 progen 的 yaml 配置文件。
2024-09-24 17:06:44 1017
原创 OLED(3)字库篇
1)Unicode 字符集:国际标准化组织(ISO)舍弃地区性方案,重新给全球所有文化使用的符号进行编号,对每一个字符指定唯一的编号(ASCII 字符编号不变),编号从 0x000000 到 0x10FFFF,称为 Unicode。在编写 OLED 驱动时,需要以 “纵向,先上下后左右,低位在前” 的方式制作 Unicode 和 GBK 编码字库,市面上有不少生成字库的软件,没有找到合适的。2)解码:读取两个字节,如果不在 0xD800 ~ 0xDBFF,则以双字节解析,找到对应编号的字符;
2024-09-24 17:03:26 1555
原创 OLED(2)驱动篇
1)代码仓库:这里尝试了两种面向对象的方式,不足之处敬请指正。OOP 方式:https://gitee.com/luyaocf/demo-jlc_stm32f407_oop.git本文主要以 Class In C 的方式记录,虽然它占用 RAM 高,但它更像 OOP。2)OLED 要显示中文汉字,有以下几点:(1)首先是 OLED 的显示驱动,如 OLED 屏幕初始化,设置显示位置,数据写入方式等(2)然后是通信协议,如采用 SPI 或 I2C,使用软件模拟简单,使用硬件实现更快。
2024-09-24 17:01:39 651
原创 OLED(1)原理篇
1)SSD1306 控制器(1)128 SEG 引脚和 64 COM 引脚,对应 128*64 像素点阵(2)内置显存(GDDRAM):128*64 bit(3)供电:VDD=1.65~3.3V(IC逻辑),VCC=7~15V(面板驱动)模块(非裸屏)会提供 5V 转 3.3V 芯片;芯片内部有升压电路来支持面板驱动电压。(4)通信接口:6800/8080 并口,SPI、I2C 接口1)框图:2)引脚定义:引脚功能供电。
2024-09-24 17:00:48 1460
原创 Cubieboard2(五) 安装无线网卡驱动
(3)再买一个 USB 的直角转接头(本来想买 U 型的,脑海中 3D 建模一下发现 U 型的插上后,网卡天线要么水平,要么朝下),买回来后发现转接头的 USB 公头部分也短,没有什么是一把指甲刀解决不了的,打磨一下终于可以插上了。3)Linux 源码:选择 v6.1-rc8(这里是我的一个误区,原以为这些 rc 版本是 v6.1 的升级版本,实际上 v6.1 才是包含 patch 的稳定版本,即应该直接选择 v6.1 版本)(4)去官网下载 Linux 下的网卡驱动包,安装,报错,啊!
2024-09-16 00:46:36 1372
原创 Cubieboard2(四) 系统构建 —— 基于 mainline
M,则表示该驱动将作为一个独立的模块编译,并且可以在需要时通过 insmod 或 modprobe 加载,键入 “M” 生效;尝试在升级内核后的 Cubieboard2 上安装 .deb 驱动包,但报错 linux-headers 问题以及 Invalid module format 问题,因此选择直接编译到内核中。linux-sunxi 基于 linux-3.4 内核修改,而 Tenda U2 V5.0(基于 aic8800 芯片)支持的 linux 内核版本为 V3.10-V6.2。
2024-09-16 00:46:13 1303
原创 Cubieboard2(三) 系统构建 —— WSL Ubuntu 中挂载 U 盘(SDCard)
如果我们要使用 wsl(这里的 wsl 指的是 WSL 2.x 版本,下同) 进行 Linux 驱动开发,那么我们首先要将 SDCard 挂载到 wsl 中。1)打开用户目录(如 C:\Users\[username],可在资源管理器中输入 %UserProfile% 打开该目录),将 bzImage 拷贝进去。usbipd 在 OSI 的网络层(IP)、传输层(TCP)之间建立 USB 设备与虚拟机的通信,即 IP 网络共享 USB 设备。与 Linux 驱动开发的流程一样:配置驱动,编译内核。
2024-09-16 00:45:40 1362
原创 Cubieboard2(二) 系统构建 —— 基于 linux-sunxi
(一)工具安装:https://blog.csdn.net/wb4916/article/details/72898266(二)代码下载:https://blog.csdn.net/wb4916/article/details/72898747(三)Debian 基础系统配置:https://blog.csdn.net/wb4916/article/details/72899191。
2024-09-16 00:45:29 1756
原创 Cubieboard2(一) 官方镜像使用与配置
1)由于 Cubieboard2 发布于 2012 年左右,官方提供的镜像是基于 debian 7(wheezy),所以这里将 debian 的版本升级到较新稳定版 debian 11(bullseye)。可以看到,有 Server 版和桌面版,为了节省资源我选择 Server 版中的 datacard 版(即第 2 个镜像)。1)由于我想把 Cubieboard 当作服务器,两个 LED(绿、蓝)在夜里长亮影响睡眠,需要关闭。如果提示证书的问题,则将 https 替换成 http。
2024-09-16 00:45:15 1380
原创 Fritzing 简单使用
2)Fritzing 中的“面包板”、“原理图”、“PCB” 窗口全部是基于矢量图形 svg 制作的,所以我们需要一款可以制作 svg 的软件。4)选择 “面包板” 一栏:点击窗口中的 IC 后,选择菜单栏的 “文件” -> “在视图中载入图像”,选择我们上述创建的 stm32g431cbt6_breadboard.svg 文件。(不知为什么在 Fritzing 中没有生效)3)同样的,打开 Fritzing 软件,选择 “原理图” 一栏,载入我们新建的原理图,并且将引脚与原理图中的引脚一一映射上。
2024-03-17 20:43:51 3804
原创 project generator 简单使用
1)progen 的几个组件:项目列表文件 projects.yaml,声明配置项、模块、项目等项目定义文件,即主工程文件,其中定义工程名称,开发板,等模块文件,定义模块的头文件与源文件(2)Tool:泛指嵌入式开发工具,如 uVision、IAR、CoIDE、Makefile(gcc/armcc/cmake)等等(3)Target:泛指 mcu。其内部指定 MCU 的 RAM、ROM、CPU 内核、SFD、烧录算法等令牌。
2024-03-12 22:50:51 1062
原创 OpenOCD 添加 AIR105(下)
1)上一篇文章介绍了 Air105 OpenOCD 驱动编写的成果,这篇文章想着记录一下中间遇到的问题,一是防止和我一样的小白踩坑(你就当真的听),二是成功不吆喝,如锦衣夜行。
2024-01-24 23:07:07 1121
原创 OpenOCD 添加 AIR105(上)
1)芯片简介:SC300 + Cortex-M4F内核,最高频率 204Mhz,片上内建 640KB SRAM 和 4MB Flash2)烧录原理:(1)OpenOCD 常规烧录驱动方式为:将一小段程序传送到芯片 RAM 内,由该程序将目标文件从 RAM 中通过异步或同步的方式搬运到芯片 FLASH 中。(2)AIR105 的数据手册没有列出 FLASH 的相关详情,只提供了一个 FLASH 相关的 ROM API,所以本文章通过调用 ROM API 来实现程序烧录。4)ROM API 如下:5)链接
2024-01-23 22:39:51 1286
原创 Windows 下编译 OpenOCD
1)MSYS2 介绍:(1)Cygwin:根据将部分 Posix 调用转换成 Windows 的 API 调用,Cygwin 成为运行于 Windows 平台的 “POSIX 子系统”。(2)MinGW:取消了 Cygwin 的兼容层,直接调用 Windows API,因此它具有简单性和优异性能,但也缺少了某些 POSIX 功能。MinGW-w64 支持 64 位 Windows 系统。(3)MSYS:Minimal SYStem,在 Shell 中调用 MinGW 提供的工具。
2024-01-20 21:24:12 1528 6
原创 OpenOCD 添加 Air001
1)AIR001 简介:(1)采用 PY32F003 的 TSSOP20 封装的 MCU(2)采用 Cortex-M0+ 内核(3)内置 32KB 的 Flash、4KB 的 RAM(4)芯片集成多路 USART、IIC、SPI 等通讯外设(5)5 个 16 位定时器、1 路 ADC、2 路比较器。(6)最重要的是只要 7 毛多一片。SWDIO:PA13SWCLK:PA143)引脚图:4)本文介绍了两种烧录算法来实现 OpenOCD 对 Air001 芯片的支持。
2024-01-19 16:56:41 1497
原创 2017-06-15 每日一记 C#的部分设置
1、在C#中,为空间设置快捷键只需要在其Test属性的后边加上(&key)即可,如 MenuStrip.Test = "文件(&F)";2、在C#中,将窗口的FormBorderStyle属性值设置为FixedDialog,则窗口大小不可改变。3、在C#中,当textBox的长度太长无法输出是,可以设置“MultiLine”属性为true,“Scrollbars”为
2017-06-28 14:44:54 339
原创 2017-06-08 每日一记 sqlite3_bind_blob函数
sqlite3函数: sqlite3_bind_blob( stat, 1, pdata, (int)(length_of_data_in_bytes), NULL );? // 参数1:sqlte_stmt* // 参数2:“?”的索引,从1开始 // 参数3:二进制数据的起始指针 // 参数4:二进制数据的长度 // 参数5:析构回调函数,一般默认为空例:
2017-06-20 09:38:09 2689
原创 创建CubieBoard2交叉编译链
1、安装交叉编译器 sudo apt-get install gcc-arm-linux-gnueabihf 安装成功后,输入:arm-linux-gnueabihf-gcc -v,显示如下图: 由此可见,gcc的版本为Version 5.4.0。2、获取CubieBoard2的内核源码 可以使用命令:git clone http
2017-06-06 09:01:36 442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人