Hello,
I am using IPNC 3.0 on DM8148.
I am having a problem where large (>40MB) C674x executables are failing to load. After digging in I found myself in OsalKfile.c in OsalKfile_read. This gets called to read each of the memory sections and copy them to the proper memory locations. The failure is occurring because fileObject->fileDesc->f_op->read is returning a -14 (EFAULT). Every where I read that this means that the use buffer is invalid.
In this particular instance it is trying to read 4191232 bytes (1 block) from ./firmware/ipnc_rdk_fw_c6xdsp.xe674 at offset 64 into virtual address 0xCC800000 which is mapped to 0x8E400000 which is the address of the code section of the DSP region. This region is 12MB in size.
When I use smaller executables this seems to work fine (data still gets copied to 0x8E400000).
All other sections copy fine, it is just this one that does not work.
To test if it was the size of the read that was the issue I inserted a hack that changed the read size to 1 byte right before the read function gets called. It still failed. I then tried hard coding the address of the buffer to a section that gets used earlier AND set the size to 1. It STILL failed. To me this means that the destination buffer and the size are not the problem. However I do not know what else COULD be the problem.
Any idea why the read function would fail to read the section?
Thanks,
Ben