自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (13)
  • 收藏
  • 关注

原创 【随笔记】Tina 移植 Mosquitto v2.0.18 版本

移植 Mosquitto v2.0.18

2024-02-26 21:10:50 871

原创 【随笔记】C++ 友元机制的有趣应用

一种友元的应用,可以组合业务类,实现子类的事件回调中直接调用业务类的某些业务模块。

2024-02-18 14:27:32 268

原创 【随笔记】C++ 周期任务调度的思想和实现

实现将并行任务串行执行的框架代码。

2024-02-18 13:11:26 574

原创 【随笔记】C++ condition_variable 陷阱

这种问题只有在系统时间发生变化的时候才会出现,例如搭配 NTP 更新功能,硬件还未同步时间时,一般在 1993 年,此时使用了 wait_for() 这类接口等待 10 秒,结果在 10 秒内被 ntp 同步更新了时间到 2023,那么时间生效的一瞬间,wait_for() 就会直接被唤醒,且返回的结果是超时唤醒。通过 std::condition_variable 来实现超时等待,会受到系统时间变化的影响,系统时间倒退修改就会导致延后唤醒,系统时间提前将会导致提前被唤醒,返回结果仍为超时。

2023-09-30 23:14:19 616

原创 【随笔记】Linux/Win 平台调用外部命令并获取执行结果

有些命令输出结果并不是通过 ”标准输出“,而是通过 "错误输出",因此为了能获取到所有的执行结果,需要将 "错误输出" 重定向 "标准输出"。

2023-08-05 17:18:09 314

转载 【转载】Windows 字符串编码转换实现

字符编码转换

2023-08-05 15:28:24 181

原创 【分析笔记】全志 T507 PF4 引脚无法被正常设置为中断模式的问题分析

全志原厂提供的 SoCs pinctrl driver 中的 PG4 中断信息描述错误,导致覆盖了 PF4 的引脚编号,因此只要修正 PG4 的描述信息,即可解决问题。这个问题不仅仅会影响 PF4 无法使用,也会影响 PG4 引脚无法使用,从代码来看,想要设置为 PG4 为中断模式,实际修改的会 PA0(0)。

2023-05-20 16:18:12 728

原创 【随笔记】Java 调用 Jni 和 Jni 回调 Java 方法

Java 调用 Jni 和 Jni 回调 Java 方法。

2023-03-08 21:17:32 620

原创 【分析笔记】Linux 4.9 单总线驱动框架分析

本文主要是基于 T507 Android 10 Linux 4.9 的源代码,对 Linux W1 总线框架的分析记录,便于了解整个框架的基本实现机制。

2023-02-04 00:43:36 821

原创 【随笔记】T507 Android10 EC200U-CN 4G Cat1 移植

一个 USB 设备可以有多个功能不同的接口,在 option_ids 添加该设备的 PID\VID 后,会导致该设备的所有接口都会绑定到 USB Serial Option 驱动上,导致 USBNet 驱动接口无法正常工作,因此需要在 option_probe 中根据类码、接口索引、端点数量、子类码将 USBNet 的接口排除出来。这里使用 ECM 的驱动方式,参考《Quectel_UMTS_LTE_5G_Linux_USB_Driver_User_Guide_V3.0.pdf》

2022-12-30 22:13:37 1041

原创 【分析笔记】全志 i2c-sunxi.c 控制器驱动分析

由 Soc 芯片原厂提供,通常 Soc 支持多少路 I2C 总线,就会有多少个硬件控制器,这些硬件控制器才是真正实现与外设芯片通信的地方。我们也可以通过 GPIO 模拟 I2C 时序来实现一个硬件适配器,对于设备驱动来说,它不需要关心 Soc 是通过何种方式产生通信时序来跟外设芯片通信的。

2022-11-28 20:33:06 1812

原创 【分析笔记】Linux 4.9 backlight 子系统分析

