Getting modules working on 7D

Started by Pelican, August 06, 2013, 12:44:11 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Pelican

Quote from: a1ex on August 05, 2013, 03:35:20 PM
For porting raw_rec, just look at how the others did for 50D, 550D, 60D and pretty much all other cameras except 5D3.

So we need to find these stubs:

NSTUB(0xFF1F5360, SetEDmac)
NSTUB(0xFF1F5660, StartEDmac)
NSTUB(0xFF1F5864, PopEDmac)
NSTUB(0xFF1F5418, ConnectWriteEDmac)
NSTUB(0xFF1F54DC, ConnectReadEDmac)

NSTUB(0xFF1F5850, RegisterEDmacCompleteCBR)
NSTUB(0xFF1F5878, RegisterEDmacAbortCBR)
NSTUB(0xFF1F5980, RegisterEDmacPopCBR)
NSTUB(0xFF1F5864, UnregisterEDmacCompleteCBR)
NSTUB(0xFF1F58B8, UnregisterEDmacAbortCBR)
NSTUB(0xFF1F5994, UnregisterEDmacPopCBR)

Is it enough?
The PopEDmac and the UnregisterEDmacCompleteCBR function's address are the same in most of the stub files. Is it correct?
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

Pelican

I put #define CONFIG_EDMAC_MEMCPY to 7D.203/internals.h and compiled 7D autoexec.bin
I'm trying to compile the raw_rec module... but still get this Will NOT load warning:

[ MODULE   ]   raw_rec.mo
[ STRIP    ]   raw_rec.mo
[ EXPORTS  ]   raw_rec.sym
[ DEPENDS  ]   raw_rec.dep
Will load on:
    500D, 50D, 550D, 5D2, 5D3, 600D, 60D
Will NOT load on:
    1100D (focus_box_get_raw_crop_offset, edmac_copy_rectangle_start, edmac_copy_rectangle_finish, and 14 others)
    6D (FIO_SeekFile)
    7D (edmac_copy_rectangle_start, edmac_memcpy_res_lock, edmac_memcpy_res_unlock, edmac_copy_rectangle_finish)
Not checked (compile ML for these cameras first):
    100D, 40D, 5DC, 650D, 700D, EOSM
[ GCC      ]   raw2dng
[ GCC      ]   raw2dng
[ GCC      ]   raw2dng

What other define is missing or what am I doing wrong?

When I try to load the module in the 7D I get error:
tcc: error: undefined symbol 'edmac_memcpy_res_unlock'
tcc: error: undefined symbol 'edmac_memcpy_res_lock'
These are defined in edmac_memcpy.c and inside these functions there is CONFIG_ENGINE_RESLOCK which define only for 5D3 and 6D so they are empty but they are there.
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

Audionut

Do you need specific edmac read and write chan in edmac-memcpy.c?

/** keep the old name until all are refcatored **/
NSTUB(0xFF1C4798, EDMAC_RegisterCompleteCBR)


That's missing from the 7D stubs.  Does it need it?

Pelican

Quote from: Audionut on August 06, 2013, 11:33:50 AM
/** keep the old name until all are refcatored **/
NSTUB(0xFF1C4798, EDMAC_RegisterCompleteCBR)


That's missing from the 7D stubs.  Does it need it?
I haven't found any reference to it so I think none of the stub files need it.
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

Thomas Worth

I was having a problem with this same error when compiling for the 7D. If I added edmac-memcpy.o to /src/Makefile.src it compiled without any problem. See here: http://www.magiclantern.fm/forum/index.php?topic=7561.0

The only problem I'm having now is when CONFIG_MEMCHECK = y is enabled in Makefile.user.default. If I enable this, compilation fails with a "conflicting types" error: http://www.magiclantern.fm/forum/index.php?topic=7593.0 If I comment out the prototype in memcheck.h, compilation completes but I just get a black screen on the camera. If don't enable CONFIG_MEMCHECK, everything works file but I can't get RAW recording to work.

Pelican

Now I've compiled ML and raw_rec but can't really use...

[ MODULE   ]   raw_rec.mo
[ STRIP    ]   raw_rec.mo
[ EXPORTS  ]   raw_rec.sym
[ DEPENDS  ]   raw_rec.dep
Will load on:
    500D, 50D, 550D, 5D2, 5D3, 600D, 60D, 7D

EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

Thomas Worth

Did you compile with CONFIG_MEMCHECK = y? Did you not get an error about conflicting types? You seem a little farther along than me, even though I can get the raw module to load.

Thomas Worth

Also, I can actually get the raw options, but since I can't compile with CONFIG_MEMCHECK enabled, recording fails.

