总体感受:
新唐nuvoton最新 NUC970 NUC980 arm9处理器:
LQFP128 封装很友好,内嵌DDR RAM,外接SPI flash就可以运行;
官方资料全,适合初学者入门,适合中低复杂程度的物联网产品;
秒三星2440系列,最小系统的简约程度媲美STM32。
背景:
手里有NuMaker-Tomato-IoT开发板、新唐官方buildroot,试试构建一个完整的Linux系统。
过程:
一、安装VMWARE+UBUNTU18.04虚拟机开发平台,过程略,官方提供的直接拿来用;
http://www.nuvoton.com.cn/products/microprocessors/arm9-mpus/nuc970-industrial-control-series/?group=Software&tab=2
二、获取最新buildroot(官方镜像的/home/user目录就有现成的文件夹NUC970_Buildroot-master):
git clone https://github.com/OpenNuvoton/NUC970_Buildroot.git
进入NUC970_Buildroot目录,安装NUC970bsp:
(1)install_nuc970_bsp.sh
(2)查看官方提供的默认配置:
root@ubuntu:/home/work/NUC970_Buildroot-master# ls configs/nuc
configs/nuvoton_nuc970_defconfig configs/nuvoton_nuc980_chili_defconfig
configs/nuvoton_nuc972_defconfig configs/nuvoton_nuc980_defconfig
configs/nuvoton_nuc972_eth2uart_defconfig configs/nuvoton_nuc980_eth2uart_defconfig
configs/nuvoton_nuc973_defconfig configs/nuvoton_nuc980_iot_defconfig
configs/nuvoton_nuc976_defconfig configs/nuvoton_nuc980_lorag_defconfig
configs/nuvoton_nuc976_tomato_defconfig configs/nuvoton_nuc980_mbed_cloud_defconfig
configs/nuvoton_nuc977_defconfig
(3)设置交叉环境变量(每次打开新终端,都要export一下):
export PATH=$PATH:/usr/local/arm_linux_4.8/usr/bin
将export PATH=$PATH:/usr/local/arm_linux_4.8/usr/bin放入/etc/profile,下次使用source命令使交叉环境变量生效:
source /etc/profile
(4)载入默认配置: make nuvoton_nuc976_tomato_defconfig
修改配置后保存,然后编译:
make menuconfig
make
(5)烧写镜像文件:
(注意:tomato配置的uboot.bin 用nuvoton nu-writer工具,烧入SPI flash的起始地址为0x2000000,而不是0xe00000)
使用Tomato内核配置,生成用于SD卡内核启动的SHA文件;
进入内核代码文件夹:
/home/work/NUC970_Buildroot-master/output/build/linux-master
执行:
/home/work/NUC970_Buildroot-master/output/build/uboot-master/tools/mkimage -A arm -O linux -T kernel -S sha1 -a 0x7fc0 -e 0x8000 -d …/image/970image …/image/970image.sha
**插曲:**似乎使用上述SHA校验的 970image.sha 镜像,内核不能启动。。。
(后来解决了,原因是输入镜像应该选择NUC970_Buildroot-master/output/images/目录中的uImage,而不是Image)
或者,干脆不用SHA校验,直接用默认的CRC32校验;
uboot源码修改地方:board/nuvoton/nuc970/Kconfig
config NUC970_HW_CHECKSUM
bool
default n
kernel源码直接用生成的默认镜像uImage
注:修改了uboot代码,使用buildroot重新编译方法:
先删除 .stamp_target_installed 和 .stamp_builted
在buildroot根目录执行 make; 生成uboot镜像;否则uboot镜像不会重新生成。
结论:
uboot 和 内核 用默认的 支持CRC32 校验即可;
用buildroot可以方便地添加各种linux工具,告别移植各种库和配置文件的痛苦。
|