2.4. 编译

ZX-RTT SDK 采用 scons 命令编译

2.4.1. 编译选项介绍

常用选项

说明

–list-def

列举所有板卡配置

–apply-def=APPLY_DEFCONFIG

应用某个板卡配置

–save-def

保存当前板卡默认配置

–info

显示当前工程信息

–distclean

清除工具链和输出目录

–target=TARGET

生成目标工程,例如: eclipse/eclipse_sdk

–genconfig

通过 rtconfig.h 生成 .config

–useconfig=USECONFIG

通过配置文件生成 rtconfig.h

–verbose

编译过程中打印详细信息

–menuconfig

进入 menuconfig 菜单,对 SDK 进行配置

2.4.2. 编译操作

  • 查看 SDK 支持板卡

解压 SDK 之后,输入 scons --list-def 查看当前版本支持的板卡配置, 效果如下:

> scons --list-def
scons: Reading SConscript files ...
Built-in configs:
0. ZX4D3_bootloader_defconfig     - Build for ZX4D3_bootloader
1. ZX4D3_rt-thread_defconfig      - Build for ZX4D3_rt-thread
2. ZX7D0_bootloader_defconfig     - Build for ZX7D0_bootloader
3. ZX7D0_rt-thread_defconfig      - Build for ZX7D0_rt-thread
4. ZXM37D0_bootloader_defconfig   - Build for ZXM37D0_bootloader
5. ZXM37D0_rt-thread_defconfig    - Build for ZXM37D0_rt-thread
6. ZXM3C3D95_bootloader_defconfig - Build for ZXM3C3D95_bootloader
7. ZXM3C3D95_rtt_defconfig        - Build for ZXM3C3D95_rtt
8. ZXM47D0N_bootloader_defconfig  - Build for ZXM47D0N_bootloader
9. ZXM47D0N_rt-thread_defconfig   - Build for ZXM47D0N_rt-thread
  • 选择板卡配置

> scons --apply-def=9
scons: Reading SConscript files ...
Load config from target\configs\ZXM47D0N_rt-thread_defconfig

> scons --apply-def=ZXM47D0N_rt-thread_defconfig
scons: Reading SConscript files ...
Load config from target\configs\ZXM47D0N_rt-thread_defconfig
  • 配置参数

执行 scons --menuconfig,进入配置界面,可根据实际需求进行配置修改

  • 编译

执行 scons ,编译成功后生成镜像文件,打印信息如下:

Creating D:\pro\zx-rtt-sdk\output/ZXM47D0N_rt-thread/images/m4_os.itb ...
Creating D:\pro\zx-rtt-sdk\output/ZXM47D0N_rt-thread/images/usbupg-ddr-init.aic ...
Creating D:\pro\zx-rtt-sdk\output/ZXM47D0N_rt-thread/images/bootloader.aic ...
Image header is generated.
Meta data for image components:
        Meta for image.updater.ddr         offset 0x1200     size 0x6b10 (27408)
        Meta for image.updater.spl         offset 0x8200     size 0x24f10 (151312)
        Meta for image.info                offset 0x0        size 0x800 (2048)
        Meta for image.target.spl          offset 0x2d200    size 0x24f10 (151312)
        Meta for image.target.os           offset 0x52200    size 0x10d2e4 (1102564)
Packing file data:
        usbupg-ddr-init.aic
        bootloader.aic
        bootloader.aic
        m4_os.itb
Image file is generated: D:\pro\zx-rtt-sdk\output/ZXM47D0N_rt-thread/images/m4_ZX7D0N_page_2k_block_128k_v1.0.0.img


ZX-RTT is built successfully

scons: done building targets.

2.4.3. 生成目录

output 目录是编译后生成在 SDK 根目录下的文件,包含各个配置编译生成的目录, 例如上文编译后生成的 ZXM47D0N_rt-thread 目录,其内部结构如下:

zx-rtt/output$ tree -L 2
.
├── ZXM47D0N_rt-thread
│   ├── application
│   ├── bsp
│   ├── images
│   ├── kernel
│   ├── libs
│   ├── packages
│   └── target
  • application:存放编译过程中, $SDK/application 源码目录生成的 *.o 文件;

  • bsp: 存放编译过程中, $SDK/bsp 源码目录生成的 *.o 文件,包括驱动模块、外设驱动等;

  • images: 编译生成的镜像文件、函数符号表等文件;

  • kernel: 存放 zx-rtt 操作系统内核模块编译生成的 *.o 文件;

  • libs: $SDK/application 目录里或用户自定义生成的库文件存放于此目录;

  • packages: 编译后 $SDK/packages 目录后,生成的 *.o 文件;主要包括 zxthird-party 两部分;

  • target: 针对选择的板卡,生成的 board.opinmux.osys_clk.o