问题较多,一个一个说。
主要参照了nano.lichee.pro, zero.lichee.pro和晕哥的帖子。 按照步骤编译了uboot、内核和rootfs。
问题1、编译uboot。
使用了配置
git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01
cd u-boot
#拷贝默认配置文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig
并配置了LCD之后
编译后 uboot只有320K,而看V4里面的tf-uboot有1M,拷贝到uboot/480272目录,改名后 执行
./clear_partion.sh /dev/sdb
./pack_tf_img.sh /dev/sdb
./write_dd.sh /dev/sdb
实测无法进入到TF卡的uboot,一直报SPL: Unsupported Boot Device! 估计原因是使用了spiflash的defconfig,
但实在不清楚tf卡的配置和spi的配置哪里应该有区别,启动参数应该是boot.scr决定的呀。
问题2:编译内核,
#克隆linux
git clone https://github.com/Lichee-Pi/linux.git --depth=1 -b nano-4.14-exp
cd linux
#下载配置文件
wget https://whycan.cn/files/members/3/lichee_nano_linux_config.zip
mv lichee_nano_linux_config.zip .config
#再配置
CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm make menuconfig
#编译
CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm make
由于自己编译的uboot无法启动。使用V4版本的uboot,并拷贝并改名了内核文件到p1文件夹,重复
./clear_partion.sh /dev/sdb
./pack_tf_img.sh /dev/sdb
./write_dd.sh /dev/sdb
上电后,可以进uboot,但是启动内核时卡在 Starting kernel ...
下面是启动log
U-Boot 2018.01-05676-g00188782ee (Apr 08 2018 - 16:10:25 +0800) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM: 32 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment
Setting up a 480x272 lcd console (overscan 0x0)
In: serial@1c25000
Out: serial@1c25000
Err: serial@1c25000
Net: No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
reading /boot.scr
280 bytes read in 16 ms (16.6 KiB/s)
## Executing script at 80c50000
reading suniv-f1c100s-licheepi-nano.dtb
8553 bytes read in 27 ms (308.6 KiB/s)
reading zImage
3801104 bytes read in 270 ms (13.4 MiB/s)
## Flattened Device Tree blob at 80c00000
Booting using the fdt blob at 0x80c00000
Loading Device Tree to 80e60000, end 80e65168 ... OK
Starting kernel ...
问题3: 使用主线的rtp触摸驱动文件sun4i-ts.c编译内核模块ko,系统采用V4版本,但是无法加载,报错如下
# insmod sun4i-ts.ko
[ 32.197009] sun4i_ts: Unknown symbol devm_hwmon_device_register_with_groups (err 0)
[ 32.213188] sun4i_ts: Unknown symbol devm_hwmon_device_register_with_groups (err 0)
insmod: can't insert 'sun4i-ts.ko': unknown symbol in module, or unknown parameter
查看了编译选项,需要有HWMON选中才行,估计是由于V4版本内核默认没有选中的原因。 但是我自己编译内核没法工作。。。。
离线
https://whycan.cn/files/members/3/QQ20181010082728.png
第一个问题, u-boot-sunxi-with-spl.bin 这个文件 300k 后面的填充了无用的 0xFF.
SPL: Unsupported Boot Device! 这个问题一般出现在 spi flash 启动上面,
如果你用TF卡应该是不会的,
把更详细的log贴出来看下.
log只有下面这些
U-Boot SPL 2018.01-05676-g00188782ee-dirty (May 16 2018 - 17:22:52)
DRAM: 32 MiB
SPL: Unsupported Boot Device!
Trying to boot from sunxi SPI
由于我SPI FLASH里面也有系统,接着就自动从SPI 启动了。我待会
通过对比V4版本的u-boot-spi-flash.bin和u-boot-tf.bin,大段大段的不同,除开填充的部分,本身长度也不一样。
我开始尝试直接将编译出来的填充FF使得大小到0xF6000试试。
实在不清楚官方的这个是什么配置编译的,似乎改写了很多?
离线
你现在是想从 TF卡,还是flash 启动?
如果TF卡,就先擦除 TF卡吧.
我是想从TF启动,而且每次dd烧写固件前,都是执行擦除分区命令的。 难道要低格?
离线
更新下,问题1是因为用的配置是 licheepi_nano_spiflash_defconfig ,应该直接用 licheepi_nano_defconfig,
问题2估计哪里配置还是有问题,.config里面没有CONFIG_EARLY_PRINTK相关配置。后来重新git了 git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git 就没问题了,估计是哪里配置还是不对,先向下搞了
离线