Edit online

命令详解

本节介绍 Baremetal SDK 编译过程中涉及的命令类型以及各个命令的详细说明。

Edit online

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=项目索引或名称

使用命令 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
menuconfig GUI 界面示例如下:

lbl-menuconfig

完成配置后,保存并退出配置界面,SCons 会根据所做的更改重新编译项目。

注: 关于 menuconfig 的更多信息,可查看 menuconfig 命令工具

scons

使用命令 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.

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。

Edit online

OneStep 命令参考指南

OneStep 是 ArtInChip 对 SCons 工具二次封装的总称,在基础命令上开发了一组更高效和方便的快捷命令, 以实现任意目录、一步即达的目的。根据操作系统的不同,可能需要不同的设置:
  • Windows系统设置

    在 Windows 系统中,OneStep 自动集成到 win_cmd.batwin_env.bat 批处理脚本中。

    在 CMD 或者 ENV 窗口启动后,OneStep 命令已经生效,在其中可以从任意目录执行 OneStep 命令。

  • Linux 系统设置
    在 Linux 系统中,需要将 OneStep 脚本添加到当前路径中,如执行以下命令:
    source tools/onestep.sh

    在 Ubuntu 终端中,进入 SDK 根目录后,使用 source tools/onestep.sh 命令即可查看所有常见命令。

为了方便使用并加快开发效率,ArtInChip 开发了一系列的 OneStep 子命令,如h|help显示帮助信息以及lunch选择和启动指定的项目配置。
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 命令进行了显示项目精简,隐藏了 bootloader 的项目文件。
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

编译 SDK 固件,并生成镜像文件。
m
注:mb 命令含义相同。

mb

编译 bootloader 和应用,并生成最终镜像文件。
mb

ma

仅编译应用,并生成最终镜像文件。
ma

mu|ms

仅编译 bootloader,并生成最终镜像文件。
mu|ms

c

清除 bootloader 和应用配置。
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

将镜像文件烧录到目标开发板中。

Edit online

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 目录。

output 下,使用 tree -L 2 命令会显示当前目录及其子目录的层级结构,详情如下:
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`` ;