DIGIC 8 'PowerShot' development (M50, SX70, SX740)

Started by dfort, April 21, 2018, 04:20:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

kitor

Quote from: jo.meatloaf on May 11, 2021, 12:03:20 PM
Is it possible to put this code on the M6 ​​mkII?

https://www.magiclantern.fm/forum/index.php?action=profile;area=showposts;u=87780

If you ask 10 more times in 5 more threads, maybe some miracle will happen. Until then - wait for information, and stop asking the same question over and over again.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

jo.meatloaf

Quote from: Walter Schulz on May 11, 2021, 12:56:41 PM
Actually no: M6 II is ours. Firmware file name: 6200111.FIR
you can link to the file, I want to check?


kitor

Quote from: kitor on May 07, 2021, 08:37:43 PM
Same stuff as EOS R and 200D: Menus, nothing more. Even funnier as if you open any submenu in ML menus and then exit to Canon GUI - a wild ERR70 appears.

(it may have something to do with messages on UART, seems that there's some memory leak?)
ERROR [MEM] Over Permanet Memory cache 48 17348

Just a tiny update - tested by @br - crash was due to bad _FreeMemory stub (I traced it on R after triggering it there too), it is fixed on dev already. The errors in UART log with typo included in ROM ( ;) ) are probably still there, as we play on the edge of tiny amount of memory that we can allocate right now.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

anykill

Do we have any test build?
Is there something working with ML on m50?
Thank you

kitor

No. Asking over and over again in thread with no replies won't change it.

I guarantee you that when we will have something to share, it will be a huge news. And it probably still won't do anything really useful except menus and some camera info.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

anykill

Thank you Kitor, you know... any news bad or good is news!

COMMANDES

I recently became the owner of the m50, so if I can help with testing - let me know)
Canon 650D, EOSM 2.02, M50 1.1.0

anykill

Do we have any develop going?
I have my M50 and I can help with something if needed...

lorenzo353

Hi,

Could you please run this script on Digic8 and Digic10 cameras?
https://discord.com/channels/671072748985909258/936696899120005230/944929235070484511

model_id : 0x80000453
rom version: 4.9.0
GetFirmwareVersion: 150
fw signature from 0xe0100000: 0x129372a8
fw signature from 0xe0040000: 0xce84b41f
at e0100000: 09480cee100fbff36f8f42f20000c0f20000854610eeb05f15f00f0001
at e0040000: cef81cc143f2300cddf81ce0cef820c14ef22e7cddf81ce0cef824c1dd



Quote from: coon on February 06, 2021, 03:21:04 PM
I am thinking about something like this (pseudo code):


dim model_name        = "Canon EOS RP"
dim firmware_version  = "1.6.0"
dim model_name_addr   = 0xe121d57c
dim firmware_ver_addr = 0xe00408e0

public sub check_compat()
    if model_name_addr == model_name and firmware_ver_addr == firmware_version then
        check_compat = 1
    else
        check_compat = 0
    end if
end sub


That way the code would self document for what model the script is for. I Just need to find a way to do a strncmp in canon basic for that.

kitor



I guess this is the final confirmation?

SX740 HS indeed runs what appears (at least on surface) very similar to regular EOS ROM.
Looks like it have 1GB RAM. No MPU (everything handled on ICU)
Interface is stretched vertically from 3:2 (720x480) into 4:3 (640x480), thus it looks a bit odd (vertical scaling ratio 8/9).
Interesting is that it doesn't have raw photo capabilities at all (in the firmware).
Also, it seems to have ROM0 only (32MB)

Unfortunately that photo marks my first case in a long time where semi-broken device ended up worse in my hands than it arrived.
It was slightly water damaged - lens was making high pitched noises. Both aperture and IS ribbons just snapped in half when I attempted to disassemble it ::)
Thus right now it just gets ERR60 if booted in regular mode...

If you have a broken SX740 (SX730 might work as it seems they might just updated the pcb) that lens is still intact, please contact me on priv - we may make a deal.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

kitor



So far firmware is very similar to EOS R. SX740 runs DryOS +p3, while R/RP does use +p4.

