Edit online

代码结构

5 Dec 2024
Read time: 6 minute(s)

目录总览

luban-lite $ tree -L 2
├── application     // 存放 APP 入口,helloword 应用的 main 函数
│   ├── baremetal
│   ├── freertos
│   ├── Kconfig
│   └── rt-thread
├── bsp // 存放 BSP 代码,和 RT-Thread 原生的 bsp 目录功能相同
│   ├── artinchip // ArtInChip SoC 内部的 driver、hal 以及最小系统 sys 代码
│   ├── common    // 公共头文件
│   ├── peripheral       // 一些外设模块的驱动
│   ├── examples_bare    // 各模块在裸机环境的示例代码
│   └── examples         // 各模块在 RTOS 环境的示例代码
│       ├── test-alarm
│       ├── test-audio
│       ├── test-can
│       ├── test-dma
│       ├── test-qspi
│       ├── test-touch
│       └── test-uart
├── doc // Luban-Lite SDK 的介绍文档
│   ├── luban-lite_driver_development_guid.md  // 设备驱动开发指南
│   ├── luban-lite_sdk_design.md // SDK 设计说明
│   ├── luban-lite_user_guid_linux.md // Linux 环境的用户使用说明
│   └── luban-lite_user_guid_windows.md // Windows 环境的用户使用说明
├── win_env.bat // 启动 RT-Thread 的 env 工具,用于 Windows 环境的开发
├── win_cmd.bat // 启动 CMD.exe,用于 Windows 环境的开发
├── kernel // 存放各种 RTOS 内核
│   ├── baremetal
│   ├── common
│   ├── freertos
│   └── rt-thread
├── output // SDK 的编译输出
├── packages // 组件包
│   ├── artinchip // ArtInChip 开发的组件包
│   └── third-party // 第三方的组件包
├── target // 方案(板)级的代码和配置
│   ├── configs // 整个方案的 SDK 配置文件
│   ├── d12x    //D12x 开发板配置
│   │   ├── common
│   │   ├── demo68-nand
│   │   ├── demo68-nor
│   │   └── hmi-nor
│   ├── d13x    //D13x 开发板配置
│   │   ├── common
│   │   ├── demo88-nand
│   │   ├── demo88-nor
│   │   └── kunlunpi88-nor
│   ├── d12x    //D21x 开发板配置
│   │   ├── common
│   │   └── demo128-nand
│   └── g73x    //G73x 开发板配置
│       ├── common
│       └── demo100-nor
├── toolchain // 解压后的工具链存放目录
└── tools // 一些工具
    ├── onestep.sh  // ArtInChip 开发的 OneStep 命令行增强工具
    └── toolchain // 工具链的压缩包

application

存放应用和各种示例:

├── baremetal           //baremetal 裸机
│   ├── bootloader      //系统的引导加载程序
│   └── helloworld      //系统示例
└── rt-thread
    └── helloworld      //系统示例

bsp

bsp 目录是 SoC 的核心,封装了该 SoC 的所有接口和驱动:

├── artinchip
│   ├── drv                 //驱动
│   ├── drv_nare            //裸机驱动
│   ├── hal                 //硬件抽象
│   ├── include
│   ├── SConscript
│   └── sys                 //最小系统
├── common
│   ├── crc32
│   ├── include
│   ├── partition
│   ├── private_param
│   ├── SConscript
│   └── utils
├── Kconfig
├── examples                //模块示例
│   ├── SConscript
│   ├── test-adc
│   ├── test-alarm
│   ├── test-audio
├── peripheral              //三方外设驱动封装
│   ├── Kconfig
│   ├── SConscript
│   ├── camera
│   ├── codec
│   ├── touch               //触控
│   └── wireless            //无线
└── SConscript

doc

遵从 RT-Thread 原始建议使用 Markdown 编写的 SDK 的简单设计和使用文档。

kernel

kernel 是 RTOS 系统的核心,该目录实现了 Luban-Lite 支持的三种运行方式的内核以及 AIC 公共接口:
  • baremetal

    裸机系统的接口封装

  • freertos

    FreeRTOS 内核的实现

  • rt-thread

    RT-Thread 内核的实现

  • common

    AIC 公共接口的封装

package

组件包,包括 ArtInChip 开发的组件和 三方组件,支持从 RT-Thread 在线下载:

├── artinchip           //ArtInChip 开发
│   ├── Kconfig
│   ├── aic-dm-apps
|   ├── lvgl-ui
|   ├── ota
│   ├── mpp
│   └── SConscript
├── Kconfig
├── SConscript
└── third-party         //三方组件
    ├── bonnie
    ├── cherryusb
    ├── cpu_usage
    ├── Kconfig
    ├── littlefs
    ├── lvgl
    ├── lwip
    ├── mklittlefs
    ├── ramdisk
    ├── SConscript
    └── uffs

target

存储方案(开发板)的配置信息:

  • configs

    存放某一个方案(开发板)的功能配置信息:

    d12x_demo128-nand_baremetal_bootloader_defconfig    //bootlaoder 的配置
    d12x_demo128-nand_rt-thread_helloworld_defconfig    //rt-thread 的配置

    config 文件的内容示例:

    cat d12x_demo88-nor_rt-thread_helloworld_defconfig
    CONFIG_SOC_THEAD_SMART=y
    # CONFIG_QEMU_RUN is not set
    CONFIG_PRJ_CUSTOM_LDS=""
    CONFIG_AIC_CHIP_D21X=y
    CONFIG_CACHE_LINE_SIZE=64
    CONFIG_AIC_CMU_DRV=y
    CONFIG_AIC_CMU_DRV_V10=y
    CONFIG_AIC_CMU_DRV_VER="10"
  • d12x

    存放某一个方案(开发板)的参数配置信息,以代码的方式存在。

    ├── demo128-nand
    │   ├── board.c
    │   ├── include
    │   ├── Kconfig.board
    │   ├── pack
    │   ├── pinmux.c
    │   ├── SConscript
    │   └── sys_clk.c
    
    • Kconfig.board:提供方案的外设选择项

    • pinmux.c:该方案的 pinmux 配置

    • SConscript:该方案目录的编译配置

    • sys_clk.c:该方案的 clk 配置

    • include:该方案特殊的 include 文件,主要是 board.c 的接口

    • pack:该方案在打包固件时的配置,如 ddr,分区等配置信息

    • board.c:该方案的初始化运行接口

toolchain

原始为空目录,用于存放解压后的工具链。

tools

该目录用于存放一些常用工具

  • onestep.sh: Linux 上使用的 OneStep 脚本

  • env: 环境搭建和运行需要的三方工具

  • script: 编译和打包固件需要的脚本

  • toolchain: 工具链包

    • Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz: Linux 工具链

    • Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz: Windows 工具链

ReleaseNote.md

该文件记录当前 SDK 版本号及主要更新内容

# V1.0.5 #
## 新增 ##
- 调屏:支持和 AiPQ V1.1.1 工具配合使用
- 新增 LVGL Demo:
- 支持 VSCode 模拟器的工程导入
- 增加压力测试、独立控件、Gif、slide、lv_ffmpeg、DVP 回显等参考实现
...