EDMAC (was Re: CHDK UI version 2.0 ?) - page 4 - General Discussion and Assistance - CHDK Forum supplierdeeply

EDMAC (was Re: CHDK UI version 2.0 ?)

  • 32 Replies
  • 10592 Views
Re: EDMAC (was Re: CHDK UI version 2.0 ?)
« Reply #30 on: 16 / September / 2017, 16:56:57 »
Advertisements
Or to create a sigfind util that takes one firmware found signature address, and uses that to find it in the target firmware.
Somewhat off topic but CHDK-PT had that ability.  I'm pretty sure its author was the only one ever to actually use is.
« Last Edit: 16 / September / 2017, 17:22:56 by waterwingz »
Ported :   A1200    SD940   G10    Powershot N    G16

*

Offline Ant

  • ****
  • 444
Re: EDMAC (was Re: CHDK UI version 2.0 ?)
« Reply #31 on: 16 / September / 2017, 17:13:57 »
uote]I see in the M3/100a case, many strings with "safari", these are not present in my disassembly of 100f.
I suspect this is Servo Autofocus made using FPGA. Not sure Powershots have this function.

Quote
Probably with more effort I could find a few more...I don't know.
It sure would be nice to understand how to modify sigfinder. Is there a document on this? Or to create a sigfind util that takes one firmware found signature address, and uses that to find it in the target firmware.
Unfortunately CHDK doesn't have most great features unlike ML(raw video, shutterless photos, dual iso). So EDMAC functions are not used.

Quote
But the edmac_struct is not used in edmac_info.c as yet.
I uploaded wrong file. For EOS M3 fw101a there should be:
Code: [Select]
unsigned int edmac_get_base(unsigned int channel)
{
if (channel > 47) return 0xC0F04000;
return *(int*)(0xFC6AF930 + 4 + channel*12);
}

unsigned int edmac_get_connection(unsigned int channel, unsigned int direction)
{
    unsigned int addr = 0;
   
    if(direction == EDMAC_DIR_READ)
    {
        unsigned int dest_chan = 0;
        unsigned int edmac_num = channel & 0x0F;
       
        if ( channel < 0x2F ){
            dest_chan = channel - 0x19;
        }
        else
        {
            dest_chan = channel + 0xD2;
        }
       
        unsigned int pos;
        for(pos = 0; pos < 47; pos++)
        {
            addr = 0xC0F05000 + pos ;
            unsigned int dst = shamem_read(addr);
           
            if(dst == dest_chan)
            {
                return pos;
            }
        }
       
        return 0xFF;
    }
    else
    {
        if ( channel >= 8 )
        {
            addr = 0xC0F051E0 + (4 * channel);
        }
        else
        {
            addr = 0xC0F05000 + (4 * channel);;
        }
    }
    return shamem_read(addr);
}
But this is still not clear. Waiting for ML progress...

Re: EDMAC (was Re: CHDK UI version 2.0 ?)
« Reply #32 on: 16 / September / 2017, 19:35:04 »
ah! found some of reyalp's docs for sigfinder....

http://chdk.wikia.com/wiki/Finsig_thumb2

 

Related Topics