全部博文(75)
分类: 嵌入式
2009-12-26 18:21:06
1、skyeye-1.2.8rc1
skyeye采用典型的“configure,make,make install”模式安装,注意修复一个导致BUS READ ERROR的bug:
修改memory/ram.c文件中的mem_read函数,
*(uint8_t *)value = (uint8_t)mem_read_byte (offset);改为*value = (uint8_t)mem_read_byte (offset);
*(uint16_t *)value = (uint16_t)mem_read_byte (offset);改为*value = (uint16_t)mem_read_byte (offset);
另外thirdparty下缺少mkinstalldirs,下载一个即可。
skyeye的配置文件skyeye.conf(根据自己的硬件修改),我的为:
# skyeye config file for S3C2410X
cpu: arm920t
mach: s3c2410x
# physical memory
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00100000,file=./hello,boot=yes
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
#mem_bank: map=M, type=RW, addr=0xC0000000, size=0x04000000,file=./vmlinux
#mem_bank: map=M, type=RW, addr=0x30000000, size=0x03F80000
#mem_bank: map=M, type=RW, addr=0x33F80000, size=0x00080000, file=./u-boot.bin,boot=yes
#mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=08:00:3E:26:0A:5B, ethmod=tuntap, hostip=10.0.0.1
nandflash: type=s3c2410x,name=K9F1208U0B,dump=./nand.dump
#lcd: type=s3c2410x, mod=gtk
dbct:state=on
skyeye的调试参数:-d
运行时使用该参数可以模拟gdb调试。假设程序为hello
使用skyeye -e hello -c skyeye.conf -d运行。
2、gdb
编译arm-linux-gdb
在gdb-6.8目录下,执行
./configure --target=arm-linux --prefix=/usr/local/arm/2.95.3/
编译gdbserver时出现PATH_MAX undeclared错误的解决方法:
在gdb/gdbserver/hostio.c文件中增加
#include
原因是宏PATH_MAX在
vi gdb/Makefile
将-Werror那行注释掉,警告不当做错误处理。
如果提示no termcap library found,还要下载一个 termcap-1.3.1 的包,然后交叉编译,安装到交叉编译器路径arm-linux目录下。
注意gdb配置的三个选项:
BUILD一般不用指定
HOST编译之后的gdb程序运行的平台
TARGET:gdb能调试的程序的运行平台。
根据上面./configure --target=arm-linux --prefix=/usr/local/arm/2.95.3/,既是编译在本机上运行的能调试arm上运行程序的gdb。
编译gdb-server的话要编译成运行在arm上的,选项为:--host=arm-linux --target=arm-linux
3、skyeye下的gdb调试(hello为带有调试信息的运行在arm上的程序)
skyeye -e hello -c skyeye.conf -d
arm-linux-gdb hello
连接方法:target remote 127.0.0.1:12345
调试方法跟普通gdb一致。