LicheePi nano 学习笔记
本文最后更新于:2021年10月28日 晚上
LicheePi Nano
2021/9/5 U-BOOT调试成功
踩坑历程
首先时它的官方教程,有两个,第一个界面更新,但是bug相关的提示更少,第二个反之。官方教程是学习的主线,但是有些地方有问题,比如u-boot分支的选择。
关于u-boot分支的选择,官方给出的是git checkout nano-lcd800480
,按照教程配置的屏幕细节,但我实际用480-272的屏幕测试时发现先是一个荔枝的图标的一部分,然后各种花屏,最后也没有企鹅图标和基本信息。最致命的是输入bdinfo
和printenv
指令提示不识别。后来参考:
发现他用的分支是nano-v2018.01
,我按照另一个教程在u-boot控制台输入:
1 |
|
擦除了spi flash,重新烧录了分支nano-v2018.01
出现了和傻瓜包一样的界面,说明应该是成功了,此时我的TF卡已经烧录了linux系统,插上去试了试,可以进系统,成功了。因为后期我们还要倒腾,所以u-boot和linux我们都要从傻瓜包过渡到自己编译烧录的程序。
期间有个有意思的现象,官方教程选择的分支
nano-lcd800480
里面关于LCD的很多配置已经写好了,但是官方教程有很多关于配置LCD的细节。网友选择的nano-v2018.01
分支则需要按照教程手动配置,所以估计原来官方用的就是nano-v2018.01
,只是后来不知道为什么改成了nano-lcd800480
而且没有仔细测试。
虽然但是,我并没有测试nano-lcd800480
能不能正常boot,没准人家只是boot界面没了而已呢
各种值得注意的问题
-
切换
nano-v2018.01
后,make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig
指令会报错,你需要更换config文件,改成arm-linux-gnueabi- licheepi_nano_spiflash_defconfig
-
nano-lcd800480
版本的u-boot可以通过擦除spi-flash的命令来重新进入fel模式,但nano-v2018.01
版本不行,必须短接flash芯片的CS与GND。其实很好操作,圆点的那个脚(1脚)就是CS,同一排引脚的另一端就是GND,教程说要一边上电一边短接,但我碰着碰撞它就直接重启然后就进fel了,hhh -
运行控制台,看见有输出是不是特别兴奋?看到登录信息是不是又一脸懵逼?别慌,试试
账号:root密码:licheepi
-
荔枝派通过usb烧录时出现ERROR: Allwinner USB FEL device not found!
,这个烧录和测试fel模式功能都要先进fel模式,不是u-boot -
解决Ubuntu下make error:fatal error: zlib.h: No such file or directory
运行
sudo apt-get install zlib1g-dev
-
报错:unable to execute ‘swig‘: No such file or directory
这个也是很简单,运行
sudo apt install swig
-
linux内核编译 fatal error: curses.h: 没有那个文件或目录解决办法
运行
apt-get install libncurses5-dev
-
嵌入式系统u-boot编译出现问题
1
2
3
4
5
6HOSTCC scripts/basic/fixdep
/bin/sh: 1: cc: not found
scripts/Makefile.host:94: recipe for target ‘scripts/basic/fixdep’ failed
make[1]: *** [scripts/basic/fixdep] Error 127
Makefile:397: recipe for target ‘scripts_basic’ failed
make: *** [scripts_basic] Error 2解决方法还是装库:
sudo apt-get install bison
和sudo apt-get install flex
2021/9/27 21:44 Linux系统编译、运行成功
SD卡操作
官方引导:
1
2
3
4
5
6
7
8
udo fdisk -l # 首先查看电脑上已插入的TF卡的设备号
sudo umount /dev/sdXx # 若自动挂载了TF设备,请先卸载
sudo fdisk /dev/sdX # 进行分区操作
# 若已存分区即按 d 删除各个分区
# 通过 n 新建分区,第一分区暂且申请为32M(足够大了...),剩下的空间都给第二分区
# w 保存写入并退出
sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT
sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4
由于我的卡之前刷了傻瓜包,看样子是要进行一定操作了
附我的卡的信息:
1 |
|
官方推荐参考 https://github.com/Zepan/ilichee/tree/master/资源文件/镜像烧写 的内容,里面有具体操作
我使用后发现,这个fdisk
明令有较多提示,大家可以放心食用
为了方便,这里贴上删除分区和创建分区的示例操作(来自官方github)
删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
sudo fdisk /dev/sdb<<EOF
d
1
d
2
d
3
d
4
w
p
q
EOF创建
1
2
3
4
5
6
7
8
9
10
11
12
sudo fdisk /dev/sdb <<EOF
n
p
1
+16M
n
p
2
p
w
q
EOF
关于文件系统,可以使用df -T /dev/sdbx
来看自己到底有没有格式化成功。有时候fdisk
提示设备忙,可以试着重新插卡看看。
主线Linux编译
小贴士:
- 设备树里好像就是描述各种驱动的,例如lcd和flash,但只是名字、GPIO相关的描述,不过其提供了很多通用设备的驱动例如lcd的
linux -> drivers -> gpu -> drm -> panel下有许多屏幕的配置,可挑选合适的进行配置
。这应该是用Linux的好处之一
遇到的小问题:
-
fatal error: openssl/bio.h: No such file or directory
解决:
sudo apt-get install libssl-dev
-
make:arm-linux-gnueabihf-gcc:命令未找到
这个和之前安装的交叉编译器不一样,运行
apt install gcc-arm-linux-gnueabihf
来安装。不过这样话说是不是之前的那个交叉编译器也能这么装? -
在设备树文件发现了有关spi flash型号的定义,以后换了型号可以去这里面改吧,看了一下支持的型号,有:
w25q128
、xt25f128b
-
编译设备树时,一定要回到Linux根目录下编译,不然会提示
make: *** 没有规则可制作目标“dtbs”。 停止。
-
编译
buildroots
时,Game底下的app不要选太多了,有些容易编译不过 -
复制、解压完
rootfs.tar
后,检查/etc
底下的inttab
文件:把:
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
替换成
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!