当前时区 GMT+8, 现在时间是 2008-5-17 13:33 游客: 注册 登录 仅登录论坛 | 搜索 帮助


标题: 关于模拟USART的问题
北斗星君
注册会员
Rank: 2


UID 38171
精华 0
积分 333
帖子 138
阅读权限 20
注册 2003-5-18
来自 China
状态 离线
发表于 2007-12-13 21:30  资料  主页 短消息  加为好友 
关于模拟USART的问题

我现在用的是skyeye 1.23。

最近在调试 USART的读写程序(个人按照手册的提示写的)
但是我这边因为用的是笔记本,所以没有 串行口 因此,我想问一下如何使用键盘作为USART的输入,终端作为USART的输出。或者以普通文件作为USART的输入和输出。

谢谢赐教。

另外,想问一下,如何在skyeye中人为模拟产生硬件中断信号,比如CPU进入休眠状态,那么人为的在skyeye中模拟一个外部中断信号来将CPU唤醒,请问这个唤醒的外部中断如何在skyeye中模拟?

顶部
ksh
高级会员
Rank: 4


UID 92875
精华 1
积分 1447
帖子 736
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
发表于 2007-12-14 16:54  资料  短消息  加为好友  添加 ksh 为MSN好友 通过MSN和 ksh 交谈
1. 当前skyeye默认用键盘和终端来作为usart的模拟输入和输出。具体代码在device/uart/skyeye_uart_stdio.c
2. 在每一个开发板模拟代码中的io_do_cycle函数,如skyeye_mach_ep7312.c的io_do_cycle函数。设置中断标志,并且跳转PC到中断处理函数

顶部
北斗星君
注册会员
Rank: 2


UID 38171
精华 0
积分 333
帖子 138
阅读权限 20
注册 2003-5-18
来自 China
状态 离线
发表于 2007-12-15 17:29  资料  主页 短消息  加为好友 
可是我这边的代码无法被正常执行。

我的C代码如下

void app(void){
  long* USART_THR=(long*)0xfffd001c;
  long* USART_RHR=(long*)0xfffd0018;
  long* USART_CSR=(long*)0xfffd0014;
  long stat;
  while(1){
    stat=*USART_CSR;
    if(stat&0x001){
      *USART_THR='M';
    }
  }
  while(1);
  return;
}

我的skyeye的配置文件

#skyeye config file sample
cpu: arm7tdmi

mach: at91

mem_bank: map=M,type=RW,addr=0x01000000,size=0x00400000,file=app.bin,boot=yes
mem_bank: map=I,type=RW,addr=0xf0000000,size=0x10000000
log: logon=0,logfile=./sk1.log,start=0,end=200000

当我向用键盘输入时,什么也没反应。可是按照代码,我每次输入都应该输出一个M的。

顶部
ksh
高级会员
Rank: 4


UID 92875
精华 1
积分 1447
帖子 736
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
发表于 2007-12-17 10:27  资料  短消息  加为好友  添加 ksh 为MSN好友 通过MSN和 ksh 交谈
Please read helloworld example in this board.
http://www.linuxfans.org/bbs/thread-82187-1-1.html
You will get some idea from it.

顶部
北斗星君
注册会员
Rank: 2


UID 38171
精华 0
积分 333
帖子 138
阅读权限 20
注册 2003-5-18
来自 China
状态 离线
发表于 2007-12-20 20:55  资料  主页 短消息  加为好友 
那个我看过了,我的代码是按照手册上来的。应该没有问题的。

而且,我可以在屏幕上输出数据,但是,不能从键盘读数据

顶部
ksh
高级会员
Rank: 4


UID 92875
精华 1
积分 1447
帖子 736
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
发表于 2007-12-21 10:32  资料  短消息  加为好友  添加 ksh 为MSN好友 通过MSN和 ksh 交谈
Try to debug it. I also think that should not be the mistake of SkyEye. At least uCos and uClinux for at91 can run correctly on SkyEye.

顶部
北斗星君
注册会员
Rank: 2


UID 38171
精华 0
积分 333
帖子 138
阅读权限 20
注册 2003-5-18
来自 China
状态 离线
发表于 2007-12-22 22:33  资料  主页 短消息  加为好友 
调试过了,代码没有问题。那如果既不是我的问题,按照KSH的说法,也不是skyeye的问题~,那这个是谁的问题呢?
我觉得推卸责任不是解决之道,不知道KSH接下来是不是又要说,It maybe the matter of your computer,.....???

顶部
ksh
高级会员
Rank: 4


UID 92875
精华 1
积分 1447
帖子 736
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
发表于 2007-12-23 23:24  资料  短消息  加为好友  添加 ksh 为MSN好友 通过MSN和 ksh 交谈
I read the source code of skyeye and datasheet. There is two issues:
1. Perhaps RCR register need to be initialized before read data to RHR. Is it necessary? I am not familiar with the usart of AT91. There is a description related to it:
RXCTR must be loaded with the size of the receive buffer.

2. The implementation of SkyEye also is not incompletely. CSR is not set correctly.

Thanks your report.

[ 本帖最后由 ksh 于 2007-12-24 00:01 编辑 ]

顶部
ksh
高级会员
Rank: 4


UID 92875
精华 1
积分 1447
帖子 736
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
发表于 2007-12-23 23:59  资料  短消息  加为好友  添加 ksh 为MSN好友 通过MSN和 ksh 交谈
回复 #5 北斗星君 的帖子

I read the source code of skyeye and datasheet. There is two issues:
1. Perhaps RCR register need to be initialized before read data to RHR. Is it necessary? I am not familiar with the usart of AT91. There is a description related to it:
RXCTR must be loaded with the size of the receive buffer.

2. The implementation of SkyEye also is not incompletely. CSR is not set correctly.

Thanks your report.

顶部
 


Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国Linux公社 - WAP