基于STM32从零写操作系统系列---使用官方固件库

如有不详细的描述、错误或疑问,欢迎留言!!!

基于STM32从零写操作系统系列---前言与目录

目的内容

使用官方固件库的好处就是方便,看着说明文档就可以使用。但是,从编译后的.bin文件大小看,一样的点亮LED灯,使用固件库产生的.bin文件大小差不多有6K,而上一章的串口+LED程序编译后的.bin文件就只有2K多。对于stm32F103zet6而言,flash大小512K,如果想要在这么点空间装个”有点意思”的操作系统,就需要尽量减少.bin文件的大小了。在实现的功能相同的情况下,用最少的指令数量显然更合理。在使用固件库时,编译的一些文件中,有部分函数功能是没有用到的,但他们也被链接到.bin文件中了。所以最终生成的.bin文件就比较大了。

还有一个问题就是,固件库用起来方便,但是想要完全掌握你的程序的来龙去脉,你还要必须认真去看固件库的源代码,花时间去了解固件库的结构和一些使用规范。所以,在以后的编写操作系统的过程中,固件库只是作为我的参考,而不会完全使用固件库。这样就可以以固件库为范例,去学习别人的一些编程思路,学习别人的一些良好的编程规范,学习C语言的一些高级用法。

分析

1.先来看看本次实验的项目文件结构

基于STM32从零写操作系统系列---使用官方固件库_第1张图片

2.创建如上的目录结构后,就是从“STM32最新固件库v3.5”复制相关的头文件和.c文件。boot.s是自己编写汇编启动代码,test_led.c是自己编写的测试代码,其他的.h和.c文件都是复制固件库的。boot.s文件和上一章中的boot.s文件一样。

3.编写test_led.c

基于STM32从零写操作系统系列---使用官方固件库_第2张图片

4.Makefile有所变动,主要是修改后子目录的Makefile更具有通用性,添加了如下一条代码。

这条代码用于查找当前目录下的.s和.c文件,然后文件名不变加上扩展名.o。

小结

这次使用固件库,只是为了了解一下固件库是如何实现的。为以后继续编写自己的操作系统添加一个源代码参考。

由于码云的限制,代码分享在百度网盘,链接如下,文件名:chapter8.zip

STM32最新固件库v3.5也可以在下面的网盘下载:

链接:https://pan.baidu.com/s/1DlzYMo8oZsnF9ammJuuZoQ 
提取码:dc5h 

 

 

你可能感兴趣的:(从零开始构建自己的操作系统)