微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux基础架构在晶心平台上的移植研究

Linux基础架构在晶心平台上的移植研究

时间:03-10 来源:3721RD 点击:

工具链

nds32le-linux-glibc-v2

nds32le-linux-glibc-v2

使用者如用新版的AndesCore™,可更换新的对应工具链

FPGA板子

使用者设计

XC5

Netlist

使用者生成

N10 production version

图表 SEQ 圖表 * ARABIC 2平台与晶心平台的比较表

2. Boot loader

如果使用者有自己惯用的boot loader,可以使用惯用的boot loader以加快开发时程,如果没有boot loader的开发经验,可以选用u-boot作为系统的boot loader.。u-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

n patching file arch/nds32/cpu/n1213/ag101/cpu.c

n patching file arch/nds32/cpu/n1213/start.S

n patching file arch/nds32/include/asm/u-boot-nds32.h

n patching file arch/nds32/lib/board.c

n patching file board/AndesTech/adp-ag101p/config.mk

n patching file include/configs/adp-ag101p.h

patch 完成的u-boot source code 可以产生ROM版的u-boot image,直接开机后的执行结果如图表3所示。

图表 SEQ 圖表 * ARABIC 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:AndestechAndeSight200MCUice>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值进行设定。环境设定完成后,可以开始进行调试工程。

4. 移植Linux至晶心平台关键点经验传承

4.1 Kernel加载程序调试实作

kernel加载程序目的将kernel主程序进行解压缩并加载正确位置,此程序与kernel主程序是两个不同程序,但会一起包在zImage中只是kernel加载程序会attached在zImage的前面。调试时需 file不同的 ELF file才能进行正确的调试工作,kernel加载程序的位置在arch/nds32/boot/compressed/vmlinux,指令如下所示。

#ddd --debugger nds32le-linux-gdb arch/nds32/boot/compressed/vmlinux

kernel主程序的ELF file "vmlinux"在kernel source code的根目录下指令如下所示。

#ddd --debugger nds32le-linux-gdb

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top