[NTLK] Einstein on Android

Matthias Melcher mm at matthiasm.com
Sun Feb 5 14:31:54 EST 2017


> The binary stubs in Drivers/TSerialChipVoyager.cp actually seem to be in place, but nothing in ExecuteSerialDriverNative is called. Instead we get the "missing resources" error when we try to open a serial port. So this may be a missing hardware register or whatever. Gosh, I am so mad at myself! 

So, after stepping through the code, the function InitializeCommHardware() is called very *very* early in the game. If I see this right, it is called before the REx had a chance to link in the drivers for our own serial emulation code. InitializeCommHardware() then calls the ROM code for creating the serial ports, which fuddles around with DMA and interrupt, eventually failing and returning an error code that states that this resource does not exist.

It is not clear to me how and when the REx starts to patch the drivers into the system, and if that can be done before InitializeCommHardware() is called. Or maybe the current drivers are not installed at all?

The call order is:

InitializeCommHardware()
InitializeCommManager()
TLoader::TheMain()
TForkWorld::TaskMain()
TUTaskWorld::TaskEntry(unsigned long, unsigned long)
etc.




More information about the NewtonTalk mailing list