全部文档
OneOS简介 硬件支持 快速开发指南 编译构造工具 API参考文档 高级语言 用户编程手册 OnePos定位 应用笔记 FAQ

从零开始构建代码工程

在示例工程的体验中,我们初步感受到了OneOS的运行效果,也对如何使用OneOS建立了一定的信心。但示例工程毕竟不能做成产品,要想进行产品开发,还要根据产品的需求开发产品代码。那么,如何构建产品的代码工程,将是摆在各位开发者面前的一个问题。

一种简单的方法是,基于示例工程构建产品代码工程。具体的步骤是:

  • 挑选一个合适的示例工程(示例工程所使用的芯片型号与产品所使用的芯片型号相同);
  • 不改变所挑选示例工程的目录关系,在示例工程的board目录和application目录中,可以增加新的目录和文件,用以开发产品代码。

使用上述方法,可以快速构建产品代码工程,不需要额外更改配置,就可以顺利通过编译,但静态代码组织关系不够友好。因此,从零开始构建代码工程,显得尤为重要。下面,就通过使用现有示例工程中的代码,重新组织静态代码组织关系,通过一步一步的操作,来讲解如何从零构建代码工程

1. 准备工作

从示例工程中,挑选一个工程。本例挑选的是stm32l475-atk-pandora工程(潘多拉STM32L4)。

本例只在说明代码工程构建过程,因此,不再重新写相关代码和相关配置文件,而是使用示例工程目录下的stm32l475-atk-pandora工程中的代码和配置文件,在此基础上,进行相关修改,以达到重新构建工程的目的。

2. 创建产品相关的目录

按照常规的产品代码组织方式,创建存放产品代码相关的目录:

  • 在OneOS操作系统代码根目录下,创建application目录,用于存放产品的业务代码;

  • 在OneOS操作系统代码根目录下,创建board目录,用于存放产品BSP相关代码;

  • 在OneOS操作系统代码根目录下,创建product_project目录,用于存放代码工程相关文件以及OneOS操作系统Menuconfig生成的配置头文件oneos_config.h。

创建产品相关目录后的目录结构如下图:

3. 拷贝所选示例工程中的文件

  • 把所选示例工程中board目录下的全部文件拷贝到刚才在OneOS代码根目录下创建的board目录中;

  • 把所选示例工程中application目录下的全部文件拷贝到刚才在OneOS代码根目录下创建的application目录中;

  • 把所选示例工程根目录(即projects\stm32l475-atk-pandora目录)下的.config、Kconfig、osconfig.py、SConscript、SConstruct、template.uvoptx、template.uvprojx等7个必须文件 拷贝到刚才在OneOS代码根目录下创建的product_project目录中,如图所示:

4. 修改相关配置文件或脚本

1) 修改product_project目录下的Kconfig文件

修改此文件的目的是,在使用menuconfig工具时,如何从顶层Kconfig文件所在目录(即工程目录)找到OneOS根目录。修改如下图:

2)修改OneOS根目录下的SConscript文件

修改此文件的目的是把刚刚创建的application和board加到编译环境中。修改如下图:

3) 修改product_project目录下的SConstruct文件

修改此文件的目的是让Scons工具构建过程中,如何从工程目录(即product_project)找到OneOS根目录。修改如下图:

4) 修改product_project目录下的osconfig.py文件

修改此文件的目的是使用OneOS-Cube的GCC编译时,能够正确找到GCC的链接描述文件(也叫链接散列表)。修改如下: 注:GCC的链接描述文件link.lds在board\linker_scripts目录中(是从示例工程中拷过来的)。

5) 修改product_project目录下的template.uvprojx文件

修改这个文件的目的是用OneOS-Cube生成的KEIL工程中,可以正确找到自定义的链接描述文件。修改如下: 注:KEIL的链接描述文件link.sct在board\linker_scripts目录中(是从示例工程中拷过来的)。

5. 执行menuconfig生成配置文件oneos_config.h

进入工程目录product_project,右键运行OneOS-Cube(请参考OneOS-Cube环境搭建),输入“menuconfig”打开配置界面进行配置。 注:配置有变化时,就会重新生成oneos_config.h文件

6. 执行GCC编译

进入工程目录product_project下,右键运行OneOS-Cube(请参考OneOS-Cube环境搭建),输入"scons -j8"进行GCC编译。

若不使用GCC编译,此步可省。

7. 生成KEIL工程,并用Keil编译

进入工程目录product_project下,右键运行OneOS-Cube(请参考OneOS-Cube环境搭建),输入"scons --ide=mdk5"生成Keil工程。在product_project目录中,可以发现新生成的Keil工程,见下图:

若不使用Keil编译,此步可省。

results matching ""

    No results matching ""

    返回顶部