0

我有一个 VxWorks Image Project 项目,在MPC5200B上没有文件系统,使用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);
后在控制台中没有看到任何内容loadModule();
mId = 0表明失败:(。
getErrno() 返回 0x3D0004 (S_objLib_OBJ_TIMEOUT)

注意:失败并没有花很长时间=>超时?

  1. 我尝试用一​​个简单的void foo() { printf(...); }模块替换模块,但仍然因同样的问题而失败。

  2. 尝试加载.out而不是.o

不幸的是,没有什么让我无处可去,
我怎么知道是什么导致它失败?(日志,last_error,我应该检查什么?)

4

1 回答 1

0

找到了。显然,这是从闪存读取的数据错误。

我可以贡献的是来自 memDrv 设备的“loadModule()”是可能的并且可以工作。

于 2019-07-19T19:38:33.053 回答