最近移植u-boot-2010.09到tiny6410上,用网上盛传的点灯大法好不容易进到start_armboot里面,但执行循环却诡异得很,找不出原因
start_armboot其他内容都屏蔽了
#define UTRSTAT (*(volatile unsigned int *)(0x7F005010))
#define UTXH(*(volatile unsigned int *)(0x7F005020))
char str[]="hello";
char *s=str;
如果用以下代码可以在串口下输出hello
while(!(UTRSTAT & 0x2));
UTXH = *s++;
while(!(UTRSTAT & 0x2));
UTXH = *s++;
while(!(UTRSTAT & 0x2));
UTXH = *s++;
while(!(UTRSTAT & 0x2));
UTXH = *s++;
while(!(UTRSTAT & 0x2));
UTXH = *s++;
若换成以下代码则不行,什么都不输出
while(*s != '\0')
{
while(!(UTRSTAT & 0x2));
UTXH = *s++;
}
经测试似乎只要碰到循环的地方,就会出现莫名其妙的问题。是不是C执行环境设置不对呢?
[ 此帖被hhzczhh在2012-08-18 14:27重新编辑 ]