SuccessChanges

Summary

  1. QEMU: shared memory initialization for DIGIC 6 (MEMDIV messages) to try: SHM_SHOW_INFO / SHM_SHOW_DIST_INFO on serial console (only 80D, 750D and 760D reach this far) ( sleep 3; echo "akashimorino"; sleep 1; echo "SHM_SHOW_INFO"; sleep 1; echo "SHM_SHOW_DIST_INFO"; ) | ./run_canon_fw.sh 80D -serial stdio
  2. QEMU: refactored serial flash SIO handler with io_log
  3. QEMU: refactored serial flash connections to avoid hardcoding camera model names fixme: D3 models and 1300D still hardwired to serial flash handlers to pass the tests
  4. QEMU: experimental serial flash support for 80D using SFDATA.BIN from 70D, patched at 0x10004 from 09 8B C1 20 to 00 00 01 20 meaning: size of 70D's property block at 0x10000 is 0x12BC98 (data is shifted by 4 bytes) but 80D expects a maximum size of 0x12000 in FE47BF40 ("Liar Valid Packages!!" if the size check fails) so we trim the property block at the expected size of 0x12000 this will lose a few properties, but at least the emulation goes further (no SF dumper for D6 yet) other 8MB SFDATA.BIN patched in the same way should also work (700D, 650D, EOSM, 6D), but their data block at 0x10000 is larger, so more properties will be probably lost (not tested)
  5. QEMU: RomRead DMA for DIGIC 6, used for initializing property blocks (very similar to regular DMA, slightly different register offsets)
  6. QEMU: slow down UART input to work around race conditions (not exactly clean, but at least DryShell tests are now passing on all models)
  7. QEMU: fixed UART on DIGIC 6 (DryShell works!) fixme: tests are failing, but typing on the UI works fine note: DIGIC 4/5 emulation changed a bit (0xC0270000 was misinterpreted before)
  8. QEMU: found out why DIGIC 6 models were getting stuck at startup! The firmware was reading the memory layout from CP15 registers; most of them were emulated well in QEMU, except ATCM and BTCM, which were implemented as NOP. They are still NOP in current QEMU git. Patching the memory regions loop is no longer required! (keeping empty 80D patch for future use)
Changeset 16544:5154ad0cb505 by alex@thinkpad:
QEMU: shared memory initialization for DIGIC 6 (MEMDIV messages)<br>to try: SHM_SHOW_INFO / SHM_SHOW_DIST_INFO on serial console (only 80D, 750D and 760D reach this far)<br>( sleep 3; echo &quot;akashimorino&quot;;<br>&nbsp; sleep 1; echo &quot;SHM_SHOW_INFO&quot;;<br>&nbsp; sleep 1; echo &quot;SHM_SHOW_DIST_INFO&quot;;<br>) | ./run_canon_fw.sh 80D -serial stdio
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/eos/eos.h (diff)
The file was modifiedcontrib/qemu/tests/750D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/760D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/80D/calls-main.md5 (diff)
Changeset 16543:26d2dc2fc97c by alex@thinkpad:
QEMU: refactored serial flash SIO handler with io_log
The file was modifiedcontrib/qemu/eos/serial_flash.c (diff)
Changeset 16542:6774de542a47 by alex@thinkpad:
QEMU: refactored serial flash connections to avoid hardcoding camera model names<br>fixme: D3 models and 1300D still hardwired to serial flash handlers to pass the tests
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/eos/model_list.c (diff)
The file was modifiedcontrib/qemu/eos/model_list.h (diff)
Changeset 16541:652133663c39 by alex@thinkpad:
QEMU: experimental serial flash support for 80D<br>using SFDATA.BIN from 70D, patched at 0x10004 from 09 8B C1 20 to 00 00 01 20<br>meaning: size of 70D&#039;s property block at 0x10000 is 0x12BC98 (data is shifted by 4 bytes)<br>but 80D expects a maximum size of 0x12000 in FE47BF40 (&quot;Liar Valid Packages!!&quot; if the size check fails)<br>so we trim the property block at the expected size of 0x12000<br>this will lose a few properties, but at least the emulation goes further (no SF dumper for D6 yet)<br>other 8MB SFDATA.BIN patched in the same way should also work (700D, 650D, EOSM, 6D),<br>but their data block at 0x10000 is larger, so more properties will be probably lost (not tested)
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/eos/model_list.c (diff)
The file was modifiedcontrib/qemu/eos/model_list.h (diff)
The file was modifiedcontrib/qemu/eos/serial_flash.c (diff)
The file was modifiedcontrib/qemu/tests/80D/calls-main.md5 (diff)
Changeset 16540:442b6916bec5 by alex@thinkpad:
QEMU: RomRead DMA for DIGIC 6, used for initializing property blocks<br>(very similar to regular DMA, slightly different register offsets)
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/eos/eos.h (diff)
The file was modifiedcontrib/qemu/tests/5D4/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/750D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/760D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/7D2M/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/7D2S/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/80D/calls-main.md5 (diff)
Changeset 16539:44c8b3cf7ebe by alex@thinkpad:
QEMU: slow down UART input to work around race conditions<br>(not exactly clean, but at least DryShell tests are now passing on all models)
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/eos/eos.h (diff)
Changeset 16538:b97298434943 by alex@thinkpad:
QEMU: fixed UART on DIGIC 6 (DryShell works!)<br>fixme: tests are failing, but typing on the UI works fine<br>note: DIGIC 4/5 emulation changed a bit (0xC0270000 was misinterpreted before)
The file was modifiedcontrib/qemu/eos/eos.c (diff)
The file was modifiedcontrib/qemu/tests/100D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/1100D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/1200D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/550D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/5D3/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/60D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/650D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/6D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/700D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/70D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/EOSM/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/EOSM2/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/run_tests.sh (diff)
Changeset 16537:2b0b39ae12ed by alex@thinkpad:
QEMU: found out why DIGIC 6 models were getting stuck at startup!<br>The firmware was reading the memory layout from CP15 registers;<br>most of them were emulated well in QEMU, except ATCM and BTCM, which were implemented as NOP.<br>They are still NOP in current QEMU git.<br><br>Patching the memory regions loop is no longer required!<br>(keeping empty 80D patch for future use)
The file was modifiedcontrib/qemu/qemu-2.5.0.patch (diff)
The file was modifiedcontrib/qemu/scripts/5D4/patches.gdb (diff)
The file was modifiedcontrib/qemu/scripts/80D/patches.gdb (diff)
The file was modifiedcontrib/qemu/tests/5D4/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/5D4AE/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/750D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/760D/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/7D2S/calls-main.md5 (diff)
The file was modifiedcontrib/qemu/tests/80D/calls-main.md5 (diff)