实验八修改Linux内核
1. 实验目的
学习开发配置Linux内核,掌握修改Linux内核技巧和BDI2000调试内核的方法。
2. 准备工作
安装配置好交叉开发环境,能够在目标板上启动Linux,配置连接好BDI2000。3. 实验内容
3.1  Linux内核移植 
Linux 内核移植主要考虑以下几方面的问题:
嵌入式Linux Kernel资源:hardhat Linux
目标板:hd860
开发平台:x86  redhat linux
嵌入式Linux 开发软件工具: hardhat CDK
程序加载方式:bdm  ppcboot rom
嵌入式Linux的启动过程:
ROM Monitor:Ppcboot loader
嵌入式Linux Kernel
嵌入式Linux  Device Drivers  :net ;serial
嵌入式Linux  Root Filesystem :nfs ;ramdisk
linux内核文件放在哪嵌入式Linux  Threads;
嵌入式Linux  Applications:net ;serial
嵌入式Linux  Debugging  :BDI2000
根据以上考虑,修改代码。然后build kernel
make menuconfig 配置platform ,network device等选项。
Make dep; make zImage
3.2 建立BDI2000调试环境 
准备mvl内核 
1. 准备原始LSP:
新安装embeddedplanet-cllf包或者复制新安装的embeddedplanet-cllf目录,然后进入下面目录:
cd /opt/hardhat/devkit/lsp/
2. 打补丁:
patch –p0 < cllf_nete860_hd860patch.diff
3. 配置内核:
cd  embeddedplanet-cllf/linux-2.4.2-hhl20/
make menuconfig
弹出菜单,通常只显示
4. 编译内核:
把Makefile中的添加调试编译参数-g,即CFLAGS_KERNEL= -g -ggdb
make dep; make zImage
5. 转换内核文件:
cp ./arch/ppc/boot/images/zvmlinux.mbx  /tftpboot/hd860
dd if=hd860 of=hd860.bin bs=64k skip=1
连接配置BDI2000 
完成开发环境的配置,并且配置连接BDI2000,参考BDI2000安装使用手册。
配置BDI2000的固件和逻辑,包含BDI2000的IP地址,主机IP地址,目标板配置文
件等。
修改hd860f文件,设置Embedded Linux MMU Support
Default translation maps addresses in the range 0xC0000000 - 0xC07FFFFF to 0x00000000  0x007FFFFF.
WSPR 796 0x00000000 ;M_TWB: invalidate TWB
设置DER suitable for Linux kernel debugging
WSPR 149 0x0082000F ;DER: enable PRIE,TRE,LBRK,IBRK,EBRK,DPI
3.3调试Linux内核 
用telnet连接BDI2000,显示BDI>调试命令提示符,help命令可以查看
#telnet 192.9.200.145
BDI>help
首先运行一下ppcboot,这对于某些目标板使必须的:
BDI>go 0xffe00100
BDI>info
BDI>halt
用BDI2000的调试命令load下载程序:
BDI>load 0x200000 hd860.bin BIN
BDI>ti 0x200000
在主机上,启动可视化调试工具ddd:
#cd /opt/hardhat/devkit/lsp/embeddedplanet-cllf-ppc_8xx/linux-2.4.17-mvl21
#/opt/hardhat/host/bin/ddd --debugger /opt/hardhat/devkit/ppc/8xx/bin/ppc_8xx-gdb --gdb vmlinux
在可视化调试工具ddd的命令窗口中,连接BDI2000和ddd。
(gdb)target remote 192.168.1.20:2001
(gbd)cont
在可视化调试工具ddd中,可单步追踪机器码、查看和修改目标板板上寄存器、memory。
在可视化调试工具ddd中,在file菜单中用open source 打开源文件。
在start_kernel函数(main.c文件)内设置断点,用cont追踪到断点,用step或者next单步运行。
参照前面用BDI2000记录的目标板板上寄存器、UPMA、memory,flash参数,在status 菜单中查看和修改目标板板上寄存器,在source菜单中修改原代码。
修改好原代码后,编译,连接,重复以上过程直到通过。
3.4烧写Linux内核程序 
用BDI2000的调试命令flash设置flash。
用BDI2000的调试命令erase擦除flash。
BDI>erase 0xffe00000
用BDI2000的命令prog烧写flash
BDI>prog 0xffe20000 zImage IMAGE

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。