项目简介
本项目致力于将FreeRTOS操作系统成功移植到树莓派2B上。项目源于James Walmsley的树莓派1 FreeRTOS构建,并针对帧缓冲支持和树莓派2B的特点进行了针对性修改。在USB/Ethernet部分移植了USPi(LAN9514 USB驱动),TCP/IP部分采用官方FreeRTOS驱动并做了兼容性适配。
项目的主要特性和功能
FreeRTOS核心功能
- 任务管理:支持任务的创建、删除、优先级设置、挂起与恢复。
- 内存管理:提供动态内存分配和释放,有多种内存管理策略可供选择。
- 队列管理:可创建、发送、接收和删除队列,实现任务间通信与同步。
- 事件组管理:能创建、设置、清除和等待事件位,协调多任务同步。
- 协程管理:可创建、调度协程,进行延迟和移除操作,属于轻量级用户模式执行线程。
- 定时器管理:支持软件定时器的创建、启动、停止、更改周期和删除。
硬件相关功能
- 支持树莓派2B的帧缓冲,用于调试信息输出。
- 通过移植USPi驱动,实现了USB/Ethernet功能。
- 采用修改后的官方FreeRTOS驱动,具备TCP/IP通信能力。
安装使用步骤
编译
- 下载项目源码文件。
- 若使用Ubuntu系统,通过
sudo apt-get install gcc-arm-none-eabi
安装arm-non-eabi工具链。 - 修改Makefile中arm-non-eabi工具链的位置:
makefile kernel.elf: LDFLAGS += -L"/usr/lib/gcc/arm-none-eabi/4.9.3" -lgcc kernel.elf: LDFLAGS += -L"/usr/lib/arm-none-eabi/lib" -lc
- 在项目根目录下执行
make
命令进行编译。
烧录到SD卡
- 将SD卡格式化为FAT32。
- 从
/boot_stuff
复制config.txt
到SD卡,以修复过扫描/欠扫描问题。 - 将编译生成的
kernel7.img
复制到SD卡。
使用
将SD卡插入树莓派2B,若绿色ACT LED持续闪烁,表明任务调度器正常工作。根据项目需求,在代码中创建任务、队列、事件组、协程和定时器等,实现多任务管理和同步。可使用调试工具(如GDB)对程序进行调试,确保任务正确执行。
注意事项
- 使用前需了解FreeRTOS的基本概念和使用方法。
- 根据项目需求选择合适的内存管理策略,如
heap_1.c
、heap_2.c
、heap_3.c
或heap_4.c
。 - 使用协程和定时器时,遵循FreeRTOS编程规范,在中断服务程序中操作数据结构要格外小心。
- 对于复杂嵌入式系统,可能需采用更复杂或特定的内存管理策略。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】