Edit online

准备工作

5 Nov 2024
Read time: 2 minute(s)
为了让后续的开发工作更便捷,在开始进行开发板 Bringup 之前,建议做好下列相关准备工作。
注: 编译环境的搭建可以参考SDK 编译

创建 Git 仓库

如果使用了 git clone 获取的代码,则表示已经存在 Git 仓库,可以略过此步。

如果不是直接下载的代码,则需要手动创建一下本地 Git 仓库,具体操作如下:

sudo apt-get install git   //安装 Git
git init                   //创建本地仓库
git add *                  //添加所有代码到本地仓库暂存区
git commit -m "init"       //将暂存区的代码提交到本地参考
创建 Git 仓库,有助于执行下列操作:
注: 务必使用一个版本管理工具对代码进行管理。如果没有 Git 服务器, 建议创建一个本地仓库进行跟踪。
  • 跟踪修改的历史记录。

  • 方便进行修改回退,防止调试代码影响开发工作。

修改配置文件

Luban-Lite 包含以下配置文件,Bringup 时仅需要 lunch RT-Thread 配置即可,不需要修改 BootLoader:
  • BootLoader:用来完成内存初始化,刷机,升级等工作,在 OS 启动后会被自动释放。
    • 命名:IC_demo + 引脚数-存储类型_baremetal_bootLoader

    • 示例 d21x_demo128-nand_rt-thread_helloworld

  • RT-Thread:固件的核心,由 OS 和 Application 等组成
    • 命名:IC_demo + 引脚数-存储类型_os 类型_application

    • 示例 d21x_demo128-nand_baremetal_bootLoader

    • 示例 d13x_demo88-nor_freertos_helloworld

生成固件

每一块开发板可以对应一个工程,工程的代码存放于 target/ic/ 目录下。 关于代码结构的详细说明,可查看 代码结构

在进行工程编译前,可以使用已有的工程,也可以建一个给开发板使用的独立工程,详细流程如下:

  1. 选择已有工程:选择一个合适的工程可以减少修改配置的工作量。

    选择合适的工程时,可遵照以下优先级顺序:
    • 主控: D21x、D13x、D21x

    • 系统:RT-Thread、FreeRTOS

    • 存储:SPINAND、SPINOR、eMMC

    • 屏幕:RGB、LVDS、MIPI-DSI、MIPI-DBI

    1. 工程文件优先级顺序
    工程名称 存储 封装 Memory 屏幕 其他功能
    d12x_demo68-nand SPINAND QFN68 PSRAM RGB888 RS485,RS232,UART,SDIO WIFI,TFCARD
    d12x_demo68-nor SPINOR QFN68 PSRAM RGB RS485,RS232,UART,SDIO WIFI,TFCARD
    d12x_hmi-nor SPINOR QFN68 PSRAM RGB JART,TFCARD
    d13x_demo88-nand SPINAND QFN88 PSRAM LVDS RTP/CTP,UART,RTC,SDCARD,DMIC
    d13x_kunlunpi88-nor SPINOR QFN88 PSRAM RGB565 CTP,SDCARD,DVP,RS485
    d21x_demo128-nand SPI NAND QFN128 128M ddr3 LVDS CTP,MAC,CAN,SDCARD,USB
    g73x_demo100-nor SPINOR QFN100 SRAM QSPI CTP,2xGMAC,SDCARD,WiFi,2xUSB,RS485
  2. 建立新工程:使用 scons --add-board 命令创建新板子对应的工程。

    该命令会参考某一个已经存在的工程建立一个全新命名的工程, 参考工程的选择依然需要按照 存储屏幕封装的优先级进行。
    $ scons --add-board
    scons: Reading SConscript files ...
    Chip list:
    0: xxxxx
    1: d12x
    2: d13x
    3: d21x
    Select chip for new board(number):2
    d13x
    
    Reference defconfig:(Create new board base on selected defconfig):
    0: d13x_demo88-nand_rt-thread_helloworld_defconfig
    1: d13x_demo88-nor-xip_rt-thread_helloworld_defconfig
    2: d13x_demo88-nor_baremetal_helloworld_defconfig
    3: d13x_demo88-nor_rt-thread_helloworld_defconfig
    4: d13x_per1-nand_baremetal_helloworld_defconfig
    5: d13x_per1-nand_rt-thread_helloworld_defconfig
    6: d13x_per1-nor_baremetal_helloworld_defconfig
    7: d13x_per1-nor_rt-thread_helloworld_defconfig
    
    Select reference defconfig for new board(number):0
    d13x_demo88-nand_rt-thread_helloworld_defconfig
    
    Input new board's name:test
    test
    
    Input new app's name: (default helloworld)test
    test
    
    Copy luban-lite/target/configs/d13x_demo88-nand_rt-thread_helloworld_defconfig to luban-lite/target/configs/d13x_test_rt-thread_test_defconfig
    Copy luban-lite/target/configs/d13x_demo88-nand_baremetal_bootLoader_defconfig to luban-lite/target/configs/d13x_test_baremetal_bootLoader_defconfig
    Copy luban-lite/target/d13x/demo88-nand to luban-lite/target/d13x/test
    Add board test for test succeed!
    
  3. 选择合适的工程后,可以使用以下命令编译工程:
    $ scons --list-def                  // 列出当前所有的工程默认配置
    $ scons --apply-def=xxx_defconfig   // 加载应用上述列表其中一条工程配置
    

    准备工作完成后应该能够顺利编译出固件。