In fact I was able to use compositor code that so far I thought was R specific (RP and later have more sane implementation by Canon).
Code is "so much EOS" that it has all the regular lens info structures even though this is point and shoot with fixed lens.

I even found (and successfully poked) some GUI dialogs from R that should not exists here, but this requires a bit more research.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

kitor

CR3 raw from SX740  8)



Caveats:
- RAW only works, RAW+JPG L crashes
- Canon code is confused as it has no settings for RAW modes at all, and screams on UART when it is enabled.
- File opens fine in Windows preview (including actual RAW render), RawTherapee (missing EXIF data) and http://exif.regex.info/exif.cgi (EXIF data only)
- File does not open in Lightroom/Photoshop.

To work properly it will most likely require us to understand MMU and patch a ROM in a few places (to make it "understand" RAW).

Right now this can be achieved by

GUI_SetImgComposition(1,0,6,3,4); // set RAW only for card1
GUI_SetImgComposition(2,0,6,3,4); // set RAW only for card2


This is C code, I won't share stub (it is easy to find) since we have no idea what are the consequences of leaving camera in that state (other than a ton of debug messages logged).
Thus don't ask how to run that on camera. If you don't know how to do it, you most probably shoudn't try in this state.

If anyone want to dig into cr3 file, here it is: https://kitor.pl/eos/sx740/sx740_raw.cr3

One can reset settings to JPG by just opening menu and setting back to JPG.

===

On the other notes I have a lot of Digic 8 ML code working on SX740, but also have a nasty crash that I can't trace yet. Thus for now it lives on branch in my fork.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

kitor

Quote from: kitor on March 26, 2022, 09:52:02 PM
On the other notes I have a lot of Digic 8 ML code working on SX740, but also have a nasty crash that I can't trace yet. Thus for now it lives on branch in my fork.

It is always a stub. This time FreeMemory was bad. PR opened, including unsafe CR3 experiment. Merged to dev branch.

Since Names_are_hard is experimenting with MMU and ROM patches, it may become safe(ish) in near future.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

c_joerg

Quote from: kitor on March 26, 2022, 09:52:02 PM
If anyone want to dig into cr3 file, here it is: https://kitor.pl/eos/sx740/sx740_raw.cr3
What focal length was this done with?

Quote from: kitor on March 26, 2022, 09:52:02 PM
- File opens fine in Windows preview (including actual RAW render),
Interesting. I also see the preview image first and after about 3s the RAW data are probably interpreted. I then get wrong colors and the lens correction disappears.

Ever tried to copy the EXIF data from the JPG to the CR3 with EXIFTOOL?


EOS R

kitor

7mm from EXIF should be about right, as it was quite wide and lens is 4.3-172mm.

No, I had no time to dig into that RAW more. Most likely it needs a rom patching in a few places to get it right.
Like enabling CR3+JPG gives ERR70 after a shot attempt, which is for sure code hitting some assert.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

c_joerg

EXIFTOOL shows 71mm.
Adobe DNG Converter shows a parising Error

Update:
Do you see all this E70 with CamInfo_Debug?
EOS R

kitor

No idea, unfortunately now I don't have a lot of time to do any development stuff, I just took the small opportunity I had to upstream SX740/R5 work.

If you have SX740, you can try yourself - code is already on dev branch of magiclantern_simplified repo. I don't remember what params needs to be set to GUI_SetImgComposition to enable JPG+RAW. But I found a partial crash log on Discord, and it was indeed an assert:
    10806:  36140.093 [SHTD] ERROR SemTimeOut SetJpegDispEncodePathForRawJpeg
    10807:  36140.144 [STARTUP] ERROR ASSERT : Warp::ShtDevCommon.c
    10808:  36140.323 [STARTUP] ASSERT : Task = ShootEncodeSub
    10809:  36140.330 [STARTUP] ASSERT : Core 0
    10810:  36140.334 [STARTUP] ASSERT : Line 125
    10811:  36140.338 [STARTUP] ASSERT : bFlag
    10812:  36140.346 [STARTUP] < StackDump >


