sd200/ixus30

  • 60 Replies
  • 16949 Views
*

Offline jetzt

  • ****
  • 316
  • [A710IS,(SD200)]
  • Publish
    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 »

  • Publish
    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)]
  • Publish
    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)]
  • Publish
    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
  • Publish
    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)]
  • Publish
    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
  • Publish
    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)]
  • Publish
    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
  • Publish
    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)]
  • Publish
    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