自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 润芯微单板无法adb

默认情况下adb功能未开启,需要手动开启,通过cmd无法找到adb设备。

2026-09-05 13:07:12 208

原创 润芯微rk3588固件分区配置文件获取

我们可以选择编译对应的SDK之后会生成相应的parameter.txt文件,以下是以rk3588为例生成的parameter.txt文件。当我们需要手动更新某个部件的镜像,比如kernel镜像,可以使用润芯微开发工具单独更新,官方提供的没有做固件分区。我们编译产生的只有txt文件,通过润芯微开发工具导出的才会生成config.cfg文件。

2026-09-04 22:53:04 176

原创 嵌入式高效消息队列:无malloc线程安全方案

这篇文章介绍了一个适用于嵌入式环境的消息环形缓冲区实现方案。该方案具有以下特点: 内存管理:使用静态数组或用户提供的缓冲区,避免动态内存分配(malloc/free) 线程安全:提供原子操作接口钩子,在单核MCU上可通过关中断实现临界区保护 通用性:支持任意结构体大小的消息拷贝 高效性:实现了基本的环形缓冲区操作(push/pop)和状态查询功能 实现包含头文件(msg_ringbuf.h)和源文件(msg_ringbuf.c),提供了初始化、消息入队/出队、缓冲区状态查询等功能。示例代码展示了如何在GD3

2026-05-17 22:04:24 21

原创 无依赖自注册驱动框架实现

本文提出了一种基于标准C语法的轻量级驱动框架,具有无依赖、自注册和自动遍历的特点。框架通过编译器特定的section属性将驱动结构体放置在连续内存区域,无需修改主循环或初始化列表。驱动描述结构体包含名称、操作函数集和私有数据指针,使用DRV_REGISTER宏实现自注册。系统启动时通过遍历链接器段完成驱动初始化,主循环中可调用轮询函数。该方案不依赖特定操作系统,仅需标准C语法和链接脚本配置,适用于嵌入式系统开发。

2026-05-17 21:57:17 20

原创 RT-thread线程创建成功但未执行原因分析

排查各种配置发现没有异常怀疑是线程调度问题,在RT-thread中,有一个单独的线程main被执行,但是在源代码中没有释放MCU,导致main线程一直被占用,而自己创建的两个线程的优先级较低未进入运行态,一直被main抢占。基于RT-thread创建两个线程,一个采用动态创建的方式,一个采用静态创建的方式,创建任务成功,但是两个线程均未执行。在创建线程成功之后任务并没有被执行。

2026-05-10 15:25:11 23

原创 STM32启动流程浅析~

将 0x0800 0000 映射到 0x0000 0000,即从内部 FLASH 启动,那么内核会从地址 0x0800 0000 处取出堆栈指针 MSP 的初始值,从地址 0x0800 0004 处取出程序计数器指针 PC的初始值。我们知道的复位方式有三种:上电复位,硬件复位和软件复位。在STM32复位后,会延迟4个时钟周期,将BOOT引脚的状态锁存到锁存器中,芯片根据锁存器的数据决定启动的位置。(2)从地址 0x0000 0004 处取出程序计数器指针 PC 的初始值,该值指向复位后执行的第。

2026-05-08 21:13:20 229

原创 Bootloader跳转App触发异常问题分析

在STM32的bootloader中,跳转app之前执行了__disable_irq(),进入app之后重新配置了中断向量表,但为什么还是会响应中断?我需要解释这个现象。答:__disable_irq()通过设置CPSR中的I位来禁止中断。在ARM架构中,CPSR是一个重要的寄存器,其中I位用于控制中断的使能状态。当I位被设置时,CPU将不再响应中断请求如果之前开启了相关外设的中断功能,在调用__disable_irq()函数关中断后,这时如果有中断触发,那么不会去进行中断响应。

2026-05-05 19:07:14 347

原创 全局变量与局部变量之间的差异

全局变量的内存分配是静态的(编译时确定),而局部变量通过栈指针动态管理,这种差异导致了它们的所有行为区别。全局变量在程序加载时由操作系统分配内存(通过ELF/PE文件中的.data/.bss段信息)生成不同的目标代码(全局变量用绝对地址,局部变量用栈偏移)全局变量在编译时被记录在符号表中,分配固定内存地址。局部变量编译时生成栈指针(SP)相对寻址代码。局部变量在函数调用时通过栈指针动态分配。全局变量地址被最终确定(填入符号表)编译器通过语法分析识别变量声明位置。局部变量信息不参与链接。

2026-05-05 08:16:32 28

原创 BUG之地址打印

指定输出宽度为 16 位十六进制数字(即 64 位),但实际有效数据只有 32 位(8 个十六进制数字),因此输出会形如。会从堆栈中只读取 4 字节数据(或根据调用约定可能读错位置),导致。(通常 4 字节),数值上可能巧合对应,但严格来说仍是不规范的。是专门用于打印指针的格式说明符,要求参数类型为。,只输出低 32 位的十六进制值。中,指针占 8 字节,而。是地址的低 32 位。(其他指针会隐式转换)。(通常是十六进制,前导。,宽度由地址位数决定)。的完整 64 位地址。通常只占 4 字节。

2026-05-04 18:28:28 48

原创 揭秘C语言黑科技:零指针计算结构体偏移量

【代码】结构体成员偏移量计算宏。

2026-05-04 14:01:11 29

原创 解决uboot编译multiple definition of yylloc报错

yylloc。

2024-06-05 23:30:05 639

原创 解决Ubuntu无法使用root登录的问题

1、登录普通用户 2、使用vi编辑器打开/etc/pam.d/gdm-autologin并注释掉auth required pam_succeed_if.so user != root quiet_success 3、使用vi编辑器打开/etc/pam.d/gdm-password并注释掉auth required pam_succeed_if.so user != root quiet_success 4、注销用户重新用root即可解决!

2024-05-23 12:58:16 1104

FS-MP1A.pdf

FS-MP1A.pdf

2023-06-14

FS-MP157-PHD-TO-FFC.pdf

FS-MP157-PHD-TO-FFC.pdf

2023-06-14

FS-MP1A-Extend-v1.2.pdf

FS-MP1A-Extend-v1.2.pdf

2023-06-14

stm32mp157a.pdf

stm32mp157a.pdf

2023-06-14

STM32mp157a数据手册

STM32mp157a数据手册

2023-06-14

用QT实现文本编辑器功能

用QT实现文本编辑器功能

2023-05-17

空空如也

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

TA关注的人

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