Lazy loaded image
🌉 开发框架搭建
开发框架源码规划(访问者不可见)
Words 664Read Time 2 min
2024-11-8
2025-4-16
type
date
slug
category
icon
password
 
嵌入式框架,搭建设备框架,引入抽象层,隔离设备和驱动,建立统一接口。
为用户建立规范、版本管理、单元测试、文档生成提供范例
通过引入范例,循序渐进为嵌入式知识提供深入分析和解读
 
call
A.U.X Embedded FrameWork
aux embedded framework
agile(敏捷). universal(通用). x(无限可能)
 
aux_dev_open
 
 
embedded dev frame edf
embedded X frame EMXFrame emx
 
MicroFrame
SiLeap
 
embedded micro frame
 
文件夹
名称
功能
bsp
板级支持包
components
组件
common
define、assert、log、export、
device
设备文件
driver
驱动文件,上位机开发仅模拟层,后面需移植到对应平台
os
操作系统接口,建立CMSIS OS V2 接口
test
单元测试
docs
文档
lib
crc、hash_table、data structure
tools
一些脚本工具,用于环境搭建、代码格式化、单元测试、工程转换、调试、CI、配置脚本、构建脚本等
嵌入到CubeMX中,与Core、Drivers、Middleware同文件夹
  • 其中bsp包拷贝到顶层目录,

设备/组件支持一览表

设备/组件
计划
预览
稳定
文档
ADC
[√]
[√]
CAN
[√]
DAC
[√]
[√]
I2C
[√]
[√]
Soft-I2C
[√]
[√]
Pin
[√]
[√]
PWM
[√]
[√]
Serial
[√]
[√]
SPI
[√]
[√]
Timer
[√]
[√]
msh
[√]
[√]
LCD
[√]
Senser
[√]
 

建立log,数据类型,define, export assert 机制

 

移植gtest框架

 

头文件安排

emf_lib.h
对外提供库所有接口
emf_dev.h
包含emf_api.h
emf_api.h
环形缓冲区、AVL 和设备框架接口,以内存分配,格式化输出等接口
包含emf_def.h和emf_service.h
emf_service.h emf_export.h
链表操作,常用宏定义(数组长度,字符串拼接,内存对齐,位操作,最值,数值交换,限幅操作)
包含emf_def.h
service.c
emf_def.h
枚举变量、Export定义、堆、列表、环形缓冲区、AVL 数据结构定义,设备框架相关定义
包含emf_config.h
emf_device.c
emf_config.h
宏定义配置,功能开关

kconfig

 

export 机制

自动初始化机制
程序代码截取
 
 
 

搭建设备层框架

 
驱动层 定义static struct emf_serial_ops serial_drv_ops包含在 static struct emf_drv pin_drv
注册到设备驱动框架中。
 
设备驱动框架中定义私有操作emf_serial_ops,由驱动层注册上来。调用驱动层操作,编写设备层统一接口,注册到设备层中。emf_pin_ops只是虚拟接口,虚函数。必须驱动初始化后,指针不为空方能使用
 
设备层中通过描述符管理多设备,通过路径找到设备后,使用设备驱动框架提供的接口操作设备。
 
 
定义serial 驱动结构体 drv_serial_data,并初始化数据。由于实在hal库上移植一层,因此无需定义引脚号、时钟、DMA等。
  • 句柄
  • 实例
  • 中断资源
 
定义serial设备serial_dev[]
实现串口驱动 emf_drv serial_drv[],包括驱动操作(实现串口操作emf_serial_ops serial_drv_ops),硬件数据。
注册到设备框架层emf_serial_register(&serial_dev[i], serial_path[i], &serial_drv[i]);
 

移植操作系统

 
上一篇
模板设计模式:让你的代码结构更清晰
下一篇
Guide to Linux System

Comments
Loading...