首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何移植Linux到晶心平台 03

如何移植Linux到晶心平台 03

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 vmlinux
   
    4.2 Linux kernel 调试实作
   
    kernel加载程序执行完毕后会跳到kernel主程序执行。进入点是arch/nds32/kernel/head.S的assembly code执行完后会进入 kernel 的主要函数 "start_kernel".
返回列表