Pretty sure I'm above it though.
NSFW wrote:If you can get the factory OS code to load both kernels into their address space and run (respond to a message, or maybe just send a heartbeat message periodically) then it should also be possible to get either kernel to load the other.
And those addresses are: Kernel at FF8000 and Mini at FFB800.Gampy wrote:Both kernels work stand alone at the addresses used to load them both.
NSFW wrote:If you haven't already, you'd probably have to remove a bunch of code to make one small enough to fit two copies.
Kernel binary is 7,894 bytes in size.Gampy wrote:I've tried, loading mini above and below kernel.
Mini binary is 529 bytes.
Map files for those interested.
In the following log, note the value in red, that says, 'SendWriteSuccess(command);' in 'HandleWriteMode36()' responded.NSFW wrote:If not I'd look for bugs in the code that loads the 2nd kernel.
That is display only, it's not breaking it, it is only to prove the code runs at least to that point ...
All that is left at that point is,[01:59:20:548] Loaded T:\Automotive\PcmHacks\PcmInterrogator\PcmInterrogator\PcmInterrogator\bin\Debug\MKernel-FFB800.bin
[01:59:20:548] Sending upload request for kernel size 529, loadaddress FFB800
[01:59:20:548] Requesting permission to upload kernel.
[01:59:20:563] Setting timeout for ReadProperty, 25 ms.
[01:59:20:563] TX: AT ST 06
[01:59:20:579] OK
[01:59:20:579] TX: STPX H:6C10F0, R:1, D:34000211FFB800
[01:59:20:610] RX: 6C F0 10 74 00
[01:59:20:610] Found response, Success
[01:59:20:610] Upload permission granted.
[01:59:20:626] Going to load a 529 byte kernel to 0xFFB800
[01:59:20:626] Setting timeout for SendKernel, 50 ms.
[01:59:20:626] TX: AT ST 0C
[01:59:20:626] OK
[01:59:20:626] Sending end block payload with offset 0x0, start address 0xFFB800, length 0x211.
[01:59:20:626] Sending 'test device present' notification.
[01:59:20:626] Setting timeout for Minimum, 0 ms.
[01:59:20:626] TX: AT ST 01
[01:59:20:642] OK
[01:59:20:642] TX: STPX H:8CFEF0, R:0, D:3F
[01:59:20:657] Setting timeout for SendKernel, 50 ms.
[01:59:20:657] TX: AT ST 0C
[01:59:20:673] OK
[01:59:20:735] TX: STPX H:6D10F0, R:1, L:538
[01:59:20:751] TX: 36800211FFB800 ... wacked for brevity ... ACB1
[01:59:21:298] RX: 6D F0 10 76 82
[01:59:21:298] Found response, Success
[01:59:21:298] Kernel upload 100% complete.
[01:59:21:298] Kernel uploaded to PCM succesfully...
[01:59:21:313] Setting timeout for ReadMemoryBlock, 250 ms.
[01:59:21:313] TX: AT ST 3E
[01:59:21:313] OK
[01:59:21:313] Sending 'test device present' notification.
[01:59:21:313] Setting timeout for Minimum, 0 ms.
[01:59:21:313] TX: AT ST 01
[01:59:21:329] OK
[01:59:21:329] TX: STPX H:8CFEF0, R:0, D:3F
[01:59:21:345] Setting timeout for ReadMemoryBlock, 250 ms.
[01:59:21:345] TX: AT ST 3E
[01:59:21:360] OK
Code: Select all
LongSleepWithWatchdog();
// Execute if requested to do so.
if (command == 0x80)
{
EntryPoint entryPoint = (EntryPoint)start;
entryPoint();
}