【全志v3s】LicheePi-zero BSP移植开发流程

本文介绍了基于全志v3s芯片的Lichee-zeroBSP在Ubuntu系统上的移植开发流程,包括系统安装、换源、安装依赖库、交叉编译工具链配置、uboot和Linux内核的编译以及Buildroot根文件系统的构建。此外,还详细讲述了如何对TF卡进行分区和烧录操作。

基于全志v3s的Lichee-zero BSP移植开发流程

ubuntu 系统安装

下载镜像

https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04/ubuntu-18.04.6-desktop-amd64.iso

使用物理机或者虚拟机安装都可以

换源

备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
修改 sources.list 文件
sudo gedit /etc/apt/sources.list
更改为清华镜像源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
更新并升级
sudo apt-get update && sudo apt-get upgrade
安装依赖库
sudo apt-get install -y device-tree-compiler python flex bison ncurses-dev libssl-dev

安装交叉编译工具链

安装编译器

新建 tool 文件夹并进入
mkdir ~/linux/tools && cd ~/linux/tools
下载交叉编译链<
<think>首先,用户的问题是基于引用的内容,但引用是关于Linux内核配置和DTS文件的,特别是sun8i-v3s-licheepi-zero.dts和sun8i-v3s.dtsi。用户问的是这两个文件之间的关系和区别。 从引用中: - 引用[1]提到修改sun8i-v3s-licheepi-zero.dts文件。 - 引用[2]显示了对sun8i-v3s-licheepi-zero.dts的修改。 - 引用[3]是关于Linux源码下载的。 - 引用[4]和[5]涉及添加SPI功能和LED驱动配置。 用户的核心问题是:比较两个DTS文件的关系和差异,具体是sun8i-v3s-licheepi-zero.dts和sun8i-v3s.dtsi。 在Linux内核中,DTS文件(Device Tree Source)用于描述硬件平台。通常: - .dtsi文件是“include”文件,包含共享的硬件描述,适用于一个系列或家族的SoC。 - .dts文件是具体的设备树源文件,针对特定板子或设备,它会include相关的.dtsi文件。 对于sun8i-v3s: - sun8i-v3s.dtsi可能包含V3s SoC的通用定义。 - sun8i-v3s-licheepi-zero.dts是针对Lichee Pi Zero板子的具体DTS文件,它可能include sun8i-v3s.dtsi。 从引用[2]中,我们看到修改了sun8i-v3s-licheepi-zero.dts文件,添加了ethernet配置。 关系: - sun8i-v3s.dtsi是包含SoC级别定义的文件,如CPU、内存、中断控制器等。 - sun8i-v3s-licheepi-zero.dts是板级文件,它include sun8i-v3s.dtsi,并添加或覆盖特定板子的配置,如外设、GPIO、LED等。 区别: - .dtsi文件是通用的,用于多个板子。 - .dts文件是具体的,针对一个板子。 在回答中,我需要: - 使用中文回答。 - 结构清晰,逐步解释。 - 确保LaTeX格式正确:行内用$...$,独立公式用$$...$$。 - 生成相关问题。 - 在引用段落末尾添加引用标识,如[^1]。 用户提供的引用是参考,我应该基于这些内容回答,但核心是解释DTS文件的关系。 从引用[2]中: - 修改了sun8i-v3s-licheepi-zero.dts,添加了ethernet配置。 - 这暗示了.dts文件是板级配置。 在引用[4]中,添加了spi配置到aliases和spi0节点。 在引用[5]中,添加了LED驱动配置。 所以,总结: - sun8i-v3s.dtsi:定义V3s SoC的通用硬件。 - sun8i-v3s-licheepi-zero.dts:include .dtsi,并添加Lichee Pi Zero特定的硬件,如SPI、LED、以太网等。 回答结构: 1. 解释DTS文件的基本概念。 2. 描述这两个文件的关系。 3. 列出主要区别。 4. 生成相关问题。 最后,添加引用标识。由于用户提供了引用,我应该引用相关部分。 例如: - 引用[2]显示了对.dts文件的修改[^2]。 - 引用[4]和[5]也涉及.dts文件的配置[^4][^5]。 在回答中自然地添加引用。</think>### DTS文件的关系与差异:sun8i-v3s-licheepi-zero.dts 和 sun8i-v3s.dtsi 在Linux内核开发中,设备树源文件(DTS)用于描述硬件平台的配置。`.dts`和`.dtsi`文件是设备树的核心组成部分,它们共同定义硬件资源(如CPU、内存、外设等)。以下基于您的需求,逐步分析`sun8i-v3s-licheepi-zero.dts`(针对Lichee Pi Zero板)和`sun8i-v3s.dtsi`(针对Allwinner V3s SoC系列)的关系与区别。 #### 1. **基本概念** - **`.dtsi`文件**:是“设备树包含文件”(Device Tree Include),包含**通用或共享的硬件定义**,适用于一个SoC(系统级芯片)家族的所有板子。例如,`sun8i-v3s.dtsi`定义了V3s SoC的通用组件,如CPU核心、中断控制器、时钟源等。这些配置是板子无关的。 - **`.dts`文件**:是“设备树源文件”(Device Tree Source),针对**具体板子**的硬件定制。它会通过`#include`语句引入`.dtsi`文件,并添加或覆盖板级特定配置(如外设、GPIO、LED等)。例如,`sun8i-v3s-licheepi-zero.dts`专为Lichee Pi Zero板设计,定义了该板的SPI Flash、以太网、LED等硬件[^2][^4][^5]。 数学上,这种关系可表示为: - 设 $S_{\text{dtsi}}$ 为SoC级通用配置集合。 - 设 $B_{\text{dts}}$ 为板级特定配置集合。 - 则完整的设备树配置为 $C_{\text{full}} = S_{\text{dtsi}} \cup B_{\text{dts}}$。 其中,$B_{\text{dts}}$ 可能覆盖 $S_{\text{dtsi}}$ 中的部分定义(如状态或参数)。 #### 2. **文件关系** - **依赖关系**:`sun8i-v3s-licheepi-zero.dts` **直接包含** `sun8i-v3s.dtsi`。在源代码中,`.dts`文件通常通过`#include`指令引入`.dtsi`文件,例如: ```c // 在 sun8i-v3s-licheepi-zero.dts 中 #include "sun8i-v3s.dtsi" ``` 这表示Lichee Pi Zero的配置**继承并扩展**了V3s SoC的通用定义。引用[2]中的修改(添加以太网配置)就是在`.dts`文件中完成的,因为它针对具体板子[^2]。 - **层次结构**: - `sun8i-v3s.dtsi`:提供SoC级基础,如CPU架构、内存映射。这些是固定的,除非SoC硬件变更。 - `sun8i-v3s-licheepi-zero.dts`:在SoC基础上,添加板级外设(如SPI、LED、以太网PHY),并可能调整状态(如`status = "okay"`启用设备)。引用[4]和[5]展示了在`.dts`中添加SPI和LED驱动的示例[^4][^5]。 #### 3. **主要区别** | **方面** | **sun8i-v3s.dtsi (SoC级)** | **sun8i-v3s-licheepi-zero.dts (板级)** | |------------------------|--------------------------------------------------|--------------------------------------------------| | **文件类型** | 通用包含文件(`.dtsi`) | 具体板子文件(`.dts`) | | **作用范围** | 定义V3s SoC家族通用硬件(如CPU、中断控制器) | 定义Lichee Pi Zero板特有硬件(如SPI Flash、LED) | | **配置内容** | - 核心硬件:CPU、内存区域、时钟<br>- 标准外设接口 | - 板级外设:以太网、SPI设备、GPIO LED<br>- 状态覆盖(如启用/禁用设备) | | **修改示例** | 较少修改,除非SoC升级 | 频繁修改以适应具体硬件,如引用[2]添加`ethernet0`[^2],引用[4]添加`spi0`[^4] | | **语法结构** | 通常不定义完整设备节点,只提供基础框架 | 包含完整节点定义(如`&spi0 { ... }`)并引用`.dtsi`中的节点 | | **使用场景** | 被多个板子共享(如其他基于V3s的开发板) | 仅针对Lichee Pi Zero板 | 关键区别点: - **覆盖机制**:如果`.dtsi`定义了某个设备(如`&uart0`),`.dts`可以通过添加属性(如`status = "okay"`)来启用或修改它。引用[2]中修改`&emac`节点就是典型例子[^2]。 - **硬件扩展**:`.dts`文件添加`.dtsi`中不存在的外设。例如,引用[5]在`.dts`中添加LED驱动节点(`gpio-leds`),因为这是板级特定硬件[^5]。 - **兼容性**:`.dtsi`确保SoC兼容性,而`.dts`确保板级硬件正确初始化。在编译内核时,`.dts`文件最终被编译为`.dtb`(二进制设备树),用于引导系统。 #### 4. **实际应用中的注意事项** -开发中,修改`.dtsi`会影响所有使用该SoC的板子,因此需谨慎;而修改`.dts`仅影响目标板(如Lichee Pi Zero)。引用[2]提到内核版本更新时,`.dts`修改可能需适配(如某些配置已提交到上游)[^2]。 - 当添加新硬件(如JFFS2文件系统支持)时,通常在`.dts`中定义设备节点,并在内核配置中启用驱动[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值