LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1054|回复: 1

求助:arm-elf-gcc通过但在4510B上调试出现错误,为什么?内附源程序。

[复制链接]
发表于 2006-4-28 20:40:04 | 显示全部楼层 |阅读模式
源代码:
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define refextcon (*(volatile unsigned *)0x03FF303c)
#define extdbwth (*(volatile unsigned *)0x03FF3010)
#define extacon0 (*(volatile unsigned *)0x03FF3008)

#define adc_ch0 (*(volatile unsigned char *)0x03F00060)    /*adc channel 0*/
#define adc_ch1 (*(volatile unsigned char *)0x03F00061)    /*adc channel 1*/
#define adc_ch2 (*(volatile unsigned char *)0x03F00062)    /*adc channel 2*/
#define adc_ch3 (*(volatile unsigned char *)0x03F00063)    /*adc channel 3*/
#define adc_ch4 (*(volatile unsigned char *)0x03F00064)    /*adc channel 4*/
#define adc_ch5 (*(volatile unsigned char *)0x03F00065)    /*adc channel 5*/
#define adc_ch6 (*(volatile unsigned char *)0x03F00066)    /*adc channel 6*/
#define adc_ch7 (*(volatile unsigned char *)0x03F00067)    /*adc channel 7*/

#define led1 (*(volatile unsigned char*)0x03F00000)    /*ds4*/
#define led2 (*(volatile unsigned char*)0x03F00010)    /*ds3*/
#define led3 (*(volatile unsigned char*)0x03F00020)    /*ds2*/
#define led4 (*(volatile unsigned char*)0x03F00030)    /*ds1*/

#define maxline 5

extern int errno;

unsigned char led[11]={0xb7,0x06,0x73,0x57,0xc6,0xd5,0xf5,0x07,0xf7,0xd7,0x0};

/*error*/
report_error(char *s)                    
{
printf("receiver:error in %s,errno=%d\n",s,errno);
perror("error type");
exit(1);
}

/*delay*/
delay(int x)
{
int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<255;j++)
for(k=0;k<255;k++);
}

/*change the binary to char*/
disp(char adc,char charnum[4])
{
char temp;
temp=adc;
adc=adc/1000;
led1=led[adc];        
charnum[3]=48+adc;
temp=temp-1000*adc;
adc=temp;
adc=adc/100;
led2=led[adc];
charnum[2]=48+adc;
temp=temp-100*adc;
adc=temp;
adc=adc/10;
led3=led[adc];
charnum[1]=48+adc;
temp=temp-10*adc;
led4=led[temp];
charnum[0]=48+temp;
printf("snum=%s",charnum);
}

main()
{
unsigned char adc;
char snum[4],gnum[maxline];
refextcon=0xce2783f0;
extdbwth=0x05503002;
extacon0=0x0fffffff;
while(1)
{
adc_ch1=0x0;
delay(10);
adc=adc_ch1;
disp(adc,snum);
}
}

错误信息:
Internal error: unknown data abort code: e0c11001
CPU: 0
pc : [<00000000>]    lr : [<00000000>]    Not tainted
sp : 00000000  ip : 00000000  fp : 00000009
r10: ffffffff  r9 : 00000000  r8 : 00000000
r7 : 001713dc  r6 : 00000000  r5 : 00000000  r4 : 00000044
r3 : 00000004  r2 : ffffffff  r1 : a0000010  r0 : d4050000
Flags: nzcv  IRQs on  FIQs on  Mode FIQ_26  Segment kernel
Control: 0
Process ss.o (pid: 52, stackpage=00e67000)
Stack:
Backtrace: frame pointer underflow
Code: 0a000004 0a000004 (ef9f0000) ea0000dd e59ff410
pid 52: failed 11
发表于 2006-4-30 11:05:20 | 显示全部楼层
disp()中 printf的字符串没有以“0”结尾.
回复 支持 反对

使用道具 举报

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

本版积分规则

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