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

这篇具有很好参考价值的文章主要介绍了荔枝派Zero(全志V3S)编译Uboot及配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文讲述了如何编译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

荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

二、编译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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
3、编译完成后,在当前目录下生成了u-boot-sunxi-with-spl.bin,可以烧录到8K偏移处启动。
荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

4、问题描述及解决办法:
问题①:
make ARCH=arm menuconfig 提示报错
荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
解决方法:
安装libncurses5-dev, 运行:

sudo apt-get install libncurses5-dev

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

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

2)、结果如下,应该是没有python解析器荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
3)、安装python解析器

sudo apt-get install python

4)、在Linux中安装python时,调用“sudo apt-get install python”命令出现以下问题:
荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
查看当前有哪些python版本
荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
将 /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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

三、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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派
—按回车,即选择当前菜单
------- 按Y 代表该config选项选中
------- 按N 代表不选中该选项
-------- 按M
代表该驱动编译成.ko的方式,在系统起来之后,当驱动需要的时候加载
</>---------按/ 可以查找某个选项
---------退出
< > ----------按Y选中后的状态

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

  • 第一个Architecture select架构选择,不用质疑这个是ARM架构
  • 第二个ARM architecture
    这个选项比较重要,主要配置ARM框架下的常用的配置函数以及LCD等参数
    荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

3、LCD配置

荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

[*] 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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

5、开机延时设置

这个是uboot开机的时候的一个等待时间的秒数,可以改大一点,默认是2s
delay in seconds before automatically booting
荔枝派Zero(全志V3S)编译Uboot及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

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及配置,荔枝派,linux,arm开发,嵌入式硬件,荔枝派

我的qq:2442391036,欢迎交流!文章来源地址https://www.toymoban.com/news/detail-726765.html

到了这里,关于荔枝派Zero(全志V3S)编译Uboot及配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 荔枝派Zero(全志V3S) tftp下载 kernel 和 nfs 挂载文件系统

    传输文件每次都插拔 SD 卡太麻烦了,还是使用网线传输文件比较快,借此机会讲述一下 通过 tftp下载 kernel 和 nfs 挂载文件系统 我使用的 uboot 是 2017.01 版本的,U-Boot 2017 已经支持了 sun8i-emac 的驱动,只需要在编译时选上并且修改 dts 就行。 ①、进入u-boot源码目录,执行 ②、

    2024年02月08日
    浏览(41)
  • 荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示bmp图片

    了解 framebuffer 字符设备 了解 bmp图片格式 通过操作 /dev/fb0 字符设备来实现在 RGB LCD 屏幕上显示 bmp 图片。 显示设备例如 LCD,在 Linux 中用 Framebuffer 来表征, Framebuffer 翻译过来就是帧缓冲,简称 fb,在 /dev 目录下显示设备一般表示成这样: /dev/fbn ,应用程序通过访问这个设备

    2024年02月11日
    浏览(41)
  • 全志V3S嵌入式驱动开发(准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         要学好嵌入式,其实最好自己可以画板子、调试板子、写软件、调试软件这样来学习。简单的51单片机、stm32这样的mcu或许画起来不是很复杂,但是如果是运行linux系统的soc芯片,那么

    2024年02月12日
    浏览(45)
  • 全志V3S嵌入式驱动开发(wifi驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         荔枝派上面除了支持v3s自带的有线网口,还带有一个支持sd协议的esp 8089 wifi模块。有了这个模块,v3s没有网线,也可以用它和外界联系了。但是,我们实际测试下来,效果并不算很理

    2024年02月10日
    浏览(50)
  • 全志V3S嵌入式驱动开发(看原理图)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于嵌入式软件开发的同学来说,你可能不一定要会自己画原理图、做pcb板。但是,别人已经设计好的原理图,自己还是要看得懂、读的明白的。此外,原理图无非就是各种符号放在

    2024年02月06日
    浏览(51)
  • 【全志V3s】SPI NAND Flash 驱动开发

    芯片:W25N01GVZEIG datasheet上的描述: SLC工艺 2KB*65536页 10万次擦写次数 焊好以后用CH341A读了一下 上面这张图描述了soc启动的四个顺序,分别是usb启动、sd卡启动、spi norflash启动、spi nandflash启动四种方式。前面的测试中一直走的是sd卡启动,但是从成本和稳定性上说,spi nandfla

    2024年02月07日
    浏览(48)
  • 全志V3S嵌入式驱动开发(驱动开发准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。 毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。

    2024年02月13日
    浏览(65)
  • 全志V3S嵌入式驱动开发(u盘写读)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。 简单解释下,host模式,就是v3s把自己当成了主机,其他设备都是从设备;device模式,相当于别人

    2024年02月09日
    浏览(61)
  • 全志V3S嵌入式驱动开发(多按键输入驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们说过,荔枝派的开发板上面,有4个按键本身不是通过gpio连接到soc上面的。它是通过ad的方法,连接到主芯片的。这个时候,不同的按键被按下的时候,就会生成不同的电压或

    2024年02月07日
    浏览(53)
  • 全志V3S嵌入式驱动开发(u盘写读)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。 简单解释下,host模式,就是v3s把自己当成了主机,其他设备都是从设备;device模式,相当于别人

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包