Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306085
  • 博文数量: 75
  • 博客积分: 2710
  • 博客等级: 少校
  • 技术积分: 706
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 14:19
文章分类

全部博文(75)

文章存档

2011年(10)

2010年(22)

2009年(43)

我的朋友

分类: 嵌入式

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一致。

阅读(1384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~