这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 求教一个ARM9200 VXWORKS网口启动的问题!

共8条 1/1 1 跳转至

求教一个ARM9200 VXWORKS网口启动的问题!

菜鸟
2005-08-17 19:22:30     打赏

我bootrom启动运行信息如下:

boot device : atemac
unit number : 0
processor number : 0
host name : host
file name : vxWorks
inet on ethernet (e) : 192.168.0.44
host inet (h) : 192.168.0.43
user (u) : target
flags (f) : 0x0
target name (tn) : targetname

Attached TCP/IP interface to atemac0.
MII_CTRL_REG: 0x3300
MII_STAT_REG: 0x7809
MII_AN_ADS_REG: 0x01E1
MII_AN_PRTN_REG: 0x0000
DM9161_STAT_REG: 0xF000
Warning: no netmask specified.
Attaching network interface lo0... done.
Loading...

到这里以后就没有反映了,过一段时间以后就出现load fail err0x3C

我跟进去看,是在bsdconnect函数中调用ksleep函数,里面semTake了一个socks的信号量,一直没有释放,程序在那里挂起了.....谁知道这个信号量应该是在什么时候释放啊?




关键词: 求教     一个     ARM9200     VXWORKS     网口         

菜鸟
2005-08-17 23:20:00     打赏
2楼

如果要判断问题是出在什么地方的话,还需要哪些信息?

我跟踪进去看了,程序是在autoboot函数中调用netload函数,在netload中调用rcmd函数来建立连接,在rcmd中调用connect函数来建立连接,最后到了bsdconnect中,在bsdconnect中,bsdSockargs函数已经正确调用,套接字已经正确获得了成员变量参数,紧接着soconnect被调用,返回值正常.但是再往后走,到了ksleep这个函数的时候就不能返回了,任务被挂起,跟进去看,里面semTake了一个socks的信号量,一直没有释放,程序在那里挂起了?

现在我的疑惑就是semTake的这个信号量是在什么时候被释放的?

ksleep函数的源代码如下:

void ksleep (semId)
SEM_ID semId;

{
BOOL hadSplSem;

/* first see if we've got the network semaphore (splSemId);
* if so, give it, and then take it back when we are awakened.
*/

hadSplSem = (splTid == (ULONG) taskIdCurrent);
if (hadSplSem)
{
splTid = 0;
semGive (splSemId);
}

semTake (semId, WAIT_FOREVER); //就是在这里信号量没有被释放出来,引起任务挂 起

if (hadSplSem)
{
semTake (splSemId, WAIT_FOREVER);
splTid = (ULONG) taskIdCurrent;
}
}

任务被挂起以后,EMAC不断有中断产生,我查看了EMAC的中断状态寄存器,发现TCOM位和RTRY位为高,也就是说不断有重试超过上限的中断产生.是什么事件引起重试的呢?

[align=right][color=#000066][此贴子已经被作者于2005-8-17 15:23:03编辑过][/color][/align]

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

板子是我们自己的,不是外面买的.网口物理芯片用的是DM9161.


菜鸟
2005-08-18 16:49:00     打赏
4楼

我们的板子是在文亭的开发板的基础上修改的,如果需要,我可以把我现在的网口驱动发个给你,能帮我看看错是出在什么地方吗?


菜鸟
2005-08-18 23:00:00     打赏
5楼

我的end driver就包括了处理emac的中断的,文件已经发到你的信箱了,收到的话说一声.我也感觉应该是我的中断服务子程序出了问题,但是以前我从来接没有做过嵌入式的网口驱动,只能根据官方的linux的SDK来试着写,写出来的东西自己真的是一点把握也没有.


菜鸟
2005-08-25 21:06:00     打赏
6楼

我看你的bootrom引导参数,使用的是tftp加载vxworks,而不是ftp。

你是这样做的吗?

此外,我想请教:如何把bootrom写到flash中?我现在有fft ice硬件,和multi-ice, sdt软件。

能够连上fft ice。但目标板的内存好像不能正常使用,是不是需要一些设置?如果是,该如何设置呢?

对了,也是9200板子。

[align=right][color=#000066][此贴子已经被作者于2005-8-25 13:07:27编辑过][/color][/align]

菜鸟
2005-08-30 01:20:00     打赏
7楼

我就是用的TFTP加载的,但是现在connect不上.

我烧写FLASH用的是BDI2000,在使用之前需要对BDI2000写一个针对ARM9200的配置文件.在配置文件中可以以脚本的形式告诉ICE你在启动芯片的时候需要做哪些事情,比如一些寄存器的设定、内存初始化等等。


菜鸟
2005-08-30 01:31:00     打赏
8楼
现在我使用网卡的状况是,load函数成功调用了,但是到后来的connect的地方就被挂起了,也就是connect 不通。在ifShow里面能看到加载了END,但是ping不通。

共8条 1/1 1 跳转至

回复

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