notebook 发表于 2012-2-14 10:22:51

RTT报错时 The error code is -1 这The error code 有没有说明呀,未找到

RT
以此为类
To initialize device:e0 failed. The error code is -1。请问有无错误说明。此现象是错于何处?
谢谢了

aozima 发表于 2012-2-14 10:25:08

RT_EOK定义处。 -1 是什么意思由你的 e0 的初始化程序决定。

notebook 发表于 2012-2-14 10:29:49

谢谢aozima
经常在RTT版块发现你的踪影

notebook 发表于 2012-2-14 15:01:56

谢谢
解决了

aozima 发表于 2012-2-14 15:15:07

回复【3楼】notebook
解决了
-----------------------------------------------------------------------
“解决了”对N年后搜到这个贴子的人来说基本没啥帮助。

应该把
“To initialize device:e0 failed. The error code is -1。”
的原因和解决方法解释清楚(主要是过程)。

甚至有可能看起来是解决了,但你的思路和作法可能并不是最优的。
看起来是帮助了别人,其实是帮了自己。

welcome_cool 发表于 2012-2-14 16:17:49

最鄙视的就是提问,解决了,也不说出方法的。

notebook 发表于 2012-2-14 17:02:13

别鄙视呀
明天上午我来写个详细呀

notebook 发表于 2012-2-15 09:10:49

#define RT_EOK              0                /* There is no error      */
#define RT_ERROR              1                /* A generic error happens        */
#define RT_ETIMEOUT   2                /* Timed out                 */
#define RT_EFULL              3                /* The resource is full        */
#define RT_EEMPTY       4                /* The resource is empty        */
#define RT_ENOMEM              5                /* No memory                */
#define RT_ENOSYS              6                 /* No system                  */
#define RT_EBUSY              7                /* Busy                         */
以上报错信息都是定义在“rtdef.h”利用串口可以查看RTT的报错信息。

我的问题主要是   To initialize device:e0 failed. The error code is -1。

1;首先在工程里查找 “e0”所在的位置。共两处:          
         即   eth_device_init(&(dm9000_device.parent), "e0");       
                eth_device_init(&(enc28j60_dev->parent), "e0");       
      我仅定义使用DM9000,所以重点查找DM9000的情况;
2;接下来我查找是在哪里报错所在地        “The error code is”查找到两处
                                 rt_err_t rt_device_init_all()
                                 rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflag) ;
                           判断是初始化,重点查找谁调用rt_err_t rt_device_init_all(),同时设断点查看是否报错信息来源于
                           rt_err_t rt_device_init_all();并确认。


3;找到何处调用 rt_err_t rt_device_init_all(),查看其前面初始化什么设备,发现是rt_hw_dm9000_ini();
   验证之前的e0这个信息,重点调试此段初始化过程。结合硬件发现是初始读取ID与DM9000不符合,发现是FSMC部分IO未初始化。


过程如此   非常同意四楼的说法及建议,并且经常对别人作出的问题进行耐心解答,再一次感谢你的奉献精神

【4楼】 aozima
积分:2106
派别:
等级:------
来自:张家界
回复【3楼】notebook   
解决了
-----------------------------------------------------------------------
“解决了”对N年后搜到这个贴子的人来说基本没啥帮助。

应该把
“To initialize device:e0 failed. The error code is -1。”
的原因和解决方法解释清楚(主要是过程)。

甚至有可能看起来是解决了,但你的思路和作法可能并不是最优的。
看起来是帮助了别人,其实是帮了自己。   


至于五楼的同志,你别动不动就鄙视,别人也有时间分配问题。

sanger 发表于 2014-12-1 10:09:39

感谢楼上的,对我确实有帮助{:handshake:}
页: [1]
查看完整版本: RTT报错时 The error code is -1 这The error code 有没有说明呀,未找到