yeahnix 发表于 2004-7-10 17:47:13

关于ucosii4skyeye-v1.8.4中usart.c

在ucosii4skyeye-v1.8.4的at91_usart.c中,
void at91_uart_get_char( char *ch )
{
        unsigned long status;

        long tmp;
        start_rx( usarts, ch, 1 );
        do
        {
                // must read 0xfffff100, status register to clear all flags !!!
                               这两行好象可以不用吧,我在skyeye0.6.8中测试,去掉是可以的,因为这个似乎是轮询方式,而不是中断吧。而且在中断的do_irq中读IVR时候由于是边沿触发中断,因该是自动清理了的。不太明白。在serial.c中好象是按中断方式处理的
                _io_read( (long*)0xfffff100, &tmp );
                _io_read( (long*)0xfffff108, &tmp );
                status = usarts->rcr;
        }
        while (status > 0);
}

chyyuu 发表于 2004-7-26 23:18:28

我让liming和yangye帮忙回答一下,已经给他们发信了!

yeahnix 发表于 2004-7-27 21:42:08

谢谢版主,
另,在LWIP地移植中,ne2kif.c-->
struct RTL8019if {
struct eth_addr *ethaddr;
/* Add whatever per-interface state that is needed here. */
};
struct eth_addr {
PACK_STRUCT_FIELD(u8_t addr);
} PACK_STRUCT_STRUCT;


void
ne2k_init(struct netif *netif)
{
struct RTL8019if *rtl8019if;

rtl8019if = mem_malloc(sizeof(struct RTL8019if));
//此处好像只分配了RTL8019if结构的指针
。。。。。
low_level_init(netif);

}
low_level_init(struct netif * netif)
。。。
//此处访问addr,好像addr并未分配,所以其值为0,从而覆盖了复位向量中断??
          rtl8019if->ethaddr->addr = mac_addr;
        rtl8019if->ethaddr->addr = mac_addr;
        rtl8019if->ethaddr->addr = mac_addr;
        rtl8019if->ethaddr->addr = mac_addr;
        rtl8019if->ethaddr->addr = mac_addr;
        rtl8019if->ethaddr->addr = mac_addr;

chyyuu 发表于 2004-7-27 23:12:30

答复

李明的答复:
at91_usart.c 里面的代码当时是从 linux 的源码中 copy 出来的,
应该都是用轮询的方式读取和发送串口数据。

    serial.c 的代码时间太长记不清楚了,好像是杨晔后来改为中断方式实现
的,
具体就需要看 at91 的 manual 了。


杨晔的答复:

Hi,li ming,

        嗯,是的,有个简单的isr来收字符的。我也记不太清楚了。他说的应该是对的,不用做轮询了。不过这不是skyeye的核心代码,而且也没什么影响的。
    他下面那个关于lwip驱动ne2k.c确实是一个bug,应该改过来。


-----------------
我们好久都没有看ucosii4skyeye了,谢谢你的贡献!
如果你有时间,是否可以帮忙修改一下?
如果你在ucosii-1.8.4山改好后,可以发给我(通过我的email),并告诉我你的名字等联系信息。

谢谢!

yeahnix 发表于 2004-7-31 13:18:35

谢谢版主,我上网不太方便,如果改好一定发过来

chyyuu 发表于 2004-8-12 18:39:21

改好了吗? 热切盼望!

yeahnix 发表于 2004-8-12 22:17:13

已经发过去了,不知道你收到没有,只改了一点点,只有几行代码,本来想用中断方式改改usart的接受驱动,比较麻烦,而且,serial.c中已经有了例子,就没有做了
页: [1]
查看完整版本: 关于ucosii4skyeye-v1.8.4中usart.c