N年前折腾过NUC972,可惜需要配个头又大管脚又多的Nand flash,后来它的弟弟NUC980诞生了,支持了QSPI Nand,但阉割掉了LCD控制器,也无所谓了,如果需要耍屏的话还可以其他方案了,全志的V3S、国产的SSD20x都是屏驱的好方案。赶着JLC支持免费的紫油及免费的4层PCB打样,就继续去薅他的羊毛~
调试的过程中也是遇坑无数,满眼都是泪… 比如uboot下以太网,不知道你们是否都能正常tftp,反正我是折腾了好久,对照着nuc972的网卡驱动改过来的,目前uboot下网络能正常运行,但是启动linux后,网络死活跑不起来,而另一块不是核心板的板子,同样的固件、同样的配置,网络跑的很欢快,丢包还是有的。真是无语了~
烧写地址配置
Nuvoton NuWriter 下载、安装,选择SPI NAND
名称 | 类型 | execute地址 | offset |
---|---|---|---|
SPL | Loader | 200 | 0 |
uboot | Data | 0x10000 | |
env | Environment | 0x8000 | |
kernel(uImage) | Data | 0x20000 | |
rootfs | Data | 0x160000 |
Uboot
env的配置:(放txt里直接烧录到指定位置即可)
setenv ethaddr 08:55:00:11:66:88
setenv ipaddr 192.168.2.28
setenv serverip 192.168.2.21
setenv bootcmd sf probe 0 75000000;sf read 0x7fc0 0x200000 0x800000;bootm 0x7fc0
saveenvuboot tftp启动内核:(windows下开tftp软件,配置目录,关闭防火墙)
tftpboot 0x7fc0 980uimage
bootm 0x7fc0
内核
- 取消ramfs文件系统,真是坑爹的骚操作。并配置:
noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rootflags=inband-tags rw console=ttyS0,115200n8 init=/sbin/init mem=64M rootwait=1 mtdparts=nand0:0x200000@0x0(u-boot),0x1400000@0x200000(kernel),-(user) - 配置SPI时,取消quard模式,选择normal模式,奇葩的设置。
- 使能NFS文件系统。
文件系统
- 官方提供的文件系统傻傻的,命令弱的可怜,自己动手丰衣足食,使用busybox配置做文件系统即可,注意编译的时候不要选择static。可参考如下连接制作:
https://blog.csdn.net/weixin_38387929/article/details/108538631 - 生成busybox文件后,查看所依赖的库文件(没必要copy全部的库,太多太大了)
arm-linux-gnueabi-readelf -d busybox | grep NEEDED
或者:arm-linux-gnueabi-objdump -x busybox | grep NEEDED
将其所需要的库文件拷贝到根目录的lib文件下即可。注意有很多是连接文件,需要连同实际文件一起copy。一般只需要4个即可。 - 挂在NFS文件系统:
mount -t nfs -o intr,nolock,tcp,rsize=2048,wsize=1024 192.168.2.21:/ /mnt/nfs - busybox 显示用户名及路径:参考如下连接
https://blog.csdn.net/litao31415/article/details/50188243 - 网络调试工具:ethtool,新塘提供了,直接make即可,通过它可以看当前的网卡配置。貌似还有个mii-tool的工具,没用过。Linux网络命令mii-tool和ethtool使用参考连接:
https://blog.csdn.net/yzhang6_10/article/details/81557195
其他问题
- win10 WSL下cannot execute binary file: Exec format error: - 安装QEMU
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts –install i386 /usr/bin/qemu-i386-static –magic ‘\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00’ –mask ‘\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff’
sudo service binfmt-support start