sd200/ixus30 - Firmware Dumping - CHDK Forum

sd200/ixus30

  • 60 Replies
  • 36822 Views
*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
sd200/ixus30
« on: 11 / February / 2008, 14:40:24 »
Advertisements
HI,
I'm trying now to dump firmware for this model (sd200/ixus30). I added something on the wiki.
But as I'm ahm ... I tried to use the blinker.rar code from here
and just cut some stripes into main.c, that's my rest:
Code: [Select]
void DisableInterrupts()
{
    asm(
         "MRS     R1, CPSR\n"
         "AND     R0, R1, #0x80\n"
         "ORR     R1, R1, #0x80\n"
         "MSR     CPSR_cf, R1\n"
:::"r1","r0");
}

void __attribute__((noreturn)) Restart();
void __attribute__((noreturn)) shutdown()
{
    volatile long *p = (void*)0xc02200a0;

    DisableInterrupts();

    *p = 0x44;

    while(1);
}

/*
int GetPhysicalSwitchRAW(int key)
{
    volatile long *p = (void*)(0xc0220000 + (key&0xffff));
    return *p;
}
*/

void idle()
{
    int i;

    for(i=0;i<0x78800;i++){
asm ("nop\n");
asm ("nop\n");
asm ("nop\n");
asm ("nop\n");
    }
}

#define LED_AF 0xc0220080
#define LED_PR 0xc0220084

void led_on()
{
    volatile long *p=(void*)LED_PR;
    *p=0x46;
}

void led_off()
{
    volatile long *p=(void*)LED_PR;
    *p=0x44;
}


void panic()
{
    volatile long *p=(void*)LED_PR;
    p[0]=0x46;
    idle();
    shutdown();
}


int main()
{
    volatile long *p;
    long i, b, t, r, j;

    idle();

    p=(void*)0xc02200e0;
    *p=0x46;

    idle();

    //shutdown();
}

Could someone please organize my head a bit? ::)
Or simply tell me whrere the camara starts to run?
What does entry.S do?

---- Well a change to:
Code: [Select]
for(p=(void*)0xc0220080;p<0xc02200ff;p++){
    *p=0x46;
 }
Ok silly as I am I forgot that 0xc0220080 is a better start address.
Now all LEDs light up.
What start address shall I use for dumping? ::)
And, right, I shouldn't post before I tried everything at least 16 times, until 15 bugs are the only problem, tanks in advance.
« Last Edit: 11 / February / 2008, 15:09:19 by jetzt »

Re: sd200/ixus30
« Reply #1 on: 12 / February / 2008, 14:13:36 »
Hi,
the correct start adress for the Ixus models should be 0xFF810000. (I know because I used the wrong start adress of 0xFFC00000 in my first attempts to dump the firmware of the Ixus 55 / SD 450 ;-)

Good luck!
- 3DBruce
 

*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
Re: sd200/ixus30
« Reply #2 on: 13 / February / 2008, 08:16:12 »
Hi, just searched my electronics room, but I could only find a BPW34 photodiode,
no phototranstor, is this one also able to be connected to the mic-in (5V) without any damage?
Which direction?

Edit: BPW 34  seems to work, but only in wrong direction.
« Last Edit: 15 / February / 2008, 07:57:12 by jetzt »

*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
Re: sd200/ixus30
« Reply #3 on: 14 / February / 2008, 14:49:29 »
I've done some tests right now, but there is a problem with the decodeing:
I can't compile the adc.c or dec.c form here blinker.rar myself.
But that's necessary to get the information of that raw file I attached.[1.raw]
I tool it with audacity and 44100 Hz sample frequency.
and the following settings:
  #define DELAY_SYNC   400
  #define DELAY_SPACE  100
  #define DELAY0       100
  #define DELAY1       200
Could anybody help me here, 96000 Hz doesn't work for me, at least the raw file [2.raw] isn't really nice to look at.
yes, both files are only a small part, I wanted to make sure that it works before doing the whole thing.
1.zip - 8.28MB
2.zip - 1.02MB
I also attached the screen shot of audacity, hope that this can help you to help me. :D




*

Offline GrAnd

  • ****
  • 916
  • [A610, S3IS]
    • CHDK
Re: sd200/ixus30
« Reply #4 on: 14 / February / 2008, 15:51:43 »
2 jetzt:
Adjusted adc.exe and dec.exe is attached.
I used 1.raw as sample. And it has some errors. For example, the following byte has 13 bits :blink::


So, I've got some Sync Errors and therefore some blocks failed.
« Last Edit: 14 / February / 2008, 16:17:11 by GrAnd »
CHDK Developer.

*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
Re: sd200/ixus30
« Reply #5 on: 15 / February / 2008, 08:02:40 »
Thanks again, very much indeed.
I will try to dump it this evening. Then I'll desturb you again. :)

How long will it take?
« Last Edit: 15 / February / 2008, 08:04:24 by jetzt »

*

Offline GrAnd

  • ****
  • 916
  • [A610, S3IS]
    • CHDK
Re: sd200/ixus30
« Reply #6 on: 15 / February / 2008, 08:55:29 »
How long will it take?
It depends on the delays you chose for the blinker.
CHDK Developer.

*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
Re: sd200/ixus30
« Reply #7 on: 15 / February / 2008, 09:13:51 »
(OK should take 2,3 hours, as I earn 46kb in 3,2 mins.)

I get these sync errors again, and two fails, but why? light conditions didn't change, ...
I started recording, then camera...

Oh seems to be not as simple as I thought, but I think that's only because of my little knowledge :(

Here are the logs, the dump_part and the blinkers main.c.
(And a picture of my quick and dirty assembly.)

Edit: If I understood it right, that's equal, but recording was set to 48000 Hz now.

« Last Edit: 15 / February / 2008, 09:17:30 by jetzt »


*

Offline GrAnd

  • ****
  • 916
  • [A610, S3IS]
    • CHDK
Re: sd200/ixus30
« Reply #8 on: 15 / February / 2008, 11:24:24 »
I get these sync errors again, and two fails, but why? light conditions didn't change, ...
I have no idea. But from the waveform I mentioned above it looks like an error during recording (software or hardware skipped some part of input signal).


BTW. Why you can't compile adc/dec binaries? You compiled the blinker, so you have the working environment installed. Does not just the command 'gcc -o adc.exe adc.c' compile the source?
« Last Edit: 15 / February / 2008, 11:56:18 by GrAnd »
CHDK Developer.

*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
Re: sd200/ixus30
« Reply #9 on: 15 / February / 2008, 12:09:40 »
Ok thanks, you're right, I only tried gmake, should beat myself up for this. ??? gcc -o works
Shows how experienced I am, but if you're spoilt with .net and c#...

And, should I care about these sync errors, when I get data like that data I attached?
I can imagine that this question will sound a bit stupid for you, but I wouldn't ask if I knew it better.

Last error seems to be clear for me: I aborted again.


« Last Edit: 15 / February / 2008, 15:31:28 by jetzt »

 

Related Topics