2.5. 编译¶
Baremetal SDK 采用 scons 命令编译
2.5.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.5.2. 编译操作¶
查看 SDK 支持板卡
解压 SDK 之后,输入 scons --list-def
查看当前版本支持的板卡配置, 效果如下:
> scons --list-def
scons: Reading SConscript files ...
Built-in configs:
0. d13x_demo88-nor-xip_baremetal_bootloader_defconfig - Build for d13x_demo88-nor-xip_baremetal_bootloader
1. d13x_demo88-nor_baremetal_bootloader_defconfig - Build for d13x_demo88-nor_baremetal_bootloader
2. d13x_demo88-nor_baremetal_helloworld_defconfig - Build for d13x_demo88-nor_baremetal_helloworld
3. d13x_per1-nand_baremetal_bootloader_defconfig - Build for d13x_per1-nand_baremetal_bootloader
4. d13x_per1-nand_baremetal_helloworld_defconfig - Build for d13x_per1-nand_baremetal_helloworld
5. d13x_per1-nor_baremetal_bootloader_defconfig - Build for d13x_per1-nor_baremetal_bootloader
6. d13x_per1-nor_baremetal_helloworld_defconfig - Build for d13x_per1-nor_baremetal_helloworld
7. d21x_demo100-nand_baremetal_bootloader_defconfig - Build for d21x_demo100-nand_baremetal_bootloader
8. d21x_demo100-nand_baremetal_helloworld_defconfig - Build for d21x_demo100-nand_baremetal_helloworld
9. d21x_demo100-nor_baremetal_bootloader_defconfig - Build for d21x_demo100-nor_baremetal_bootloader
10. d21x_demo128-nand_baremetal_bootloader_defconfig - Build for d21x_demo128-nand_baremetal_bootloader
11. d21x_demo88-mmc_baremetal_bootloader_defconfig - Build for d21x_demo88-mmc_baremetal_bootloader
12. d21x_demo88-nand_baremetal_bootloader_defconfig - Build for d21x_demo88-nand_baremetal_bootloader
13. d21x_demo88-nand_baremetal_helloworld_defconfig - Build for d21x_demo88-nand_baremetal_helloworld
14. d21x_demo88-nor_baremetal_bootloader_defconfig - Build for d21x_demo88-nor_baremetal_bootloader
15. d21x_per2-nand_baremetal_bootloader_defconfig - Build for d21x_per2-nand_baremetal_bootloader
16. d21x_per2-nand_baremetal_helloworld_defconfig - Build for d21x_per2-nand_baremetal_helloworld
17. d21x_per2-nor_baremetal_bootloader_defconfig - Build for d21x_per2-nor_baremetal_bootloader
选择板卡配置
> scons --apply-def=8
scons: Reading SConscript files ...
Load config from target\configs\d21x_demo100-nand_baremetal_helloworld_defconfig
或
> scons --apply-def=d21x_demo100-nand_baremetal_helloworld_defconfig
scons: Reading SConscript files ...
Load config from target\configs\d21x_demo100-nand_baremetal_helloworld_defconfig
配置参数
执行 scons --menuconfig
,进入配置界面,可根据实际需求进行配置修改
编译
执行 scons
,编译成功后生成镜像文件,打印信息如下:
Creating Baremetal_D21x_V1.0.0/output/d21x_demo100-nand_rt-thread_helloworld/images/usbupg-ddr-init.aic ...
Creating Baremetal_D21x_V1.0.0/output/d21x_demo100-nand_rt-thread_helloworld/images/bootloader.aic ...
Creating Baremetal_D21x_V1.0.0/output/d21x_demo100-nand_rt-thread_helloworld/images/os.aic ...
Image header is generated.
Meta data for image components:
Meta for image.updater.ddr offset 0x1400 size 0x5910 (22800)
Meta for image.updater.bootloader offset 0x7400 size 0x1c710 (116496)
Meta for image.info offset 0x0 size 0x800 (2048)
Meta for image.target.bootloader offset 0x23c00 size 0x1c710 (116496)
Meta for image.target.os offset 0x40400 size 0x1f2610 (2041360)
Meta for image.target.rootfs offset 0x232c00 size 0x1ce0000 (30277632)
Packing file data:
usbupg-ddr-init.aic
bootloader.aic
bootloader.aic
os.aic
page_2k_block_128k_oob_64_rootfs.uffs
Image file is generated: Baremetal_D21x_V1.0.0/output/d21x_demo100-nand_rt-thread_helloworld/images/d21x_demo100_nand_page_2k_block_128k_v1.0.0.img
Baremetal is built successfully
scons: done building targets.
2.5.3. 生成目录¶
output 目录是编译后生成在 SDK 根目录下的文件,包含各个配置编译生成的目录,
例如上文编译后生成的 d21x_demo100-nand_baremetal_helloworld
目录,其内部结构如下:
Baremetal/output$ tree -L 2
.
├── d21x_demo100-nand_baremetal_helloworld
│ ├── application
│ ├── bsp
│ ├── images
│ ├── kernel
│ ├── libs
│ ├── packages
│ └── target
application:存放编译过程中,
$SDK/application
源码目录生成的*.o
文件;bsp: 存放编译过程中,
$SDK/bsp
源码目录生成的*.o
文件,包括驱动模块、外设驱动等;images: 编译生成的镜像文件、函数符号表等文件;
kernel: 存放 Baremetal 操作系统内核模块编译生成的
*.o
文件;libs:
$SDK/application
目录里或用户自定义生成的库文件存放于此目录;packages: 编译后
$SDK/packages
目录后,生成的*.o
文件;主要包括artinchip
和third-party
两部分;target: 针对选择的板卡,生成的
board.o
、pinmux.o
和sys_clk.o
;