打印
[RISC-V MCU 应用开发]

[经验] RVBoards-哪吒(RISC-V SBC):系统镜像制作及烧录指导

[复制链接]
3983|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 flycamelaaa 于 2021-9-10 10:10 编辑

复制代码




以下将对主要目录中包含的内容进行简单介绍。
build 目录
build 目录存放 Tina Linux 的构建系统文件,此目录结构下主要是一系列基于 Makefile 规格编写的 .mk 文件,主要的功能有:
(1)检测当前的编译环境是否满足 Tina Linux 的构建需求;
(2)生成 host 包(PC端软件包)编译规则;
(3)生成工具链的编译规则;
(4)生成 target 包的编译规则;
(5)生成 linux kernel 的编译规则;
(6)生成系统固件的生成规则。





  • build/
  • ├── autotools.mk
  • ├── aw-upgrade.mk
  • ├── board.mk
  • ├── cmake.mk
  • ├── config.mk
  • ├── debug.mk
  • ├── depends.mk
  • ├── device.mk
  • ├── device_table.txt
  • ├── download.mk
  • ├── dumpvar.mk
  • ├── envsetup.sh
  •     .....


复制代码





config 目录
config 目录主要存放 Tina Linux 中配置菜单的界面以及一些固定的配置项,该配置菜单基于内核的 mconf 规格编写。




  • config/
  • ├── Config-build.in
  • ├── Config-devel.in
  • ├── Config-images.in
  • ├── Config-kernel.in
  • ├── Config-systeminit.in
  • └── top_config.in


复制代码





device 目标
devices 目录用于存放方案的配置文件,包括内核配置、env 配置、分区表配置、sys_config.fex(全志定制板级配置文件)、
board.dts(linux标准设备树文件) 等。
*这些配置在旧版本Tina(Tina3.0以前)上是保存于 target 目录下,现新版本均移到了 device 目录下,但defconfig仍保存在 target 目录下





  • device/
  • └── config
  •     ├── chips
  •     │     └── d1
  •     └── common
  •            ├── cert
  •            ├── debug
  •            ├── dtb
  •            ├── hdcp
  •            ├── imagecfg
  •            ├── partition
  •            ├── sign_config
  •            ├── toc
  •            ├── tools
  •            └── version


复制代码




其中,config/chips/d1 存放D1平台相关的配置,其目录结构如下:




  • d1
  • ├── bin
  • ├── boot-resource
  • │     └── boot-resource
  • │     └── bat
  • ├── configs
  • │     ├── default
  • │     ├── evb1
  • │     │     ├── linux -> linux-5.4
  • │     │     └── linux-5.4
  • │     └── FPGA
  • │            └── linux-5.4
  • └── tools


复制代码





  • bin 目录存放编译 boot 等bin文件,当Tina SDK构建或重新编译boot时,对应的文件会被替换。 快捷跳转命令: cbin。
  • boot-resource 目录存放开机动画等资源。
  • tools 目录存放方案构建时需要的工具
  • configs 目录存放该CHIP平台对应的 多个硬件方案配置文件。其中,default 为公共配置,evb1 对应硬件evb1板的方案配置,fpga 为 fpga板的方案配置,若存在更多个硬件方案,便会在该目录下新建对应的方案目录。 若公共配置目录default和方案配置目录中,存在相同的配置文件时,优先使用方案配置。
  • 快捷跳转命令:cconfigs(该命令会跳转到该目录下linux目录)。 以evb1方案为例,简述方案配置目录下,具体内容:


<div id="code_Ov2">

  • d1/configs/evb1/

复制代码



board.dts 板级dts配置文件,符合linux内核dts配置格式及合并规则。
env.cfg 环境变量配置文件,Uboot将此环境变量传递给内核。
linux/config-5.4 Linux5.4 内核配置文件,配置方案下默认linux内核功能。
sys_config.fex 打包阶段根据sys_config配置更新boot0, uboot, optee等bin文件的头部等信息,例如更新dram参数、uart参数等。
sys_partition.fex 分区配置文件。
lichee 目录
lichee 目录主要存放 bootloader、linux内核、DSP等代码,其中DSP代码及编译环境因涉及DSP供应商科声讯版权,需单独申请。lichee目录下结构如下:




  • <!--StartFragment-->Tina-SDK
  •     ├── brandy-2.0
  •     │   ├── build.sh
  •     │   ├── tools
  •     │   └── u-boot-2018
  •     └── linux-5.4<!--EndFragment-->

