写在前面
??我们在第二章和第三章中分别讨论了在windows x86平台下和linux x86平台下使用CMake实现交叉编译,成功点亮数莓派.由此可见CMake强大的跨平台功能. ??因此,后面的章节仅以一种平台为例,如果想要使用另一种平台或者其他平台(如MacOS),相信你参考前面的章节也可以快速迁移学习. ??FreeRTOS是一种适合资源受限嵌入式系统的实时操作系统,具有可迁移性.目前广泛使用在STM32中(可以搜索到很多基于keil的RTOS移植到STM32上的方法).同时乐鑫公司的ESP32系列更加方便,其直接支持FreeRTOS,可以借助ArduinoIDE直接写FreeRTOS代码并烧录运行.其教程如下.
https://www.bilibili.com/video/BV1q54y1Z7ca/?spm_id_from=333.337.search-card.all.click
??本系列秉持着 先实现后探究 的路径,关于CMake以及本章中的文件代码具体分析,将在之后的文章中进行探究. ??话不多说,进入正题.
本章所使用的工具和文件
工具/文件 | 版本 | 备注 |
---|
??系统平台 | Ubuntu 18.04 | x86_64bit,也可以尝试其他系统,更改相应工具 | ??VScode | 任意版本 | 安装C/C++、Cmake和CmakeTools扩展(见第一章) | ??cmake | 3.25.0 | 见第三章,cmake --version查看版本 | ??make(Unix) | GNU MAKE 4.1 | 输入make -v来查看,一般是系统自带 | ??(交叉编译器)arm-none-eabi-gcc -v | gcc version 6.3.1 | 见第三章 | ?? pico-sdk | github最新 | 见第三章,保持之前的存放路径不变 | ?? rp2040-freertos-project | github最新 | 下载方式见(1) |
(1):使用git下载rp2040-freertos-project
git clone --recurse-submodules https://github.com/LearnEmbeddedSystems/rp2040-freertos-project
此外,该文件的相关解析见下
https://learnembeddedsystems.co.uk/freertos-on-rp2040-boards-pi-pico-etc-using-vscode
构建生成文件
?? 在第三章的基础上,保持VScode中CMakeTools的配置不变动.直接选择CMakeTools的编译器为arm-none-eabi,然后进行Configure和build就可以在生成的build文件夹下看到生成的文件,找到ProjectFiles,找到blink.uf2,这就是最终所需要的文件. ?? 数莓派Pico以硬盘模式插入电脑,在数莓派硬盘内放入刚刚生成的blink.uf2即可. ?? 注意到,与第三章不同的是,这里的main文件中可以调用FreeRTOS库,并且使用了vTaskDelay等RTOS函数.而第三章仅仅借助pico-sdk进行裸板开发,并没有使用FreeRTOS.如果想要简单实现不同功能,只要修改这个main.c文件,然后再用CMakeTools进行Configure&build就可以了. ?? 至此,FreeRTOS移植数莓派成功! ?? 既然(Since)我们已经实现了操作系统构建,我们之后的内容将集中在操作系统本身提供了哪些库函数以及基于FreeRTOS的程序编写上来.
参考(参考中使用的是NMake并且是Windows平台下,与本方法有区别)
https://www.youtube.com/watch?v=jCZxStjzGA8&list=PLEB5F4gTNK68IlRIJtcJ_2cW4dSdmreTw&index=14
特别鸣谢!
|