这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 郁闷,vxWorks问题一大堆

共3条 1/1 1 跳转至

郁闷,vxWorks问题一大堆

菜鸟
2005-08-27 05:23:58     打赏

不知是不是网络驱动不对(8019参照ne2000修改的),调试的时候板子经常连不上主机。
唯一一次连上并成功下载映象(其中有一个闪烁LED的task)(速度只有平均50k/s)后,
TASK正确运行,但TARGET SERVER却好像出了问题,不能和TARGET AGENT相连。
target server name(xxx.xxx.xxx.xxx@xxx) already in use

target server will exit

在这个错误之前我是启动过TARGET SERVER 但是好像出了什么错误一下子就关掉了,之后再开就是这个错误。

然后超级终端出现这个错误后就再没什么提示了,

0xc7a884c (tWdbTask): WDB exception, restarting agent in 10 seconds...

请问这个0xc7a844c所在的内存区域vxWorks用来干吗的?
System Memory Pool?
vxWorks不是load到RAM_LOW_ADRS和RAM_HIGH_ADRS中运行么?
我板子上是44b0,0xc000000->0xc7fffff为RAM,一共8Mbyte
是不是vxWorks会把copy到RAM_HIGH_ADRS后的bootrom(我这里是copy到0xc500000)
以后的空间都用作SYSTEM MEMORY POOL来用?
以上我遇到的错误可能由什么原因引起的呢?

还有,bootrom转起来后总是没有供我输入字符的光标,这是为什么呢




关键词: 郁闷     vxWorks     问题     一大堆    

菜鸟
2005-08-27 23:40:00     打赏
2楼

是的NE2000END不用修改

至于你说得没有光标让你输入 我也不清楚是怎么回事!!

·!·!`


菜鸟
2005-08-28 18:52:00     打赏
3楼

我用的是s3c44b0,因为板子上与8019的地址线连接有错位,所以稍微修改了ne2000End.h,然后在syslib.c中添加了sysInbyte,sysOutbyte,sysInstring和sysOutstring这个几个函数的定义,就修改了这么多,都是参照Amine的,代码如下,请高手们帮我看看:

1) ne2000End.h中,因为44b0地址线与8019错开一位,44b0的ADRS1->8019的SA0,所以所有8019的寄存器地址左移一位,

#define NE2000_BASE ((volatile unsigned char *)(0x06000600))/*这是我的8019的开始地址*/
#define NEADDR(addr) (addr<<1)

2) ne2000End.c中就用了上面定义的NEADDR(addr),其他没有改动。

3) sysLib.c中添加了8019的初始化代码和上面提到的四个函数实现:

static void rtl8019_init(void)
{
UCHAR regVal;
/* Entering Page 0 */
*(NE2000_BASE + ENE_CMD) = CMD_STOP | CMD_PAGE0;

/* 1st: Reset the rtl8019as */
*(NE2000_BASE + ENE_RESET) = *(NE2000_BASE + ENE_RESET);
loopDelay(500);
/* 2nd: Polling INTSTAT\'s ISTAT_RST bit, if it is 1, then reset success, quit the loop */
regVal = *(NE2000_BASE + ENE_INTSTAT);
while ( (regVal & ISTAT_RST) == 0){}

/* i) Entering Page 3 */
*(NE2000_BASE + ENE_CMD) = CMD_STOP | CMD_PAGE3;
/* ii) Set CONFIGx */
*(NE2000_BASE + ENE_9346CR) = 0xCF;
/* iii) CONFIG1: IRQEN, IRQ = INT0, Select I/O = 300H */
*(NE2000_BASE + ENE_CONFIG1) = 0x80;
/* iv) CONFIG2 = 0 */
*(NE2000_BASE + ENE_CONFIG2) = 0x00;
/* v) CONFIG3: Disable PnP, Full-Duplex, and LEDs */
*(NE2000_BASE + ENE_CONFIG3) = 0x50;
/* vi) Disable write to CONFIGx */
*(NE2000_BASE + ENE_9346CR) = 0x0F;

}

unsigned char sysInByte (unsigned long port)
{
return (REG8(port));
}
void sysOutByte (unsigned long port, unsigned char data)
{
REG8(port) = data;
}
void sysInWordString (unsigned long port, unsigned short *pData, int count)
{
int i, byte_count; char *pbyte;

pbyte = (char *)pData;
byte_count = count*2;
for(i=0; i<byte_count; i++){
*(pbyte) = REG8(port);
pbyte++;
}
}
void sysOutWordString(unsigned long port, unsigned short *pData, int count)
{
int i, byte_count; char *pbyte;

pbyte = (char *)pData;
byte_count = count*2;
for(i=0; i<byte_count; i++){
REG8(port) = *(pbyte);
pbyte++;
}
}

其他的都没有修改,问题大概都出在上面的这些代码里喽?

还有我在configNet.h里是这样定义的:

IMPORT END_OBJ * ne2000EndLoad (char *, void *);
END_TBL_ENTRY endDevTbl [] =
{

#ifdef INCLUDE_NE2000_END
{ 0, ne2000EndLoad, "0x06000600:0x18:0x18:1:0:2", 1, NULL, FALSE },
#endif /* INCLUDE_NE2000_END */

#ifdef INCLUDE_SNGKS32C_END
{ 0, SBCARM7_LOAD_FUNC_0, SBCARM7_LOAD_STRING_0, SBCARM7_LOAN , NULL, FALSE},
#endif /* INCLUDE_SNGKS32C_END */
#ifdef INCLUDE_SNGKS32C_HDLC_END
{ 1, SBCARM7_LOAD_FUNC_1, SBCARM7_LOAD_STRING_1, SBCARM7_LOAN , NULL, FALSE},
{ 2, SBCARM7_LOAD_FUNC_2, SBCARM7_LOAD_STRING_2, SBCARM7_LOAN , NULL, FALSE},
#endif /* INCLUDE_SNGKS32C_HDLC_END */
{ 0, END_TBL_END, NULL, 0, NULL, FALSE},
};


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]