自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个用于管理对象树的 C 库

mr-object是一个用于管理对象树的 C 库。它提供了一组简单易用的 API,支持通过路径注册、查找和删除对象。支持基于路径的树状对象管理资源占用低,适合嵌入式系统使用中断安全的设计简单直观的 API。

2024-03-16 06:30:00 379

原创 如何简化嵌入式调试

在嵌入式开发过程中难免需要频繁调试一些硬件,调试过程经常需要不停修改代码以测试不同的功能,这一步骤将消耗大量的时间。一个强大的Shell(命令行界面)对于提高开发效率和系统管理的便捷性至关重要。依赖项目统一的设备接口,配合命令行工具即可实现一个便捷的命令行调试工具。

2024-02-01 06:30:00 865 1

原创 解决Keil-MDK使用痛点的自动工具脚本

MDK是嵌入式中常用的IDE,但是MDK太不方便,当需要向工程中添加多文件时,手动添加文件等步骤非常繁琐(添加文件的教程比我的工具代码还长)。为了自动完成这个脚本可以很方便地自动化MDK项目的配置过程。只需要提供文件名等参数,就可以一键完成配置,节省了在IDE里手动配置的时间。

2023-12-25 17:26:00 468

原创 SPI设备使用文档(MR嵌入式开源设备框架)

TOCTOC。

2023-12-09 11:17:56 226 1

原创 嵌入式开源设备框架(实现应用层代码与底层驱动的解耦和抽象的轻量级框架)

