荔枝派Zero(全志V3S)编译Uboot及配置

文章目录

  • 前言
  • 一、安装交叉编译器
  • 二、编译Uboot
  • 三、Uboot结构简介
  • 四、Uboot配置
    • 1、Uboot配置命令
    • 2、DDR配置
    • 3、LCD配置
    • 4、时钟频率配置
    • 5、开机延时设置
    • 6、SPL配置


前言

本文讲述了如何编译uboot并进行配置,对编译过程中遇到的问题进行解决,此外还对uboot的结构进行了简介

一、安装交叉编译器

网盘地址:
链接:https://pan.baidu.com/s/1ndgzG_aAMCbDgqYwh1yxfw
提取码:4gpo

国外用户:https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/

依次执行下面指令

1、wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
2、tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
3、mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/
4、vim ~/.bashrc
# add: export PATH=$PATH:/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin
5、source ~/.bashrc
6、arm-linux-gnueabihf-gcc -v
7、sudo apt-get install device-tree-compiler

在这里插入图片描述

二、编译Uboot

1、依次执行下面指令

1、git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current
#or git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
2、cd u-boot
3、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
#or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig
#or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig
4、make ARCH=arm menuconfig
5、time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log

上述4、5步骤报错可参考 4、问题描述及解决办法

2、修改 include/configs/sun8i.h, 使u-boot可以直接从tf卡启动:

#define CONFIG_BOOTCOMMAND   "setenv bootm_boot_mode sec; " \
                            "load mmc 0:1 0x41000000 zImage; "  \
                            "load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; " \
                            "bootz 0x41000000 - 0x41800000;"

#define CONFIG_BOOTARGS      "console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw  vt.global_cursor_default=0"

荔枝派Zero(全志V3S)编译Uboot及配置_第1张图片
3、编译完成后,在当前目录下生成了u-boot-sunxi-with-spl.bin,可以烧录到8K偏移处启动。
荔枝派Zero(全志V3S)编译Uboot及配置_第2张图片

4、问题描述及解决办法:
问题①:
make ARCH=arm menuconfig 提示报错
荔枝派Zero(全志V3S)编译Uboot及配置_第3张图片
解决方法:
安装libncurses5-dev, 运行:

sudo apt-get install libncurses5-dev

再次执行 make ARCH=arm menuconfig,出现下图配置界面
荔枝派Zero(全志V3S)编译Uboot及配置_第4张图片
问题②:
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log 编译Uboot报错
荔枝派Zero(全志V3S)编译Uboot及配置_第5张图片
查看这个目录下,发现工具文件存在
在这里插入图片描述
解决方法:
1)、首先尝试以绝对路径编译

./tools/binman/binman u-boot-sunxi-with-spl.bin

2)、结果如下,应该是没有python解析器在这里插入图片描述
3)、安装python解析器

sudo apt-get install python

4)、在Linux中安装python时,调用“sudo apt-get install python”命令出现以下问题:
荔枝派Zero(全志V3S)编译Uboot及配置_第6张图片
5)、解决方法,改用下面的命令安装(我的ubuntn版本是22.04)

sudo apt-get install software-properties-common

安装完后想要利用“pip”查看安装列表,需要先安装pip

sudo apt-get install python-pip

有了pip之后,如果直接输入“pip list”会显示错误,还需要继续更新到pip3
输入命令

sudo apt install python3-pip

之后就可以直接利用“pip list”查看安装的包了
荔枝派Zero(全志V3S)编译Uboot及配置_第7张图片
查看当前有哪些python版本
荔枝派Zero(全志V3S)编译Uboot及配置_第8张图片
将 /usr/bin/python2.7 创建软连接为 /usr/bin/python
这点很重要

sudo ln -s /usr/bin/python2.7 /usr/bin/python

再次验证,运行time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log
编译通过
荔枝派Zero(全志V3S)编译Uboot及配置_第9张图片

三、Uboot结构简介

下面来看看该uboot中的目录结构

├── api                存放uboot提供的API接口函数
├── arch               平台相关的部分我们只需要关心这个目录下的ARM文件夹
│   ├──arm
│   │   └──cpu
│   │   │   └──armv7
│   │   └──dts   
│   │   │   └──*.dts   存放设备的dts,也就是设备配置相关的引脚信息
├── board              对于不同的平台的开发板对应的代码
├── cmd                顾名思义,大部分的命令的实现都在这个文件夹下面。
├── common             公共的代码
├── configs            各个板子的对应的配置文件都在里面,我们的Lichee配置也在里面
├── disk               对磁盘的一些操作都在这个文件夹里面,例如分区等。
├── doc                参考文档,这里面有很多跟平台等相关的使用文档。
├── drivers            各式各样的驱动文件都在这里面
├── dts                一种树形结构(device tree)这个应该是uboot新的语法
├── examples           官方给出的一些样例程序
├── fs                 文件系统,uboot会用到的一些文件系统
├── include            头文件,所有的头文件都在这个文件夹下面
├── lib                一些常用的库文件在这个文件夹下面  
├── Licenses           这个其实跟编译无关了,就是一些license的声明
├── net                网络相关的,需要用的小型网络协议栈
├── post               上电自检程序
├── scripts            编译脚本和Makefile文件
├── spl                second program loader,即相当于二级uboot启动。
├── test               小型的单元测试程序。
└── tools              里面有很多uboot常用的工具。

