主题 : start_armboot 执行循环出错,高手帮忙指点一下。 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 45813
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2011-05-08
最后登录: 2012-09-26
楼主  发表于: 2012-08-17 10:31

 start_armboot 执行循环出错,高手帮忙指点一下。

最近移植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重新编辑 ]
级别: 新手上路
UID: 81938
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2012-11-15
最后登录: 2014-06-08
1楼  发表于: 2013-01-22 15:41

 回 楼主(hhzczhh) 的帖子

你的点灯程序可以发给我一份么 谢谢  89165545@qq.com