XK-RTU980边缘计算物联网平台Linux程序编译方法
4.1、编译UBOOT
(1)进入u-boot-2016.11目录
$ls configs/nuc980*
检索nuc980编译文件
(2)配置默认参数
$make nuc980_chili_defconfig
(3)编译
$make
编译结束,会生成u-boot.bin 及 spl/u-boot-spl.bin
Make后,报错:arm-linux-gcc: 致命错误:-fuse-linker-plugin, but liblto_plugin.so not found
编译中断。
这个问题可以通过使用buildroot工具编译解决。
uboot-spl.bin说明: uboot-spl.bin作用是把uboot.bin搬运到DRAM里面运行,这是NAND需要的,如果是其他启动方式,不需要这个东西。XK-RTU980是SPI Flash启动,就不需要。
和它相关的有几个参数: CONFIG_SPL_TEXT_BASE:SPL的启动位置,在烧录的时候使用的地址 CONFIG_SYS_TEXT_BASE:Uboot的连接地址 CONFIG_SYS_PHY_UBOOT_BASE:这个要和uboot链接地址在相同位置 |
4.2、编译kernel
XK-RTU980 Linux BSP安装之后会获取到最新的linux kernel。
(1)进入源码目录:
$cd linux-4.4.y/
(2)查看配置文件
$ls arch/arm/configs/nuc980*
(3)选择XK_RTU980的板子配置文件进行配置
$make nuc980_chili_defconfig
(4)整合文件系统ROOTFS
现在还不能直接编译,会报错找不到文件系统。
到之前下载bsp目录下,将rootfs拷贝到kernel源码同级目录。
官方配置的ramdisk镜像,文件系统会和kernel一起被打包。
同时在kernel同级目录创建image文件夹
$mkdir ../image
安装软件
$sudo apt-get install u-boot-tools
(5)编译内核镜像
$make uImage
编译完成,生成镜像文件
4.3、启动环境文件制作
nuc980支持直接下载.txt的环境变量文件。打开env.txt,修改2个参数
(1)BOOT参数
bootcmd=sf probe 0 18000000; sf read 0x7fc0 0x200000 0x220000; bootm 0x7fc0
。 sf read的size必须大于内核uImage镜像的大小,可以多读,不可以少。
(2)默认分区
bootargs=noinitrd root=/dev/mtdblock1 rw rootfstype=cramfs console=ttyS0,115200n8 rdinit=/sbin/init mem=64M
。
默认分区表配置下,无Nand时候,SPI的第2个分区映射到了/dev/mtdblock1。有Nand情况则应该是root=/dev/mtdblock4
(3)XK-RTU980环境参数内容
XK-RTU980可以按如下内容编辑一个evn.txt文件,烧录在0x80000地址。
//env.txt
baudrate=115200
bootdelay=1
stderr=serial
stdin=serial
stdout=serial
setspi=sf probe 0 30000000
loadkernel=sf read 0x7fc0 0x200000 0x800000
bootcmd=run setspi;run loadkernel;bootm 0x7fc0
4.4、编译buildroot
在编译程序时,可以使用Buildroot方式进行整合编译。在安装完XK-RTU980 Linux BSP后,目录中会有一个Bulidroot目录,可以使用buildroot实现uboot、linux kernel、rootfs的编译。操作方法如下:
(1)进入buildroot目录
$cd NUC980_Buildroot
Tips:更新Bulidroot工具: 【 以下动作只需要在更新 Buildroot 工具时使用 】 进入Buildroot 资料夹后请输入以下指令:
更新完成后进入 dl 资料夹,先将既有的 linux kernel 与 u-boot 删除,并输入以下指令:
输入密码 user,并输入以下指令:
离开 dl 资料夹,进入 Builroot 资料夹下 |
(2)清除编译输出文件
$make clean
(3)导入XK-RTU980默认配置文件
$make nuvoton_nuc980_chili_defconfig
(4)修改编译配置,可选,如果修改了配置文件,可以保存为自命名的新文件以备用。
$make menuconfig
(5)编译,第一次编译时,会下载各种依赖库,大约需要1个小时,请耐心等待。
$make
编译成功后,NUC980 BSP出现在NUC970_Buildroot目录下面的output目录
/ Buildroot-master/output/images/uImage
/ Buildroot-master/output/build/uboot-master/u-boot.bin
如果编译的时候出现报错,可以尝试sudo ./install_nuc980_bsp.sh
之后,重新make
。
Buildroot编译过程长,要下载很多东西,对磁盘空间有要求。如果是VMware虚拟机之前只有30G的话,建议扩容到50G。扩容方法见8.4章节。
编译完成后。在~/xk_rtu980/nuc980bsp/buildroot/output/images目录中获取uboot和kernel(文件系统),将这两个文件拷贝出共享目录。
上述教程适用于通用型AIoT物联网边缘计算平台XK-RTU980产品:
https://www.silicontrol.com/product/showproduct.php?id=95
矽控电子®分别获“科技型中小企业”、“江苏省民营科技企业”、“创新型中小企业”认定,核心团队拥有十余年的硬件正向研发,生产制程,测试手法,品质控制经验。尤其擅长嵌入式ARM平台的人工智能与工控物联网产品,以及瑞芯微(Rockchip)、海思、NXP、新唐等平台的机器视觉类AIoT模组开发,为您的产品从创意到落地、批量市场化助力。
公司可提供从硬件设计(原理开发及PCB Layout),Linux驱动开发,PCB制板,SMT及接插件焊接,产品测试,产品老化全流程外包服务,收费合理,品质可靠。
定制开发找矽控,品质可靠省费用
垂询电话:0510-83488567-1 业务邮箱:wxdianzi#foxmail.com (#更换为@)