Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式操作系统
单片机移植FreeRTOS实时操作系统
发布于 2022-06-06 00:30:12 浏览:1174
订阅该版
移植FreeRTOS比较简单。仅需要注意以下几点: 1.系统核心文件提取。 2.Keil工程目录搭建。 3.FreeRTOS配置文件修改。 4.单片机核心中断函数定义和中断函数冲突处理,Systick中断函数代码移植。 5.Main函数文件处理。 系统核心文件提取: ① FreeRTOS文件夹下的source目录下,所有的.c文件全部都要。 ② Include文件夹全部都要。 ③ Portable目录下的RVDS和MemMang文件夹都要。分别是进程切换底层实现和内存管理相关文件。 ④ ![16544466711.jpg](https://oss-club.rt-thread.org/uploads/20220606/10675af8667c9de37c38d7a8fd40d783.jpg)![16544467101.jpg](https://oss-club.rt-thread.org/uploads/20220606/f54669dad1ac42f0bea3589ea3826558.jpg) Keil工程目录搭建: ① 分为三个文件夹目录: ② Include 文件夹,本质上就是从源码中直接复制过来的。 ③ Port文件夹,主要存放RVDS和MemMang文件夹。 ④ Src文件夹,存放source目录下,所有的.c文件。 ⑤ 工程中,创建src分类,主要存放.c文件。Port分类,主要存放MemMang文件夹中的heap4和RVDS文件夹中对应的core,(我这边用的是STM32L475,所以选择ARM_CM4F文件夹下的port.c文件加入。) ⑥ 头文件索引路径的话,主要是include文件夹路径;port/RVDS文件夹下面对应的core路径(我用的是ARM_CM4F文件夹下的.h) ⑦ ![16544467441.jpg](https://oss-club.rt-thread.org/uploads/20220606/147dcd1664dfd1135e621883741649dc.jpg)![16544467741.jpg](https://oss-club.rt-thread.org/uploads/20220606/1f89b747949695f77310d32e5d78f43c.jpg) FreeRTOS配置文件修改: ① FreeRTOSConfig.h 系统配置文件,主要用于裁剪FreeRTOS内核功能。 ② 从源码中的demo文件夹下,找个单片机STM32的例程中复制过来,肯定有不兼容的部分,可以按照实际情况修改。 ③ 先修改包含的头文件,我是从STM32F103那边复制过来的。但是我的是L475所以包含的头文件要改成L4的。对应的log串口相关的,修改为自己定义的log串口头文件名称。 ④ 剩下的就是对RTOS中的一些功能进行裁剪的操作,例如是否使用信号量,消息队列,软件定时器等,还有就是默认任务栈空间大小,优先级相关的等,以及一些功能函数是否启用等,与动态内存分配相关的,堆空间的大小。 ⑤ 编译不报错说明修改的都没啥问题,一般是直接从demo下的例程复制过来几乎能直接使用。 单片机核心中断函数定义冲突处理: ① SVC和PendSV中断定义已经在配置文件中定义过了,所以xxxit.c文件中的可以注释掉。 ② Systick中断函数需要重新实现,一般也是从demo例程中直接复制过来,与基本上可以直接用。但是还是需要仔细移植。把平台相关性的代码移植正确即可。 Main函数文件处理 ① 添加FreeRTOS.h和task.h的头文件包含。 ② 删除所有与裸机外设相关的驱动函数。 ③ 直接复制裸机中的时钟配置代码HAL_Init和SystemClock_Config函数。进行一开始的时钟配置。 ④ 初始化led和log串口相关驱动。 ⑤ 然后就可以通过xTaskCreate创建第一个线程,再调用vTaskStartScheduler函数启动操作系统任务调度,就完成了FreeRTOS的移植和启动了。 ⑥ 接下来就可以在第一个线程中AppTaskCreate,进行其他的应用线程的创建了(还是使用xTaskCreate这个函数创建)。 ⑦ ![16544467991.jpg](https://oss-club.rt-thread.org/uploads/20220606/b730ea4040976815fc8cd357959d02b1.jpg.webp)
11
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Liutao
这家伙很懒,什么也没写!
文章
9
回答
0
被采纳
0
关注TA
发私信
相关文章
1
嵌入式系统中如何管理芯片级通讯总线协议
2
邮箱 队列能否实现一个任务发送,多个任务接受呢
3
超低功耗物联网功能的RTT
4
求rt_thread 可以在STC32上实现吗,
5
申请邮箱rt_mb_create 邮箱内容大小的问题
6
rt thread操作系统是运行在什么里面?上位机还是单片机
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部