转载自:如何开发智能小车的驱动器软件 - 古月居
驱动器软件总体架构
先来看整个机器人系统的整体架构,不难看出,其实驱动器软件的上下游是硬件外设和中间件软件,那想要开发驱动器软件就需要对上下游非常熟悉吗?不一定,但是作为一个嵌入式工程师需要懂得如何和对应开发者进行交流。
首先对于硬件开发者,他们会给我们提供一份原理图,以及一般性的我们需要知道芯片的使用手册,这样才能辅助我们去正确的使用硬件的各个IO,避免如最低级的正负级接反等问题;对于中间件软件,我们则需要和他们一起制定一个协议,这个协议约定了双方如何进行正确的数据交互。
说到这里,大家就很明确对于此处的嵌入式开发者而言需要做什么事情了。一方面要正确的使用板卡资源和外设资源,并对其数据进行加工处理来做一些开发者企图实现的功能。另一方面要将处理的数据与上游进行交互从而达到更高效的数据利用,当然了必要时也需要接收来自上游数据的指令。
首先对于硬件开发者,他们会给我们提供一份原理图,以及一般性的我们需要知道芯片的使用手册,这样才能辅助我们去正确的使用硬件的各个IO,避免如最低级的正负级接反等问题;对于中间件软件,我们则需要和他们一起制定一个协议,这个协议约定了双方如何进行正确的数据交互。
说到这里,大家就很明确对于此处的嵌入式开发者而言需要做什么事情了。一方面要正确的使用板卡资源和外设资源,并对其数据进行加工处理来做一些开发者企图实现的功能。另一方面要将处理的数据与上游进行交互从而达到更高效的数据利用,当然了必要时也需要接收来自上游数据的指令。
此处举一个例子来看
FreeRTOS 快速上手
搭建软件环境
以Keil为例
https://www.keil.com/download/product
FreeRTOS使用
RTOS全称为 Real Time Operation System,即实时操作系统。RTOS强调的是实时性,又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,不允许超时;而软实时里对处理过程超时的要求则没有很严格。RTOS的核心就是任务调度。
FreeRTOS是RTOS的一种,尺寸非常小,可运行于微控制器上。微控制器是尺寸小,资源受限的处理器,它在单个芯片上包含了处理器本身、用于保存要执行的程序的只读存储器(ROM或Flash)、所执行程序需要的随机存取存储器(RAM),一般情况下程序直接从只读存储器执行。
https://j7h4nezmu0.feishu.cn/docx/PD6iduyKfo49Kux41vAcTURsnrJ#KZlsdtiUFoE3Khx0VfScpejknXA
任务创建
关于任务创建,FreeRTOS 提供了 API 给我们使用。格式如下
代码实例
//Task priority //任务优先级
#define START_TASK_PRIO 1
//Task stack size //任务堆栈大小
#define START_STK_SIZE 256
//Task handle //任务句柄
TaskHandle_t StartTask_Handler;
//Task function //任务函数
void start_task(void *pvParameters);
//Main function //主函数
int main(void)
{
systemInit(); //Hardware initialization //硬件初始化
//Create the start task //创建开始任务
xTaskCreate((TaskFunction_t )start_task, //Ta