编译选项介绍
Baremetal SDK 采用 SCons 命令编译:
常用选项 | 说明 |
---|---|
–list-def | 列举所有板卡配置 |
–apply-def=APPLY_DEFCONFIG | 应用板卡配置,其中 APPLY_DEFCONFIG 是需要应用的配置名称。 |
–save-def | 保存当前板卡默认配置 |
–info | 显示当前工程信息 |
–distclean | 清除工具链和输出目录 |
–target=TARGET | 生成目标工程,例如 eclipse/eclipse_sdk,其中 TARGET 是需要生成的目标工程名称。 |
–genconfig | 通过 rtconfig.h 生成 .config 文件 |
–useconfig=USECONFIG | 通过配置文件生成 rtconfig.h,其中 USECONFIG 是需要使用的配置文件路径。 |
–verbose | 编译过程中打印详细信息 |
–menuconfig | 进入 menuconfig 菜单,对 SDK 进行配置 |
编译操作
-
查看 SDK 支持板卡
解压缩 SDK 后,在命令行中输入 scons --list-def 可以查看 SDK 支持的板卡信息, 示例结果如下:> scons --list-def scons: Reading SConscript files ... Built-in configs: 0. d12x_demo68-nand_baremetal_bootloader 1. d12x_demo68-nand_rt-thread_helloworld 2. d12x_demo68-nor_baremetal_bootloader 3. d12x_demo68-nor_rt-thread_helloworld 4. d12x_hmi-nor_baremetal_bootloader 5. d12x_hmi-nor_rt-thread_helloworld 6. d13x_demo88-nand_baremetal_bootloader 7. d13x_demo88-nand_rt-thread_helloworld 8. d13x_demo88-nor_baremetal_bootloader 9. d13x_demo88-nor_rt-thread_helloworld 10. d13x_kunlunpi88-nor_baremetal_bootloader 11. d13x_kunlunpi88-nor_rt-thread_helloworld 12. d21x_demo128-nand_baremetal_bootloader 13. d21x_demo128-nand_rt-thread_helloworld 14. g73x_demo100-nor_baremetal_bootloader 15. g73x_demo100-nor_rt-thread_helloworld
-
选择板卡配置,可使用以下任意方法之一:
- 使用数字索引,例如 --apply-def=3,即应用列表中的第三个配置(从 0
开始计数)。以下示例表示应用名为
d12x_demo68-nor_rt-thread_helloworld_defconfig
的配置。
> scons --apply-def=3 scons: Reading SConscript files ... Load config from target\configs\d12x_demo68-nor_rt-thread_helloworld_defconfig
- 直接使用配置名称,例如
--apply-def=d12x_demo68-nor_rt-thread_helloworld_defconfig。
> scons --apply-def=d12x_demo68-nor_rt-thread_helloworld_defconfig scons: Reading SConscript files ... Load config from target\configs\d12x_demo68-nor_rt-thread_helloworld_defconfig
- 使用数字索引,例如 --apply-def=3,即应用列表中的第三个配置(从 0
开始计数)。以下示例表示应用名为
d12x_demo68-nor_rt-thread_helloworld_defconfig
的配置。
-
修改和配置参数
执行 scons --menuconfig 命令,进入配置界面,可根据实际需求进行配置修改。完成配置后,保存并退出配置界面,Scons 会根据所做的更改重新编译项目。
-
编译
执行 scons ,编译成功后生成镜像文件。
根据下列打印信息示例,编译成功后生成的文件路径为 e:\luban-lite\output\d12x_demo68-nor_rt-thread_helloworld\images\d12x_demo68-nor_v1.0.0.img:Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/usbupg-ddr-init.aic ... Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/bootloader.aic ... Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/os.aic ... Image header is generated. Meta data for image components: Meta for image.updater.psram offset 0x1600 size 0x6010 (24592) Meta for image.updater.spl offset 0x7e00 size 0x2d310 (185104) Meta for image.info offset 0x0 size 0x800 (2048) Meta for image.target.spl offset 0x35600 size 0x2d310 (185104) Meta for image.target.os offset 0x62e00 size 0xd8800 (886784) Meta for image.target.rodata offset 0x13b600 size 0x2b000 (176128) Meta for image.target.data offset 0x166600 size 0x700000 (7340032) Packing file data: uartupg-psram-init.aic bootloader.aic bootloader.aic d12x_os.itb rodata.fatfs data.lfs Image file is generated: e:/luban-lite/output/d12x_demo68-nor_rt-thread_helloworld/images/d12x_demo68-nor_v1.0.0.img Luban-Lite is built successfully scons: done building targets.
生成目录
luban-lite/output$ tree -L 2
.
├── d21x_demo100-nand_rt-thread_helloworld
│ ├── application
│ ├── bsp
│ ├── images
│ ├── kernel
│ ├── libs
│ ├── packages
│ └── target
luban-lite/output$ tree -L 2
.
├── d21x_demo100-nand_rt-thread_helloworld
│ ├── application # 存放编译过程中, ``$SDK/application`` 源码目录生成的 ``*.o`` 文件;
│ ├── bsp # 存放编译过程中, ``$SDK/bsp`` 源码目录生成的 ``*.o`` 文件,包括驱动模块、外设驱动等;
│ ├── images # 编译生成的镜像文件、函数符号表等文件;
│ ├── kernel # 存放 Luban-Lite 操作系统内核模块编译生成的 ``*.o`` 文件;
│ ├── libs # ``application`` 目录里或用户自定义生成的库文件存放于此目录;
│ ├── packages # 编译后 ``$SDK/packages`` 目录后,生成的 ``*.o`` 文件;主要包括 ``artinchip`` 和 ``third-party`` 两部分;
│ └── target # 针对选择的板卡,生成的 ``board.o``、 ``pinmux.o`` 和 ``sys_clk.o`` ;
-
application:存放编译过程中, $SDK/application 源码目录生成的 *.o 文件。
-
bsp: 存放编译过程中, $SDK/bsp 源码目录生成的 *.o 文件,包括驱动模块、外设驱动。
-
images: 编译生成的镜像文件、函数符号表等文件。
-
kernel: 存放 Luban Lite 操作系统内核模块编译生成的 *.o 文件。
-
libs: $SDK/application 目录里或用户自定义生成的库文件存放于此目录。
-
packages: 编译后 $SDK/packages 目录后,生成的 *.o 文件;主要包括 artinchip 和 third-party 两部分。
-
target: 针对选择的板卡,生成的 board.o、 pinmux.o 和 sys_clk.o。