本帖最后由 IC爬虫 于 2017-6-24 20:12 编辑
本文主要介绍Uboot的结构,menuconfig里的常见配置选项,编译步骤等
编译环境:
系统: Ubuntu 16.04
开发板: Lichee Pi Zero (Allwinner V3s)
Uboot 编译
apt-get install build-essential libncurses5-dev u-boot-tools debootstrap git binfmt-support libusb-1.0-0-dev pkg-config device-tree-compiler
apt-get install gcc-arm-linux-gnueabihf
git clone -b v3s-spi-experimental https://github.com/Lichee-Pi/u-boot.git
1.Uboot的基本结构
下面来看看该uboot中的目录结构
86499
了解了uboot的基本结构,我们可以知道一些相关的配置在什么地方了。
- lichee的uboot配置文件放在confgs文件目录下面,名称为
LicheePi_Zero_480x272LCD_defconfig
LicheePi_Zero_800x480LCD_defconfig
LicheePi_Zero_defconfig
这3个配置是根据不同的Zero显示设备进行的配置,使用其中之一即可,可以在uboot目录下执行命令
make LicheePi_Zero_defconfig
这样配置就生效了。
- 关于设备的配置引脚信息可以在arch/arm/dts的设备树下面进行查找。
通过查看arch/arm/dts/Makefile我们看到下面这段关于v3s的代码:
dtb-$(CONFIG_MACH_SUN8I_V3S) += \ sun8i-v3s-licheepi-zero.dtb
我们基本可以找到对应的dtb文件就是sun8i-v3s-licheepi-zero.dtb
打开sun8i-v3s-licheepi-zero.dts(dtb是object文件,相当于*.o, dts相当于*.c)文件:
#include "sun8i-v3s.dtsi" //这个文件包含了sun8i-v3s系列的配置
#include "sunxi-common-regulators.dtsi"
/ {
model = "Lichee Pi Zero";
compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&mmc0 {
pinctrl-0 = <&mmc0_pins_a>;
pinctrl-names = "default";
broken-cd;
bus-width = <4>;
vmmc-supply = <®_vcc3v3>;
status = "okay";
};
&uart0 {
pinctrl-0 = <&uart0_pins_a>;
pinctrl-names = "default";
status = "okay";
};
&usb_otg {
dr_mode = "otg";
status = "okay";
};
&usbphy {
usb0_id_det-gpio = <&pio 5 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
从这个配置文件中可以看出,我们所用的stdout输出是用的uart0
波特率115200,mmc的配置, uart0的引脚采用的是uart0_pins_a 等。
如若需要修改对应的输出,可以在这个文件中修改。
2. menuconfig里的常见配置选项
编译uboot的需要生成.config文件来将该配置生效。
配置的生效有两步:
第一步,先将Zero默认的配置加载进来:
Zero已经将配置定制好了,执行相应的命令就可以生成了。下面是生成配置的命令
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
这个命令可以分为3个部分
- 设置变量ARCH值为arm
- 设置变量CROSS_COMPILE值为arm-linux-gnueabihf-
- make LicheePi_Zero_800x480LCD_defconfig
最后一个make LicheePi_Zero_800x480LCD_defconfig才是重点,执行这条命令就可以对应生成一个编译所需要的配置文件.config
第二步,对于配置文件可以通过是图形界面的方式修改某一个特定配置选项
有了配置文件,需要的时候我们可以对其进行修改,linux提供了一种图形界面的方式,这种方式一般在后期需要改某些编译选项的时候,用户交互比较方便,现在我们可以来看看有哪些配置。
make ARCH=arm menuconfig
执行这个命令就可以出现一个UI交互比较好的配置文件选项,可以看下面的截图:
本帖最后由 IC爬虫 于 2017-6-24 20:12 编辑
本文主要介绍Uboot的结构,menuconfig里的常见配置选项,编译步骤等
编译环境:
系统: Ubuntu 16.04
开发板: Lichee Pi Zero (Allwinner V3s)
Uboot 编译
apt-get install build-essential libncurses5-dev u-boot-tools debootstrap git binfmt-support libusb-1.0-0-dev pkg-config device-tree-compiler
apt-get install gcc-arm-linux-gnueabihf
git clone -b v3s-spi-experimental https://github.com/Lichee-Pi/u-boot.git
1.Uboot的基本结构
下面来看看该uboot中的目录结构
86499
了解了uboot的基本结构,我们可以知道一些相关的配置在什么地方了。
- lichee的uboot配置文件放在confgs文件目录下面,名称为
LicheePi_Zero_480x272LCD_defconfig
LicheePi_Zero_800x480LCD_defconfig
LicheePi_Zero_defconfig
这3个配置是根据不同的Zero显示设备进行的配置,使用其中之一即可,可以在uboot目录下执行命令
make LicheePi_Zero_defconfig
这样配置就生效了。
- 关于设备的配置引脚信息可以在arch/arm/dts的设备树下面进行查找。
通过查看arch/arm/dts/Makefile我们看到下面这段关于v3s的代码:
dtb-$(CONFIG_MACH_SUN8I_V3S) += \ sun8i-v3s-licheepi-zero.dtb
我们基本可以找到对应的dtb文件就是sun8i-v3s-licheepi-zero.dtb
打开sun8i-v3s-licheepi-zero.dts(dtb是object文件,相当于*.o, dts相当于*.c)文件:
#include "sun8i-v3s.dtsi" //这个文件包含了sun8i-v3s系列的配置
#include "sunxi-common-regulators.dtsi"
/ {
model = "Lichee Pi Zero";
compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
&mmc0 {
pinctrl-0 = <&mmc0_pins_a>;
pinctrl-names = "default";
broken-cd;
bus-width = <4>;
vmmc-supply = <®_vcc3v3>;
status = "okay";
};
&uart0 {
pinctrl-0 = <&uart0_pins_a>;
pinctrl-names = "default";
status = "okay";
};
&usb_otg {
dr_mode = "otg";
status = "okay";
};
&usbphy {
usb0_id_det-gpio = <&pio 5 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
从这个配置文件中可以看出,我们所用的stdout输出是用的uart0
波特率115200,mmc的配置, uart0的引脚采用的是uart0_pins_a 等。
如若需要修改对应的输出,可以在这个文件中修改。
2. menuconfig里的常见配置选项
编译uboot的需要生成.config文件来将该配置生效。
配置的生效有两步:
第一步,先将Zero默认的配置加载进来:
Zero已经将配置定制好了,执行相应的命令就可以生成了。下面是生成配置的命令
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig
这个命令可以分为3个部分
- 设置变量ARCH值为arm
- 设置变量CROSS_COMPILE值为arm-linux-gnueabihf-
- make LicheePi_Zero_800x480LCD_defconfig
最后一个make LicheePi_Zero_800x480LCD_defconfig才是重点,执行这条命令就可以对应生成一个编译所需要的配置文件.config
第二步,对于配置文件可以通过是图形界面的方式修改某一个特定配置选项
有了配置文件,需要的时候我们可以对其进行修改,linux提供了一种图形界面的方式,这种方式一般在后期需要改某些编译选项的时候,用户交互比较方便,现在我们可以来看看有哪些配置。
make ARCH=arm menuconfig
执行这个命令就可以出现一个UI交互比较好的配置文件选项,可以看下面的截图: