作者 | 将狼才鲸 |
---|---|
创建日期 | 2022-11-27 |
Gitee源码仓库地址:才鲸嵌入式 / 自己用操作系统4元素搭一个RTOS操作系统
CSDN文章阅读地址:
兄弟仓库:才鲸嵌入式 / ARM-Cortex-M3从汇编到C 从Boot到应用教程
当前在Linux GCC环境下编译和运行,后续也会移植到Keil MDK上面去。
操作系统模块 | 所用的开源仓库 | 描述 |
---|---|---|
线程管理 | Atomthreads | |
内存管理 | dlmalloc | |
文件系统 | FatFs | |
驱动 | 自己写 |
还未进行
Atomthreads M3硬件相关的代码原本是适配Linux下的,移植到Keil中比较麻烦,已放弃
嵌入式常见的RTOS有好几个,很多都是线程管理、内存管理、驱动框架、文件系统框架等操作元素合在一起的,移植起来复杂一点,我需要更简单的演示;所以我这里选用Atomthreads,它纯粹就只有一个OS中的进程管理模块,总共也只有6个.c文件,内容简单,便于理解;可以熟悉移植线程管理模块需要修改哪些硬件相关的代码;它也可以移植到8位CPU上面。
工程和源码在本文档同级目录\src\07_OS_kernel\下
更多的移植流程详见子文档[《03_ARM Cortex-M3 Atomthreads操作系统内核移植过程.md》](./doc/03_ARM Cortex-M3 Atomthreads操作系统内核移植过程.md)
Keil模拟器的介绍详见子文档《04_Keil模拟器介绍.md》
其它几个操作系统移植时需要的配置操作:
嵌入式操作系统-ucos的移植(上)
RT-Thread 之 PWM 设备驱动详细配置过程(血泪经验)
RTThread Studio开发STM32基本工程配置
rtthread 4.0 shell的裁剪
使用eCos图形化配置工具管理eCos应用程序
uCOSII、eCos、FreeRTOS和djyos操作系统的特点及不足
关于ucosII系统的软件系统裁剪性
FreeRTOS(1)—FreeRTOS 内核配置说明
Keil选择设备时,不能再选择ARM中的Cortex-M3,而要选择一款实际的芯片了,因为这样才能使用中断和定时器的头文件定义;我这里选用STM32F103ZG
在软件配置的Debug页面,选择模拟器Use Simulator,并且将Cortex-M3的模拟器库改成STM32F1xx的;将DCM.DLL和-pCM3改为DARMSTM.DLL和-pSTM32F103ZG
遇到的问题及解决办法
还未进行
工程和源码在本文档同级目录\src\08_OS_memory\下
内存操作实际上就是对Heap堆的操作。
Keil也自带了堆操作的库,已经实现了malloc和free,直接在工程里勾选微库MicroLI即可,微库内部位置一个堆管理模块。
使用开源的dlmalloc可以实现操作系统中的内存管理模块,只有一个.c和一个.h就可实现。
参考网址:
dlmalloc(一)
还未进行
工程和源码在本文档同级目录\src\09_OS_filesystem\下
使用FatFs开源嵌入式文件系统,里面只有7个源文件,支持exFAT和FAT32格式的U盘、SD卡等,支持Unicode中文和ANSI/OEM GB2312中文。
参考网址:
Fatfs(文件系统的移植)
[FatFs(通用FAT文件系统模块)下载与介绍](