概述
系列文章目录
嵌入式开发|嵌入式软件框架《一》常用的软件框架介绍与选择
文章目录
- 系列文章目录
- 前言
- 一、cola os程序框架
- 1.cola_init
- 2.cola_device
- 3.cola_os task任务创建
- 4.cola_os stime定时器创建
- 二、cola os源代码下载
前言
在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。本教程中使用的框架为前后台和时间片相结合,同时参考rt_thread和linux中优秀的思想设计而成,名为cola os。
一、cola os程序框架
1.cola_init
cola_init文件为系统初始化文件,设计思想参考linux 中的initcall机制,参考链接:
inux的initcall机制(针对编译进内核的驱动)
2.cola_device
cola_device是硬件抽象层,将硬件抽象有如下功能,功能参考rt_thread.
struct cola_device_ops
{
int (*init) (cola_device_t *dev);
int (*open) (cola_device_t *dev, int oflag);
int (*close) (cola_device_t *dev);
int (*read) (cola_device_t *dev, int pos, void *buffer, int size);
int (*write) (cola_device_t *dev, int pos, const void *buffer, int size);
int (*peek) (cola_device_t *dev, int pos, void *buffer, int size);
int (*control)(cola_device_t *dev, int cmd, void *args);
int (*config) (cola_device_t *dev, void *args, void *var);
};
将每一个硬件虚拟成一个设备,通过链表串联起来。
驱动使用用例:
串口发送数据:
uart_dev = cola_device_find("uart1"); //首先找到串口
assert(uart_dev);
cola_device_write(uart_dev,0,g_buf,ret);//数据发送
3.cola_os task任务创建
cola os是系统调度轮询文件,该系统调度本质也是采用while大循环原理,只是将每个函数放到链表中,一次while循环就会从头到尾遍历一遍链表,执行链表中的函数。
API:
/*
主循环任务创建
*/
int cola_task_create(task_t *task,cbFunc func);
例程:
1.首先定一个是任务结构体,task
static task_t radio_task;
2.定义一个循环函数,该函数会在while(1)中不停的循环。
static void radio_task_cb(void *arg,uint32_t event)
{
//循环函数
}
3.调用api将函数注册到循环链表中。
cola_task_create(&radio_task,radio_task_cb);
4.cola_os stime定时器创建
Stimer 软件定时器原理,是在1ms中断中不断的轮询定时器链表中定时时间是否到,如果到了则将标志置位,在while大循环中如果检测到该标志就执行该函数。
API:
/*
定时任务创建
*/
int cola_timer_create(task_t *timer,cbFunc func);
/*
启动定时任务
one_shot:TIMER_ALWAYS 循环定时
TIMER_ONE_SHOT 只运行一次
time_ms :定时时间
*/
int cola_timer_start(task_t *timer,bool one_shot,uint32_t time_ms);
/*
停止定时任务
*/
int cola_timer_stop(task_t *timer);
例程:
1.首先创建软件定时器结构体。
static stimer radio_timer;
2.创建定时器回调函数,及定时时间到需要运行的函数。
static void radio_timer_cb(void *arg,uint32_t event)
{
//定时器回调函数
}
4.调用api将函数注册到定时任务链表中。
cola_timer_create(&radio_timer,radio_timer_cb);
5.启动定时器。
每1s运行一次:
cola_timer_start(&radio_timer,TIMER_ALWAYS,1000);
定时50s,只运行一次:
cola_timer_start(&radio_timer,TIMER_ONE_SHOT,50000);
6.停止定时器。
cola_timer_stop(&radio_timer);
二、cola os源代码下载
代码下载
最后
以上就是清秀雪糕为你收集整理的嵌入式开发|嵌入式软件框架《二》前后台任务框架-cola os系统系列文章目录前言一、cola os程序框架二、cola os源代码下载的全部内容,希望文章能够帮你解决嵌入式开发|嵌入式软件框架《二》前后台任务框架-cola os系统系列文章目录前言一、cola os程序框架二、cola os源代码下载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复