BabyOS,一个旨在加速MCU项目开发的代码框架
1什么是BabyOS? BabyOS适用于MCU项目。
它是用于管理功能模块和外围设备驱动程序的框架。
对于项目,缩短开发周期。
在项目开发期间选择适用的功能模块和驱动程序。
直接进入功能代码编写阶段。
对于工程师,减少重复工作。
调试后的功能模块和驱动程序代码已放入BabyOS中进行管理,该项目可以在将来直接使用,从而消除了重复的调试工作。
2适用项目建议使用裸机开发的项目应基于BabyOS。
3过去和现在的生活让我们谈谈编写BabyOS的原因……目前,使用MCU裸机开发的项目不会很大。
它们中的大多数都有两个要求:开发时间和产品功耗。
99.874%的产品由电池供电,功耗是主要考虑因素。
工程师开发的多个项目将始终遇到相同的功能点,因此是否存在一组代码框架,可以容纳已完成的功能点,消除重复的工作,并加快产品或演示的开发速度。
4功耗考虑因素出于功耗考虑,外围设备的操作是:唤醒外围设备,进行操作,最后进入睡眠状态。
这种类型的操作与文件操作非常相似。
文件的操作步骤是从打开到编辑再到关闭。
因此,外围设备的操作被视为文件的操作。
在打开每个外围设备之后,将返回一个描述符。
后续代码中对外围设备的操作均基于此描述符。
关闭外围设备后回收描述符。
因此,外围设备的驱动器中的打开和关闭操作执行设备的唤醒和睡眠。
使用描述符操作外围设备的另一个优点是,在更换外围设备时,仅需要更换驱动程序接口,而无需更改业务部分的代码。
5在小项目快速发展的过程中,出现了更多具有较高使用率的功能模块。
,例如:UTC,错误管理,电池电量,存储的数据,主机通信,固件升级等。
这些功能被构建为不依赖于硬件的模块,并移交给BabyOS进行管理。
调试后的外围设备驱动程序也将移交给BabyOS进行管理。
再次启动项目时,通过配置文件选择当前项目使用的功能模块。
通过构建块来缩短开发时间。
使用方法1.添加文件bos / core / src,将所有核心文件和功能模块添加到项目bos / driver / src中,选择所需的驱动程序以添加到项目中bos / hal /添加到项目中,进行修改根据特定平台2.选择功能模块要配置b_config.h,请根据需要选择功能模块。
3.列出需要使用的设备。
找到b_device_list.h并添加其中使用的外围设备。
例如,当前项目仅需要使用闪存和模拟串行端口,然后添加以下代码://设备驱动程序接口描述B_DEVICE_REG(W25QXX,bW25X_Driver,“ flash”)B_DEVICE_REG(SUART,SUART_Driver,“ suart”) 4使用示例#include" b_os。
h” //头文件///在b_config.h配置文件中启用KV存储int main(){uint8_t buf [128]; // ...... bInit(); //初始化,外围设备初始化//在以下示例中使用:W25QXX和KV存储功能模块,其中W25QXX已添加到b_device_list.h if(0 == bKV_Init(W25QXX,0xA000,4096 * 4,4096)) //初始化KV存储,指定存储设备W25QXX {b_log(“ bKV_Init ok ... ");} //存储键值对(可用于存储系统配置信息)b_log(“保存ip,名称 ”); bKV_Set((uint8_t *)“ ip”,(uint8_t *)“ 192.168.1.155”,sizeof(“ 192.168.1.155”))); bKV_Set((uint8_t *)“名称”,(uint8_t *)“ BabyOS”,sizeof(“ BabyOS”))); //获取值b_log("读取ip,名称... ”); bKV_Get((uint8_t *)“ ip”,buf); b_log(" ip:%s " buf); bKV_Get((uint8_t *)“名称”,buf); b_log("名称%s " buf); //修改键值对b_log(“更改名称... ”); bKV_Set((uint8_t *)“名称”,(uint8_t *)“ abcde”,sizeof(“ abcde”))); //再次获取值bKV_Get((uint8_t *)“ name”,buf); b_log(“新名称:%s " buf); //...while(1){// ..... bExec(); // //循环调用此函数// .....}}例如,使用W25QXX读取数据,从地址0到buf读取128字节数据{int fd = -1; fd = bOpen(W25QXX,BCORE_FLAG_RW); if(fd == -1){return;} bLseek(fd,0); bRead(fd,buf,128);公元前