参考链接1: http://nano.lichee.pro/build_sys/build_flash.html
参考链接2: 核心板原理图 Lichee_nano.pdf (第一版)
参考链接3: 核心板原理图 lichee_nano_new.pdf (第二版)
参考链接4: 底板原理图 lpi-nano-dock.pdf
参考链接5: https://whycan.cn/t_2179.html (荔枝派nano(f1c100s)的SPI-Flash系统编译创建全过程)
1. 搭建环境
#安装必要软件:
sudo apt-get -y install swig
sudo apt install libssl-dev# 此处为获取7.2.1版本,您可获取其他版本或者通过链接直接下载
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xzsudo tar xvf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz -C /usr/local
sudo vim ~/.bashrc
# 在文件末尾 添加以下内容
export PATH=/usr/local/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin:$PATH
# 添加完毕
重新进入shell使路径生效此时可用 arm-linux-gnueabi-gcc -v 进行测试;若普通用户状态下没有成功,通过 sudo su 切换到root用户再尝试;
2. 编译 u-boot
#下载u-boot
git clone https://github.com/Lichee-Pi/u-boot.git -b nano-lcd800480
cd u-boot
#拷贝默认配置文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig若要在套餐中附带的LCD上输出显示,请通过配置 ARM architecture ‣ Enable graphical uboot console on HDMI, LCD or VGA 为 Y
接着配置同级的 LCD panel timing details 为:
x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0注:此块屏为为 800*480 规格,如为 480*272 请尝试如下配置 x:480,y:272,depth:18,pclk_khz:10000,le:42,ri:8,up:11,lo:4,hs:1,vs:1,sync:3,vmode:0
并将 LCD panel backlight pwm pin 设为:PE6 (查自 Nano 原理图)
# 开始编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8#http://nano.lichee.pro/build_sys/build_flash.html
#需要从flash启动linux修改 include/configs/suniv.h#define CONFIG_BOOTCOMMAND "sf probe 0 50000000; " \
"sf read 0x80C00000 0x100000 0x4000; " \
"sf read 0x80008000 0x110000 0x400000; " \
"bootz 0x80008000 - 0x80C00000"#define CONFIG_BOOTARGS "console=ttyS0,115200 panic=5 rootwait " \
" mtdparts=spi32766.0:1M(uboot),64k(dtb),4M(kernel),-(rootfs) " \
" root=/dev/mtdblock3 rw rootfstype=jffs2 "
3. 编译 linux, 设备树
#克隆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
5. 生成根文件系统
生成根文件系统
6. ubuntu编译并使用sunxi-fel烧录工具
#安装 pkg
sudo apt-get install -y pkg-config
#安装libusb库:
sudo apt-get install -y libusb-1.0-0-dev
#克隆源码:
git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git
#切换目录
cd sunxi-tools
#编译
make && sudo make install
7. windows 编译并使用sunxi-fel烧录工具
sunxi-fel
8. TF卡启动系统
TF卡启动系统
离线
http://nano.lichee.pro/build_sys/build_flash.html
修改 suniv.h
#define CONFIG_BOOTCOMMAND "sf probe 0:50000000; " \
"sf read 0x80C00000 0x100000 0x4000; " \
"sf read 0x80008000 0x110000 0x400000; " \
"bootz 0x80008000 - 0x80C00000"
官方文档又挖大坑了.
spi_flash@0:50000000: failed to activate chip-select 50000000
SF: error -2 reading JEDEC ID
Failed to initialize SPI flash at 0:50000000 (error -2)
离线
终于找到了不生成分区的原因, 原来是使用了错误 SPI 驱动.
应该使用 CONFIG_SUN6I_SPI, 而不是 CONFIG_SUN4I_SPI
最迷惑的就是 u-boot 里面配置是对的, 而 linux kernel 的配置是错误的,
开始一直没有怀疑是这个问题,
直到参考 @chong 大神的 linux 4.19 才发现。
官方的配置文件 https://whycan.cn/files/members/3/lichee_nano_linux_config.zip (不是压缩文件,直接改后缀名即可!) 是有坑的.
离线
http://nano.lichee.pro/build_sys/rootfs.html
根据官方指导,下载代码 编译代码编译完成的镜像包,是在 buildroot-2017.08 ‣ output ‣images ‣ rootfs.tar 中找到;
我在解压rootfs.tar文件报错如下:
./var/lib/sudo/
./var/lib/sudo/lectured/
./var/lock
./var/log
./var/run
./var/spool
./var/tmp
./var/www/
tar: 由于前次错误,将以上次的错误状态退出
命令前面加 sudo 试一试.
离线
离线
离线
basicdev 说:buildroot只生成根文件系统,ko是后来拷进去的。
谢谢!
另一个问题, 用了 http://nano.lichee.pro/build_sys/rootfs.html 里带的config, 编出来的文件94M... 说好的能放nor flash的涅... 有没有可用的最小rootfs 的config 模板呢:)
那个不是用来放到flash的,而是tf卡。
有两种解决方案:
1. 删除不需要的文件,比如Qt什么的,让他缩小到几兆。
2. 修改buildroot 的 .config 文件,只保留 busybox 等配置,全部重新来过。
离线
@晕哥, 遇到个现象搞不懂是什么原因, 板子是tf卡启动的, 系统很快就登陆进去了,但过了好久才出现 [ 124.007131] random: crng init done
[ 1.519103] devtmpfs: mounted
[ 1.529146] Freeing unused kernel memory: 1024K
[ 1.681496] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
Starting logging: OK
Initializing random number generator... done.
Starting network: OKWelcome to Licheepi
buildroot login: root
Password:
#
#
#
#
# [ 124.007131] random: crng init done
https://github.com/torvalds/linux/blob/master/drivers/char/random.c
这个是随机数驱动报出来的,不用理他.
if (crng == &primary_crng && crng_init < 2) {
invalidate_batched_entropy();
numa_crng_init();
crng_init = 2;
process_random_ready_list();
wake_up_interruptible(&crng_init_wait);
pr_notice("random: crng init done\n");
if (unseeded_warning.missed) {
pr_notice("random: %d get_random_xx warning(s) missed "
"due to ratelimiting\n",
unseeded_warning.missed);
unseeded_warning.missed = 0;
}
if (urandom_warning.missed) {
pr_notice("random: %d urandom warning(s) missed "
"due to ratelimiting\n",
urandom_warning.missed);
urandom_warning.missed = 0;
}
}
离线
晕哥你好,小弟自制了块板,u-boot也编译好了,sunxi-fel也安装好了,现在空白的芯片不知怎么把u-boot烧进去跑,是通过USB还是串口下载?
参考帖子:
https://whycan.cn/t_444.html
https://whycan.cn/t_1662.html
烧录这个固件:
离线
问题找到了:ch340 usb转串口模块有问题,换了个ftdi的log出来了,坑死我了。
这个固件默认的密码是多少?mmc一直在错是硬件有问题吗?
[ 878.067707] sunxi-mmc 1c0f000.mmc: fatal err update clk timeout
[ 878.817716] sunxi-mmc 1c0f000.mmc: fatal err update clk timeout
root
licheepi
离线