examples 的目录结构
在 bl_mcu_sdk/examples 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 CMakeList.txt 以及该 case 相关的源码。
可供用户使用的 cmake 变量如下:
mains:main 函数入口
TARGET_REQUIRED_SRCS:没有编译成 lib 的外部 c 文件
TARGET_REQUIRED_PRIVATE_INCLUDE:外部 c 文件需要的头文件路径
TARGET_REQUIRED_LIBS:目标需要的 lib 库名称,可以是 cmake 通过 generate_bin 生成的 target 或者外部导入的 lib 库
TARGET_REQUIRED_PRIVATE_OPTIONS:私有 c flag
LINKER_SCRIPT:重新定义链接脚本
GLOBAL_C_FLAGS:全局 c flag
GLOBAL_LD_FLAGS:全局 ld flag
添加单个源文件工程
![](//file.elecfans.com/web2/M00/4E/B2/pYYBAGK8G5uAI_h7AAAqpVGV-ww780.jpg)
在 examples 目录下新建一个 my_case 目录,用于存放你的 case 集
在 my_case 目录中新建你要测试 case 的名称,比如新建一个 gpio_case 目录
然后在 gpio_case 目录中添加 main.c 和 CMakeLists.txt 文件即可
目录结构如下:
![](//file.elecfans.com/web2/M00/4E/B1/pYYBAGK8G5uAWymyAAAqgKyBExM746.jpg)
CMakeLists.txt:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAXP2NAAAaWzofwQQ577.jpg)
在 main.c 中编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
![](//file.elecfans.com/web2/M00/4E/B2/pYYBAGK8G5uAUePjAAAYKre9cq8389.jpg)
添加多个源文件工程
![](//file.elecfans.com/web2/M00/4E/B1/pYYBAGK8G5uAW73OAABA7p-3Nx4868.jpg)
添加多源文件工程的步骤与添加单个源文件工程基本步骤一致
在 gpio_case 目录中添加 test1.c、test1.h、test2.c、test2.h 等需要依赖的源文件和头文件即可
目录结构如下:
![](//file.elecfans.com/web2/M00/4E/B2/pYYBAGK8G5uAEP3EAAAronoQr1c556.jpg)
那么此时 CMakeLists.txt 文件需要添加相应的依赖源文件,内容如下所示:
CMakeLists.txt:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAdrlKAAAkx_bCzBA444.jpg)
编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAffoEAAAUOh9ffrI226.jpg)
添加有依赖库的新工程
添加有依赖库的新工程的步骤与添加单个源文件工程基本步骤一致
如使用的依赖库在本 SDK 中已存在,那么就只需要修改 CMakeLists.txt 即可
如使用的依赖库不存在则需要自行添加,详见后续说明
已存在的情况下,目录结构如下:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAZqv3AAAtQOzV9RQ010.jpg)
那么此时 CMakeLists.txt 文件需要添加相应的依赖库文件即可,比如我们添加一个 FreeRTOS 组件库,内容如下所示:
CMakeLists.txt:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAYSe2AAAlX9M_Ng8980.jpg)
编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAZ6NoAAAT93LtETE484.jpg)
4.5. 添加新工程并设置私有编译选项(gcc option)
添加新工程步骤与添加单源文件工程基本一致
主要是在修改 CMakeLists.txt 文件,添加私有编译选项
CMakeLists.txt:
![](//file.elecfans.com/web2/M00/4E/B2/pYYBAGK8G5uASVlwAAAk1MxiEGM721.jpg)
编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
![](//file.elecfans.com/web2/M00/4E/B1/pYYBAGK8G5uANhBTAAAUX2NmgIo749.jpg)
4.6. 添加新工程并设置私有链接脚本(ld)
添加新工程步骤与添加单源文件工程基本一致
添加私有链接脚本文件,如 gpio_test_case.ld
目录结构如下:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uAc78vAAAyRy2oFQI138.jpg)
修改 CMakeLists.txt 文件,添加私有链接脚本设置
CMakeLists.txt:
![](//file.elecfans.com/web2/M00/4E/16/poYBAGK8G5uARqlGAAAtwz5P7kU962.jpg)
编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
![](//file.elecfans.com/web2/M00/4E/B2/pYYBAGK8G5uAYL4vAAAXIdWK31g386.jpg)
原作者:BL_MCU_SDK 开发指南