2.Boot loader
如果使用者有自己惯用的boot loader,可以使用惯用的boot loader以加快开发时程,如果没有boot loader的开发经验,可以选用u-boot作为系统的boot loaderu-boot的source ocde位置在BSPv310/source/Standalone/u-boot/u-boot.tgz.
2.1 U-boot
AndeSoft的BSP310中u-boot source code是需要EBIOS boot up后再执行的u-boot版本。直接boot up不需要其他软件协助的U-boot版本(ROM版)是比较符合使用者的需要,晶心版的u-boot使用方法请参考BSP310 User Manual.如果要ROM版的u-boot需要在BSP310中的u-boot软件做patch,其指令如下:
# patch -p1 patching file arch/nds32/cpu/n1213/ag101/cpu.c
patching file arch/nds32/cpu/n1213/start.S
patching file arch/nds32/include/asm/u-boot-nds32.h
patching file arch/nds32/lib/board.c
patching file board/AndesTech/adp-ag101p/config.mk
patching file include/configs/adp-ag101p.h
patch 完成的u-boot source code 可以产生ROM版的u-boot image,直接开机后的执行结果如图表3所示。
图表 3 u-boot 执行结果图
3. 调试环境
在移植Linux到晶心平台之前,先架设好调试的环境,尤其对底层Linux原始码的移植,有莫大的帮助,在 printk尚未正常运作前,需依靠AndeShape?的AICE与 AndeSoft?的GDB来进行调试。
3.1设定Linux kernel 调试选项
Linux Kernel 需要设定一些调试选项,才能顺利的运用AndeSoft?的GDB进行调试。晶心平台中Linux kernel 调试选项设定如图表4所示,增加这些选项会增加kernel 映像文件的空间,如果空间占用过大以至于不符合设计需求时,可在调试工作完毕后将调试选项关闭以节约不必要的空间浪费。
图表 4设定Kernel hacking 中调试选项勾选
3.2 Linux kernel 调试的程序
Build成kernel bootpImage (含kernel debug message如图表四选项) 后,Linux的映像档放到FPGA板子上,PC host 端的AndeSoft?的GDB透过网络(socket)与AICE连接至FPGA板子,进行调试的工作。
3.2.1. 编译链结成映像档
设定好AndeSoft?的 cross-compiler 路径后,利用下列指令经由compiler and linker后可以得到 bootpImage,指令如下:
#CROSS_COMPILE="nds32le-linux-" ARCH="nds32" make xc5_defconfig
#CROSS_COMPILE="nds32le-linux-" ARCH="nds32" make menuconfig
# CROSS_COMPILE="nds32le-linux-" ARCH="nds32" make bootpImage INITRD=xc5_glibc_ramdisk.img
将生成的bootpIamge放到FPGA板子上,将AICE连接到FPGA板子启动ICEman,指令如下:
#C:\Andestech\AndeSight200MCU\ice>ICEman.exe --p 1234
PC host端的AndeSoft?的GDB透过网络(socket)与AICE连接至FPGA板子,进行调试的工作,示范指令如下:
#ddd --debugger nds32le-linux-gdb vmlinux
gdb>target remote 10.0.2.164:1234
其中IP值 10.0.2.164是一个应用范例,用户可依环境实际IP值进行设定。环境设定完成后,可以开始进行调试工程。