这个学习过程将不使用任何集成开发环境,目的只有一个,就是完全了解和掌握整个硬件和软件的架构。由于集成开发环境帮我们在构建工程时完成了很多工作,一方面是减轻了我们开发的负担,但一方面也让学习者不了解底层是如何构建的。这次的学习目的就是要从工程构建,从汇编语言,从stm32f103单片机的硬件结构,从操作系统理论开始学习,希望可以从各个知识点的学习过程中,掌握stm32f103单片机的硬件原理,掌握操作系统的基本原理,从而初步了解计算机系统的基本理论。
本系列文章将试图使用STM32F103单片机来学习操作系统的理论,参考的内核代码为linux-4.20.4,minix3.20.0;参考的书籍有《深入理解LINUX内核》,《操作系统设计与实现 第3版 上/下》,以及本人在网上下载的一些PDF文档。学习目标是,在实践中掌握操作系统理论,学习过程尽可能详细分析和记录下来。由于很多书籍都是长篇大论地描述概念理论,给出的代码分析又只是一个片段而已,对于资质一般的我来说,没有详细的说明,我是搞不懂哪里是哪里的。所以,本系列文章就是希望可以从一字一句的代码实现中,详细解剖每个知识点,可以透彻地理解到,理论是什么,为什么是这样,怎样在代码中实现它。
使用的交叉编译环境
- windows + linux
- 纯windows
硬件要求
- stm32单片机
- ST-Link调试下载器
- 台式电脑或手提电脑
具体的交叉编译环境搭建,将会用两篇文章描述。详细请看目录。
【更新中】本系列文章的目录:
- 基于STM32从零写操作系统系列---熟悉win+linux交叉编译环境
- 基于STM32从零写操作系统系列---熟悉纯windows交叉编译环境
- 基于STM32从零写操作系统系列---bootloader
- 基于STM32从零写操作系统系列---点亮LED灯
- 基于STM32从零写操作系统系列---用GDB调试LED程序
- 基于STM32从零写操作系统系列---使用C语言
- 基于STM32从零写操作系统系列---基于寄存器写串口驱动
- 基于STM32从零写操作系统系列---使用官方固件库
- 基于STM32从零写操作系统系列---将printf指向串口输出
- 基于STM32从零写操作系统系列---内存管理入门
- 基于STM32从零写操作系统系列---进程概念入门
项目代码分享位置
码云:https://gitee.com/drson/STM32_kernel_dev/tree/master/(实验代码暂时通过百度云分享,到时完成一个简单的内核时重新在码云分享)
参考文献:
链接:https://pan.baidu.com/s/1DlzYMo8oZsnF9ammJuuZoQ
提取码:dc5h
【1】 STM32最新固件库v3.5
【2】(开发板配套)STM32F1xx中文参考手册.pdf
【3】(开发板配套)普中STM32F1xx开发攻略.pdf
【4】(芯片资料)STM32F103ZET6.pdf
【5】STM32F10xxx20xxx21xxxL1xxxx Cortex®-M3 programming manual.pdf
【6】Cortex M3权威指南(中文).pdf
如有环境搭建问题、配置设置问题,欢迎留言一起探讨。