1. 对上,面对应用层提供统一的设备节点入口2. 同级,面对驱动层提供设备驱动加载卸载通知事件,以及背光控制接口。3. 对下,面对硬件层提供背光控制调节的回调接口4. 监听 frambuffer 事件, 实现清屏联动背光控制5. 监听系统休眠唤醒,实现休眠唤醒背光联动控制

2022-11-17 22:20:27 1493

原创 【随笔记】FRAM 铁电随机存储器(MB85RC04VPNF)

第一次接触这种 FRAM 铁电随机存储芯片,发现有几点有意思的知识点,顺带记录一下,数据读写的操作就没啥记录的了。

2022-11-08 21:18:12 1123 2

原创 【随笔记】ATECC608 加密芯片调试记录

编译库文件的版本只需要最低 cmake 2.6.4 版本,但是测试程序最低 cmake 3.10。建立新的配置文件,指定编译工具链的位置:xxx_linux_toolchain.cmake。根据芯片手册,ATECC608B 的 7bit 器件地址是:0x35。大多数加密芯片都是由原厂提供库文件,便于降低开发难度。官网下载:CryptoAuthLib。

2022-11-04 20:25:20 507 1

原创 【分析笔记】NXP PCF85263 设备驱动分析笔记

NXP PCF85263 芯片驱动调试笔记

2022-10-20 21:05:14 908

原创 【分析笔记】Linux I2C-Tools 使用踩坑笔记

在调试 I2C 器件时,我一般习惯于使用 i2cdetect 工具来确认芯片是否有应答,通常有应答之后,就会开始着手移植或者编写对应的驱动程序,但是在调试 sgp41 传感器时却不灵了。

2022-10-10 20:44:37 2270 2

原创 【分析笔记】全志平台 TWI 上拉电压异常的问题

原本这么简单的芯片,没有必要做记录,后来发现其中有一颗单独挂在 TWI2 无法通信,而主要原因是最容易忽视的电源域的问题,因此记录一下这件事情。

2022-09-17 11:53:31 585

原创 【分析笔记】Linux gpio_wdt.c 看门狗设备驱动源码分析

驱动将喂狗时间分为硬件喂狗时间和软件喂狗时间,很好的解决了软硬件时间的耦合问题,对上提供一个统一的喂狗时间,不受硬件芯片的实际喂狗时间限制,应用软件设计时不需要考虑底层采用了什么硬件。

2022-09-17 10:09:50 1371

原创 【分析笔记】全志平台 gpio_wdt 驱动应用和 stack crash 解决

第一次遇到看门狗芯片是通过切换电平信号来喂狗,如 SGM706 芯片,之前也比较少会用到看门狗芯片。原本打算参考 sunxi-wdt.c 的框架,利用定时器自己写一个,无意中发现内核已经有 gpio_wdt.c 驱动程序,其原理也是通过内核定时器实现喂狗,可以直接拿来用。配置选项说明:linux-4.9\Documentation\devicetree\bindings\watchdog\gpio_wdt.txt。全志平台便捷方式配置,也可以使用通用的 dts 配置方式。内核版本:Linux 4.9。

2022-09-17 09:21:32 794

原创 【随笔记】全志平台 gpio-leds 驱动应用

全志平台 gpio-leds 驱动应用

2022-09-09 23:33:38 870

原创 【分析笔记】全志平台 gpio-keys 驱动应用和 stack crash 解决

全志平台 gpio_keys 驱动应用和 Stack Crash 解决。

2022-09-09 22:03:47 808

原创 【分析笔记】Linux input 子系统原理分析

本文主要分析 Linux 子系统的实现原理。

2022-08-13 13:40:04 936

原创 【个人作品】无线网络图传模块

一款可通过命令行自行适配多种摄像头且支持 HTTP 、UDP 传输视频流的无线网络图传模块。

2022-07-29 15:20:33 3259 2

原创 【个人作品】记之-串口日志记录工具

一款用于记录嵌入式设备的串口调试信息设备,目前可以同时支持两路串口输入数据,且串口参数可配置。

2022-07-29 15:11:52 1352 8

