命令详解
本节介绍 Baremetal SDK 编译过程中涉及的命令类型以及各个命令的详细说明。
scons 命令参考指南
SCons 是一个跨平台的构建系统,被广泛应用于软件开发项目中,支持在 Windows 和 Linux 上使用,且用法相同。本节列示了常用的 SCons 命令和功能。
scons --list-def
解压缩 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
scons --apply-def=项目索引或名称
- 使用数字索引,例如 --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 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=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
scons --menuconfig
使用命令 scons --menuconfig 可以调出 menuconfig 图形界面,以便根据需要调整项目设置。
scons --menuconfig

完成配置后,保存并退出配置界面,SCons 会根据所做的更改重新编译项目。
scons
使用命令 scons 开始构建过程,编译成功后生成镜像文件。默认在简洁模式下进行构建,不会输出编译选项等信息。
scons
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.
scons --verbose
使用 scons --verbose 可以显示更详细的编译信息,包括编译器选项等,便于调试。
scons --clean
运行命令 scons --clean 清除上一次编译构建过程中生成的所有临时文件,确保在下一次编译构建时,所有源文件都会被重新编译。
scons --clean
或者使用缩写命令:
scons -c
scons --save-def
保存当前板卡默认配置。
scons --info
显示当前工程信息,可使用简洁命令 scons i。
scons distclean
清除工具链和输出目录。
scons target=TARGET
生成目标工程,例如 eclipse/eclipse_sdk,其中 TARGET 是需要生成的目标工程名称。
scons genconfig
通过 rtconfig.h 生成 .config 文件。
scons useconfig=USECONFIG
通过配置文件生成 rtconfig.h,其中 USECONFIG 是需要使用的配置文件路径。
scons --run-qemu
运行当前编译出来的 qemu 目标文件。
scons --list-size
size 命令列出所有 .o 文件下 text/data/bss 中各个 section 的大小。
scons --pkgs-update
下载选择的在线 packages。
OneStep 命令参考指南
- Windows系统设置
在 Windows 系统中,OneStep 自动集成到 win_cmd.bat 和 win_env.bat 批处理脚本中。
在 CMD 或者 ENV 窗口启动后,OneStep 命令已经生效,在其中可以从任意目录执行 OneStep 命令。
- Linux 系统设置在 Linux 系统中,需要将 OneStep 脚本添加到当前路径中,如执行以下命令:
source tools/onestep.sh
在 Ubuntu 终端中,进入 SDK 根目录后,使用 source tools/onestep.sh 命令即可查看所有常见命令。
h
Baremetal SDK OneStep commands: hmm|h : Get this help. lunch [keyword] : Start with selected defconfig.e.g. lunch mmc menuconfig|me : Config application with menuconfig bm : Config bootloader with menuconfig km : Config application with menuconfig m|mb : Build bootloader & application and generate final image ma : Build application only mu|ms : Build bootloader only c : Clean bootloader and application mc : Clean & Rebuild all and generate final image croot|cr : cd to SDK root directory. cout|co : cd to build output directory. cbuild|cb : cd to build root directory. ctarget|ct : cd to target board directory. godir|gd [keyword] : Go/jump to selected directory. list : List all SDK defconfig. list_module : List all enabled modules. i : Get current project's information. buildall : Build all the *defconfig in target/configs rebuildall : Clean and build all the *defconfig in target/configs addboard|ab : Add new board *defconfig in target/configs aicupg : Burn image file to target board
list
查看所有项目文件。
list输出示例如下:
scons: Reading SConscript files ... Built-in configs: d12x_demo68-nand_rt-thread_helloworld_defconfig 0. d12x_demo68-nor_rt-thread_helloworld_defconfig 1. d12x_hmi-nor_rt-thread_helloworld_defconfig 2. d13x_demo68-nor_rt-thread_helloworld_defconfig 3. d13x_demo88-nand_rt-thread_helloworld_defconfig 4. d13x_demo88-nor_rt-thread_helloworld_defconfig 5. d13x_kunlunpi88-nor_rt-thread_helloworld_defconfig 6. d21x_d215-demo88-nand_rt-thread_helloworld_defconfig 7. d21x_d215-demo88-nor_rt-thread_helloworld_defconfig 8. d21x_demo100-nor_rt-thread_helloworld_defconfig 9. d21x_demo128-nand_rt-thread_helloworld_defconfig 10.g73x_demo100-nor_rt-thread_helloworld_defconfig 11.g73x_demo68-nor_rt-thread_helloworld_defconfig 12.g73x_scan_rt-thread_helloworld_defconfig
lunch
-
示例 1:进入 Recovery 系统 SDK 生产环境
lunch ota_emmc
-
示例 2:加载 d13x_demo88-nor-xip_rt-thread_helloworld_defconfig 配置文件
lunch d13x_demo88-nor-xip_rt-thread_helloworld_defconfig
menuconfig|me
打开 menuconfig 工具界面,修改 RT-Thread 配置
menuconfig或
me
bm
打开 menuconfig 工具界面,修改 BootLoader 配置
bm
km
打开 menuconfig 工具界面,修改应用配置
bm
m
m
mb
mb
ma
ma
mu|ms
mu|ms
c
c
mc
mc
croot|cr
进入 SDK 根目录。
cout|co
进入编译输出目录
ctarget|ct
回到方案或目标开发板目录。
godir|gd
跳转到指定目录。
i
查看当前项目的配置信息。
i
scons: Reading SConscript files ... Target app: application/rt-thread/helloworld Target chip: d12x Target arch: riscv32 Target board: target/d12x/demo68-nor Target kernel: kernel/rt-thread Defconfig file: target/configs/d12x_demo68-nor_rt-thread_helloworld_defconfig Root directory: xxxxxxxxxxxxxx Out directory: output/d12x_demo68-nor_rt-thread_helloworld Toolchain: toolchain/bin\riscv64-unknown-elf-
buildall
编译目标配置文件 target/configs 中的所有 *defconfig 文件。
rebuildall
清除前一次配置信息,并重新编译目标配置文件 target/configs 中的所有 *defconfig 文件。
addboard|ab
在 target/configs 中添加新开发板的 *defconfig 文件。
aicupg
将镜像文件烧录到目标开发板中。
tree 命令参考指南
tree 命令是 Linux 系统中一个用于以树状图形式显示目录结构的命令:
- 显示当前目录结构:直接输入
tree
命令,不跟任何参数,将显示当前目录下的文件和子目录结构。 - 指定目录显示:通过在
tree
命令后加上路径参数,可以查看特定目录的结构。 - 递归显示:默认情况下,
tree
命令会递归地显示目录下的所有文件和子目录。
常用选项
- -a:显示所有文件,包括隐藏文件。
- -d:只显示目录,不显示文件。
- -f:在每个文件或目录前显示完整的相对路径。
- -i:不使用缩进和线条,仅显示文件和目录名称。
- -l:按修改时间排序。
- -r:反转显示顺序。
- -s:显示文件大小。
- -L level:限制显示的层数。
- -P pattern:只显示符合模式的文件和目录。
查看编译完成后的目录结构
使用 SCons 命令编译 Baremetal SDK 完成后,生成的库文件位于 output 目录下,包含各个配置编译生成的目录, 例如编译后生成的 d21x_demo100-nand_rt-thread_helloworld 目录。
tree -L 2
. ├── d21x_demo100-nand_rt-thread_helloworld │ ├── application │ ├── bsp │ ├── images │ ├── kernel │ ├── libs │ ├── packages │ └── target
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`` ;
menuconfig 命令工具
menuconfig 是一个图形化的配置工具,主要用于配置 Linux 内核和开源项目 (如 BusyBox)的编译选项。