I've just been able to dump GUI events from my 550D and identify some
codes from button presses. My findings are here:
http://magiclantern.wikia.com/wiki/GUI_Events/550D
Does anyone want to help? If yes, compile this version from my repo:
https://bitbucket.org/a1ex/magic-lantern/src/5cefa40dd254/
Event log is displayed on the screen and saved in the debugging log
(see http://magiclantern.wikia.com/wiki/Debugging_Magic_Lantern )
There are still some problems (and I don't know what is causing them,
neither how to fix them):
1) Sometimes, camera shuts down right after starting. It shows "Sensor
cleaning" and, on the same screen, the ML init strings.
2) When the camera starts, card light blinks a few times, but the
screen remains black. You can press DISP to turn it on.
3) Display corruption.
Code is in gui.c; I think there's a problem in gui_main_task_550d().
Thanks.
For this, you have to find the new stubs.
> --
> http://magiclantern.wikia.com/
>
> To post to this group, send email to ml-d...@googlegroups.com
> To unsubscribe from this group, send email to ml-devel+u...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/ml-devel?hl=en
... of course, I can't delete them any more :D ...
They are units of EFIC temperature. What that means is a mystery to
anyone outside of Canon...
I haven't tried to calibrate it against anything, but did notice that
the 5D will start flashing the red thermometer around 190. Clearly it
is not K, C, F or R, so my guess is it is a raw reading that needs some
scale factor applied.
--
Trammell
Also enabled bracketing (works well) and rack focus / stack focus
(seems to do something... but not what I'd expect).
Power management is now disabled when menu is created, and reverted
back to config setting when menu disappears. If camera shuts down when
menu is on, it won't wake up.
If you want to test this, compile it from my repo.
Great work, Alex, hats off.
Pete
> Well, with Indy's 109 stubs, and gcc 4.5.1, only two symbols were missing - AllocateMemory and FIO_RemoveFile
Those are essential for cropmarks and file logging.
To run it anyway, try these:
1) comment them in the stubs (to let the compiler help you)
2) Comment every FIO_RemoveFile (they are not essential, they just
avoid creating 2 files w/ the same name)
3) Comment AllocateMemory and disable cropmarks from config file
4) Use Indy's Makefile and take a look as his code changes, too.
Don't try to run anything with wrong stubs, as code may jump randomly
(and may even be dangerous!)
* remove: DebugMsg's placed in the overriden gui_main_task caused the
camera to restart randomly => commenting all of them was the solution
(thanks Indy for pointing this out!)
On Sat, Dec 11, 2010 at 1:01 PM, Piers <pie...@gmail.com> wrote:
> Well, I think regardless I'll be spending a little more time in the hg man
> page, and that's probably not a bad thing ... ;-)
>
There is a delay here, play with it:
CONFIG_INT( "zebra.delay", zebra_delay, 1000 );
What is the address of gui_main_task in 1.0.9? I've reversed a
function right from the assembly, and it might have changed a bit.
Those changes are required for menu.
NSTUB( 0xFF01FF94, gui_main_task ) // uses a 8 functions table compared to 5d2 204
After letting unhandled events back into camera GUI (i.e. not trying
to stop them, like the original code did), it's much better! At least,
I've tried to crash it for 5 minutes and didn't succeed :)
> gui_main_task
I'll check the gui related stubs, too.
NSTUB(0xFF06B270, AllocateMemory) // might be good
(dumps=1, score=13)
NSTUB(0xFF1C66F4, FIO_RemoveFile) // might be good
(dumps=1, score=1.5)
NSTUB(0xFF07A9A0, register_func) // might be good
(dumps=1, score=42)
NSTUB(0xFF06B600, free) // Good. Found
matches: ff06b600/67, ff0182cc/13
The two gui_main_task functions are identical. The DebugMsgs there do
caused blank screen and camera restarts, so comment them, too, i.e.
leave it like this:
static void gui_main_task_550d()
{
struct event * event = NULL;
int index = 0;
void* funcs[8];
memcpy(funcs, 0xff453de0, 32); // copy 8 functions in an array
gui_init_end();
while(1)
{
msg_queue_receive(gui_main_struct.msg_queue_550d, &event, 0);
gui_main_struct.counter--;
if (event == NULL) continue;
index = event->type;
if ((index >= 8) || (index < 0))
continue;
void(*f)(struct event *) = funcs[index];
f(event);
}
}
Attached is match.py output.
NSTUB(0xFF06B270, AllocateMemory) // might be good
(dumps=1, score=13)
NSTUB(0xFF1C66F4, FIO_RemoveFile) // might be good
(dumps=1, score=1.5)
NSTUB(0xFF07A9A0, register_func) // might be good
(dumps=1, score=42)
NSTUB(0xFF06B600, free) // Good. Found
matches: ff06b600/67, ff0182cc/13
The two gui_main_task functions are identical. The DebugMsgs there do
caused blank screen and camera restarts, so comment them, too, i.e.
leave it like this:
The other two are at the same address (look in the disassembly).
I will go ahead and study how firmware is analysed with the scripts so
that I'm ready to help when it happens :)
Pete
On 12/12/10 08:58, arm.indy wrote:
> Petr,
>
> There is no reason we can not port ML to 60d, let cross fingers.
> I'll have a 60d in hands early 2011.
> and an update is upcoming... http://www.canonrumors.com/2010/12/new-60d-firmware-coming/
>
> Indy
>