QuoteEXIFTOOL shows 71mm.
Windows shows 7mm, see my screenshot / "Długość ogniskowej" = Focal Length. Though other parameters doesn't make any sense, like 60s expo... yes, for sure.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

c_joerg

I don't have a SX740 and didn't want to have an SX anymore but with CR3 support I would think about it again...

Yes my window shows 7mm as well and EXIFTOOL Focal Length  : 71.45 mm
ISO800 and Exposure Time  1/60s is same on windows and EXIFTOOL (and f4)
EOS R

kitor



Back in the PowerShot land. This time SX70 HS. It runs runs DryOS +p4 like R/RP.
But the code is more RP alike - new "high" gui modes, XCM implementation that is used on RP onwards.

I still have to trace possibly a bad stub - it doesn't recognize it is in LV, FEATURE_SHOW_FREE_MEMORY hard locks when entering free memory menu, FEATURE_GLOBAL_DRAW hard locks after a few seconds from boot.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

kitor

Turns out that "Powershot" based models don't have MPU but use small Cortex M0 instead. At least on SX70 and SX740, I don't have a good photo of M50 to confirm.
But there seems to be a visually matching chip, SD slot side, bottom right corner if SD slot is facing down.
M17M6, 36 pin XFBGA -> https://www.nxp.com/docs/en/data-sheet/KL17P64M48SF2.pdf

Today I desoldered DIGIC and that Cortex M0 from my water damaged SX70 HS board.
https://twitter.com/_kitor/status/1656369031383773188

With some measurements I was able to identify about 1/2 of the pins.
It doesn't seem to have any UART output.

Interesting ones: Power, Play and WiFi buttons go to Cortex M0, not ICU. This makes sense as both can wake up the camera.
However INFO button also goes to M0. Reason is unknown.


pin  where?         signal    (mode)
A1
A2
A3
A4  to DIGIC        SPI0_MISO (alt2)
A5  to DIGIC        SPI0_SCLK (alt2)
A6  to DIGIC        SPI0_PCS0 (alt2)
B1
B2
B3
B4  to DIGIC        SPI0_MOSI (alt2)
B5
B6
C1
C2  button Play     PTE16     (alt1)
C3                  VDD
C4                  GND
C5
C6  at DNE chip     I2C0_SDA  (alt2)
D1
D2
D3  VDDA
D4  GND
D5  at debug conn   RESET     (default)
D6  at DNE chip     I2C0_SCL  (alt2)
E1
E2
E3
E4  button Power    PTA2      (alt1)
E5  at debug conn   SWD_IO    (default)
E6  at crystal      EXTAL_0   (default)
F1  button INFO     PTE23     (alt1)
F2
F3  at debug conn   SWD_CLK   (default)
F4  button WIFI     PTA1      (alt1)
F5
F6  at crystal      XTAL_0    (default)  @crystal
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

far.in.out

Hello guys. Do you think that any success is possible with R100?
EOS M (was 600D > 50D)

kitor

Get me an R100 and I'll tell you.
But I'm fairly sure it uses newer DryOS that first appear on R3 and locks out our entry methods.
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

far.in.out

I am sure that when the R100 is available we can all donate a small amount to buy one for you devs to try it.
Do you think that R100 has a chance to become "the new EOS M"?
It looks like it is one of the most affordable newer cams so it might get popular.
EOS M (was 600D > 50D)

kitor

QuoteIt looks like it is one of the most affordable newer cams so it might get popular.
That's your opinion. I heard a variant of that about every single model.

QuoteDo you think that R100 has a chance to become "the new EOS M"?
EOS M is overhyped. R100 seems to be crap sensor with relatively good CPU.
If we ever get to the state where R100 will make any sense, M50 will probably be much better and cheaper 2nd hand.

Quotewe can all donate a small amount to buy one for you devs to try it.
Also you are clearly not familiar with our latest status update if you think ML will pop out of nowhere for just released Digic 8 model.
https://www.magiclantern.fm/forum/index.php?topic=26852.0
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.