Hi, just wanted to give a quick intro. I'm a Magic Lantern dev (probably the most active current dev?), and I've finally got around to making an account here. I'll try not to be annoying, please let me know if I'm breaking community rules etc. I have I suppose a medium level of experience, I started on ML about 3 years ago. I have a strong background in C, x86 asm, and general reverse engineering, but ARM was new to me.
I'll probably mostly lurk and sometimes borrow code for ML. I wanted to be able to post relevant ML breakthroughs here, when I guess there might be stuff CHDK could use in what we find or make.
=== ML Digic 6, 7, 8 (X) support ===My repo:
https://github.com/reticulatedpines/magiclantern_simplified/commits/devMost of my work is trying to get ML working on more recent cams - without breaking old cams. Quite a lot has changed and some old ML code assumes behaviour that is universal on Digic 4 and 5 but doesn't work on 6 and up. Still, we are making progress and have working ML GUI on at least 6 different models (we understand the boot process well enough on D678X cams, and these all use XIMR rendering too). I made a stable, but very feature restricted release for 200D recently.
I have integrated srsa's MMU proof of concept code and made the necessary changes to support the existing ML APIs for patching (not unpatching yet, that's more work). Thanks srsa! It's as thread / core safe as I know how to make it (cpu0 commands cpu1 to wfi sleep, does the MMU table and mem patches, then uses a custom interrupt handler to wake cpu1 which updates its tables).
=== Qemu ===I pulled qemu building out of the ML repo, and made a separate repo. This makes contributing changes much simpler, and should make it easier for CHDK to use, I guess? Qemu-eos should be independent of CHDK or ML, it should be for the hardware layer. Feel free to raise PRs, issues etc if anyone is interested in adding powershot etc support for additional cams.
I updated from qemu 2 to 4. Qemu 2 is unsupported by upstream. It's difficult to build purely because of its age. If you hit problems, fixes may exist but you'd have to backport. Qemu 4 is a lot more recent and uses their modern QOM. It's more efficient for per-instruction monitoring / tampering and fixes some general ARM bugs. Sadly it became unsupported while I slowly got it closer to feature parity with qemu-eos 2 (lots of internal Qemu changes that needed fixes). I'm hoping another update to 7 will be not as painful (7 is closer to 4 than 4 is to 2: they changed version numbering scheme).
https://github.com/reticulatedpines/qemu-eos/tree/qemu-eos-v4.2.1General tooling lives here (if CHDK people are interested in making qemu-eos more "cross platform" I should do some re-naming):
https://github.com/reticulatedpines/qemu-eos/tree/qemu-eos-v4.2.1/magiclanternI'm currently working on making a better regression testing system via qemu, so I can make more aggressive changes to ML and qemu code, with reasonable confidence I'm not breaking support for old cams.
=== general stuff ===In case CHDK project isn't aware, a1ex has been absent from ML world for over a year now. Last I heard he's doing fine but is taking a possibly permanent break from ML work. This is bad, we've lost a lot of experience and knowledge, and the official repo is de facto unmaintained now. I want to get my repo good enough re support for old cams and new that it can become a replacement. There's a long way to go, and lots for me to learn, but it's improving.
If CHDK world has ideas or suggestions for how I could help you, perhaps changes to ML or qemu-eos repo structure, I'd be interested. No problems if not, I am quite limited in available time anyway
But the offer is there!
Cam list: M, 200D, 750D, 850D, G15