复制代码



package 目录
package 目录存放Tina系统支持的软件包源码和编译规则,目录按照目标软件包的功能进行分类,该目录包含了Tina系统全平台(包括全志R/H/F/V/T系列)的软件包,但是并不是所有软件包都适配了D1方案,部分软件包需要开发者自行适配。




  • package/
  • ├── add-rootfs-demo
  • ├── admin
  • ├── allwinner
  •     ...
  • ├── utils
  • └── wayland


复制代码




prebuild 目录
prebuild目录存放预编译交叉编译器,目录结构如下。 gcc/riscv 即为编译 D1 所用的工具链目录




  • prebuilt/
  • └── gcc
  •     └── linux-x86
  •         ├── host
  •         └── riscv
  •             └── toolchain-thead-glibc


复制代码



scripts 目录
scripts目录用于存放host端(PC端,下同)或target端(小机端,即目标机器,下同)使用的一些脚本。
一般指定解释器为#!/bin/bash的脚本是host#!/bin/sh的脚本是target端工具。




  • scripts/
  • ├── add_initramfs.sh
  • ├── ARM-magic.sh
  • ├── ...


复制代码





target 目录
target目录用于存放目标板相关的配置以及sdk和toolchain生成的规格。




  • target/
  •     ├── allwinner
  •     ├── Config.in
  •     ├── imagebuilder
  •     ├── Makefile
  •     ├── sdk
  •     └── toolchain


复制代码



快捷跳转命令:cdevice。
toolchain 目录
toolchain目录包含交叉工具链构建配置、规则。




  • toolchain/
  • ├── binutils
  • ├── fortIFy-headers
  • ├── gcc
  • ├── gdb
  • ├── glibc
  • ├── insight
  • ├── kernel-headers
  • ├── musl
  • └── wrapper


复制代码



tools 目录
tools 目录用于存放 host 端工具的编译规则。 out 目录 out目录用于保存编译相关的临时文件和最终镜像文件 ,编译后自动生成此目录,以编译d1-evb1方案为例说明。




  • out/
  • ├── d1-evb1
  • └── host


复制代码



其中,host目录用于存放host端的工具以及一些开发相关的文件。
d1-evb1 目录为方案对应的目录。方案目录下的结构如下:




  • out/d1-evb1/
  • ├── boot.img
  • ├── compile_dir
  • ├── d1-evb1-boot.img
  • ├── d1-evb1-Image
  • ├── d1-evb1-uImage
  • ├── image
  • ├── md5sums
  • ├── packages
  • ├── rootfs.img
  • ├── sha256sums
  • ├── staging_dir
  • ├── tina_d1-evb1_uart0.img
  • └── usr.img

复制代码



其中, - tina_d1-evb1_uart0.img为最终固件包(系统镜像),串口信息通过串口输出。若使用pack -d,则生成的固件包为xxx_card0.img,串口信息转递到tf卡座输出。 - boot.img为最终烧写到系统boot分区的数据,可能为boot.img格式也可能为uImage格式。 - rootfs.img为最终烧写到系统rootfs分区的数据,该分区默认为squashfs格式。 - d1-evb1-Image 为内核的 Image格式镜像,用于进一步生成uImage。 - d1-evb1-uImage为内核的uImage格式镜像,若配置为uImage格式,则会拷贝成boot.img。 - d1-evb1-boot.img为内核的boot.img格式镜像,若配置为boot.img格式,则会拷贝成boot.img - compile_dir为sdk编译host,target和toolchain的临时文件目录,存有各个软件包的源码。 - staging_dir为sdk编译过程中保存各个目录结果的目录。 - packages目录保存的是最终生成的ipk软件包。
快捷跳转命令:cout。

Tina_Linux_ARCH.png (0 Bytes )

Tina_Linux_ARCH.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

655

主题

2736

帖子

0

粉丝