Edit online

编译选项介绍

4 Dec 2024
Read time: 4 minute(s)

Baremetal SDK 采用 SCons 命令编译:

1. 编译选项介绍
常用选项 说明
–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
  • 修改和配置参数

    执行 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.

生成目录

使用 SCons 命令编译 Baremetal SDK 完成后,生成的库文件位于 output 目录下,包含各个配置编译生成的目录, 例如编译后生成的 d21x_demo100-nand_rt-thread_helloworld 目录,使用 tree -L 2 命令会显示当前目录及其子目录的层级结构,详情如下:
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 文件;主要包括 artinchipthird-party 两部分。

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