换个环境运行-将FreeRTOS运行在linux上

前言:了解FreeRTOS第一步肯定是搭建可以运行的环境,不管是移植到STM32还是哪里都阔以,有自己敲代码的实践总比只捧着书看来的印象深刻,所以为了方便,本猿查阅点资料,把FreeRTOS运行在linux上来方便学习!


本篇目标:搭建FreeRTOS可用的环境来运行,并学习基本的一些功能。
材料准备:


文件介绍

  1. 官方这份 FreeRTOS-simulator-for-Linux 资料demo里面包含了很多linux外设和FreeRTOS的使用,但是内核版本很低,很久没有往上迭代了,有些参数发生了变化,也不方便于最新版本的学习,所以只拿来作为移植的参考。
  2. 修改后的移植工程 Freertos_in_linux 借鉴了官方的移植,改变了一些编译结构,将demo分成不同的文件夹进行编译测试,同时将FreeRTOS的版本更新到了v10.2.1,方便与最新的进行同步学习了解。
.
├── output
├── Posix_GCC_Simulator
│   ├── FreeRTOS_Posix
│   │   ├── config.h				//demo 配置文件
│   │   ├── Debug					//demo 编译相关文件
│   │   ├── FreeRTOSConfig.h		//FreeRTOS 配置文件
│   │   ├── FreeRTOS_Kernel			//FreeRTOS 内核文件
│   │   ├── Release
│   │   └── study_demo				//demo 工程,直接脚本可以编译,待更新,详细见例程介绍
│   └── Readme.txt
├── Posix_GCC_Simulator_6.0.4.zip
└── README.md

运行

# 编译
cd Posix_GCC_Simulator/FreeRTOS_Posix/study_demo/rtos_start_1/
sh build.sh

# 运行
./rtos_start_1_app.bin

# 清除
sh build.sh clean

运行输出

[13:18:49] jinhao:rtos_start_1 git:(master) $ ./rtos_start_1_app.bin 
[log ] main.c:79 | Freertos v10.2.1 start 
Running as PID: 9367
Timer Resolution for Run TimeStats is 100 ticks per second.
[log ] main.c:43 | creat_task
[log ] main.c:55 | this is creat task:idle-0
[log ] main.c:55 | this is creat task:idle-1
[log ] main.c:55 | this is creat task:idle-2
[log ] main.c:55 | this is creat task:idle-3
[log ] main.c:55 | this is creat task:idle-4
[log ] main.c:55 | this is creat task:idle-5
[log ] main.c:55 | this is creat task:idle-6
[log ] main.c:55 | this is creat task:idle-7
[log ] main.c:55 | this is creat task:idle-8
[log ] main.c:55 | this is creat task:idle-9
[log ] main.c:63 | delete creat task

例程更新ing

.
├── rtos_start_1									//rtos的启动demo
├── rtos_task_2										//rtos任务的使用和任务资源情况查看
├── rtos_message_3							//rtos消息队列的使用
├── rtos_sem_4										//rtos信号量的使用
├── rtos_message_second_5			//rtos消息队列的另一种使用
├── rtos_mutex_6									//rtos互斥锁的使用
├── rtos_event_7									//rtos事件的使用
└── rtos_timer_8									//rtos定时器的使用

小结

后续物联网的一些应用工程可以直接搭建在demo上面,毕竟linux的资源还是很足够的,用于了解协议数据还是比较方便快捷的。

Tuu

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
ASPEED AST2600 支持双系统启动,可以通过修改 U-Boot 的配置文件来实现。 首先,需要在 U-Boot 中定义两个命令,分别用于启动 LinuxFreeRTOS。可以在 U-Boot 的 `cmd/boot.c` 文件中添加以下内容: ``` static int do_boot_linux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { /* 在这里写启动 Linux 的代码 */ return 0; } static int do_boot_freertos(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { /* 在这里写启动 FreeRTOS 的代码 */ return 0; } U_BOOT_CMD( boot_linux, 1, 0, do_boot_linux, "Boot Linux", "" ); U_BOOT_CMD( boot_freertos, 1, 0, do_boot_freertos, "Boot FreeRTOS", "" ); ``` 然后,在 U-Boot 的配置文件中,需要定义两个启动项,分别对应 LinuxFreeRTOS。可以在 U-Boot 的 `configs/aspeed_g5_defconfig` 文件中添加以下内容: ``` CONFIG_BOOTARGS="console=ttyS0,115200n8 root=/dev/mmcblk0p1 rootwait rw" CONFIG_BOOTCOMMAND="boot_linux" CONFIG_BOOT_FREERTOS=y CONFIG_BOOT_FREERTOS_CMD="boot_freertos" ``` 在上面的配置中,`CONFIG_BOOTARGS` 是 Linux 启动参数,`CONFIG_BOOTCOMMAND` 是默认启动项,即启动 Linux。`CONFIG_BOOT_FREERTOS` 表示是否启用 FreeRTOS 启动项,`CONFIG_BOOT_FREERTOS_CMD` 是启动 FreeRTOS 的命令。 如果需要启动 FreeRTOS,可以在 U-Boot 的命令行中输入 `boot_freertos` 命令。如果需要启动 Linux,可以在 U-Boot 的命令行中输入 `boot` 命令,或者不输入任何命令,等待默认启动 Linux
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图Tuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值