No.59045 作者:sz20120406 邮件:383959053@qq.com ID:130937 登陆:2次 文章数:69篇 最后登陆IP:111.222.53.176 最后登陆:2012/5/2 17:40:27 注册:2012/4/11 12:44:55 财富:101 发帖时间:2012/4/11 13:02:29 发贴者IP:183.14.195.147 标题:sz20120406:移植Linux至晶心平台关键点经验传承[原创] 摘要:No.59045移植Linux至晶心平台关键点经验传承[原创] 移植Linux至晶心平台关键点经验传承 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 Linux kernel 调试实作 kernel加载程序执行完毕后会跳到kernel主程序执行。进入点是arch/nds32/kernel/head.S的assembly code执行完后会进入 kernel 的主要函数 “start_kernel”。 RAM offset patch 晶心版Linux原始码搭配XC5平台,RAM的起始位置(指的是PA)是0x0,使用者FPGA开发板的RAM起始位置如果不是0x0,必须要修改FPGA板子中RAM的起始位置,做法是在晶心版的Linux原始码中进行RAM address patch,将原始码中RAM位置调整到FPGA开发板中RAM的真实位置。 PA/VA remap table 当FPGA板子IO的PA设定正确后,使用者需要设定PA/VA remap table,作法可参考arch/nds32/include/asm/spec-ag101.h,依照apec-ag101.h中PA/VA对应的关系去增减使用者自己IO device的 PA/VA remap table。 Kernel 解压缩与software breakpoint在进行kernel 调试时,如果在低地址处,例如:head.S中进行调试,当设定 software breakpoint时,会有breakpoint无法停下来与AICE 断线的情 ......
>>返回讨论的主题
|