开启辅助访问 切换到窄版

打印 上一主题 下一主题

简单几步,让你的FreeRTOS直接跑在芯片上!

[复制链接]
作者:BT123shine 
版块:
嵌入式操作系统 其他嵌入式相关 发布时间:2018-9-12 09:43:48
17491
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式

写在前面


为满足大家的好奇心,本文将讲述几个步骤可以让FreeRTOS系统直接在芯片上运行,提供可以直接运行的Demo工程给大家,方便大家直接拿来修改测试。



为什么不先讲述源代码?
相信很多朋友开始学习的时候都是参看别人写好的,可以直接使用的源代码。在正确代码工程的基础上,我们可以展开很多测试,从而可以知道为什么这样才可以运行。


整个FreeRTOS工程源代码里面的内容牵涉到许多东西,而只需要简单几个步骤就能将代码运行起来,看到效果。如果我一一给你们讲述源代码,估计没怎么讲述几条,大家都晕了,不知道为什么这个地方是这样。


所以,给你看写好源代码工程,让你们自己测试,并分析才是最好的。
移植几个步骤


源代码里面的内容有很少变动,本篇文章不具体讲述,只讲述移植的几个步骤,最终让代码工程可以运行在板子上。只需要如下简单几步即可:


1.提取源码添加到工程
上一篇文章讲述了下载FreeRTOS源码中各个目录及文件的意思,也大概讲述了一下需要提取源码。
主要提取:Source目录+FreeRTOSConfig.h
(里面有部分内容未使用,为了不让大家感觉文件比较多,或者杂,我删除了)



将这些源码添加到自己的工程(之前讲述并建立好的STM32工程),具体提取的源码和添加到工程中的效果,请下载代码查看。


2.添加路径
我们添加源码到工程,有部分头文件include需要添加到工程。因此,我们需要添加相应路径。
.c源代码添加路径的方法见文章:
1.MDK-ARM_新建软件工程详细过程


2.EWARM_新建软件工程详细过程


这里主要想提醒的是:在IAR工程中有个汇编文件portasm.s包含了,需要我们添加所在文件下的路径。


注意:是在EWARM的Project -> Options -> Assembler -> Preprocessor中添加。


3.创建自己任务和添加相应代码
我们创建四个任务,还是使用比较经典的LED灯任务。
void AppTaskCreate(void)
{
xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);
xTaskCreate(vAppTask2, "Task2", TASK2_STACK_SIZE, NULL, TASK2_PRIORITY, NULL);
xTaskCreate(vAppTask3, "Task3", TASK3_STACK_SIZE, NULL, TASK3_PRIORITY, NULL);
xTaskCreate(vAppTask4, "Task4", TASK4_STACK_SIZE, NULL, TASK4_PRIORITY, NULL);
}


void vAppTask1(void *pvParameters)
{
for(;;)
{
  LED1_TOGGLE;
  vTaskDelay(50);
}
}
我新建了app_task.c和app_task.h文件添加任务的源代码。


4.修改FreeRTOSConfig.h配置文件
这个文件是必须配置的,而且根据实际情况而定。我们系统的裁剪也与该文件有关,类似于UCOS中的os_cfg.h文件。


比如:主频、系统滴答、系统堆栈大小等。
#define configCPU_CLOCK_HZ    ((unsigned long)72000000)
#define configTICK_RATE_HZ    ((TickType_t)100)
#define configTOTAL_HEAP_SIZE   ((size_t)(4 * 1024))
本文不讲述具体内容。后期详细分析FreeRTOSConfig.h中的每一个参数。


至此,基本的步骤算是完成了。


代码下载


目前只提供了STM32F0、F1和F4的Demo工程,后期更新。


FreeRTOS_STM32F0_Demo下载地址:
http://pan.baidu.com/s/1qYbmfy0


FreeRTOS_STM32F1_Demo下载地址:
http://pan.baidu.com/s/1jHDHRPc


FreeRTOS_STM32F4_Demo下载地址:
http://pan.baidu.com/s/1bplLZ7x




1.2018年第9期《单片机与嵌入式系统应用》电子刊新鲜出炉!

2.在STM8跑个轻量级操作系统,很多复杂问题可以迎刃可解!

3.今天不说35,聊聊50岁的程序员该何去何从?

4.为什么边缘设备是IoT取得成功的核心?

5.在调试嵌入式软件时,使用跟踪工具可以找到一些典型错误!

6.为什么单片机管脚设计成低电平才有效?
本文来自个人微信公众号「ID:strongerHuang」,经原作者授权发布。原文公众号由嵌入式工程师「strongerHuang」在精心整理并维护。专注分享的内容包含:Keil、IAR、STM8、STM32、μC/OS、FreeRTOS、CANOpen、ModBus...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

注册会员

积分
83
沙发
mcu 发表于 2018-9-12 09:43:48 | 只看该作者
用FreeRTos不如用ucos,ucos资料更多,更强壮。是不是这个道理?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表