自定义博客皮肤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)
  • 收藏
  • 关注

原创 FreeRTOS队列源码解析

FreeRTOS队列机制与临界区保护分析:本文分析了FreeRTOS的队列实现机制与临界区保护策略。队列通过Queue_t结构体管理存储区、等待任务列表等属性,采用xQueueGenericCreate创建队列空间。入队/出队操作通过临界区保护确保数据一致性,当队列满/空时任务会进入阻塞状态。信号量、互斥量等均基于队列实现,其中递归互斥量支持嵌套获取。FreeRTOS提供三种临界区保护方式:中断屏蔽(最强保护)、调度器挂起(仅防任务抢占)和互斥量(支持优先级继承),分别适用于不同场景的数据保护需求。

2025-07-08 11:16:04 636

原创 FreeRTOS任务调度机制

FreeRTOS任务管理机制解析: FreeRTOS通过任务控制块(TCB)管理任务,TCB包含栈指针、状态链表、优先级等关键信息。任务创建时,xTaskCreate函数会根据栈增长方向(向上/向下)动态分配TCB和任务栈空间,其中Cortex-M采用向下增长方式。任务栈从堆空间分配但逻辑上作为栈使用,需考虑栈扩展方向与TCB内存位置的匹配问题。系统维护多个状态链表(就绪、阻塞等),任务创建后通过prvAddNewTaskToReadyList加入就绪链表。任务删除时需暂停调度并从链表中移除,延时操作

2025-07-08 11:09:34 853

原创 FreeRTOS调度器启动流程

本文分析了嵌入式系统中FreeRTOS内核启动流程。从main函数开始,系统依次进行HAL库初始化、时钟配置、外设初始化,然后调用osKernelInitialize()设置内核就绪状态。在MX_FREERTOS_Init()中创建用户定义的线程和同步对象。关键阶段osKernelStart()调用vTaskStartScheduler()创建空闲任务(优先级0),初始化调度变量,并启动系统节拍定时器。调度器通过xPortStartScheduler()启动首个任务,该函数与硬件架构相关。整个过程确保在安全

2025-06-30 16:54:33 401

原创 FreeRTOS系统移植及内核源码分析

该篇文章分析了Freertos系统源码的大概移植步骤及核心功能的源码解析。

2025-06-27 16:47:15 351

原创 Linux设备树解析

Linux系统下设备树的基本框架和设备树构建信息的解析

2024-07-29 17:08:52 818

原创 串口阻塞/中断发送数据(HAL库)

介绍了串口阻塞式发送数据和串口中断式发送数据的基本原理,并进行仿真演示

2024-06-24 17:24:01 1956

原创 Linux字符设备的驱动开发

我们平时用到的很多设备都是字符串设备,比如鼠标、键盘等等。所以现在来编写一个字符串设备的驱动模版。

2024-03-03 11:29:51 1041 1

原创 Linux驱动开发基础

字符设备是指只能一个字节一个字节读写的设备(读写大小:单字节),不能随机读取设备内存中的某一数据,读取数据需要按照先后数据(读写顺序:顺序)。

2024-01-25 09:31:29 1026

原创 开发板无法nfs挂载根文件系统

开发板能够ping通ubuntu,而且可以执行tftp功能,但是在通过nfs挂载根文件系统的时候挂载失败。比较老一点的u-boot仅支持nfs v2,而Ubuntu 22.04默认把nfs v2服务和udp端口关闭了,导致文件系统挂载失败。

2023-12-26 10:18:25 1308 2

原创 开发板Ping不通Ubuntu解决办法

如果出现了网络问题的情况,基本上问题主要出现在两个地方。一个是虚拟机VMware设置,一个是Ubuntu和开发板的网络配置。

2023-12-12 17:20:02 1688

原创 Linux系统Uboot的移植

我们在启动一个Linux系统时,就是按照以上的顺序来依次启动。系统先运行bootload。这段bootloader程序会初始化DDR等外设(虽然I.MUX6ULL的DDR初始化是由内核的内部bootroom完成的),然后将Linux kernel的程序拷贝到内存(DDR)中执行,然后启动内核。

2023-11-26 10:29:14 1046 2

原创 I.MUX6ULL使用SD卡和EMMC两种方式烧写程序

关于I.MUX6ULL的开发板,我们通常可以使用两种方式来烧写裸机程序和linux系统。它们各有各的优势与缺点。但究其本质,SD卡和EMMC都是相同的,他们都是一种存储设备。只不过它们一种通过软件来烧写程序,一种通过硬件连接来烧写程序。

2023-11-14 15:59:51 743 2

空空如也

空空如也

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

TA关注的人

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