调试 vxworks loadModule 失败
debugging vxworks loadModule failure
我在 MPC5200B 上有一个没有文件系统的 VxWorks 图像项目,使用 DIAB 工具链。
我需要从闪存中动态加载一个模块。
我在堆栈上分配了内存char myTemporaryModuleData[MAX_MODULE_SIZE]
并用来自 Flash 的模块数据填充它。
(已检查二进制数据是否完好)
然后我创建一个 memDevice('/mem/mem01', myTemporaryModuleData, moduleReadLength)
打开伪流 int fdModuleData = open("/mem/mem01", O_RDONLY, 777);
当我 运行 int mId = loadModule(fdModuleData, LOAD_ALL_SYMBOLS);
在 运行ning loadModule();
之后在控制台中没有看到任何东西
但是 mId = 0
表示失败:(.
getErrno() 返回 0x3D0004 (S_objLib_OBJ_TIMEOUT)
注意:没多久就失败了 => 超时?
我尝试用一个简单的 void foo() { printf(...); }
模块替换模块,但仍然因同样的问题而失败。
尝试加载 .out
而不是 .o
不幸的是,我一无所获,
我怎么知道是什么导致它失败? (日志,last_error,我应该检查什么?)
找到了。
显然是从flash中读取的数据有误
我可以贡献的是 'loadModule()' 来自 memDrv 设备是可能的并且可以工作。
我在 MPC5200B 上有一个没有文件系统的 VxWorks 图像项目,使用 DIAB 工具链。
我需要从闪存中动态加载一个模块。
我在堆栈上分配了内存char myTemporaryModuleData[MAX_MODULE_SIZE]
并用来自 Flash 的模块数据填充它。
(已检查二进制数据是否完好)
然后我创建一个 memDevice('/mem/mem01', myTemporaryModuleData, moduleReadLength)
打开伪流 int fdModuleData = open("/mem/mem01", O_RDONLY, 777);
当我 运行 int mId = loadModule(fdModuleData, LOAD_ALL_SYMBOLS);
在 运行ning loadModule();
之后在控制台中没有看到任何东西
但是 mId = 0
表示失败:(.
getErrno() 返回 0x3D0004 (S_objLib_OBJ_TIMEOUT)
注意:没多久就失败了 => 超时?
我尝试用一个简单的
void foo() { printf(...); }
模块替换模块,但仍然因同样的问题而失败。尝试加载
.out
而不是.o
不幸的是,我一无所获,
我怎么知道是什么导致它失败? (日志,last_error,我应该检查什么?)
找到了。 显然是从flash中读取的数据有误
我可以贡献的是 'loadModule()' 来自 memDrv 设备是可能的并且可以工作。