Linux基础架构在晶心平台上的移植研究
工具链 | 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所示。 3. 调试环境 在移植Linux到晶心平台之前,先架设好调试的环境,尤其对底层Linux原始码的移植,有莫大的帮助,在 printk尚未正常运作前,需依靠AndeShape™的AICE与 AndeSoft™的GDB来进行调试。 3.1设定Linux kernel 调试选项 Linux Kernel 需要设定一些调试选项,才能顺利的运用AndeSoft™的GDB进行调试。晶心平台中Linux kernel 调试选项设定如图表4所示,增加这些选项会增加kernel 映像文件的空间,如果空间占用过大以至于不符合设计需求时,可在调试工作完毕后将调试选项关闭以节约不必要的空间浪费。 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 |
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)