配置licheepi环境
- ubuntu 22.04
- licheepi zero
- licheepi 5寸 800*480 LCD
一、u-boot
下载之前准备,需要提前安装交叉编译链1
2
3
4
5
6
7
8wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/
vim /etc/bash.bashrc
# add: PATH="$PATH:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin"
source /etc/bash.bashrc
arm-linux-gnueabihf-gcc -v
sudo apt-get install device-tree-compiler
Downoad u-boot
1 | git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current |
可能出现的问题
- error 1解决办法
1
2
3
4HOSTCC scripts/basic/fixdep
/bin/sh: 1: cc: not found
make[1]: *** [scripts/Makefile.host:99:scripts/basic/fixdep] 错误 127
make: *** [Makefile:398:scripts_basic] 错误 21
sudo apt-get install gcc
- error 2解决办法
1
2
3
4
5HOSTCC scripts/kconfig/mconf.o
<command-line>: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
make[1]: *** [scripts/Makefile.host:116:scripts/kconfig/mconf.o] 错误 1
make: *** [Makefile:478:menuconfig] 错误 21
2sudo apt-get install libncurses5-dev
修改可以从tf卡启动
如果不修改这个,后面添加的内核和文件系统都不能启动,但是uboot可以启动(这个真是血的教训)
修改 include/configs/sun8i.h, 使u-boot可以直接从tf卡启动:
vim include/configs/sun8i.h
1 |
|
二、linux kernel
1 | # 默认是zero-4.10.y分支: |
1 | cd linux |
可能出现的问题
- error 我的gcc版本是
1
2
3
4/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [scripts/Makefile.host:116:scripts/dtc/dtc] 错误 1gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04.1)
,修改scripts/dtc目录下的dtc-lexer.lex.c_shipped文件,找到
YYLTYPE yyloc这一行,在640行,在之前面加上extern
保存退出
三、buildroot
提前准备需要的工具1
2
3
4
5
6apt-get install linux-headers-$(uname -r)
wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
cd buildroot-2017.08/
make menuconfig
查询编译工具链所在位置:
1
which arm-linux-gnueabihf-gcc
读取编译工具链里的内核版本:
1
cat /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h
返回:
1
2
3
4cat /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h
#define LINUX_VERSION_CODE 263680
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))263680的二进制为0x40600,则对应的内核版本号为4.6.0。
配置buildroot
编译
1
make
可能出现的问题1
1
2You may have to install 'g++' on your build machine
You must install 'python' on your build machine安装
g++
安装pyhton2
创建软连接
sudo ln -s /usr/bin/python2.7 /usr/bin/python
可能出现的问题2
1
Cannot execute cross-compiler '/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gcc'
下载报错
有时候下载速度慢,可以复制下载链接,使用迅雷等下载好后,拷贝到dl目录下,会自动识别。
四、准备烧录
- Gparted
使用ubuntu softwave 下载 Gparted
拷贝文件
mkdir images
cp u-boot/u-boot-sunxi-with-spl.bin ./images
cp linux-zero-4.10.y/arch/arm/boot/zImage ./images
sudo cp ../linux-zero-4.10.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb /media/kg/BOOT
cp buildroot-2023.05/output/images/rootfs.tar ./images
这样就准备好文件了
- 烧录文件
1
2
3
4
5
6
7sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
sudo cp sun8i-v3s-licheepi-zero-dock.dtb /media/kg/BOOT/
sudo cp zImage /media/kg/BOOT/
sudo tar -xvf rootfs.tar -C /media/kg/rootf/
ps: 如果没有一个折腾的心,还是不要玩这个