在ChibiOS的使用过程中,我们往往需要利用ChibiOS来完成我们的开发但不想要提交ChibiOS本身的代码(比如需要提交代码到github上),因为如果在ChibiOS的目录下开发就会带来这个问题。
前面已经有一篇讲到了如何在ChibiOS的目录下进行自定义工程的创建,链接如下:
https://blog.csdn.net/jtd9009001/article/details/102619331
下面我们介绍如何建立独立文件夹的开发方式,这样我们在提交我们的代码时便不需要提交ChibiOS本身的代码而只要提交我们工程的代码即可:
首先我们需要从ChibiOS的demo目录中找到一个模板来快速完成项目的构建,比如我们要开发STM32F072,则可以找到下面这个目录:
ChibiOS/demos/STM32/RT-STM32F072-DISCOVERY/
这个目录下基本包含了构建一个基本工程所需的所有文件,比如makefile文件,相关的配置文件等。
我们将这个目录拷贝到我们自己的目录下,比如:
~/project/cb_proj_stm32f072/
对于linux下开发而言,我们可以删除.cproject和.project这两个文件,这两个文件主要是为了IDE使用的我们不需要维护索性删除。
ChibiOS还需要指定板级文件,对于ChibiOS自带的示例工程而言,板级文件都是有的,存放在下面这个文件夹下:
ChibiOS/os/hal/boards/
而我们的实际开发过程中,几乎不可能和默认的板级文件是相同的,所以我们需要建立自己的板级文件,因此我的做法是在我们刚刚拷贝的目录中添加一个文件夹board,路径如下:
~/project/cb_proj_stm32f072/board
然后我们将STM32F072的样例板级文件拷贝进来,这个样例文件夹我选择的是:
ChibiOS/os/hal/boards/ST_STM32F072B_DISCOVERY/
现在基本的文件有了,我们需要修改相关的文件将他们组织起来,并于ChibiOS产生编译联系。
首先我们编辑工程目录下的Makefile,修改其中CHIBIOS这个变量的值为ChibiOS的路径,可以是相对的也可以是绝对的,比如可以这样:
CHIBIOS := ~/project/ChibiOS
然后我们需要删除原来的board包含,也就是删除下面这行:#include $(CHIBIOS)/os/hal/boards/ST_STM32F072B_DISCOVERY/board.mk
修改为:
export BOARD_PATH = ./board
include $(BOARD_PATH)/board.mk
然后我们修改编译board所需的board/board.mk文件,修改下面两个变量的值为:
BOARDSRC = $(BOARD_PATH)/board.c
BOARDINC = $(BOARD_PATH)
现在我们直接在工程目录下make即可。
对于需要开发的代码,我们就可以直接放在工程目录下,也可以新建文件夹来存放,比如用于存放驱动的driver目录,那么路径可以这样:
~/project/cb_proj_stm32f072/driver
同时比如该文件夹下我们创建了一个lcd.c文件,则我们需要在Makefile中加添对这个文件的包含,只要找到Makefile中的CSRC这个变量然后追加添加就可以了:
CSRC += driver/lcd.c
对于头文件比如driver/lcd.h则需要修改Makefile中的INCDIR变量:
INCDIR += driver
然后保存之后重新make即可