nuc980是新唐的一款arm9微处理器,这个芯片具有几个不同型号,我这里使用的是nuc980DK61Y,这个芯片内部包含了64M字节的DRM,处理器能到300MHZ,能从 norflash nandflash sd卡 usb启动,详细可以参考官网的资料:
- TRM_NUC980_Series_EN_Rev1.01 数据手册非常详细的介绍各种外设
- NUC980 NuWriter User Manual CHT 讲解nuc980的程序烧写与启动流程
- NUC980 U-Boot v2016_11 User Manual CHT uboot的编译以及修改启动设备
- NUC980 Linux 4.4 BSP User Manual CHT linux编译以及配置说明
- NUC980 Programming Guide CHT 编程指南相当于数据手册的简介
nuc980启动先执行内部rom的引导程序,它会根据设定的 boot引脚到相应设备读取程序到内存相应地址去执行,在NUC980 NuWriter User Manual CHT这个文档中有详细说明。
可以从 gitee 搜索新唐开源 nuc980代码,使用 git clone 获取 uboot linux buildroot,使用以下方法编译系统相关代码:
1.nuc980的uboot从gitee下载后需要按照NUC980_Linux-4.4_BSP_v1.03.000/Documents/
文件夹里面的NUC980 U-Boot v2016_11 User Manual CHT.pdf进行修改,nuc980_defconfig 这个配置是不能从spi flash启动的,需要进行一定的修改,有配置的修改和代码的修改,默认是支持nandflash的代码。
修改后使用:
make distclean
make nuc980_defconfig
make
编译即可使用
2.关于根文件系统最好从gitee克隆后使用 nuvoton_nuc980_defconfig 这个配置编译,编译在output文件夹有一个rootfs.tar,复制到跟内核代码的上个目录,同一目录建立的rootfs目录里面使用tar解压到这个目录:
sudo tar -xvf rootfs.tar
sudo rm rootfs.tar
cd ..
sudo chmod 777 -R ./rootfs/
注意:使用特权级别操作rootfs
3.nuc980的linux最好从gitee使用git clone 克隆,然后可以使用nuc980_defconfig这个配置编译既可以使用,在编译之前
需要内核源码的上个目录有一个 image文件夹 和 rootfs根文件系统 。使用命令编译:
make distclean
make nuc980_defconfig
make
在目录image里面就有一个980uimage就是可以使用uboot启动的内核文件
4.烧录内核一般在windows使用 NuWrtier.exe usb方式连接开发板,注意板子拨码和安装驱动, 烧写uboot和内核把uboot内核使用Loader方式烧录,软件中有默认位置,(NUC980 NuWriter User Manual CHT.pdf 这个文档有关于烧录详细说明)内核使用Data方式烧录,内核烧录在 0x200000 也就是 norflash 2M 这个位置,烧录完成之后拨码,复位启动板子使用命令启动:
sf probe 0 50000000
sf read 0x7fc0 0x200000 0xa00000
bootm 0x7fc0
至此内核启动了,如果要增加linux启动时执行命令,把命令写在根文件系统 etc/init.d/rcS 这个文件里面的最后几行即可 shell 的 wait 可以等待命令顺序执行,等待命令返回,再执行新命令。
5.烧录loader时有一个 image execute address 这个窗口填写的执行地址,也是代码开始存放到dram的地址NUC980 NuWriter User Manual CHT.pdf 这个文档有详细说明。
烧写完成之后连接 uart0 ,上位机使用调试助手MobaXterm设置 115200 波特率 ,输入uboot命令把 uImage 读取到内存 0x7fc0 这个位置然后启动内核可以与linux内核进行交互了。
这里需要注意:
- 默认配置不含有 nfs 需要配置内核包含nfs客户端,
- 网卡可能没有打开需要使用 ifconfig eth0 up 打开网卡
- 挂载nfs文件系统使用 mount -t nfs 192.168.199.165:/nfsroot /mnt/nfsroot -o nolock
- 烧录程序时注意boot拨码是否正常,连接NuWriter时需要拨码到usb启动
- 开发板和串口不是使用同一供电时最好跟串口的地连接起来
本文为nuc980学习的开始,后续会添加裸机开发,uboot分析, linux内核分析相关文章。在进行开发之前,仔细查阅官方的相关文档再使用开发板,不要一来就直接开发,这样效率会很低,在开发中遇到的问题基本都在文档中有详细说明。