了解了uboot的基本结构,我们可以知道一些相关的配置在什么地方了。

  • lichee的uboot配置文件放在confgs文件目录下面,名称为
    • LicheePi_Zero_480x272LCD_defconfig
    • LicheePi_Zero_800x480LCD_defconfig
    • LicheePi_Zero_defconfig

这3个配置是根据不同的Zero显示设备进行的配置,使用其中之一即可,可在uboot目录下执行命令

make LicheePi_Zero_800x480LCD_defconfig

这样配置就生效了。

四、Uboot配置

1、Uboot配置命令

make ARCH=arm menuconfig

荔枝派Zero(全志V3S)编译Uboot及配置_第10张图片
—按回车,即选择当前菜单
------- 按Y 代表该config选项选中
------- 按N 代表不选中该选项
-------- 按M
代表该驱动编译成.ko的方式,在系统起来之后,当驱动需要的时候加载
---------按/ 可以查找某个选项
---------退出
< > ----------按Y选中后的状态

这里面有几个常见的配置选项我们可以看下:

  • 第一个Architecture select架构选择,不用质疑这个是ARM架构
  • 第二个ARM architecture
    这个选项比较重要,主要配置ARM框架下的常用的配置函数以及LCD等参数
    荔枝派Zero(全志V3S)编译Uboot及配置_第11张图片

2、DDR配置

···
Target select (Support sunxi (Allwinner) SoCs)   #进去之后可以选择sunxi Soc系列芯片
···
[*] Sunxi SoC Variant    # 这个就是对芯片Soc 的选择,我们可以看到配置选择了`sun8i (Allwinner V3s)
(360) sunxi dram clock speed     # 配置dram的时钟速率
(14779) sunxi dram zq value     #  配置dram的ZQ值,是用来动态加强DDR3的
-*- Board uses DDR2 DRAM     #   使用DDR2 DRAM

荔枝派Zero(全志V3S)编译Uboot及配置_第12张图片

3、LCD配置

荔枝派Zero(全志V3S)编译Uboot及配置_第13张图片

[*] Enable graphical uboot console on HDMI, LCD or VGA   这个就是在显示设备上使能串口控制                                    
[ ] VGA via LCD controller support   使能支持VGA通过LCD的控制器,就是LCD和VAG转换需要的控制器       
(x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0) LCD pane
> 该选项就是配置LCD的分辨率的配置选项可以看到x是800 y是480 等等一些关于LCD的配置内容,点击回车进去可以对其进行修改。                          
(1)   LCD panel display clock phase   这个是LCD的显示时钟相位
()    LCD panel power enable pin      LCD的电源使能引脚
()    LCD panel reset pin             LCD的复位引脚          
(PB4) LCD panel backlight pwm pin     背光PWN引脚 这个应该是调节亮度的引脚PB4
[*]   LCD panel backlight pwm is inverted            反转PWN背光引脚
[ ]   LCD panel needs to be configured via i2c                        
    LCD panel support (Generic parallel interface LCD panel)  --->     这个选择支持的LCDpanel
            (X) Generic parallel interface LCD panel    这里选择支持通用的并行的LCD接口
            ( ) Generic lvds interface LCD panel        这个是LVDS接口
            ( ) MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip 
            ( ) eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip    
            ( ) Hitachi tx18d42vm LCD panel                            
            ( ) tl059wv5c0 LCD panel         
(0) GMAC Transmit Clock Delay Chain        

4、时钟频率配置

这里设置了CPU的时钟频率
Boot images —>(1008000000) CPU clock frequency
荔枝派Zero(全志V3S)编译Uboot及配置_第14张图片

5、开机延时设置

这个是uboot开机的时候的一个等待时间的秒数,可以改大一点,默认是2s
delay in seconds before automatically booting
荔枝派Zero(全志V3S)编译Uboot及配置_第15张图片

6、SPL配置

SPL / TPL ---> 这个就是SPL相关的配置了
[*]   MMC raw mode: by sector                       按扇区      
(0x50)  Address on the MMC to load U-Boot from  mmc加载uboot的地址
[*] Support GPIO                                 支持GPIO
[*] Support I2C                                 支持I2C
[*] Support common libraries                    支持通用lib
[*] Support disk paritions                      支持分区
[*] Support generic libraries                   支持一般lib库
[*] Support MMC                                 支持MMC
[*] Support power drivers                  支持电源驱动
[*] Support serial                               支持串口

荔枝派Zero(全志V3S)编译Uboot及配置_第16张图片

我的qq:2442391036,欢迎交流!

你可能感兴趣的:(荔枝派,linux,arm开发,嵌入式硬件,荔枝派)