原创 【分析笔记】Linux 内核自旋锁的理解和使用原则

Linux 内核自旋锁的理解和使用原则总结

2022-07-25 20:54:07 846

原创 【分析笔记】Linux tasklet 机制的理解

Linux 内核的 tasklet 机制的分析和理解

2022-07-23 18:55:25 1832

原创 【随笔记】Tina 系统的 ADB、声卡、网卡、串口多路共存

USB 声卡、USB 网卡、ADB 三者共存USB 声卡、USB 串口、ADB 三者共存

2022-05-24 20:06:32 1071

原创 【随笔记】linux usb gadget ncm wrong ndp sign 问题修复

一、模拟网卡简介在 Linux 通过 usb 模拟网卡时,有四种方式:1. 使用 usb gadget rndis2. 使用 usb gadget ecm3. 使用 usb gadget ncm4. 使用 usb gadget eemrndis:是微软公司制定的协议规范, 不过似乎规范不完整, 引起 rndis host 驱动作者的强烈反对。lichee\linux-4.9\drivers\net\usb\rndis_host.cecm:传输的是纯粹的以太网包,一次USB传输只

2022-05-24 20:02:59 1487 3

原创 【开源】libserial_parse_text:命令行解析的基础库

一个命令行解析的基础库,一般可用于串口命令解析、TCP命令解析等等。

2022-05-02 16:37:16 600

原创 【开源】libserial_protocol:适用于单片机的串口通信协议基础库

借助五一假期,写了一个适用于单片机平台下的串口通信协议基础库。特点如下:不涉及到具体硬件,libserial_protocol 纯软件协议,与具体硬件分离。 内存空间占用可控,libserial_protocol 支持动静态内存,内存空间可控。 接口简单容易复用,libserial_protocol 采用面向对象方式实现,提供大小数据量解码方式。源码仓库:gitee:libserial_protocol: 适用于单片机的串口通信协议基础库github:https://github...

2022-05-02 16:27:32 1336

原创 【SW】利用3D打印机打印 PCB 钢网的方法

近期在学习画 PCB,每次打样回来后,手工焊接费时费力,定制钢网未免太过浪费,想到自己有一台 FDM 3D 打印机,是不是可以通过 3D 打印机打印 "钢网" 呢?在网上也翻过相关的资料,发现有网友已经实现,不过过程较为繁琐,且还需要对细节进行修改。如果焊盘数量很多,岂不是要花更多时间在修修补补上?经过一下午的摸索,总结出一套行之有效的方法,只要按照步骤来,不需要修修补补就能完完整整建立钢网模型。(在此特别感谢我媳妇大人在 AI 软件使用上的指点)本文以PADS 为例,其它的软件只要能输出 P.

2022-05-02 13:55:45 2325 1

原创 【随笔记】Littlevgl 8.x 踩过的坑

在多线程并发使用的时候,总是在运行过程中莫名其妙的 crash,后面才意识到 LVGL 本身不支持并发,加了互斥锁解决了。在引入矢量字库时(freetype),又有启动时会概率性 crash 的问题,每次 crash 的地方还不一样,这个坑爬了好久,甚至都怀疑是不是 freetype 有问题,还好总算找到方法解决了,不过还不清楚具体原因,先记录。以下以 linux 平台下 C++ 语言的方式举例说明,理解方法即可。一、多线程并发使用多线程并发使用时,需要在以下两种情况加上互斥锁:1. .

2022-04-14 00:00:45 3138 1

原创 【学习笔记】一种特别有意思的 RTOS 任务切换方法

前段时间朋友向我推荐了一款非常精巧的 OS (cocoOS),无意中发现其内部实现的任务切换机制特别地有意思,竟然未涉及到 CPU 的寄存器,纯靠 C 语言的语法实现任务切换。这就意味着很容易地跨平台使用,除了需要提供时基以外,几乎不需要做任何改动即可投入使用,这着实让我惊奇不已。

2022-04-08 00:45:48 2308

原创 【分析笔记】LVGL v8.2.0 使用 freetype 概率性无显示的问题

