Ixus55 / SD 450 Port: First Steps, first problems ...

  • 5 Replies
Ixus55 / SD 450 Port: First Steps, first problems ...
« on: 03 / February / 2008, 17:17:53 »
Hi all,

after getting the firmware dump for the Ixus 55 (version 1.00B and 1.00C) I made the first steps towards porting CHDK. I have set up a corresponding Wikia-Page here. On this page you can find the current status of the ixus55 source-tree. I have started by adjusting all the firmware dependend stuff in platform/ixus55/sub and was able to find all of the underlying subroutines in the firmware dump. Since my last contact with assembler code was in the early eighties (6502 processor ;-) someone should check if this made sense ...

Anyway, after loading the resulting firmware into the camera I could see the CHDK startup-screen but then nothing much happenend:
  • Most keys are non-functional: Only the LEFT key leads to some kind of strange "blinking" of the screen and Zoom-Left shows some kind of rectangle on the screen(could be a part of the histogram window). I have no possibility to enter ALT-mode and startup a menu.
  • When I switch to Capture-Mode the firmware dies completely

Since recently much work was done porting the Ixus 40, Ixus 65 and Ixus 70, I started all the kbd.c routines I could find but  only the kbd.c from the recent Ixus 70 port lead to a successful start of the firmware. All variations made the firmware die even earlier. Is is really necessary to introduce firmware dependent kbd-routines into the platformsub-folder as in the Ixus407SD300 port? I was hoping that the Ixus 65 and Ixus 70 would be similar enough to be able to use a simpler routine.   Any ideas or suggestions about the best stategy to continue? I think I am a bit stuck at the moment ...

Thanks and best regards
- 3DBruce


Offline ewavr

  • ****
  • 1057
  • A710IS
Re: Ixus55 / SD 450 Port: First Steps, first problems ...
« Reply #1 on: 03 / February / 2008, 18:05:14 »
Quick look to IXUS55 1.00B keyborad routine:
it is very similar to a610-a620 with its:
void kbd_fetch_data(long *dst)
    volatile long *mmio1 = (void*)0xc0220204;
    volatile long *mmio2 = (void*)0xc0220208;

    dst[0] = 0;  // maybe not required
    dst[1] = *mmio1;
    dst[2] = *mmio2 & 0xffff;

(compare to sub_FF82777C). So, you can as an example use kbd.c from A610-620 (keyboard map may differ).
« Last Edit: 03 / February / 2008, 18:09:57 by ewavr »

Re: Ixus55 / SD 450 Port: First Steps, first problems ...
« Reply #2 on: 04 / February / 2008, 14:36:30 »
Hi ewavr,

thanks for your reply! Unfortunately using the kbd.c from a620 also results in the "immediate death" of the firmware even before the startup screen is displayed. Is there a more efficient way to debug the code without using the LED to output some kind of heartbeat?

Best regards
- 3DBruce

Re: Ixus55 / SD 450 Port: First Steps, first problems ...
« Reply #3 on: 09 / February / 2008, 05:36:48 »
Hi all,

got a small step further: The shutdown of the firmware was a result of bad keymap values (don't know which ones yet, because I am still too stupid to debug ... ;-).

Anyway, now after using the kbd.c from A620 (thanks again for the hint ewavr ;-) and fiddling around with the keymap values, CHDK loads and I see a battery symbol. Also a few keys are working already (I can swith on a histogram for example) but I am not able to get into <ALT> mode. Is there a more sytematic way to get to the correct keymap values? Can these values be found in the firmware dump somewhere?

Thanks for any hints.

Best regard
- 3DBruce

Re: Ixus55 / SD 450 Port: First Steps, first problems ...
« Reply #4 on: 09 / February / 2008, 07:04:19 »
okok, I just found the debug_vals_show flag in the coding. Now at least I know whats within physw_status. I just have to understand the rest of the kbd.c stuff to translate that into the corresponding keymap values. Shouldn't take too long hopefully...

Re: Ixus55 / SD 450 Port: First Steps, first problems ...
« Reply #5 on: 10 / February / 2008, 15:22:09 »
Big step forward: Keyboard is working now. The correct keymap was found easily after analyzing kbd.c in some detail. I am now able to get into <ALT> mode, set debug parameters etc. However, the camera still crashes when I go into record mode.  One reason for this might be that the Property Cases are not recognized correctly. When I use "Show Propcases" from the debug menu I do not see any changes at the 0 position, when I move th switch from Play into Movie mode (it then crashes when I come to the Photo mode position).

Any ideas where I could look next? The address of Get/SetPropertyCase in stubs_entry.S seems to be correct ...


Related Topics