MR框架是专为嵌入式系统设计的轻量级框架。充分考虑了嵌入式系统在资源和性能方面的需求。通过提供标准化的设备管理接口,极大简化了嵌入式应用开发的难度,帮助开发者快速构建嵌入式应用程序。框架为开发者提供了标准化的开启(open)、关闭(close)、控制(ioctl)、读(read)、写(write等接口。它将应用程序与底层硬件驱动进行解耦。应用程序无需了解驱动的实现细节。当硬件发生改变时,只需要适配底层驱动,应用程序就可以无缝迁移到新硬件上。这大大提高了软件的可重用性和应对新硬件的可扩展性。。

2023-12-09 11:08:13 1294

原创 标志位的操作方法

在代码中,标志位很常见。它通过将一个额外的标志位附加到其他数据上,来表示一些状态信息。

2023-12-01 21:51:11 246 1

原创 如何为项目引入Kconfig配置系统

当项目规模较小,配置项和依赖关系相对简单时,我们可以通过手动修改源代码来实现配置功能。但是,随着项目规模的增长和配置复杂度的增加,这种方式也会出现一些问题。随着代码体量和调用关系的增多,对配置者来说很难完全熟悉代码结构及各模块之间的依赖关系。同时,如果配置项设置较为随意且缺乏约束,也很可能导致错误配置。这对项目质量和维护都带来一定难度。对于规模较大的项目来说,需要一套专业的配置管理系统来解决这些问题。Kconfig正是为了应对这种需求而产生的。它通过配置脚本定义各配置选项及其依赖关系,并提供图形化界面。

2023-11-27 12:43:08 986

原创 内存管理(C实现)

本文实现了一个动态内存管理系统,它可以进行内存块的分配与回收。系统会记录已分配和未分配的内存块信息,并采用内存块合并算法来减少内存碎片(内存管理思路来源于FreeRTOS)。具体来说,系统实现了:内存块的动态分配 - 根据应用的请求,从未分配内存块中选择一个块进行分配。内存块的释放回收 - 当块不再需要时,将其释放并标记为未分配状态。已分配与未分配块记录 - 使用链表或数组等数据结构实时跟踪各状态块的信息。内存块合并 - 在释放块后,检查相邻块状态,若均未分配则合并为一个大块减少碎片。

2023-11-22 12:51:29 97

原创 etask开发框架

事件任务框架是是一种用于处理异步事件和任务的编程模型。它提供了一种结构化的方式来管理和调度事件和任务,以便在单线程、多线程或多任务环境中实现高效的并发处理。使用事件任务框架,可以将复杂的并发处理逻辑进行抽象和管理,提高代码的可维护性和可扩展性。它使得开发人员能够更加专注于事件的处理逻辑,而无需过多关注底层的并发细节。事件任务框架支持动态添加和移除事件任务的能力。当系统需要新增功能或修改业务逻辑时,可以通过添加或替换相应的事件任务来实现,而无需修改其他部分的代码。

2023-10-17 10:54:31 104

原创 mr-library SPI设备使用教程

设备框架为开发者提供标准化的接口(open、close、ioctl、read、write),解耦应用程序与底层硬件驱动,使应用开发无需硬件驱动的实现细节。当硬件变动时,只需要适配底层驱动,上层应用可以无缝地迁移到新硬件上,大大提高了软硬件的可重用性和可扩展性。

2023-10-17 10:36:29 351

原创 mr-library 串口设备使用教程

设备框架为开发者提供标准化的接口(open、close、ioctl、read、write),解耦应用程序与底层硬件驱动,使应用开发无需硬件驱动的实现细节。

2023-10-17 10:29:37 504

原创 嵌入式开源框架

一个面向嵌入式系统的轻量级框架,提供了统一的底层驱动设备模型以及基础服务功能,具有模块化设计、可配置性和扩展性的特点,可以帮助开发者快速搭建嵌入式应用程序。框架支持互斥锁、对象管理等基础内核功能。集成异步事件驱动框架(event)、多时基软件定时器(soft-timer)等服务。提供串口、SPI、I2C、ADC/DAC等常见外设的驱动设备模型,通过统一的驱动接口(open、close、ioctl、read、write)访问底层硬件设备,解耦底层驱动和应用。

2023-07-21 12:13:39 1063 1

原创 软件定时器框架

软件定时器是一种在软件层面实现计时功能的机制,通过软件定时器,可以在特定时间点或时间间隔触发特定的事件。软件定时器框架代码模块,可无依赖,快速的部署到工程应用中。

2023-07-05 21:50:07 200

原创 事件驱动框架

事件驱动框架是一种异步事件处理机制,它通过事件分发和回调的方式,可以有效地提高系统的异步处理能力、解耦性和可扩展性。事件驱动框架代码模块,可无依赖,快速的部署到工程应用中。

2023-07-05 19:40:08 401

原创 设备驱动框架

将硬件设备抽象成设备对象,并提供了统一的设备操作接口,方便应用程序与硬件设备进行交互。通过将驱动层与设备层解耦,提高了代码的可靠性和可维护性。

2023-06-20 01:19:49 263 1

原创 mr-library(软件包)LIST链表

FIFO队列代码模块,可无依赖,快速的部署到工程应用中。

2023-06-08 21:38:35 389

原创 mr-library(软件包)FIFO队列

FIFO队列代码模块,可无依赖,快速的部署到工程应用中。

2023-06-08 18:12:42 358

原创 mr-library(软件包)软件i2c

软件I2C代码模块,通过面向对象的方式,可实现快速上手、安全可靠、自动多设备管理等功能。

2023-06-08 01:55:21 297

原创 自动初始化

模块为项目下的可裁剪模块,以C语言编写,可快速移植到各种平台(主要以嵌入式mcu为主)。模块通过隐式调用初始化函数,使代码更简介更模块化。

2023-02-01 07:30:00 510 4

原创 实现支持浮点输出的printf(c语言、嵌入式)

printf 大家应该使用的比较多,但是在嵌入式平台中,尤其是单片机中,libc中的printf对内存的占用较高,尤其是加上浮点输出功能时,占用更是能翻倍。同时移植适配相对困难,不同编译器下,需要适配的接口不同,遇到问题也因为看不到源代码,无从下手。故有了写自己的printf想法。现在网上也有不少自己写printf的教程,但是在我实际按照教程编写时又遇到了许多问题很多教程并不能正确实现功能,所以我把写完的代码开源出来,同时分享下我在编写时遇到的问题。

2023-01-21 01:54:54 1780 4

原创 CH32移植Fatfs文件操作系统(沁恒RISC-V内核)

在CH32V307中移植FatFs文件操作系统

2022-10-20 02:46:49 1915 3

空空如也

空空如也

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

TA关注的人

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