使用目前最新的 Releases 版本 LVGL v8.2.0 ,移植好 freetype2 后测试,发现每次启动程序时会高概率出现屏幕显示全白色背景,无任何内容的问题。打开日志开关,出现问题时会有如下打印:lv_font_get_glyph_bitmap: Asserted at expression: font_p != NULL (NULL pointer) (in lv_font.c line #51)Lvgl 检测到了 font_p 参数为空指针,根据日志信息指引,出现

2022-03-22 12:15:39 3261 8

原创 【随笔记】NDK 编译开源库 SQLite3

一、下载源代码wget https://github.com/sqlite/sqlite/archive/refs/tags/version-3.38.0.tar.gztar -zxvf version-3.38.0.tar.gz二、编译配置脚本#!/bin/bashexport TOOLCHAIN=/opt/ndk/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64export CC="$TOOLCHAIN"/bin/arm

2022-03-09 17:01:34 2430

原创 【开源】libinimini:适用于单片机的极简 ini 解析库

介绍说明最近自己基于 XR872 在做一个小作品练习练习,具备可以配置的功能,选择了使用 ini 作为配置文件。我调研了网上常见的 ini 解析库,几乎都涉及到了 fopen()/fgets().. 以及 malloc()。说明这些开源库都仅适用于支持完整 C语言标准库的系统,并不适用于 RTOS 或裸跑的单片机。因为前者虽是 C 语言的标准文件操作函数,但在单片机中基本上使用的都是简化版的 fatfs 接口,要想引入单片机使用,意味着需要对该接口库进行修改。后者更是涉及到内存管理,ram 的占用会

2022-02-26 13:58:21 1210 1

原创 【随笔记】SiliconLabs Android Demo 编译

AndroidStudio:3.5.2AndroidPhone:XiaoMi5 (Android 8.0)AndroidDemo:3.1.4-44AndroidDemo 源码路径:SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2\app\bluetooth\android_application一、修改为适合于 AndroidStdio 3.5.2 的 gradle 版本--- android_application\gra

2021-11-21 10:00:00 452

原创 【随笔记】SiliconLabs Android aar 库使用

一、导入库文件1. 拷贝以下两个文件到工程的 libs 目录下ble_mesh-android_api_high-release.aarble_mesh-android_api_low-release.aar2. 修改 app 中的 build.gradle 增加以下内容implementation 'com.google.code.gson:gson:2.8.5'implementation(name:'ble_mesh-android_api_high-release', ext:

2021-11-21 09:00:00 424

原创 【分析笔记】SiliconLabs EFR32BG22 Bluetooth Mesh SensorClient 源码分析

硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40)软件环境: SimplicityStudio5/gecko_sdk_3.2.3分析工程: Bluetooth Mesh SensorClient恶补了 BluetoothMesh 相关知识,首次接触 SiliconLabs 芯片,搜全网,中文资料少的可怜,又一人狂啃了官方很多全英文文档,搞明白了烧录、编译、调试等基础知识,但是对软件开发方式还是云里雾里,然后着手分析源码才大致了解 Sili

2021-11-13 19:02:18 1441 2

原创 【随笔记】MFC 解决按下 ESC、Enter 键会自动退出的问题

网上大部分人的做法是通过拦截按键消息来屏蔽,实际正确的做法是:1. 在对话框头文件重载 OnOK()(回车会触发) 和OnCancel()(ESC会触发) 函数。// XXXXXXXDlg.hclass CXXXXXXXDlg : public CDialogEx{ ......private: virtual void OnOK() {}; virtual void OnCancel() {}; ......};2. 重载之后会导致无法关闭窗口,原因是因为被拦截.

2021-10-16 16:22:43 1554

openssl-1.1.1k_ndk19c.tar.gz

openssl 源码从官方下载,全网独此一份具有 ndk19c(clang) 编译脚本和编译好适用于 ndk19c 的动态库,附带的编译脚本同时也能正确配置和编译目前最新的 openssl-3.0.0.

2021-07-31

nghttp2-1.44.0_ndk19c.tar.gz

官方下载的 nghttp2-1.44.0 源码,全网独此一份使用 NDK19C 的编译配置脚本和已经编译好的静态库动态库。

2021-07-31

LVGL7.11.0中文手册.pdf

LVGL7.11.0 的中文手册

2021-05-14

sigslot(解决浅拷贝问题, 增加信号拦截机制).rar

1. 解决浅拷贝问题 2. 增加信号拦截机制 介绍请参考:https://me.csdn.net/lovemengx

2020-05-10

openjdk-7u75-b13-linux-x64.tar.gz

编译 Android 6.0 时需要用到的 jdk 1.7,实测可以正常编译并且使用。 lmx@ubuntu:$ java -version openjdk version "1.7.0_75" OpenJDK Runtime Environment (build 1.7.0_75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

2020-04-20

sigslot C++开源库-解决信号对象拷贝问题.zip

只有一个 sigslot.h 文件超轻量级信号槽开源开源,在解决 Windows 以及 Ubuntu 环境编译问题的基础上,解决信号对象拷贝的BUG(增加实现深度拷贝)。

2020-04-13

DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

VS2019 工程实现观察者模式和工厂模式(简单工厂、工厂方法、抽象工厂)的示例源代码,具体模式讲解请参考 https://me.csdn.net/lovemengx

2020-02-10

DesignPattern(VS2019_观察者模式_工厂模式).zip

VS2019 工程实现观察者模式和工厂模式,具体模式讲解请参考 https://me.csdn.net/lovemengx

2020-02-04

nRF52832 停止蓝牙广播补丁.rar

在对蓝牙接口进一步封装的时候,发现 SDK 居然没有停止广播的接口,咨询了代理 FAE,对方也没有找到关闭广播的接口。后来通过分析代码,修改了 SDK 解决了这个问题。这次发出来是因为遇到很多人在问这个问题,记得自己解决过,就发出来。遗憾的是,当初为了赶项目,解决之后没有及时做记录,现在已经记不清当时的解决思路了,毕竟比较少接触单片机,更何况还是第一次接触 Nordic 的芯片,不过 Nordic SDK 的代码风格很赞。

2020-01-08

【Linux】C-C++ 一种简单易用的高效定时器实现.rar

一种基于条件变量的超时机制实现的较高精度又简单的定时器,经过实际测试验证可行。之所以利用条件变量的超时机制,是为了满足可以随时打断及时的需求,同时又不需要轮询的去查,在等待的过程中,线程处于阻塞休眠状态,所以也不消耗 CPU 资源。(信号量也可以)     该机制主要可以应用在一些要求可以随时取消和修改计时时间的场景,例如收到某条启动指令之后需要启动设备,当超过多长时间没有收到指令时就需要停止设备。优点吧,实现简单,精度较高,好用,不消耗 CPU 资源,支持单次和重复触发,并且各个定时器独立计时和执行,不影响其他定时器。缺点吧,就是有点耗内存了,启动 100 个定时器,就有 100 个线程(指的是100个定时器都没有超时)。     基本上可以满足大部分场景,如果比较庞大的系统需要上百个定时器计时,这种实现方式就不合适了,建议采用多级链表来实现,并且需要考虑定时器与定时器之间影响。

2020-01-05

纯粹的zbar示例程序(不依赖第三方库)以及OpenWRT的Makefile和测试二维码图片

1. 基于 Zbar 的纯粹二维码解码实例代码(不依赖第三方库),经过实测通过。 2. 基于 OpenWRT 的 Makefile,实测通过。 3. 对应的二维码图片和YUV文件。

2019-12-14

感染防御系统 SP1 【内部版】L、

一个基于HOOK的小作品(附源码),原理:利用HOOK API技术HOOK相关API,达到监控其行为的目的。通过分析其行为来判定是否拦截。现在所有杀软的主动防御技术也是基于此。源码带有详尽中文解释。

2012-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除