littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C语言的FreeRTOS操作系统移植项目

项目简介

本项目致力于将FreeRTOS操作系统成功移植到树莓派2B上。项目源于James Walmsley的树莓派1 FreeRTOS构建,并针对帧缓冲支持和树莓派2B的特点进行了针对性修改。在USB/Ethernet部分移植了USPi(LAN9514 USB驱动),TCP/IP部分采用官方FreeRTOS驱动并做了兼容性适配。

项目的主要特性和功能

FreeRTOS核心功能

  • 任务管理:支持任务的创建、删除、优先级设置、挂起与恢复。
  • 内存管理:提供动态内存分配和释放,有多种内存管理策略可供选择。
  • 队列管理:可创建、发送、接收和删除队列,实现任务间通信与同步。
  • 事件组管理:能创建、设置、清除和等待事件位,协调多任务同步。
  • 协程管理:可创建、调度协程,进行延迟和移除操作,属于轻量级用户模式执行线程。
  • 定时器管理:支持软件定时器的创建、启动、停止、更改周期和删除。

硬件相关功能

  • 支持树莓派2B的帧缓冲,用于调试信息输出。
  • 通过移植USPi驱动,实现了USB/Ethernet功能。
  • 采用修改后的官方FreeRTOS驱动,具备TCP/IP通信能力。

安装使用步骤

编译

  1. 下载项目源码文件。
  2. 若使用Ubuntu系统,通过sudo apt-get install gcc-arm-none-eabi安装arm-non-eabi工具链。
  3. 修改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
  4. 在项目根目录下执行make命令进行编译。

烧录到SD卡

  1. 将SD卡格式化为FAT32。
  2. /boot_stuff复制config.txt到SD卡,以修复过扫描/欠扫描问题。
  3. 将编译生成的kernel7.img复制到SD卡。

使用

将SD卡插入树莓派2B,若绿色ACT LED持续闪烁,表明任务调度器正常工作。根据项目需求,在代码中创建任务、队列、事件组、协程和定时器等,实现多任务管理和同步。可使用调试工具(如GDB)对程序进行调试,确保任务正确执行。

注意事项

  • 使用前需了解FreeRTOS的基本概念和使用方法。
  • 根据项目需求选择合适的内存管理策略,如heap_1.cheap_2.cheap_3.cheap_4.c
  • 使用协程和定时器时,遵循FreeRTOS编程规范,在中断服务程序中操作数据结构要格外小心。
  • 对于复杂嵌入式系统,可能需采用更复杂或特定的内存管理策略。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】