Pelican

Quote from: Thomas Worth on August 10, 2013, 05:59:06 PM
Did you compile with CONFIG_MEMCHECK = y? Did you not get an error about conflicting types? You seem a little farther along than me, even though I can get the raw module to load.
No, I put CONFIG_MEMCHECK=n
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

Thomas Worth

Quote from: Pelican on August 10, 2013, 06:00:47 PM
No, I put CONFIG_MEMCHECK=n
So the module loads, but you can't record? Can you get to the raw recording menu where you pick a resolution, etc?

Pelican

I can record in the smallest resolution but increasing the resolution quickly drops all the frame...


Edit:

Oh, I'm so stupid I'm playing with an old 512MB CF card... which has 4.9 MB/s write speed...
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

John Kesl

Hi,
Just tested the raw_rec.mo
I am using a lexar 800x (UDMA7). 7D
1728x978 @ 23.976 1:78 ratio = 107 frames. All corrupted by a stripe of magenta error on the bottom 10th of the frame.
1600x680 @ 23.976 2.35:1 ration = 149 frames . Same corruption

Looks as if the camera is buffering first then writing to card. So the buffer fills and dumps.

Pelican

Which raw2dng did you use to extract the frames?
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

ted ramasola

Quote from: Pelican on August 10, 2013, 08:59:52 PM
Which raw2dng did you use to extract the frames?

same error as john.

It seems the buffer is used first. there is "data corruption" error on the LV screen when the buffer is transfered to card.
The behavior of capturing then writing look like burst mode.

I can also see the corrupted frames via file browser on cam. I did not yest convert via raw2dng.

Tested in different resolutions same error.

even in crop mode same error.

cf card i'm using is a lexar 1000X
5DmkII  / 7D
www.ramasolaproductions.com
Texas

szigiszmund

960x540 and under continuous recording without problems
over this resolution record a few frames and all corrupt
card used 60mbit sandisc

codypowers

Am I the only one getting no preview during recording?

Pelican

Quote from: codypowers on August 10, 2013, 10:10:15 PM
Am I the only one getting no preview during recording?
No preview here too.
Max continuous resolution is 1280x582 but 1280x640 is only fill the buffers once.
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

ted ramasola

Quote from: szigiszmund on August 10, 2013, 10:04:31 PM
960x540 and under continuous recording without problems
over this resolution record a few frames and all corrupt
card used 60mbit sandisc

confirmed this. 960 x 540 continuous ok. higher res corrupt. 1000x lexar

edit.

yes, also confirmed 1280 x 582 continuous ok. liveview preview ok.
5DmkII  / 7D
www.ramasolaproductions.com
Texas

codypowers

1600 x600 is fully continuous and the files look good.  For some reason even some lower resolutions corrupt in other aspect rations.  Using a Sandisk Extreme 60 MB/s

Pelican

Quote from: ted ramasola on August 10, 2013, 10:14:52 PM
confirmed this. 960 x 540 continuous ok. higher res corrupt. 1000x lexar
How do you check if corrupt or not?
For me the grayscale preview doesn't show any corruption.
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

szigiszmund

if you remove cf card after shooting down camera end you left camera in movie mode,it wold refuse to start again.
battery need to be removed.

codypowers

When it corrupts, it says so on the screen right away, and after the buffer is filled, it writes it to the card afterwards, and reads that each frame is corrupt as it writes it.  Every time it writes a corrupt frame, it beeps.

Pelican

Quote from: codypowers on August 10, 2013, 10:17:53 PM
1600 x600 is fully continuous and the files look good.  For some reason even some lower resolutions corrupt in other aspect rations.  Using a Sandisk Extreme 60 MB/s
1600x600 is too much for the Trascend 400x but 1600x534 is continous too...
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.: http://pel.hu/down

ted ramasola

Quote from: Pelican on August 10, 2013, 10:19:05 PM
How do you check if corrupt or not?
For me the grayscale preview doesn't show any corruption.

while recording it wont show corruption. when recording stops, screen show
"data corruption  shot xxx" while writing to cf and beeping sounds.

upon viewing via file browser or last shot via playback frames show noise bottom 1/3 of all frames.

also

when pressing 10x magnify to the screen locks up. I switch to photo LV then back to video LV to unfreeze screen.


edit 1472 x 926 is continuous ok.
5DmkII  / 7D
www.ramasolaproductions.com
Texas

codypowers

Quote from: Pelican on August 10, 2013, 10:22:17 PM
1600x600 is too much for the Trascend 400x but 1600x534 is continous too...

Strange how higher res at some aspect ratios works better than lower res at others...