LicheePi nano 学习笔记

本文最后更新于:2021年10月28日 晚上

LicheePi Nano


2021/9/5 U-BOOT调试成功

踩坑历程

首先时它的官方教程,有两个,第一个界面更新,但是bug相关的提示更少,第二个反之。官方教程是学习的主线,但是有些地方有问题,比如u-boot分支的选择。

关于u-boot分支的选择,官方给出的是git checkout nano-lcd800480,按照教程配置的屏幕细节,但我实际用480-272的屏幕测试时发现先是一个荔枝的图标的一部分,然后各种花屏,最后也没有企鹅图标和基本信息。最致命的是输入bdinfoprintenv指令提示不识别。后来参考:

发现他用的分支是nano-v2018.01,我按照另一个教程在u-boot控制台输入:

1
2
3
sf probe 0
sf erase 0 0x100000
reset

擦除了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界面没了而已呢

各种值得注意的问题

  1. 切换nano-v2018.01后,make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig指令会报错,你需要更换config文件,改成arm-linux-gnueabi- licheepi_nano_spiflash_defconfig

  2. nano-lcd800480版本的u-boot可以通过擦除spi-flash的命令来重新进入fel模式,但nano-v2018.01版本不行,必须短接flash芯片的CS与GND。其实很好操作,圆点的那个脚(1脚)就是CS,同一排引脚的另一端就是GND,教程说要一边上电一边短接,但我碰着碰撞它就直接重启然后就进fel了,hhh

  3. 运行控制台,看见有输出是不是特别兴奋?看到登录信息是不是又一脸懵逼?别慌,试试账号:root密码:licheepi

  4. 荔枝派通过usb烧录时出现ERROR: Allwinner USB FEL device not found!,这个烧录和测试fel模式功能都要先进fel模式,不是u-boot

  5. 解决Ubuntu下make error:fatal error: zlib.h: No such file or directory

    运行sudo apt-get install zlib1g-dev

  6. 报错:unable to execute ‘swig‘: No such file or directory

    这个也是很简单,运行sudo apt install swig

  7. linux内核编译 fatal error: curses.h: 没有那个文件或目录解决办法

    运行apt-get install libncurses5-dev

  8. 嵌入式系统u-boot编译出现问题

    1
    2
    3
    4
    5
    6
    HOSTCC 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 bisonsudo 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
2
3
4
5
6
7
8
9
10
11
Disk /dev/sdb:14.86 GiB,15931539456 字节,31116288 个扇区
Disk model: SD/MMC/MS PRO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5f57945f

设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 34815 32768 16M c W95 FAT32 (LBA)
/dev/sdb2 34816 409599 374784 183M 83 Linux

官方推荐参考 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编译

小贴士:

  1. 设备树里好像就是描述各种驱动的,例如lcd和flash,但只是名字、GPIO相关的描述,不过其提供了很多通用设备的驱动例如lcd的linux -> drivers -> gpu -> drm -> panel下有许多屏幕的配置,可挑选合适的进行配置。这应该是用Linux的好处之一

遇到的小问题:

  1. fatal error: openssl/bio.h: No such file or directory

    解决:sudo apt-get install libssl-dev

  2. make:arm-linux-gnueabihf-gcc:命令未找到

    这个和之前安装的交叉编译器不一样,运行apt install gcc-arm-linux-gnueabihf来安装。不过这样话说是不是之前的那个交叉编译器也能这么装?

  3. 在设备树文件发现了有关spi flash型号的定义,以后换了型号可以去这里面改吧,看了一下支持的型号,有:w25q128xt25f128b

  4. 编译设备树时,一定要回到Linux根目录下编译,不然会提示make: *** 没有规则可制作目标“dtbs”。 停止。

  5. 编译buildroots时,Game底下的app不要选太多了,有些容易编译不过

  6. 复制、解压完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 协议 ,转载请注明出处!