QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1604|回复: 5

lpc2210平台运行时一个奇怪的问题!!

[复制链接]
发表于 2008-12-20 15:25:54 | 显示全部楼层 |阅读模式
C:\Documents and Settings\Owner\桌面\skyeye出错.jpg

我尝试将armcc版本的ucos for lpc移植到skyeye的lpc2210平台上,其他的修改工作都已经完成了,但是在最后用skyeye -e start运行我的执行文件时,总是碰到这样的问题:
      SKYEYE: mem_reset: Error allocating mem for bank number 1.
这个应该跟skyeye.conf文件配置情况无关吧,我看了skyeye源代码中的armmem.c文件,其中有如下语句:
                           state->mem.rom[bank] = malloc (mb[bank].len);
                           if (!state->mem.rom[bank]) {
                                fprintf (stderr,
                                "SKYEYE: mem_reset: Error allocating mem for bank number %d.\n",bank);
                                skyeye_exit (-1);
                        }
也就是说当malloc申请不成功的时候才会显示这个错误,但是为什么会申请空间不成功呢??这个错误跟什么有关呢?请大家指教一下!!附我的skyeye.conf如下:
#skyeye config file sample
cpu: arm7tdmi

mach: lpc2210

mem_bank: map=M, type=RW, addr=0x00000000, size=0x00040000 ,boot=yes
#mem_bank: map=M, type=RW, addr=0x00040000, size=0x3ffb0000
mem_bank: map=M, type=RW, addr=0x40000000, size=0x40000000,  
#mem_bank: map=M, type=RW, addr=0x80000000, size=0x60000000
mem_bank: map=I, type=RW, addr=0xe0000000, size=0x20000000
#log: logon=0, logfile=/tmp/sk1.log, start=0, end=200000
这说明当
发表于 2008-12-20 18:53:03 | 显示全部楼层
你的memory bank什么意思?
mem_bank: map=M, type=RW, addr=0x40000000, size=0x40000000,  
起始地址是0x4000_0000, 大小为0x4000_0000 ??
回复

使用道具 举报

 楼主| 发表于 2008-12-20 19:32:08 | 显示全部楼层
是我的skyeye.conf配置有误吗?起始地址0x40000000开始是LPC2210内存映像的16K静态RAM,0x40001FFF到0x80000000是片内存储器用,所以我把它们都分配在一起了,所以是0x4000000长度啊,应该没有问题吧??
回复

使用道具 举报

 楼主| 发表于 2008-12-20 20:29:06 | 显示全部楼层
我刚刚将Size=0x40000000改为了Size=0x00004000就没有出现那个错误了,难道还真是大小配置得太大了??我对skyeye.conf对mem_bank的配置有点糊涂了,它的分配原则是什么呢?是按照具体的CPU类型中所定义的内存映射去分配吗,还是说要根据实际所要用的空间去分配?
回复

使用道具 举报

 楼主| 发表于 2008-12-20 20:32:29 | 显示全部楼层
刚刚mem_bank的问题没有了,但是又出现新的问题了:
elf_checkFile failed: -1
load "start" error

这又是为什么呢?难道不识别flt格式的执行文件吗?因为为了避免__CTOR_LIST和__DROP_LIST未定义错误,我在编译时是加上了-elf2flt选项的..
回复

使用道具 举报

 楼主| 发表于 2008-12-21 11:17:38 | 显示全部楼层
报告一下,昨天遇到的__CTOR_LIST问题是由于在main.c文件里面定义了main函数,gcc可能会对main函数做特殊处理,可能需要用到libgcc.a,所以才会出现那个问题,后来我把main改了名字就不会出问题了!现在我的可执行文件可以生成了,但是在用skyeye运行时又出问题了:
R 0,0,63,e000c000,0,0,0,0,0,0,0,0,6122,6122,e0024080,e002558c,C 600000df,S 0,0,0,0,0,0,0,M 1f,B 0,E 0,I 0,P 0,T 0,L 0,D 0,ERROR:io_read: addr = e0025590
R 0,0,63,e000c000,0,0,0,0,0,0,0,0,6122,6122,e0024080,e0025590,C 600000df,S
一大串类似的错误,但是我很奇怪,我的程序里面根本就没有读过地址0xe0024080等,不知是哪来的错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 08:22 , Processed in 0.041012 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表