read_bootflag = (ft_read_bootflag)0xFFFF8AE0;https://bitbucket.org/coutts/5dplus/src/e486f2e53796/bootdisk.c (https://bitbucket.org/coutts/5dplus/src/e486f2e53796/bootdisk.c)
write_bootflag = (ft_write_bootflag)0xFFFF89F0;
MOVEQ R7, #0xF8000000which is assembled and looks like this in memory:
0x03A0733E
ROM:FFFF89F0 STMFD SP!, {R4-R8,LR}If you were scanning memory, these 5 instructions would look like this(starting at 0xFFFF89F0 on the left and ending on 0xFFFF8A00 on the right):
ROM:FFFF89F4 MOV R5, R1
ROM:FFFF89F8 MOV R4, #0
ROM:FFFF89FC CMP R0, #0
ROM:FFFF8A00 MOVNE R7, #0xF8000000
0xE92D41F0 0xE1A05001 0xE3A04000 0xE3500000 0x13A0733E
ROM:FFFF8AE0 STR LR, [SP,#var_4]!And in memory would look like this (same thing as before, starting at 0xFFFF8AE0 on left and ending at 0xFFFF8AF0 on the right):
ROM:FFFF8AE4 CMP R0, #0
ROM:FFFF8AE8 MOVNE R3, #0xF8000000
ROM:FFFF8AEC ADDNE R3, R3, #0x2000
ROM:FFFF8AF0 MOVNE R2, #0x40
0xE52DE004 0xE3500000 0x3E33A013 0x12833A02 0x13A02040Note: there isn't a STMFD (push) instruction in read_bootflag. The 400d bootloader is like this too, so chances are the 40d is as well.
coutts, thats some very helpful information and should probably go into the wiki!should be more than enough to get any port started :)
I used the information provided by Coutts to flash both LEDs.great job! Let's get the 40d port on its way :)
See the examples:
1_1000D LED Finder (https://bitbucket.org/coutts/1000d_dev/src/a7835d17602f/engelmarkus_examples/1_1000D%20LED%20Finder/)
2_1000D LED-Dumper (https://bitbucket.org/coutts/1000d_dev/src/a7835d17602f/engelmarkus_examples/2_1000D%20LED-Dumper)
These are the addresses of blue and red LEDs:
LED_RED 0xC02200E0
LED_BLUE 0xC02200E8
great job! Let's get the 40d port on its way :)
Next step: copy/paste boot code into entry.S like the 5dc one. copy enough of the boot code until you can hook a task.
For initial hacking you may want to refer to 5dplus:
https://bitbucket.org/coutts/5dplus
great job! Let's get the 40d port on its way :)
Next step: copy/paste boot code into entry.S like the 5dc one. copy enough of the boot code until you can hook a task.
For initial hacking you may want to refer to 5dplus:
https://bitbucket.org/coutts/5dplus
My next steps are:you must boot the firmware first. you cannot call file i/o until it has been initialized by VxWorks. now that you can run autoexec.bin, you can boot the firmware :)
1) find the addresses of the functions Open, Write and Close;
2) create BL & ROM dumps.
you must boot the firmware first. you cannot call file i/o until it has been initialized by VxWorks. now that you can run autoexec.bin, you can boot the firmware :)
Coutts I understand but how do I boot VxWorks?! ...
My apologies if the question is basic! ;)
I've been to see the entry.S 5DC but still seems to me very complicated.
How do you know the sequence of function calls to boot.
I studied multitasking, but on the VxWorks I only know the name: (
How do I use AUTOEXEC.BIN to start the VxWorks?! ...
Can I use the functions DEBUGMSG and dump before starting VxWorks?
As a test, see if you can make your entry.S jump execution to FF810000 and see if the camera boots like normal.
304: 591.053 < GUI Lock > InitializeGUILock (PUB)
305: 592.017 [GUI] MasterResultCBR
306: 592.224 [GUI] GUI_Initialize ClassID[21]GUI[23]Ctrl[24]
307: 593.033 [GUI] -> handleGuiInit
308: 598.963 [DispCon] InitializeDisplayDeviceController (PUB)
309: 600.121 [IMP] (PUB) InitializeImagePlayer 1113
310: 601.818 [CERES] RegisterAdapterStatusCallback
311: 607.638 [Graphics] GuiStartGraphics (PUB)
312: 608.057 [IMP] (PUB) StartImagePlayer(mode=0) 1189
313: 608.094 [IMP] CreateVram 665
330: 684.874 [Graphics] GuiClearImage
331: 684.933 [IMP] (PUB) SetVramInformation(w:720 h:240) 1291
332: 684.997 SetImageVramParameter x:0 y:0 w:720 h:240/* Aspect:0*/
333: 685.032 [IMP] (PUB) SyncroAllClearImagePlayWorkVramWithoutEngine 2644
334: 685.052 [IMP] GetVramNumber 580
335: 685.072 [IMP] GetVramNumber 580
336: 716.486 [IMP] (PUB) RefreshImageVram 1597
337: 716.519 [IMP] GetVramNumber 580
338: 716.765 [IMP] GetVramNumber 580
339: 716.791 [IMP] GetVramNumber 580
340: 716.823 [GUI] StopDateTimer
341: 716.852 [GUI] ClearColorPalette (0)
342: 716.924 [GUI] GUI_RegisterPropertySlave
343: 724.367 [GUI] MasterResultCBR_AvailableMyMenuList(0x79594c)
344: 724.618 [GUI] MasterResultCBR_ErrBattery(0x79599c)
345: 725.033 [DP]Dp_GetGlbRegisterCbrTAdr()
346: 725.182 [DP]Dp_GetGlbRegisterCbrTAdr()
347: 725.645 [GUI] GUI_SetLanguage (15)
Sounds good.
Point the camera to something recognizable and dump roughly 1MB from the VRAM address to confirm it.
Another way to find VRAM buffers: look for EDMAC registers. In digic 4, these are c0f04008, c0f04108 ... c0f04f08, then c0f26008, c0f26108 etc. One of those registers should point to the LiveView buffer.
//~ dump memory 64kb at a time using a buffer.
void dump_with_buffer(int addr, int len, char* filename)
{
FIO_RemoveFile(filename);
FILE* f = FIO_CreateFile(filename);
if (f!=-1)
{
int address = addr;
while (address<addr+len)
{
char buf[0x10000];
memcpy(buf, (void*)address, 0x10000);
FIO_WriteFile(f, buf, 0x10000);
address += 0x10000;
}
FIO_CloseFile(f);
}
}
NSTUB(0xFFD4F17C, CreateTaskClass);
NSTUB(0xFFD4EE48, CreateStateObject);
NSTUB(0xFFB04634, DpImgEditState_CreateStateObject);
NSTUB(0xFFB06DC4, DpState_CreateStateObject);
NSTUB(0xFFBB0A2C, TOMState_CreateStateObject);
NSTUB(0xFFC7F9E0, USBC20State_CreateStateObject);
NSTUB(0xFFBB7DFC, CeresState_CreateStateObject);
NSTUB(0xFFB72BEC, PtpDpsState_CreateStateObject);
NSTUB(0xFF84BD74, RMTState_CreateStateObject);
NSTUB(0xFFB57FC4, FSSState_CreateStateObject);
NSTUB(0xFFC86AFC, PropState_CreateStateObject);
NSTUB(0xFFB618B8, RDState_CreateStateObject);
NSTUB(0xFFB3D088, LVCDEVState_CreateStateObject);
NSTUB(0xFFB3BC98, LVCAFState_CreateStateObject);
NSTUB(0xFFB3A554, LVCAEState_CreateStateObject);
NSTUB(0xFFB32CB8, LVState_CreateStateObject);
NSTUB(0xFFBFDB18, FWState_CreateStateObject);
NSTUB(0xFFBFB9A8, FRState_CreateStateObject);
NSTUB(0xFFBF0B6C, MrkState_CreateStateObject);
NSTUB(0xFFB56580, FCSState_CreateStateObject);
NSTUB(0xFFBAE9D8, SdioTskState_CreateStateObject);
NSTUB(0xFFBD5564, FMNormalState_CreateStateObject);
NSTUB(0xFFD5CEA4, DMState_CreateStateObject);
Yay!
http://a1ex.bitbucket.org/ML/states/40D-alt/index.html
Some functions named automatically with my scripts: http://a1ex.magiclantern.fm/bleeding-edge/40D.111.idc
Try to dump from MEM(0x7768), size MEM(0x7764), while you are in LiveView. If successful, we can record MJPEG video :)
51722: 13249.867 [DispCon] TurnOnDisplay (PUB)
51723: 13266.642 [LV] lvSetPsave 0x0
51724: 13267.371 [LV] LV_GetPtpZoomWindowArea IX=1560(16384), IY=1038(0)
51725: 13267.404 [LV] LV_GetPtpZoomWindowArea CX=0, CY=0
51726: 13268.004 [LV] lvSetWbIntegRegisterForAe 1
51727: 13268.045 [LV] StartLiveViewWbPass
51728: 13268.920 [LVCDEV]->lvcdevStartDev
51729: 13270.190 [LV] lvResetPsave
51730: 13270.396 [LV] WB 1974 1151 1151 2533(1377)
51731: 13270.503 [LV] lvResetPsave(1) 0x5A 0x454 0x49E
51732: 13270.528 [LV] lvResetPsave(2) 0x0 0x0 0x0
51733: 13271.801 [LVCDEV]->lvcdevResourceGet(0,1)
[b]51734: 13272.366 [DPATH] LV_JPG START Y:0x1de43c64 J:0x1ca700c8 Y411:0x10798ea0[/b]
51735: 13275.198 [LV] lvVDInterrupt
51736: 13275.363 [LV] WB 1974 1151 1151 2533(1158)
51737: 13279.334 [DEV] LV_JPG YuvWriteCompleteCBR
51738: 13279.373 [DEV] LV_JPG YUVReadCompleteCBR
51739: 13279.499 [DEV] LV_JPG JpCoreCompleteCBR( 0x2e1c6 )
51740: 13279.553 [DEV] LV_JPG JpegPopCompleteCBR
[b] 51741: 13279.672 [DPATH] LV_JPG STOP Y:0x1df97c64 J:0x1ca9e28e Y411:0x107a0e20[/b]
51742: 13280.277 [LVCDEV]->PD(VF:0x107927ec,MS:0x485540)
[b] 51743: 13282.818 [LV] lvReturnVram[/b]
51744: 13282.851 < GUI Lock > GUILock_PermitPowerLock (PUB)
51745: 13283.134 < GUI Lock > GUILockTask 1
[b]ffca0178: '[IMP] CreateVram %d' [/b]
ffca0930: '[IMP] CompleteVramSyncroClearCBR err:%d'
ffca0d48: '[IMP] (PUB) SetVramInformation(w:%ld h:%ld) %d'
[b]ffca7528: '[IMPV] MakeHDVram %d' [/b]
ffca0e9c: '[IMP] DrawImageToVram GetJpegInfo():%d'
ffca1298: '[IMP] (PUB) RefreshImageVram %d'
ffca12b8: '[IMP] RefreshImageVram : VramNo not found'
ffca15a8: '[IMP] (PUB) AbortDrawImageToVram %d'
[b]ffca648c: '[IMPV] SetVramImageInfo %d' [/b]
ffca2c04: '[IMP] (PUB) SyncroClearImagePlayVram %d'
ffca089c: '[IMP] ImageVramCompleteCBR err:%d'
ffca349c: '[IMP] (PUB) SetVisibleImageVramOffset %d'
ffca3518: '[IMP] pVramImagePositionY %d'
ffcaff38: 'Not Exist Bitmap Vram!!'
[b]ffca32fc: '[IMP] (PUB) GetVramImageInfo %d' [/b]
[b]ffca0ec4: '[IMP] ERROR DrawImageToVram %s, %d' [/b]
ffca644c: '[IMPV] Complete MakeHDVram Error(%d)\n'
[b] ffca64a8: '[IMPV] SetVramImageInfo x:%ld y:%ld w:%ld h:%ld' [/b]
ff906cd4: '[GUI] uiImageWidth(%d) uiImageHeight(%d) uiVramWidth(%d)'
ff906d88: '[GUI] uiImageWidth(%d) uiImageHeight(%d) uiVramHeight(%d)'
ffca087c: '[IMP] ImageVramCompleteCBR %d'
[b]ffca12e4: '[IMP] RefreshImageVram VramAdd:0x%lX' [/b]
[b]ffca7b8c: '[IMPV] MakeHDVramFromJpeg Rot:%d Mag:%d Aspect:%d' [/b]
[b]ffca7cc4: '[IMPV] MakeHDVramFromYuv Rot:%d Mag:%d Aspect:%d' [/b]
[b]ffca7f74: '[IMPV] (PUB) MakeHDVramCheck %d' [/b]
[b]ffca8254: '[IMPV] GetVramImagePosAndSize s:%ld y:%ld w:%ld h:%ld' [/b]
[b]ffca01b4: '[IMP] Vram%d:0x%lX' [/b]
ffca34f8: '[IMP] pVramImagePositionX %d'
[b]ffcb16fc: '[BmpDDev] RefreshPhysicalVram (PUB)' [/b]
ffca7c84: '[IMPV] MakeHDVram Error!'
ffca02a8: '[IMP] DeleteVram %d'
ffca02bc: '[IMP] CopyCurrentDisplayVramToIdleVram %d'
ffca08c0: '[IMP] CompleteVramSyncroCopyCBR %d'
[b]ffcb0290: '[BmpDDev] CreatePhysicalVram (PUB)' [/b]
[b]ffb2d1d0: 'lv_vram_dump' [/b]
ffca7bd8: '[IMPV] WorkAdd:0x%lX VramAdd:0x%lX RotWork:0x%lX'
[b]ffca7b68: '[IMPV] (PUB) MakeHDVramFromJpeg %d' [/b]
ffca7c50: '[IMPV] VramWork basew:%ld x:%ld y:%ld w:%ld h:%ld'
[b]ffca7ca0: '[IMPV] (PUB) MakeHDVramFromYuv %d' [/b]
ffca2984: '[IMP] ERR: Not Found Display Vram'
ffcb03b4: '[BmpDDev] DeletePhysicalVram (PUB)'
ffca822c: '[IMPV] (PUB) GetVramImagePosAndSize %d'
ffcb1ba8: '[ImgDDev] WARNING Divide Zero Vram Width (%d)'
ffca2ff8: '[IMP] (PUB) SyncroAllClearImagePlayWorkVramWithoutEngine %d'
ff9122a4: '[GUI] CalcLvVramSize VramSize X(%d) Y(%d) W(%d) H(%d)'
[b]ffb32b30: '[LV] lvReturnVram' [/b]
ffcb3204: 'Already Vram For Adjust!!'
ff8b30ac: '[GUI] PlayModel.c DrawAspectFrame VramSize X(%d) Y(%d) W(%d) H(%d)'
ffca331c: '[IMP] GetVramImageInfo x:%ld y:%ld w:%ld h:%ld'
ffca334c: '[IMP] (STUB) SetImageVramColorMode(color:%ld) %d'
ffcb3530: 'Not Exist Vram For Adjust!!'
ffb34d94: '[LV] WriteEDmacVramCompleteCBR_x5'
[b]ffca3810: '[IMP] (PUB) GetVramInformation %d' [/b]
ffca08e4: '[IMP] CompleteVramSyncroCopyCBR err:%d'
ffca090c: '[IMP] CompleteVramSyncroClearCBR %d'
ffb361c4: '[LV] WriteEDmacVramCompleteCBR_x10'
ff883b18: '[TestEndDrawToVram] dwErrCode = %d'
ffcb8b6c: '[DispCon] GetVramSize (PUB)'
ffb39140: '[LV] WriteEDmacVramCompleteCBR_x1'
[b]ff9b943c: 'Vram Instance' [/b]
ff9b9558: 'pVram->Image.pPaletteIndex != NULL'
ff9b9594: '!IS_ERROR(pVram->hSemaphore)'
ff9b96b0: 'pVram->Mode == LOGICAL_VRAM'
ffca2e4c: '[IMP] (PUB) SyncroAllClearImagePlayIdleVramWithoutEngine %d'
ffca2e88: '[IMP] ERROR : Vram State'
ffca0e6c: '[IMP] (PUB) DrawImageToVram(rot:%d cb:0x%lX) %d'
ffca0d88: '[IMP] (PUB) SetCopyVramMode(mode=%d) %d'
ff87ece8: ' [Graphics] EndDrawToVram (PRI), err %d'
ffcaa8bc: '[IMP][PBFEN] Fencing_StartVRAMMode'
ffca0e0c: 'SetImageVramParameter x:%ld y:%ld w:%ld h:%ld/* Aspect:%d*/'
ffc9ff6c: '[IMP] GetVramNumber %d'
ffc9ffa0: '[IMP] SetVramImageParameter %d'
ffc9ffc0: '[IMP] SetVramImageParameter add:0x%lX BaseW:%ld'
ffcaa86c: '[IMP][PBFEN] Fencing_SetDataYUV411VType'
ffc492c0: '[DPATH] LV_YPACK START Y411:%#lx YPACK:%#lx'
ffc492ec: '[DPATH] LV_YPACK STOP Y411:%#lx YPACK:%#lx'
ffc9af8c: '[IMPD] rot:%d cnv411:%d cnv422:%d cnv411_444:%d cnv422_444:%d'
ffc46e00: '[DPATH] LV_JPG START Y:%#lx J:%#lx Y411:%#lx'
ffc9a10c: '[IMPD] rot:%d block:%d cnv411:%d cnv422:%d'
ffc46fbc: '[DPATH] LV_JPG STOP Y:%#lx J:%#lx Y411:%#lx'
ffc96db0: '[IMP][PBRSZ] GetCnv411Mode %d'
ffc96d90: '[IMP][PBRSZ] GetCnv422Mode %d'
ffc9af8c: '[IMPD] rot:%d cnv411:%d cnv422:%d cnv411_444:%d cnv422_444:%d'
ffc9a10c: '[IMPD] rot:%d block:%d cnv411:%d cnv422:%d'
ffcaa894: '[IMP][PBFEN] Fencing_SetDataYUV422Type'
ffc95578: '<RESIZE> SetParameterResizeYuv Abort End Before Lock'
ffc955fc: '[IMP][PBRSZ] RequestResizeYuv RdAdr:%#lx, WrAdr:%#lx'
ffcb56b8: 'gyuv'
ffb301f8: '[LV] YuvAddress = 0x%08lX'
ffb00db8: 'Dp_ReduceImageData_Yuv()'
ffc498dc: 'PonyYuvPath'
ffc95810: '[IMP][PBRSZ] RegisterCBROfCompleteResizeYuv %d'
ffb01094: 'Dp_AdobeRgbToSRgb_Yuv()'
ffcaa86c: '[IMP][PBFEN] Fencing_SetDataYUV411VType'
ffb013c0: 'Dp_ClearWidth_Yuv()'
ffc959b8: '[IMP][PBRSZ] Zoom:%d InYuv:%d OutYuv:%d'
ffafaf14: 'Dp_ExecuteYuvRotatingCBR() ErrorCode [0x%08x]'
ffc49f7c: '[DEV] Pony YuvWriteCompleteCBR'
ffca6754: '[IMPV] Yuv:%d Add:0x%lX BaseW:%ld'
ffb02720: 'Dp_CopyImageData_Yuv()'
ffb02738: 'pDstYuvDataAddress [%d]'
ffb02750: 'pSrcYuvDataAddress [%d]'
ffc45c34: 'FactoryYuvPath'
ffc444b8: '[DEV] JPG_EN YuvWriteCompleteCBR'
ffaf9fa8: 'Dp_YuvToYuv()'
ffca47a8: '[IMPL] Yuv:%d Add:0x%lX BaseW:%ld'
ffca4c1c: '[IMPL] (PUB) CalculateYuvResizeParameter %d'
ffb36258: '[LV] WriteEDmacYuvCompleteCBR_x10'
ffc988b0: '<ROTATE> RequestRotationYuv Before Lock'
ffca5294: '[IMPL]_CalcResizeSizeForRotZoom InYuv:%d OutYuv:%d Aspect:%d'
ff84534c: '[FA] FA_YuvDevelopTestImage'
ffca580c: '[IMPL] _CalcResizeSize InYuv:%d OutYuv:%d Aspect:%d'
ffc4604c: '[DEV] FactoryYuvPath_ChangeCBR(ID=%#lx)'
ffca630c: '[IMPV] GetAjustUnitYUV %d'
ffb018bc: 'Dp_CutImageWidth_Yuv()'
ffca6dec: '[IMPV] YuvMode:%d'
ffc47068: '[DEV] LV_JPG YuvWriteCompleteCBR'
ffca72e0: '[IMPV] YuvMode:%d BaseAdd:0x%lX BaseW:%ld'
ffca730c: '[IMPV] YuvMode:%d BaseAdd:0x%lX BaseW:%ld'
ffcadf00: '[IMP][DECWIN] SetNQDecParam adr:0x%08lX yuv:%d'
ffb01438: 'Dp_ExpandImageWidth_Yuv()'
ffb01490: 'Dp_ShiftYuvRotationData_Yuv()'
[b]ffca7cc4: '[IMPV] MakeHDVramFromYuv Rot:%d Mag:%d Aspect:%d' [/b]
ffc49c90: '[DPATH] Pony2 START YUV1:%#lx YUV2:%#lx'
ffc9c32c: '[IMPD] (PUB) ExecuteYuvRotating %d'
ffcb6ddc: '[DispCon] Err Factory Adjust For DisplayYUVGain'
ffc49ae4: '[DPATH] Pony1 START C:%#lx YUV:%#lx'
ffc49c2c: '[DPATH] Pony1 STOP C:%#lx YUV:%#lx'
ffc458c0: '[DEV] YuvWriteCompleteCBR'
ffc47048: '[DEV] LV_JPG YUVReadCompleteCBR'
ffb01b2c: 'Dp_AdjustCroppingSize_Yuv()'
ffc49e94: '[DPATH] Pony2 ReStartPonyYuvPath2'
ffb0134c: 'Dp_ClearHeight_Yuv()'
ffc49eb8: '[DPATH] Pony2 STOP YUV1:%#lx YUV2:%#lx'
ffc99db0: '[IMPD] YuvMode:%d'
ffc99de4: '[IMPD] StartYuvResizing Comp'
[b]ffb2d1e0: 'lv_yuv_dump' [/b]
ffcad330: '[IMP][DECWIN] SetResizeParam OutYuv:%d InputSel:%d'
ffcada9c: '[IMP][DECWIN] SetWinResDecParam adr:0x%08lX yuv:%d base:%ld'
ffcb15fc: '[BmpDDev] GetYUVPaletteFromDisplayDevice (PUB)'
ffb02798: 'Dp_ShiftImageHeight_Yuv()'
ffca7ca0: '[IMPV] (PUB) MakeHDVramFromYuv %d'
ffc8f344: '<ROTATE> RequestRotationYuv Abort End Before Lock'
ffc8f3a0: '[IMP][PBLOT] RequestRotationYuv Before Lock'
ffcb0608: '[BmpDDev] SetYUVPaletteToDisplayDeviceh (PUB)'
ffad0f50: 'YuvMode[%d]'
ffad0fd0: 'YuvMode[%d] BaseAddress[%d]'
ffafa738: 'ResizeYuvT Input nYuvMode [%d]'
ffb391d4: '[LV] WriteEDmacYuvCompleteCBR_x1'
ffc98708: '[IMP][PBROT] OUTPUT --- Yuv:%d Add:0x%lX Base:%ld'
ffca6d94: '[IMPV] ZoomMode:%d YuvMode:%d'
ffb0ff6c: 'Dp_YuvToJpeg [0x%08x]'
ffcadfa0: '[IMP][DECWIN] pYuvAddress:%#lx'
ffb02004: 'Dp_AdjustFrameWithWhite_Yuv()'
ffb34e28: '[LV] WriteEDmacYuvCompleteCBR_x5'
ffca5dd0: '[IMPL] rot:%d zoom:%d inYUV:%d outYUV:%d'
ffcb8d9c: '[DispCon] GetYUVGain'
ffc95520: '[IMP][PBRSZ] SetParameterResizeYuvForMovie %d'
ffc95634: '<RESIZE> RequestResizeYuv Abort End Before Lock'
ffc95664: '[IMP][PBRSZ] ERROR pResizeYuvCompleteCBR is NULL'
ffc95698: '[IMP][PBRSZ] CancelResizeYuv %d'
ffc95840: '[IMP][PBRSZ] UnregisterCBROfCompleteResizeYuv %d'
ffc95874: '[IMP][PBRSZ] AbortResizeYuv %d'
ffc96334: '[IMP][PBRSZ] Input:%ld Output:%ld InYuv_f:%ld OutYuv_f:%ld'
ffc46030: '[DEV] YuvWriteCompleteCBR'
ffc4937c: '[DEV] LV_YPACK YuvReadCompleteCBR'
ffb0ff5c: 'Dp_YuvToJpeg()'
ffcb7564: "[DispCon] Warning: YUV Gain Don't Adjust"
ffb17f6c: '[GYO]Dp_YUVDustReduction'
ffc98684: '[IMP][PBROT] SetParameterRotationYuv %d'
ffc986ac: '[IMP][PBROT] INPUT --- Yuv:%d Add:0x%lX Base:%ld'
ffc98838: '[IMP][PBROT] RequestRotationYuv %d'
ffc9885c: '<ROTATE> RequestRotationYuv Abort End Before Lock'
ffc98cc0: '[IMP][PBROT] CancelRotationYuv %d'
ffc98ce4: '[IMP][PBROT] RegisterCBROfCompleteRotationYuv %d'
ffc98d18: '[IMP][PBROT] UnregisterCBROfCompleteRotationYuv %d'
ffaf9720: 'Dp_JpegToYuvNew() Layout[0x%08x]'
ffaf97a4: 'Dp_JpegToYuvNew [0x%08x]'
ffcad788: '[IMP][DECWIN] SetResWinParam yuv:%d InputSel:%d'
ffb01160: 'YuvBaseAddress [0x%08x]'
ffc99dc4: '[IMPD] StartYuvResizing TIMEOUT'
ffc9a150: '[IMPD] StartYuvRotating Comp'
ffafa4cc: 'Not Executed Dp_YuvToYuvHalf()'
ffafa6a8: 'Dp_YuvToYuvCopy()'
ffafa6d8: 'Dp_YuvToYuvReduce()'
ffafa720: 'Dp_ExecuteYuvResizing()'
ffafa758: 'ResizeYuvT Output nYuvMode [%d]'
ffafa998: 'Dp_ExecuteYuvResizingCBR() ErrorCode [0x%08x]'
ffafa9dc: 'Dp_YuvRotation() Rotate:%d'
ffc8f1c8: 'EvenSize >= YuvUnit'
ffc9f1e0: ' < IMD > ERR: YUV mode'
ffafaf44: 'ExecuteYuvRotation'
ffc99d44: '[IMPD] StartYuvResizing %d'
ffc955d0: '<RESIZE> SetParameterResizeYuv Before Lock'
ffc99d78: '[IMPD] ZoomMode:%d YuvMode:%d'
ffc99e04: '[IMPD] ResizeYuv:%d'
ffc9b9d8: '[IMPD] ERROR Dpx_ExecuteYuvAngleAdjust %d'
ffc49f9c: '[DEV] PonyYuvPath_ChangeCBR(ID=%#lx)'
ffc9c308: '[IMPD] (PUB) ExecuteYuvResizing %d'
ffc9a0f0: '[IMPD] StartYuvRotating %d'
ffcaf664: ' [BmpDDev] ConvertYUVPaletteToPBPalette (PRI)'
ffc44d70: '[DPATH] DCF_EN START DCF:%#lx YUV:%#lx'
ffc44f24: '[DPATH] DCF_EN STOP DCF:%#lx YUV:%#lx'
ffafa4b8: 'Dp_YuvToYuvHalf()'
ffc9c350: '[IMPD] (PUB) ExecuteYuvRotatingFor2Buffer %d'
ffafa68c: 'Dp_YuvToYuv64up() W:%d H:%d'
ff83e778: 'FA_YuvDevelopTestImage'
ff83e844: 'FA_GetYuvImage'
ffb151a8: 'YUV-Control Done'
ffca62f4: '[IMPV] SetUnitYUV %d'
ffcaa894: '[IMP][PBFEN] Fencing_SetDataYUV422Type'
ffafa9c8: 'ExecuteYuvResize'
ff845488: '[FA] FA_GetYuvImage'
ffca0e48: '[IMP] (PUB) SetYuvColorParameter %d'
ffc95550: '[IMP][PBRSZ] SetParameterResizeYuv %d'
NSTUB(0xFFCB02B4, CreatePhysicalVram)
NSTUB(0xFFCA01C8, CreateVram)
NSTUB(0xFFCA75C4, MakeHDVram)
NSTUB(0xFFB32EA0, LV_lvReturnVram)
NSTUB(0xFFCA130C, RefreshImageVram)
NSTUB(0xFFCA38DC, SetVramInformation)
NSTUB(0xFFCA432C, GetVramInformation)
NSTUB(0xFFCA3AA0, SetImageVramParameter)
NSTUB(0xFFCA6520, SetVramImageInfo)
NSTUB(0xFFCA3EC4, GetVramImageInfo)
NSTUB(0xFFCA8498, GetVramImagePosAndSize)
NSTUB(0xFFCA35D0, GetWorkImageLengthAndPosition)
no guts no glory they say
As a suggestion stay away from factory mode and prop changes unless you absolutely need them
NSTUB(0x62B4, DpImgEditState);
NSTUB(0x5D88, DpState);
NSTUB(0x7E38, TOMState);
//NSTUB(, USBC20State_1);
//NSTUB(, USBC20State_2);
//NSTUB(, USBC20State_3);
//NSTUB(, USBC20State_4);
NSTUB(0x7E60, CeresStateState);
NSTUB(0x1AF60, PtpDpsStateState);
NSTUB(0x1AF64, PtpEvtListAccsSem);
NSTUB(0x1D34, RMTState);
NSTUB(0x7824, FSSState);
//NSTUB(0xB710, PropState); // maybe
NSTUB(0x7840, RDState);
NSTUB(0x7770, LVCDEVState);
NSTUB(0x7748, LVCAFState);
NSTUB(0x7738, LVCAEState);
NSTUB(0x7628, LVState);
//NSTUB(???, FWState);
//NSTUB(???, FRState);
NSTUB(0x834C, MrkState);
NSTUB(0x781C, FCSState);
NSTUB(0x7E10, SdioTskState);
NSTUB(0x82CC, FMNormalState);
NSTUB(0xEFDC, DMState);
MEM(0x00007600) = 0xFFB2BDA4 (-5063260)
MEM(0x00007604) = 0xFFB2C4A0 (-5061472)
MEM(0x00007608) = 0x00000000 (0)
MEM(0x0000760C) = 0x00000000 (0)
MEM(0x00007610) = 0x1024F09C (270856348)
MEM(0x00007614) = 0x00000001 (1)
MEM(0x00007618) = 0x10206DC0 (270560704)
MEM(0x0000761C) = 0x10252520 (270869792)
MEM(0x00007620) = 0x10223820 (270678048)
MEM(0x00007624) = 0x007975F4 (7960052)
MEM(0x00007628) = 0x00797940 (7960896)
MEM(0x0000762C) = 0x00000000 (0)
MEM(0x00007630) = 0xC0F03030 (-1058000848)
MEM(0x00007634) = 0x80010000 (-2147418112)
MEM(0x00007638) = 0xC0F03068 (-1058000792)
MEM(0x0000763C) = 0x80010004 (-2147418108)
MEM(0x00007640) = 0xC0F03070 (-1058000784)
MEM(0x00007644) = 0x80010007 (-2147418105)
MEM(0x00007648) = 0xC0F0B008 (-1057968120)
MEM(0x0000764C) = 0x00000000 (0)
MEM(0x00007650) = 0xFFFFFFFF (-1)
MEM(0x00007654) = 0xFFFFFFFF (-1)
MEM(0x00007658) = 0xC0F03044 (-1058000828)
MEM(0x0000765C) = 0x00000002 (2)
MEM(0x00007660) = 0xC0F03044 (-1058000828)
MEM(0x00007664) = 0x00000000 (0)
MEM(0x00007668) = 0xC0F0B000 (-1057968128)
MEM(0x0000766C) = 0x00000000 (0)
MEM(0x00007670) = 0xC0F0B004 (-1057968124)
MEM(0x00007674) = 0x00000001 (1)
MEM(0x00007678) = 0xC0F09000 (-1057976320)
MEM(0x0000767C) = 0x00000001 (1)
MEM(0x00007680) = 0xFFFFFFFF (-1)
MEM(0x00007684) = 0xFFFFFFFF (-1)
MEM(0x00007688) = 0xC0F09000 (-1057976320)
MEM(0x0000768C) = 0x80000000 (-
MEM(0x00007690) = 0xC0F0B000 (-1057968128)
MEM(0x00007694) = 0x00000001 (1)
MEM(0x00007698) = 0xC0F0B004 (-1057968124)
MEM(0x0000769C) = 0x00000000 (0)
MEM(0x000076A0) = 0xFFFFFFFF (-1)
MEM(0x000076A4) = 0xFFFFFFFF (-1)
MEM(0x000076A8) = 0xC0F03030 (-1058000848)
MEM(0x000076AC) = 0x00000000 (0)
MEM(0x000076B0) = 0xC0F03068 (-1058000792)
MEM(0x000076B4) = 0x00000000 (0)
MEM(0x000076B8) = 0xC0F03070 (-1058000784)
MEM(0x000076BC) = 0x00000000 (0)
MEM(0x000076C0) = 0xFFFFFFFF (-1)
MEM(0x000076C4) = 0xFFFFFFFF (-1)
MEM(0x000076C8) = 0xC0F0851C (-1057979108)
MEM(0x000076CC) = 0x00060258 (393816)
MEM(0x000076D0) = 0xC0F08520 (-1057979104)
MEM(0x000076D4) = 0x032C0568 (53216616)
MEM(0x000076D8) = 0xC0F11250 (-1057942960)
MEM(0x000076DC) = 0x00900000 (9437184)
MEM(0x000076E0) = 0xC0F11254 (-1057942956)
MEM(0x000076E4) = 0x028F02FF (42926847)
MEM(0x000076E8) = 0xFFFFFFFF (-1)
MEM(0x000076EC) = 0xFFFFFFFF (-1)
MEM(0x000076F0) = 0xC0F0851C (-1057979108)
MEM(0x000076F4) = 0x00060258 (393816)
MEM(0x000076F8) = 0xC0F08520 (-1057979104)
MEM(0x000076FC) = 0x032C0568 (53216616)
MEM(0x00007700) = 0xC0F11250 (-1057942960)
MEM(0x00007704) = 0x011000C0 (17825984)
MEM(0x00007708) = 0xC0F11254 (-1057942956)
MEM(0x0000770C) = 0x020F0241 (34538049)
MEM(0x00007710) = 0xFFFFFFFF (-1)
MEM(0x00007714) = 0xFFFFFFFF (-1)
MEM(0x00007718) = 0x00000000 (0)
MEM(0x0000771C) = 0x00000006 (6)
MEM(0x00007720) = 0xFFB38304 (-5012732)
MEM(0x00007724) = 0x00000000 (0)
MEM(0x00007728) = 0x00796F74 (7958388)
MEM(0x0000772C) = 0x00000000 (0)
MEM(0x00007730) = 0x00000000 (0)
MEM(0x00007734) = 0x00000000 (0)
MEM(0x00007738) = 0x00796FB4 (7958452)
MEM(0x0000773C) = 0x00000000 (0)
MEM(0x00007740) = 0x007973EC (7959532)
MEM(0x00007744) = 0x10202438 (270541880)
MEM(0x00007748) = 0x0079742C (7959596)
MEM(0x0000774C) = 0x00000000 (0)
MEM(0x00007750) = 0x00000000 (0)
MEM(0x00007754) = 0x0079750C (7959820)
MEM(0x00007758) = 0x00000000 (0)
MEM(0x0000775C) = 0x00000005 (5)
MEM(0x00007760) = 0x00000000 (0)
MEM(0x00007764) = 0x00000000 (0)
MEM(0x00007768) = 0x00000000 (0)
MEM(0x0000776C) = 0x00000000 (0)
MEM(0x00007770) = 0x0079754C (7959884)
MEM(0x00007774) = 0x00000000 (0)
MEM(0x00007778) = 0x00010339 (66361)
MEM(0x0000777C) = 0xFFFF0000 (-65536)
MEM(0x00007780) = 0x00040002 (262146)
MEM(0x00007784) = 0x00080004 (524292)
MEM(0x00007788) = 0x009000A4 (9437348)
MEM(0x0000778C) = 0x00200010 (2097168)
MEM(0x00007790) = 0x00FA0020 (16384032)
MEM(0x00007794) = 0x0015FF06 (1441542)
MEM(0x00007798) = 0xFFE80000 (-1572864)
MEM(0x0000779C) = 0x00100040 (1048640)
MEM(0x000077A0) = 0x0018000E (1572878)
MEM(0x000077A4) = 0x00480078 (4718712)
MEM(0x000077A8) = 0x00000010 (16)
MEM(0x000077AC) = 0x00000098 (152)
MEM(0x000077B0) = 0x00000060 (96)
MEM(0x000077B4) = 0x00000088 (136)
MEM(0x000077B8) = 0x0000006F (111)
MEM(0x000077BC) = 0x00000048 (72)
MEM(0x000077C0) = 0x00000058 (88)
MEM(0x000077C4) = 0x00000056 (86)
MEM(0x000077C8) = 0x00000100 (256)
MEM(0x000077CC) = 0x00000080 (128)
MEM(0x000077D0) = 0x00000000 (0)
MEM(0x000077D4) = 0x00000000 (0)
MEM(0x000077D8) = 0x00000000 (0)
MEM(0x000077DC) = 0x00000000 (0)
MEM(0x000077E0) = 0x00000000 (0)
MEM(0x000077E4) = 0x00000000 (0)
MEM(0x000077E8) = 0x00000000 (0)
MEM(0x000077EC) = 0x00000001 (1)
MEM(0x000077F0) = 0x00000000 (0)
MEM(0x000077F4) = 0x00000000 (0)
MEM(0x000077F8) = 0x00000004 (4)
MEM(0x000077FC) = 0x00000000 (0)
MEM(0x00007648) = 0xC0F0B008 (-1057968120)
Sounds good.
Point the camera to something recognizable and dump roughly 1MB from the VRAM address to confirm it.
Another way to find VRAM buffers: look for EDMAC registers. In digic 4, these are c0f04008, c0f04108 ... c0f04f08, then c0f26008, c0f26108 etc. One of those registers should point to the LiveView buffer.
MEM(0xC0F04008) = 0x3FBFFFF6
MEM(0xC0F04108) = 0x3695B69E
MEM(0xC0F04208) = 0x3F802DFC
MEM(0xC0F04308) = 0x1BB044CA
MEM(0xC0F04408) = 0x3E04583E
MEM(0xC0F04508) = 0x3A91B07C
MEM(0xC0F04608) = 0x1EA3FFCC
MEM(0xC0F04708) = 0x00000000
MEM(0xC0F04808) = 0x3A6F3EDE
MEM(0xC0F04908) = 0x3F20DE9E
MEM(0xC0F04A08) = 0x3D701EFE
MEM(0xC0F04B08) = 0x194F3D52
MEM(0xC0F04C08) = 0x34794AD6
MEM(0xC0F04D08) = 0x2A674EDE
MEM(0xC0F04E08) = 0x00000000
MEM(0xC0F04F08) = 0x00000000
NSTUB(0xFFCF8184, GetEDmacAddress)
NSTUB(0xFFB2E208, lv_start)
NSTUB(0xFFB2E244, lv_stop)
NSTUB(0xFFB2E280, lv_vram_dump)
NSTUB(0xFFB2E308, lv_yuv_dump)
NSTUB(0xFFB2E38C, lv_fps)
NSTUB(0xFFB2E3FC, lv_psave_on)
NSTUB(0xFFB2E46C, lv_psave_off)
NSTUB(0xFFB2DB54, lv_debug_ae)
NSTUB(0xFFB2DCF4, lv_debug_wb)
NSTUB(0xFFB2E4DC, lv_debug_af)
NSTUB(0xFFB2E5F8, lv_ae)
NSTUB(0xFFB2E668, lv_wb)
NSTUB(0xFFB2E6D8, lv_af_raw)
NSTUB(0xFFB2E748, lv_debug_flag)
NSTUB(0xFFB2E588, lv_data_count)
NSTUB(0xFFB2E82C, lv_eshutter)
NSTUB(0xFFB2E97C, lv_tvaf_start)
NSTUB(0xFFB2E89C, lv_magnify)
NSTUB(0xFFB2E90C, lv_save_raw)
Hi,
I'm new here and anxious to see the 40D to be used with ML:)
This is very very techy-stuff and hard for me to understand - so I'd just like to know,
if there is a lantern at the end of the tunnel;)
Is there any way to support you?
Kind regards
Uwe
/** VRAM info in the BSS.
*
* Pixels are in an YUV 422 format.
* This points to the image VRAM, not the bitmap vram
*/
struct vram_info
{
uint8_t * vram; // off 0x00
uint32_t width; // maybe off 0x04
uint32_t pitch; // maybe off 0x08
uint32_t height; // off 0x0c
uint32_t vram_number; // off 0x10
};
SIZE_CHECK_STRUCT( vram_info, 0x14 );
extern struct vram_info vram_info[2];
NSTUB(0x0001E010, vram_info)
MEM(0x0001E010) = 0x1065BE00 (275103232)
MEM(0x0001E014) = 0x000002D0 (720)
MEM(0x0001E018) = 0x000002D0 (720)
MEM(0x0001E01C) = 0x000000F0 (240)
MEM(0x0001E020) = 0x00000002 (2)
MEM(0x0001E024) = 0x106F3C8C (275725452)
MEM(0x0001E028) = 0x000002D0 (720)
MEM(0x0001E02C) = 0x000002D0 (720)
MEM(0x0001E030) = 0x000000F0 (240)
MEM(0x0001E034) = 0x00000000 (0)
Having the 40D record video would be excellent. The resolution of 1024 x 680 is plenty for web video.
People do have to realize that the 40D was never intended to shoot video so it doesn't have a microphone or audio circuitry built into it. You will have to capture audio separately or lay down a background track of something like music.
But having the other ML still image features would greatly increase the use of the 40D for things like time-lapse photography and other applications.
strings -t x 40d.111.ROMF1.0xFF800000.bin | perl renumber.pl 0xFF800000 > 40d.111.ROMF1.0xFF800000.string
grep 40d.111.ROMF1.0xFF800000.strings -e "Mgr$"
ffacff30 DpMgr
ffb04078 DpImgEditMgr
ffb2d10c LiveViewMgr
ffbaee34 TOMgr
ffbc55a0 FileMgr
ffc49060 DDDMgr
ffc877fc PropMgr
ffd17614 CardServiceMgr
ffd4c084 DbgMgr
ffd5a30c PowerMgr
grep 40d.111.ROMF1.0xFF800000.strings -e ".*\.c" > 40d.111.ROMF1.0xFF800000.files
ffff1c6c Write Address : 0x00000000
ffff1c8c Write Address : 0x04000000
ffff2714 4.Erase TORNADO and Command area (0x%x -> 0x%x)
ffff2748 5.Erase Program area (0xF8010000 -> 0xF862FFFF)
ffff3578 Is flg written(Y=ON(0xFFFFFFFF)/N=OFF(0x00000000))? :
ffff3608 Is flg written(Y=ON(0x00000000)/N=OFF(0xFFFFFFFF))? :
ffff3774 ERASE [ROM1][0x00000000]
ffff39e4 Input start_address (ram 0x00000000 -> 0x40000000) :
ffff3a1c Input end_address (ram 0x00000000 -> 0x40000000) :
ffff3a54 Input address (rom 0xf8000000 -> 0xf87FE000) :
ffff5914 FROM Check Sum is 0x%08x
ffff5930 ( 0xF8010000 - 0xF85FFFFF )
StartMnActiveSweepApp
StartMnActiveSweepAutoApp
StartMnBrightnessApp
StartMnBusyApp
StartMnBusyKeepEventBtnApp()
StartMnCameraClearApp
StartMnCameraRegApp
StartMnCameraRegConfirmApp
StartMnCameraUnRegApp
StartMnCameraUnRegConfirmApp
StartMnCameraUnRegSelectApp
StartMnCardExtensionApp
StartMnCardFormatBeginAp
StartMnCardFormatexcuteApp
StartMnCopyBusyApp()
StartMnCopyConfirmApp
StartMnCopyMsgApp(
StartMnCopyResultApp(
StartMnCustomFnApp(%d)(%d)
StartMnCustomFnClearApp
StartMnDustOffDataApp
StartMnDustOffDataCompleteApp
StartMnDustOffDataExcuteApp
StartMnEraseImageApp
StartMnEraseImageBusyApp
StartMnEraseImageConfirmApp
StartMnEraseImageDummyApp
StartMnHandWorkSweepApp
StartMnImageZoneQualityApp
StartMnLanguageApp
StartMnLiveViewApp
StartMnMainCustomFuncApp()
StartMnMainMyMenuApp()
StartMnMainPlay1App()
StartMnMainPlay2App()
StartMnMainRec1App()
StartMnMainRec2App()
StartMnMainSetup1App()
StartMnMainSetup2App()
StartMnMainSetup3App()
StartMnMainStudioApp()
StartMnMmMessageApp(
StartMnMwbImageConfirmApp
StartMnMWBWarningApp
StartMnMyMenuDeleteApp()
StartMnMyMenuPreRearrange(
StartMnMyMenuRearrange(
StartMnMyMenuSelect()
StartMnMyMenuSetting()
StartMnPictureStyleDetailApp
StartMnPictureStyleMain
StartMnPictureUserDetail
StartMnQualityApp
StartMnQualityDivideApp
StartMnQualityDivideSelectApp
StartMnSensorCleanApp
StartMnStroboBuiltInSettingApp
StartMnStroboControlApp
StartMnStroboCustomFnApp
StartMnStroboCustomFnClearApp
StartMnStroboErrorApp
StartMnStroboFnSettingApp
StartMnStroboFnSettingClearApp
StartMnStroboFnSettingHeaderApp()
StartMnStroboOldOutSettingApp
StartMnStroboWirelessApp
StartMnStudioModeChangeConfirmApp
StartMnWBApp
StartMnWbBktApp
grep -e "libc" 40d.111.ROMF1.0xFF800000.strings
ffcb9150 ../libcsvg/svg_canvas.c
ffcbd930 gfff../libcsvg/svg_paint.c
ffcbe118 ../libcsvg/svg_render.c
ffcbeb48 ../libcsvg/dom/dom.c
ffcbfc5c ../libcsvg/dom/dom_common.c
ffcc22e4 ../libcsvg/dom/dom_trait.c
ffcc629c ../libcsvg/core/attrib_core.c
ffcc6a88 ../libcsvg/core/attrib_graphics.c
ffcc733c ../libcsvg/core/attrib_paint.c
ffcca84c ../libcsvg/core/elem_anim.c
ffcd3138 ../libcsvg/core/elem_path.c
ffcd5b54 ../libcsvg/core/elem_shape.c
ffcd8354 ../libcsvg/core/elem_struct.c
ffcda5fc ../libcsvg/core/render_path.c
ffcdb054 ../libcsvg/core/render_shape.c
ffcdda64 ../libcsvg/core/stack_canvas.c
ffcddba4 ../libcsvg/core/stack_common.c
ffcddd38 ../libcsvg/core/stack_coordinate.c
ffcddedc ../libcsvg/core/stack_core.c
ffcde000 ../libcsvg/core/stack_element.c
ffcdebf8 ../libcsvg/core/stack_transform.c
ffce0f44 ../libcsvg/common/hash.c
ffce1274 ../libcsvg/common/id_table.c
ffce15b0 ../libcsvg/common/queue.c
ffce3a1c ../libcsvg/common/utils.c
ffce5bd8 ../libcucs/ucs.c
ffce9b34 ../libcsvg/common/uriref.c
ffcea324 ../libcsvg/svg_path.c
ffcef4e0 ../libcsvg/core/attrib_animtiming.c
ffcf09f4 ../libcsvg/core/datatype_preserveaspectratio.c
ffcf1568 ../libcsvg/core/render_anim.c
/** Canon data structure containing BMP VRAM address.
*
* LCD: it points to a 720x480 cropped area, but the image buffer is actually 960x540.
* HDMI: it points to the full image buffer.
*
* ML alters this pointer to always indicate the 720x480 cropped area
* (to avoid the possibility of buffer overflow due to race conditions when changing display modes).
*/
struct bmp_vram_info
{
uint8_t * vram0;
uint32_t off_0x04;
uint8_t * vram2;
};
extern struct bmp_vram_info bmp_vram_info[];
NSTUB(0x29448, bmp_vram_info)
MakeName(0xFFB0A95C, "str:[BmpDDev]_SelectParameter");
MakeName(0xFFB0B174, "str:[BmpDDev]_DisplayPhysicalScreen");
REAL BMP VRAM : 0x29320+8 =0x29328
REAL BMP VRAM : 0x29330+8 =0x29338
REAL BMP VRAM : 0x29350+8 =0x29358
NSTUB(0x1E450, bmp_vram_info)
MakeName(0xFFCAFAE0, "str:[BmpDDev]_SelectParameter");
MakeName(0xFFCB0468, "str:[BmpDDev]_DisplayPhysicalScreen");
REAL BMP VRAM : 0x1E328+8 = 1E330
REAL BMP VRAM : 0x1E338+8 = 1E340
REAL BMP VRAM : 0x1E358+8 = 1E360
667: 10003.609 myTaskDumpf:204: [JP] VRAM INFO:
668: 10003.670 printVramInfo:25: [JP] VRAM_INFO: vram address = 0x1065BE00
669: 10003.698 printVramInfo:26: [JP] VRAM_INFO: width = 720
670: 10003.722 printVramInfo:27: [JP] VRAM_INFO: pitch = 720
671: 10003.746 printVramInfo:28: [JP] VRAM_INFO: height = 240
672: 10003.767 printVramInfo:29: [JP] VRAM_INFO: vram_number = 0
673: 10003.806 printVramInfo:25: [JP] VRAM_INFO: vram address = 0x106F3C8C
674: 10003.830 printVramInfo:26: [JP] VRAM_INFO: width = 720
675: 10003.853 printVramInfo:27: [JP] VRAM_INFO: pitch = 720
676: 10003.876 printVramInfo:28: [JP] VRAM_INFO: height = 240
677: 10003.897 printVramInfo:29: [JP] VRAM_INFO: vram_number = 2
678: 10003.921 printBmpVramInfo:45: [JP] BMP_VRAM_INFO: i = 0x00
679: 10003.961 printBmpVramInfo:46: [JP] BMP_VRAM_INFO: vram0 address = 0x10631714
680: 10003.988 printBmpVramInfo:47: [JP] BMP_VRAM_INFO: off_0x04 address = 0x00000000
681: 10004.027 printBmpVramInfo:48: [JP] BMP_VRAM_INFO: vram2 address = 0x48544F00
687: 11143.643 myTaskDumpf:230: [JP] MEM(0x0001E330) = 0x10631714 // vram0 address
688: 11143.707 myTaskDumpf:231: [JP] MEM(0x0001E340) = 0x10631714 // vram0 address
689: 11143.741 myTaskDumpf:232: [JP] MEM(0x0001E360) = 0x00000000
690: 11143.773 myTaskDumpf:234: [JP] MEM(0x0000BEA0) = 0x00000000 // DisplayType
691: 11143.802 myTaskDumpf:235: [JP] MEM(0x0000BEA4) = 0x00000000 // W x H = 720x240
692: 11143.832 myTaskDumpf:236: [JP] MEM(0x0000B854) = 0x00000002
NSTUB(0xFFC39AE4, FIO_RemoveFile)
NSTUB(0xFFD1682C, FIO_OpenFile)
NSTUB(0xFFD168F8, FIO_CreateFile)
NSTUB(0xFFD16A80, FIO_ReadFile)
NSTUB(0xFFD16BF0, FIO_WriteFile)
NSTUB(0xFFD16CA8, FIO_CloseFile)
NSTUB(0xFFD16D5C, FIO_GetFileSize)
NSTUB(0xFFD17244, FIO_GetDeviceName)
NSTUB(0xFFD7A968, FIO_FindNextEx)
Can you dump around 200K from each VRAM address?
Use the cacheable addresses if you can't (remove the first 1).
Yes, I will do that ..A simple test to see if you found the vram is to try and paint on the screen, write something like 64kb of 1s to the buffer and you should see a colored square on the screen.
A simple test to see if you found the vram is to try and paint on the screen, write something like 64kb of 1s to the buffer and you should see a colored square on the screen.
great to see your progress!!
45578: 63053.752 [LVCDEV]->lvcdevResourceGet(0,1)
45579: 63054.313 [DPATH] LV_JPG START Y:0x1de43c64 J:0x1ca700c8 Y411:0x10798ea0
45580: 63057.331 [LV] lvVDInterrupt
45581: 63057.493 [LV] WB 1926 1135 1135 2454(1158)
45582: 63059.349 [LV] lvReturnVram
45583: 63059.379 < GUI Lock > GUILock_PermitPowerLock (PUB)
45584: 63059.666 < GUI Lock > GUILockTask 1
45585: 63059.735 [DispCon] TurnOnDisplay (PUB)
45586: 63061.319 [DEV] LV_JPG YuvWriteCompleteCBR
45587: 63061.365 [DEV] LV_JPG YUVReadCompleteCBR
45588: 63061.498 [DEV] LV_JPG JpCoreCompleteCBR( 0x4af66 )
45589: 63061.558 [DEV] LV_JPG JpegPopCompleteCBR
45590: 63061.701 [DPATH] LV_JPG STOP Y:0x1df97c64 J:0x1cabb02e Y411:0x107a0e20
45591: 63062.313 [LVCDEV]->PD(VF:0x1078d7e8,MS:0x485540)
45592: 63081.284 [LV] WriteEDmacWbIntegCompleteCBR
I managed to blur the image of the LCD. I now have to know the coordinates valid in order to draw a rectangle.
I used this STUB, and wrote somewhere in vram0.
NSTUB(0x1E450, bmp_vram_info)
In the coming days, I'll want to have a bmp_printf(...) function to write text on the display.
Once you get it, I want to improve the boot process.
NSTUB(0x1E458, LCD_Palette)
NSTUB(0x1E498, RGB_Palette)
NSTUB(0x1E388, PB_Palette)
NSTUB(0xFFCB0B6C, SetRGBPaletteToDisplayDevice)
NSTUB(0xFF867AA8, ChangeColorPalette)
NSTUB(0xFFCAFA0C, SetParameterToBitmapDisplayDevice)
NSTUB(0xFFCB7EBC, EnableBitmapVBufferForPlayBackAndWaiting)
NSTUB(0xFFCB9078, BmpDDev_give_semaphore);
NSTUB(0xFFCB9028, BmpDDev_take_semaphore);
NSTUB(0xFF8156F8, bindGUISwitchCBR)
3878: 23394.264 [MC] M:1,ID:B(29)
3879: 23394.303 [BIND] Switch (11, 5)
3880: 23394.345 [GUI_E] GUI_Control:25 0x0
3881: 23394.537 [JP] (50/3) my_gui_main_task:85: EVT 246[0]: p=19 *o=0x0/0x0/0x0 a=0
3884: 23426.474 [JP] (50/3) my_gui_main_task:85: EVT 247[4]: p=0 *o=0x80030014/0x96/0x0 a=0
3887: 23445.017 [MC] M:1,ID:B(30)
3888: 23445.059 [BIND] Switch (11, 3)
3889: 23445.092 [GUI_E] GUI_Control:23 0x0
3890: 23458.398 [JP] (50/3) my_gui_main_task:85: EVT 248[0]: p=17 *o=0x0/0x0/0x0 a=0
3893: 23489.950 [GUI] DlgPlayMain.c PRESS_MLT_RIGHT_BUTTON
3894: 23490.172 [DispCon] SetTempForBackLight Temp 150
3895: 23490.318 [GUI] DlgPlayMain.c PRESS_MLT_RIGHTUP_BUTTON
3896: 23495.865 [MC] M:1,ID:B(31)
3897: 23495.904 [BIND] Switch (11, 2)
3898: 23495.941 [GUI_E] GUI_Control:22 0x0
3899: 23496.137 [JP] (50/3) my_gui_main_task:85: EVT 249[0]: p=16 *o=0x0/0x0/0x0 a=0
3902: 23527.803 [GUI] DlgPlayMain.c PRESS_MLT_UP_BUTTON
3903: 23546.781 [MC] M:1,ID:B(32)
3904: 23546.821 [BIND] Switch (11, 4)
3905: 23546.853 [GUI_E] GUI_Control:24 0x0
3906: 23547.040 [JP] (50/3) my_gui_main_task:85: EVT 250[0]: p=18 *o=0x0/0x0/0x0 a=0
3909: 23578.686 [GUI] DlgPlayMain.c PRESS_MLT_LEFTUP_BUTTON
3910: 23589.717 [MC] M:1,ID:B(0)
3911: 23589.753 [BIND] Switch (11, 6)
3912: 23589.790 [GUI_E] GUI_Control:26 0x0
3913: 23589.970 [JP] (50/3) my_gui_main_task:85: EVT 251[0]: p=1a *o=0x0/0x0/0x0 a=0
3916: 23621.610 [GUI] DlgPlayMain.c PRESS_MLT_LEFT_BUTTON
3917: 23640.641 [MC] M:1,ID:B(1)
3918: 23640.683 [BIND] Switch (11, 8)
3919: 23640.721 [GUI_E] GUI_Control:28 0x0
3920: 23640.907 [JP] (50/3) my_gui_main_task:85: EVT 252[0]: p=1c *o=0x0/0x0/0x0 a=0
3923: 23672.516 [GUI] DlgPlayMain.c PRESS_MLT_LEFTDOWN_BUTTON
3924: 23691.575 [MC] M:1,ID:B(2)
3925: 23691.617 [BIND] Switch (11, 9)
3926: 23691.655 [GUI_E] GUI_Control:29 0x0
3927: 23691.839 [JP] (50/3) my_gui_main_task:85: EVT 253[0]: p=1d *o=0x0/0x0/0x0 a=0
3930: 23723.499 [GUI] DlgPlayMain.c PRESS_MLT_DOWN_BUTTON
3931: 23793.658 [MC] M:1,ID:B(3)
3932: 23793.698 [BIND] Switch (11, 5)
3933: 23793.737 [GUI_E] GUI_Control:25 0x0
3934: 23793.937 [JP] (50/3) my_gui_main_task:85: EVT 254[0]: p=19 *o=0x0/0x0/0x0 a=0
3937: 23825.534 [GUI] DlgPlayMain.c PRESS_MLT_RIGHT_BUTTON
3938: 23844.343 [MC] M:1,ID:B(4)
3939: 23844.384 [BIND] Switch (11, 3)
3940: 23844.420 [GUI_E] GUI_Control:23 0x0
3941: 23844.610 [JP] (50/3) my_gui_main_task:85: EVT 255[0]: p=17 *o=0x0/0x0/0x0 a=0
3944: 23876.253 [GUI] DlgPlayMain.c PRESS_MLT_RIGHTUP_BUTTON
3945: 23895.276 [MC] M:1,ID:B(5)
3946: 23895.315 [BIND] Switch (11, 0)
3947: 23895.350 [GUI_E] GUI_Control:21 0x0
3948: 23895.543 [JP] (50/3) my_gui_main_task:85: EVT 256[0]: p=15 *o=0x0/0x0/0x0 a=0
3951: 23945.275 [MC] M:1,ID:B(6)
3952: 23945.317 [BIND] Switch (11, 6)
3953: 23945.354 [GUI_E] GUI_Control:26 0x0
3954: 23945.559 [JP] (50/3) my_gui_main_task:85: EVT 257[0]: p=1a *o=0x0/0x0/0x0 EVT 257 a=0
3957: 23977.234 [GUI] DlgPlayMain.c PRESS_MLT_LEFT_BUTTON
Do you have a fork with your 40D work on bitbucket? I'd like to "follow" it
618: 1078.659 [JP] (50/3) read_entire_file:889: File 'A:/ML/DATA/FONTS.DAT' size 32744 by
619: 1091.459 [FR] readsize = 0x20000
620: 1110.717 [FR] readsize = 0x20000
621: 1124.497 [FR] readsize = 0x20000
622: 1141.060 [FR] readsize = 0x20000
623: 1155.195 [FR] readsize = 0x20000
624: 1172.910 [FR] readsize = 0x1f000
625: 1187.773 [FR] A:/DCIM/100CANON/IMG_1685.JPG read done (8288KB/S)
626: 1187.961 [GUI] SetPlInfoPLAYMode(100_1685)
627: 1188.080 [IMP] (PUB) SetDpRotationAngle 2845(0)
628: 1188.119 [IMP] (PUB) SetColorConvertTable 2832( 0x0 )
629: 1188.137 [Graphics] GuiDrawOneImage (PUB)
630: 1188.180 SetImageVramParameter x:0 y:0 w:720 h:240/* Aspect:0*/
631: 1188.208 [IMP] (PUB) SyncroClearImagePlayVram 2569
632: 1188.226 [IMP] GetVramNumber 580
633: 1188.246 [IMP] GetVramNumber 580
634: 1189.050 <RECTCOLOR> RequestRectangleColor Before Lock
635: 1189.432 [FW] fwSetUnitSize (0x200000)
636: 1191.298 [IMP] (PUB) SetVramInformation(w:720 h:240) 1291
637: 1191.367 [IMP] (PUB) SetImageAspect 3683
638: 1191.451 SetImageVramParameter x:48 y:24 w:340 h:102/* Aspect:976264*/
639: 1191.489 [IMP] (PUB) SetImageFileParameter 1348
640: 1191.567 [IMP] (PUB) DrawImageToVram(rot:0 cb:0xFF8851E4) 1393
641: 1191.593 [IMP] GetJpegInfo 750
642: 1192.330 <DJP> RequestDecodeJpeg Before Lock
643: 1214.231 [IMP] SetRotationAngle 616
644: 1214.264 [IMP] SetVramImageParameter 640
645: 1214.294 [IMP] GetVramNumber 580
646: 1215.508 <DJP> RequestDecodeJpeg Before Lock
647: 1242.982 [JP] (50/3) Calling init_func ../../src/bmp.c (b807f4)
648: 1247.041 [JP] (50/3) Calling init_func ../../src/font-dyn.c (b82aa8)
649: 1247.089 [JP] (50/3) Calling init_func debug (b87f68)
650: 1247.193 [JP] (50/3) Calling init_func ../../src/property.c (b8b020)
651: 1248.238 [PROPAD] ERROR GetPropertyData ID = 0x0205000E
652: 1248.373 [PROP] ERROR NOT FOUND PROPERTY ID = 0x0205000E L:874
653: 1248.839 [JP] (50/3) _prop_handler_PROP_LAST_JOB_STATE:1781: job state: 0
654: 1249.631 [PROPAD] ERROR GetPropertyData ID = 0x0206001E
655: 1249.745 [PROP] ERROR NOT FOUND PROPERTY ID = 0x0206001E L:874
656: 1249.901 [PROPAD] ERROR GetPropertyData ID = 0x0204000D
657: 1249.983 [PROP] ERROR NOT FOUND PROPERTY ID = 0x0204000D L:874
658: 1250.579 [JP] (50/3) Calling init_func ../../src/tweaks.c (b8bf38)
659: 1251.006 [JP] (50/3) Calling init_func lens (b8f1f8)
660: 1251.151 [JP] (50/3) Calling init_func ../../src/zebra.c (b93e00)
661: 1251.681 [JP] (50/3) Calling init_func shoot (b9f87c)
662: 1252.387 [JP] (50/3) Calling init_func ../../src/movtweaks.c (ba7b30)
663: 1252.554 [JP] (50/3) Calling init_func help_menu (ba8fbc)
664: 1252.724 [JP] (50/3) Calling init_func ../../src/focus.c (ba97c0)
665: 1253.079 [JP] (50/3) Calling init_func ../../src/notify_box.c (bab220)
1381: 1791.326 < GUI Lock > GUILock_TurnOnDisplay (PUB)
1382: 1791.488 < GUI Lock > GUILockTask 1
1383: 1791.527 [DispCon] TurnOnDisplay (PUB)
1384: 1791.555 [DispCon] TFT_POWDET Low Wait
1385: 1792.743 [DispCon] TFT_POWDET Low Wait
1386: 2262.465 [CFS] Mini Info. (0x1000000e)
1387: 2262.552 [JP] (50/3) read_entire_file:910: failed
5938: 15903.631 [MC] M:1,ID:E(1)
5939: 15903.676 [BIND] Switch (14, 1)
5940: 15903.714 [GUI_E] GUI_Control:1 0x0
5941: 15903.898 [JP] (50/3) my_gui_main_task:85: EVT 372[0]: p=1
5942: 15903.942 [JP] (50/3) my_gui_main_task:90: EVT 372 *o=0x0/0x0/0x0
5943: 15903.973 [JP] (50/3) my_gui_main_task:93: EVT 372 a=0
5944: 15935.627 [GUI] DlgPlayMain.c ROTATE_ELECTRONIC_SUB_DIAL_RIGHT
5945: 15935.719 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5946: 15935.804 [FC] _FC_GetDriveObject (1,1)
5947: 15935.884 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5948: 15935.999 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5949: 15936.053 [FC] _FC_GetDriveObject (1,1)
5950: 15936.104 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5951: 15936.160 [GUI] ChangeMultiCurrentPositionForMove hOldFile(0x51906950)
5952: 15936.213 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5953: 15936.253 [FC] _FC_GetDriveObject (1,1)
5954: 15936.297 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5955: 15936.334 [FC] _FC_GetFirstFileHandle
5956: 15936.368 [FC] ctgFileGetFirstFileHandle (1, 0, 0, 0)
5957: 15936.958 [JP] (50/3) my_gui_main_task:85: EVT 373[4]: p=0
5958: 15937.035 [JP] (50/3) my_gui_main_task:90: EVT 373 *o=0x2050000/0x7f3c2c/0x6c
5959: 15937.070 [JP] (50/3) my_gui_main_task:93: EVT 373 a=0
5960: 15968.951 [JP] (50/3) my_gui_main_task:85: EVT 374[4]: p=0
5961: 15969.028 [JP] (50/3) my_gui_main_task:90: EVT 374 *o=0x2050000/0x7f3d24/0x6c
5962: 15969.061 [JP] (50/3) my_gui_main_task:93: EVT 374 a=0
5963: 16000.466 [GUI] GUI_SetFileIndexInDrive(1)
5964: 16000.993 [JP] (50/3) my_gui_main_task:85: EVT 375[4]: p=0
5965: 16001.076 [JP] (50/3) my_gui_main_task:90: EVT 375 *o=0x2050000/0x7f3e1c/0x6c
5966: 16001.115 [JP] (50/3) my_gui_main_task:93: EVT 375 a=0
5967: 16032.895 [JP] (50/3) my_gui_main_task:85: EVT 376[4]: p=0
5968: 16032.969 [JP] (50/3) my_gui_main_task:90: EVT 376 *o=0x2050000/0x7f3f14/0x6c
5969: 16033.003 [JP] (50/3) my_gui_main_task:93: EVT 376 a=0
5970: 16064.777 [JP] (50/3) my_gui_main_task:85: EVT 377[4]: p=0
5971: 16064.855 [JP] (50/3) my_gui_main_task:90: EVT 377 *o=0x2050000/0x7f400c/0x6c
5972: 16064.890 [JP] (50/3) my_gui_main_task:93: EVT 377 a=0
5973: 16096.291 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
The my_gui_main_task seems to be working... ;)Good job. I am waiting.Code: [Select]5938: 15903.631 [MC] M:1,ID:E(1)
5939: 15903.676 [BIND] Switch (14, 1)
5940: 15903.714 [GUI_E] GUI_Control:1 0x0
5941: 15903.898 [JP] (50/3) my_gui_main_task:85: EVT 372[0]: p=1
5942: 15903.942 [JP] (50/3) my_gui_main_task:90: EVT 372 *o=0x0/0x0/0x0
5943: 15903.973 [JP] (50/3) my_gui_main_task:93: EVT 372 a=0
5944: 15935.627 [GUI] DlgPlayMain.c ROTATE_ELECTRONIC_SUB_DIAL_RIGHT
5945: 15935.719 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5946: 15935.804 [FC] _FC_GetDriveObject (1,1)
5947: 15935.884 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5948: 15935.999 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5949: 15936.053 [FC] _FC_GetDriveObject (1,1)
5950: 15936.104 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5951: 15936.160 [GUI] ChangeMultiCurrentPositionForMove hOldFile(0x51906950)
5952: 15936.213 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
5953: 15936.253 [FC] _FC_GetDriveObject (1,1)
5954: 15936.297 [GUI] GUI_GetTotalFileInDrive FM_GetDriveObject Num(5)
5955: 15936.334 [FC] _FC_GetFirstFileHandle
5956: 15936.368 [FC] ctgFileGetFirstFileHandle (1, 0, 0, 0)
5957: 15936.958 [JP] (50/3) my_gui_main_task:85: EVT 373[4]: p=0
5958: 15937.035 [JP] (50/3) my_gui_main_task:90: EVT 373 *o=0x2050000/0x7f3c2c/0x6c
5959: 15937.070 [JP] (50/3) my_gui_main_task:93: EVT 373 a=0
5960: 15968.951 [JP] (50/3) my_gui_main_task:85: EVT 374[4]: p=0
5961: 15969.028 [JP] (50/3) my_gui_main_task:90: EVT 374 *o=0x2050000/0x7f3d24/0x6c
5962: 15969.061 [JP] (50/3) my_gui_main_task:93: EVT 374 a=0
5963: 16000.466 [GUI] GUI_SetFileIndexInDrive(1)
5964: 16000.993 [JP] (50/3) my_gui_main_task:85: EVT 375[4]: p=0
5965: 16001.076 [JP] (50/3) my_gui_main_task:90: EVT 375 *o=0x2050000/0x7f3e1c/0x6c
5966: 16001.115 [JP] (50/3) my_gui_main_task:93: EVT 375 a=0
5967: 16032.895 [JP] (50/3) my_gui_main_task:85: EVT 376[4]: p=0
5968: 16032.969 [JP] (50/3) my_gui_main_task:90: EVT 376 *o=0x2050000/0x7f3f14/0x6c
5969: 16033.003 [JP] (50/3) my_gui_main_task:93: EVT 376 a=0
5970: 16064.777 [JP] (50/3) my_gui_main_task:85: EVT 377[4]: p=0
5971: 16064.855 [JP] (50/3) my_gui_main_task:90: EVT 377 *o=0x2050000/0x7f400c/0x6c
5972: 16064.890 [JP] (50/3) my_gui_main_task:93: EVT 377 a=0
5973: 16096.291 [GUI] GUI_GetTotalFileInDrive hDriveHandle(0x50000000)
I think that once the problem of LCD is resolved, we can say that we have the ML running on 40D :)
Be patience, ... we still have much work ahead!
Jplxpto,
First: impressive progress for your first port!
if you could publish your code (bitbucket fork?) we can better help you...
for example see missing stubs/consts
Indy
Sounds good.
Point the camera to something recognizable and dump roughly 1MB from the VRAM address to confirm it.
Another way to find VRAM buffers: look for EDMAC registers. In digic 4, these are c0f04008, c0f04108 ... c0f04f08, then c0f26008, c0f26108 etc. One of those registers should point to the LiveView buffer.
...
print 'Find bitmap fonts in Canon DSLR firmwares'
print 'Arm.Indy. based on work by Pel, Trammel Hudson and A1ex\n'
off = 0
while off < len(m) and off <> -1:
off = m.find('FNT\0', off)
if off <> -1:
val = getShortLE(m, off+4)
if val==0xffd8 or val==0xffe2 or val==0xffec:
parseFont(m, off, base)
off = off + 4
...
python ../../../../find_fnt.py 40d.111.ROMF1.0xFF800000.bin 0xFF800000
Find bitmap fonts in Canon DSLR firmwares
Arm.Indy. based on work by Pel, Trammel Hudson and A1ex
0xff9ed2e4: FNT
0xff9ed2e8: (+0x04) 0xffec
0xff9ed2ea: (+0x06) font_width = 20
0xff9ed2ec: (+0x08) charmap_offset = 0x24
0xff9ed2f0: (+0x0c) charmap_size = 0x21f0
0xff9ed2f4: (+0x10) bitmap_size = 0x36858
0xff9ed2f8: (+0x14) font name = 'HCanonGothic'
0xff9ed308: (+0x24) char_codes[]. 2172 chars
0xff9ef4f8: (+0x2214) offsets[]. Last offset value = 0x367ea
0xff9f16e8: (+0x4404) bitmaps[]
0xffa27ed2: (+0x3abee) last bitmap
+0x00: bitmap width = 36
+0x02: bitmap height = 36
+0x04: char width = 36
+0x06: X offset = 0
+0x08: Y offset = 0
bitmap size = 0xb4
0xffa27f40: FNT
0xffa27f44: (+0x04) 0xffe2
0xffa27f46: (+0x06) font_width = 30
0xffa27f48: (+0x08) charmap_offset = 0x24
0xffa27f4c: (+0x0c) charmap_size = 0x170
0xffa27f50: (+0x10) bitmap_size = 0x2eb8
0xffa27f54: (+0x14) font name = 'HCanonGothic'
0xffa27f64: (+0x24) char_codes[]. 92 chars
0xffa280d4: (+0x194) offsets[]. Last offset value = 0x2e36
0xffa28244: (+0x304) bitmaps[]
0xffa2b07a: (+0x313a) last bitmap
+0x00: bitmap width = 30
+0x02: bitmap height = 30
+0x04: char width = 30
+0x06: X offset = 0
+0x08: Y offset = 0
bitmap size = 0x78
0xffa2b0fc: FNT
0xffa2b100: (+0x04) 0xffe2
0xffa2b102: (+0x06) font_width = 36
0xffa2b104: (+0x08) charmap_offset = 0x24
0xffa2b108: (+0x0c) charmap_size = 0x170
0xffa2b10c: (+0x10) bitmap_size = 0x4448
0xffa2b110: (+0x14) font name = 'HCanonGothic'
0xffa2b120: (+0x24) char_codes[]. 92 chars
0xffa2b290: (+0x194) offsets[]. Last offset value = 0x438a
0xffa2b400: (+0x304) bitmaps[]
0xffa2f78a: (+0x468e) last bitmap
+0x00: bitmap width = 36
+0x02: bitmap height = 36
+0x04: char width = 36
+0x06: X offset = 0
+0x08: Y offset = 0
bitmap size = 0xb4
At least someone else is using this script ;-) maybe I should put them on bitbucket...
@jplxpto
your files on bitbucket are one week old and comments are "not tested"
- what is working/not working ?
- what are missing / working stubs and consts values ?
Indy
NSTUB(0xFFD4F338, TryPostEvent)
NSTUB(0xFFD4F398, TryPostEvent_end)
NSTUB(0xFFD56470, TryPostStageEvent)
NSTUB(0xFFD564FC, TryPostStageEvent_end) // PendStageEvent
NSTUB(0xFFD6A1C8, get_current_task) // 0x22E00
NSTUB(0xFFD69F8C, get_task_info)
NSTUB(0xFFD6B8B0, get_active_task_list)
NSTUB(0xFFD6A1C8, get_current_task) // 0x22E00
NSTUB(0xFFD69F8C, get_task_info)
NSTUB(0xFFD6B8B0, get_active_task_list)
For drawing, use bmp_fill and bmp_draw_rect (they both have the same syntax, so rectangles drawn with those two functions should overlap).
jplxpto,
As long as you're a way to progress, it sounds good. That's not easy after all...
How about audio threshold (there is a script for that :-) and stubs ?
maybe I could help here...
Indy
"How about audio threshold (there is a script for that :-) " ...
I'm sorry but I did not understand what you mean.
Why tell me in audio?
#define BGMT_WHEEL_UP 0x00
#define BGMT_WHEEL_DOWN 0x01
#define BGMT_WHEEL_LEFT 0x02
#define BGMT_WHEEL_RIGHT 0x03
#define BGMT_PRESS_SET 0x04
#define BGMT_MENU 0x05
#define BGMT_INFO 0x06
#define BGMT_JUMP 0x07
#define BGMT_PLAY 0x08
#define BGMT_TRASH 0x09
#define BGMT_PICSTYLE 0x13
#define BGMT_PRESS_ZOOMIN_MAYBE 0x0a
#define BGMT_UNPRESS_ZOOMIN_MAYBE 0x0b
#define BGMT_PRESS_ZOOMOUT_MAYBE 0x0c
#define BGMT_UNPRESS_ZOOMOUT_MAYBE 0x0d
#define BGMT_PRESS_DIRECT_PRINT 0x0e
//#define BGMT_UNPRESS_DIRECT_PRINT_ 0x0f WRONG MAYBE
//~ happens anytime joy stick is unpressed from any position
#define BGMT_UNPRESS_UDLR 0x15
#define BGMT_PRESS_UP 0x16
#define BGMT_PRESS_UP_RIGHT 0x17
#define BGMT_PRESS_UP_LEFT 0x18
#define BGMT_PRESS_RIGHT 0x19
#define BGMT_PRESS_LEFT 0x1a
#define BGMT_PRESS_DOWN_RIGHT 0x1b
#define BGMT_PRESS_DOWN_LEFT 0x1c
#define BGMT_PRESS_DOWN 0x1d
#define BGMT_PRESS_CENTER 0x1e
// dummy
#define BGMT_PRESS_HALFSHUTTER 0x0b
//#define BGMT_UNPRESS_HALFSHUTTER -12345
#define BGMT_UNPRESS_SET -123456789
#define GMT_GUICMD_OPEN_SLOT_COVER 0x28
#define GMT_GUICMD_START_AS_CHECK -12345678
#define GMT_GUICMD_LOCK_OFF -12345678
#define BGMT_Q BGMT_PRESS_DIRECT_PRINT
#define BGMT_LV BGMT_JUMP
#define BTN_ZEBRAS_FOR_PLAYBACK BGMT_JUMP
#define GMT_OLC_INFO_CHANGED -12344
Same button codes as the 50D.
What about unpress_set though? Does the camera correct the unpress correctly?
Thumbs up and thanks for the effort.
The family is getting bigger as time passes.
:)
Your ptp_register_handler function is correct
I want to make this task easier and increase the life of the CF connector of my camera.
It isn't easier, but have you thought about an SD to CF converter? I know they exist, but not sure how they would work with ML. http://forums.dpreview.com/forums/post/29819778 (http://forums.dpreview.com/forums/post/29819778) looks a little suspicious in terms of 40D, but that was in 2008... If it worked it would at least remove the strain on your CF connector.
n/p, you are welcome ;)
check your mail, i sent you a new version.
you got it working? nice, good job!
Hi
I'm just another guy who is keeping fingers crossed for this port.
I have 40D with firmware 1.0.8. (not updated yet) so if any testing on this firmware is needed you can sign me in.
And, unless I'm mistaken, you can always roll-back to an older fw version
hi, 40D owner here :)
i've been searching some information about a version of ML for the 40D for months and today i stumbled upon this thread..
i signed in just to say that you guys are doing an amazing job!
unfortunately, im not very familiar with all this programming stuff so the only thing i can do is waiting for you to finish working on it :D
if there is anything i can do to help you guys with the project that does not involve taking a risk of bricking my cam (its my only one) ill be glad to do it!
i hope to hear some good news soon!
Good Luck :)
hi, 40D owner here :)
i've been searching some information about a version of ML for the 40D for months and today i stumbled upon this thread..
i signed in just to say that you guys are doing an amazing job!
unfortunately, im not very familiar with all this programming stuff so the only thing i can do is waiting for you to finish working on it :D
if there is anything i can do to help you guys with the project that does not involve taking a risk of bricking my cam (its my only one) ill be glad to do it!
i hope to hear some good news soon!
Good Luck :)
A donation will be a good gesture of support.
ipython
run -i img.py
a = readsampled("./VRAM_01.DAT")
b = readsampled("./VRAM_02.DAT")
d = array(a) - array(b)
d[d != 0] = 1
plot(d); show()
x = 230424676
gw = 1458
gh = 972
gp = 2916
gx = x + gp * (0)
gs = gp * gh
s = readseg("./VRAM_02.DAT", gx, gs)
imgseq(s, gp)
hex(gx)
MEM(0x1e020 + 0x18) = MEM(0x1E038) = 0x1dbc0064
MEM(0x1e0a0 + 0x14) = MEM(0x1E0B4) = 0x1dbc0064
<conn> w 0x1e000 512
0001e000 00000000 0013a2dc 0013a2b8 00000000 10687248 000002d0 000002d0 000000f0
0001e020 00000000 1071f0d4 000002d0 000002d0 000000f0 00000002 1dbc0064 00000798
0001e040 00000798 00000510 00000798 00000510 00000000 00000000 00000000 00000000
0001e060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0001e080 00000000 00000000 00484e5c 001ee400 00000001 00000f30 00000a20 00001d40
0001e0a0 00001380 00000000 00000001 00000000 00000000 1dbc0064 1e26f264 1071f0d4
0001e0c0 00000000 00484e5c 001ee400 00000000 00000000 00000f30 00000a20 000009c0
0001e0e0 00000750 00000000 00000000 00000000 00000000 000002d0 000001e0 000002d0
0001e100 00000000 00000018 000002d0 000000d8 0001dc00 00000000 00000000 00000000
0001e120 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0001e140 0080478c 00000000 0001db90 00000000 ff8851e4 00012d6c 00000000 00000000
0001e160 ffca415c 00000000 00000000 00000000 00000000 00000000 00000018 000002d0
0001e180 000000d8 00000000 00000000 1071f0d4 000002d0 000000f0 00000000 00000018
0001e1a0 000002d0 000000d8 00000000 00000000 00000000 00000000 00000000 00000000
0001e1c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0001e1e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Wow, really great to see this progress!
Is it possible to extend highiso to 12.800?
What about AF-microadjust?
If this could be added, we could name this cam 45D ^^
Hi,
good progress Jplxpto !
maybe by enable debug on these functions we can find LVRAM addresses (offsets in firmware in the 1st column) :
4a0290 [BmpDDev] CreatePhysicalVram (PUB)
4a03b4 [BmpDDev] DeletePhysicalVram (PUB)
in 40d 1.1.1 it seems there are function to monitor the MPU=TX19A
32fa8 MonOpen
32fb0 MonClose
32fbc MonRead
32fc4 MonReadAndGetData
32fd8 MonWrite
32fe4 MonCall
32fec FA_TestMonRead
32ffc FA_TestMonCall
3300c FA_TestMonReadAndWrite
33130 m_hSemaphoreDataComp
33148 ../MpuMonitor.c
Indy
NSTUB(0xFF8448B4, FA_TestMonCall)
NSTUB(0xFF8446EC, FA_TestMonReadAndWrite)
NSTUB(0xFF8445AC, FA_TestMonRead)
NSTUB(0xFF844528, MonCall)
NSTUB(0xFF844284, MonClose)
NSTUB(0xFF84425C, MonOpen)
NSTUB(0xFF844354, MonReadAndGetData)
NSTUB(0xFF8442AC, MonRead)
NSTUB(0xFF844480, MonWrite)
NSTUB(0xFFB27438, mon)
NSTUB(0xFF843024, mon_funcs_table)
grep -i mon 40d.111.ROMF1.0xFF800000.strings
ffb44014 (Called->MoveFocusLensForPcMon)
ffb44038 Err:MoveFocusLensForPcMon, Unexpected PC_MON_MF_MODE = %d
ffb44074 MoveFocusLensForPcMon LatestStep=%d
ffb46c38 Err:HaveLensError, Mounting MonitorTool
ffb47a28 Err:CalcMovingStepForPcMon, Unexpected Coeff = %d
ffb47a5c Err:CalcMovingStepForPcMon, Result step is over 2bytes
NSTUB(0xFFCB02B4, BmpDDev_CreatePhysicalVram);
extern int BmpDDev_CreatePhysicalVram(int *pWidth, int *pHeight, int *pPitch, int **pVRamAddress);
int width;
int height;
int pitch;
int *vRamAddress;
int result;
result = BmpDDev_CreatePhysicalVram(&width, &height, &pitch, &vRamAddres);
313: 608.094 [IMP] CreateVram 665
330: 684.874 [Graphics] GuiClearImage
331: 684.933 [IMP] (PUB) SetVramInformation(w:720 h:240) 1291
332: 684.997 SetImageVramParameter x:0 y:0 w:720 h:240/* Aspect:0*/
333: 685.032 [IMP] (PUB) SyncroAllClearImagePlayWorkVramWithoutEngine 2644
0001e0a0 00001380 00000000 00000001 00000000 00000000 1dbc0064 1e26f264 1071f0d4
698: 3711.532 [GUI] StartPlayMain
699: 3718.551 [Graphics] CreateSharedBuffer !!!
700: 3719.198 [IMP] (PUB) SetImageWorkMemory 1:0x1dbc0064, 2:0x1e26f264
701: 3719.274 [IMP] (PUB) SetImageWorkMaxPixel W:2496,H:1872,0x6af200
702: 3719.292 [Graphics] GuiGraphicsNormalMode (PUB)
ImageWorkMemory 1: 0x1dbc0064
ImageWorkMemory 2: 0x1e26f264
0x1dbc0064 + 0x6af200 = 0x1e26f264
0x6af200 size (maybe)
LV buffer is the one used for LiveView display, it's extremely unlikely to have higher resolution than 720x480.
If you alter the data in the LV buffer, the changes should be visible on the display (that's how magic zoom works).
What you found seems to be a buffer used to decode the images in playback (before downsampling it for display), and probably the zoom operations are based on that buffer. It's not used in LiveView (otherwise 40D would be the first Canon dslr that can record 2K). 5Dc has one too.
Check repo.
NSTUB(0xFF83EE50, FA_CaptureTestImage)
NSTUB(0xFF8473B4, FA_CreateTestImage)
NSTUB(0xFF83F1C4, FA_DefectsTestImag)
NSTUB(0xFF847538, FA_DeleteTestImage)
NSTUB(0xFF840880, FA_DetectDefTestImage)
NSTUB(0xFF83FF80, FA_FA_ProjectionTestImage)
NSTUB(0xFF840060, FA_FA_ShadingTestImage)
NSTUB(0xFF84037C, FA_ObIntegTestImage)
NSTUB(0xFF840C78, FA_ShadingTestImageForLV)
NSTUB(0xFF83F084, FA_SubtractTestImage)
NSTUB(0xFF8448B4, FA_TestMonCall)
NSTUB(0xFF8446EC, FA_TestMonReadAndWrite)
NSTUB(0xFF8445AC, FA_TestMonRead)
NSTUB(0xFF84144C, FA_VProjectionTestImage)
NSTUB(0xFF845380, FA_YuvDevelopTestImage)
NSTUB(0xFF8841E4, GuiTestOneImage)
NSTUB(0xFFB64954, LVTest)
NSTUB(0xFFCA0EE8, IMP_PUB_DrawImageToVram)
NSTUB(0xFFCA7D48, IMPV_PUB_MakeHDVramFromYuv)
When I reach that goal, I hope to have your help to test the result of my work.
Thanks from an Italian fan for the job that is doing, also I possess a canon 40D is I wait for good news! ;)
40D owner here. Been eying the T4i for a while. If I could get video out of this 40D (atleast 480p) I'd be holding off getting the T4i for now.
Thanks for the time that's already been put towards this and the efort that's currently being invested.
And thanks jplxpto!
Here is the result of my first analysis to function BmpDDev_CreatePhysicalVram.Code: [Select]NSTUB(0xFFCB02B4, BmpDDev_CreatePhysicalVram);
Code: [Select]extern int BmpDDev_CreatePhysicalVram(int *pWidth, int *pHeight, int *pPitch, int **pVRamAddress);
int width;
int height;
int pitch;
int *vRamAddress;
int result;
result = BmpDDev_CreatePhysicalVram(&width, &height, &pitch, &vRamAddres);
result is :
0 when : The parameters are all valid and was allocated a block of 0x15184 bytes
3 when :(pWidth == NULL || pHeight == NULL || pPitch == NULL || pVRamAddress == NULL)
5 when : Could not allocate memory (pVRamAddress != NULL && *pVRamAddress == NULL)
width is 0x2D0 (720)
height is 0x0F0 (240)
pitch is 0x2D0 (720)
*pRamAddress is the vram address allocated by DMA a filled with zeros.
block size = 0x15180+4 = 86404 d = 360 * 240 bytes
I think, it takes 4 bits per pixel or 2 pixels per byte...
then the resolution should be: 720 * 240Code: [Select]313: 608.094 [IMP] CreateVram 665
330: 684.874 [Graphics] GuiClearImage
331: 684.933 [IMP] (PUB) SetVramInformation(w:720 h:240) 1291
332: 684.997 SetImageVramParameter x:0 y:0 w:720 h:240/* Aspect:0*/
333: 685.032 [IMP] (PUB) SyncroAllClearImagePlayWorkVramWithoutEngine 2644
I will explore the mechanisms of debug, developed by g3gg0 and try to get the list of function parameters.
I think that the memory allocated by BmpDDev_CreatePhysicalVram is stored at (*0x5C00)->off_0x4.
You can see that at FF9B9510 (sub_FF9B944C).
Today, I no longer have time to test ... tests are for another day!
MEM(0x5BF8) = 0xff9b943c
MEM(ff9b943c) = 'Vram Instance' (0x6D617256 0x736E4920 0x636E6174 0x00000065)
00005be0 aaaaaa7f bbbbbb7f cccccc7f dddddd7f eeeeee7f ffffff7f ff9b91e4 ff9b943c
00005c00 0065cae4 000002d0 000000f0 00000001 00000001 00000000 006301dc 0062ffcc
00005c20 0065cae4 00671d2c 000002d0 000001e0 00000000 00000000 007c417c 00687104
00005c40 ff9c1918 000ea508 00000007 00000001 00000000 00000000 00000000 00000000
00005c60 ff9c3540 0065bbec 0065bcb0 0065c28c 0065c424 0065c1ec 0065bf0c ff9caf40
00005c80 ff9caf50 ff9caf68 0062e8d8 00000000 ff9ed2bc ffa2f848 ffa913e4 ff9d1368
0065cae0 00000038 ff9b943c 000002d0 000002d0 000000f0 10671da4 000ea52c 00000000
0065cb00 00000000 00000000 000002d0 000000f0 0065cad8 00671d20 00015210 22f586fa
0065cb20 50bf205e 0c2f13f7 407d0aff 12fa6ff5 05f758ff 08f70afa 00df0aed 81f92c25
0065cb40 409fe0ff 00fe3dff 01bc04df 027f0d1f 84fe20fc 017db0e5 08fd08cf 22222222
MEM(0x5BFC) = 0xff9b943c ; pointer to 'Vram Instance'
MEM(0x5c00) = 0x0065cae4 ; VRAM Address (maybe)
MEM(0x5c04) = 0x000002d0 ; width (720)
MEM(0x5c08) = 0x000000f0 ; height(240)
MEM(0x5c0C) = 0x00000001 ; ???
MEM(0x5c24) = 0x00671d2c ; VRAM Address (maybe)
MEM(0x5c28) = 0x000002d0 ; width (720)
MEM(0x5c2c) = 0x000001e0 ; height(480)
MEM(0x5c3f) = 0x00000000 ; ???
MEM(0x0065cae4) = 0xff9b943c ; pointer to 'Vram Instance'
MEM(0x0065cae8) = 0x000002d0 ; width (720)
MEM(0x0065caec) = 0x000002d0 ; pitch (720)
MEM(0x0065caf0) = 0x000000f0 ; height (240)
MEM(0x0065caf4) = 0x1065cb5c ; ???
MEM(0x00671d2c) = 0xff9b943c ; pointer to 'Vram Instance'
MEM(0x00671d30) = 0x000002d1 ; width (721) ???
MEM(0x00671d34) = 0x000002d0 ; pitch (720)
MEM(0x00671d38) = 0x000000f0 ; height (240)
MEM(0x00671d3C) = 0x10671da4 ; ???
size = 0x15180 bytes ( 720 / 2 * 240 )
MEM(ff9b943c) = 'Vram Instance' (0x6D617256 0x736E4920 0x636E6174 0x00000065)
hexdump -C DUMP_RAM_0x0_0x100000.bin | grep "3c 94 9b ff"
00005bf0 7f ee ee ee 7f ff ff ff e4 91 9b ff 3c 94 9b ff |............<...|
000ea4e0 12 00 00 00 02 00 00 00 3c 94 9b ff 01 00 00 00 |........<.......|
000ea530 3c 94 9b ff 01 00 00 00 38 a5 0e 00 38 a5 0e 00 |<.......8...8...|
0065cae0 38 00 00 00 3c 94 9b ff d0 02 00 00 d0 02 00 00 |8...<...........|
00671d20 10 cb 65 00 58 1d 67 00 38 00 00 00 3c 94 9b ff |..e.X.g.8...<...|
MEM(0x00005BF0) = 0xFF9B943C
MEM(0x000EA4E8) = 0xFF9B943C (LV VRAM 1) maybe
MEM(0x000EA530) = 0xFF9B943C (LV VRAM 2) maybe
MEM(0x0065CAE4) = 0xFF9B943C (BMP VRAM 1) maybe
MEM(0x00671D2C) = 0xFF9B943C (BMP VRAM 2) maybe
I've got 2 x 40D, therefore following this development with a smile :-)
I crossed the T4i off my Christmas list. Still holding on to my 40D :)
Unfortunately I just sold my 40D! But I root for your success! Nice work.
newbie developer on the block and willing to help, just had my toolchain setup and looking for a place to start :)
I have a 40D and i'm more than willing to help with the porting effort.
@jplxpto
thanks for all the links:)
got everything setup correctly (hopefully) and managed to build a version and have it run successfully on a borrowed 550D.
Now to get working on 40D..
Sounds good. Now more developers will be jumping in to explore the world of 40D ML and help to make our dream come true one day. I will not be selling my 40D definitely. I may be able to get $300 for the selling of it but keeping the camera and keep coming back to this thread everyday is like waiting for the birth of my baby and it's a lot of joy and fun.
Thank you guys.
NSTUB(0xFFD45DE0, GetListOfName)
NSTUB(0xFFD3E320, call);
NSTUB(0xFFD45CB8, FindName)
NSTUB(0xFFD4ECC0, Register_Func_with_Name)
NSTUB(0xFFD3E45C, Register_Func_with_Name_sub_1)
NSTUB(0xFF84768C, FA_Release)
ff811130 FA_Release
ff83ebc8 FA_Release
ff83ebd4 FA_ClearReleaseModeForLV
ff83ebf0 FA_SetReleaseModeForLV
ff83edec [FA] FA_CaptureTestImage
ff8478fc Remote
ff847a58 this
ff847a60 ../Remote.c
ff847a6c rmtRelease
ff847a78 rmtSaveToPC
ff84c148 RssRemoteReleaseQue
ff84c15c [RSS]FAReleaseExecute:%lx,%lx,%lx
ff84c180 [RSS]rssFAReleaseEnd:%lx
ff84c19c FA_RemoteRelease
ff84c1b0 FA_FinishRemoteRelease
ffb64a38 PtpDpsRmtReleaseEventFlag
I was examining some stubs that allow register, search and call functions by name.
In 400d most of these registered (by name) functions are only for eventproc stuff and the internal console (the shell) stuff.
Not all functions are registered there, and I believe that they wont help you.
In 400d there is a list with strings for the functions,
let's say for example "Function1, Function2, Function3, ..."
These strings are pointing to the real functions which are:
eventproc_Function1, eventproc_Function2, eventproc_Function3, ...
So finding this list with pointers, may only help you to name the real functions (if you haven't done it so far).
But if you need to call suck function, you can directly call the eventproc_Function1(), instead of call_function("Function1");
I used a button to call the stub FA_Release.
I could take pictures inside and outside the LV mode but it always opens and closes the shutter and this should not be proper operation for the intervalometer.
I'm not sure how it works on LV cameras, but in 400d it is always moving the mirror, even when MLU (Mirror Lock Up) is set. This is expected behavior.
Perhaps what you want to do is not calling the "Release". Which is basically the shutter button press. Perhaps you wanted to take snapshot of the LV screen, but then you wont have the resolution you need ?
Hello jplxpto ! Focus assist will be work in ML for 40D ? I need it very much !
Thank You !
grep ".*[[:space:]]PROP_" 40d.111.ROMF1.0xFF800000.bin.strings | sed -e "s|.*[[:space:]]PROP_|PROP_|g" | sed -e "s|[[:space:]].*$||g" | sed -e "s|[\:\=\[\(].*$||g" | sort | uniq > 40d111_properties.txt
cat 40d111_properties.txt
PROP_ABORT
PROP_ACCESS_REMAIN
PROP_ACTIVE_SWEEP_ACTIVATE_CONDITION
PROP_ACTIVE_SWEEP_MODE
PROP_ACTIVE_SWEEP_STATUS
PROP_AEB
PROP_AFPOINT
PROP_AUTO_POWEROFF_TIME
PROP_AUTO_ROTATE
PROP_BATTERY_CHECK
PROP_BATTERY_REPORT
PROP_BEEP
PROP_BODY_ID
PROP_BUILTIN_STROBO_SETTING
PROP_CARD1_CLUSTER_SIZE
PROP_CARD1_EXIST
PROP_CARD1_FILE_NUMBER
PROP_CARD1_FOLDER_NUMBER
PROP_CARD1_FREE_SIZE
PROP_CARD1_IMAGE_FORMAT
PROP_CARD1_IMAGE_QUALITY
PROP_CARD1_IMAGE_SIZE
PROP_CARD1_NEXT_FOLDER_NUMBER
PROP_CARD1_RECORD
PROP_CARD1_STATUS
PROP_CARD2_CLUSTER_SIZE
PROP_CARD2_EXIST
PROP_CARD2_FILE_NUMBER
PROP_CARD2_FOLDER_NUMBER
PROP_CARD2_FREE_SIZE
PROP_CARD2_NEXT_FOLDER_NUMBER
PROP_CARD2_RECORD
PROP_CARD2_STATUS
PROP_CARD3_CLUSTER_SIZE
PROP_CARD3_EXIST
PROP_CARD3_FILE_NUMBER
PROP_CARD3_FOLDER_NUMBER
PROP_CARD3_FREE_SIZE
PROP_CARD3_IMAGE_FORMAT
PROP_CARD3_IMAGE_QUALITY
PROP_CARD3_IMAGE_SIZE
PROP_CARD3_NEXT_FOLDER_NUMBER
PROP_CARD3_RECORD
PROP_CARD3_STATUS
PROP_CARD_EXTENSION
PROP_CARD_IMAGE_FORMAT
PROP_CARD_IMAGE_QUALITY
PROP_CARD_IMAGE_SIZE
PROP_CARD?_STATUS
PROP_CFN_TAB3
PROP_CFN_TAB4
PROP_COLOR_SPACE
PROP_COMP
PROP_COMPRESSION_L
PROP_COMPRESSION_M1
PROP_COMPRESSION_M2
PROP_CONNECT_TARGET
PROP_CONNECT_TARGET_WFT
PROP_CURRENT_MEDIA
PROP_CUSTOM_WB
PROP_DATA_INPUT_TRANSMISSION
PROP_DATE_DISPLAY_FORMAT
PROP_DEFAULT_OBWBREG
PROP_DIR_SUFFIX
PROP_DISPLAY_AF_POINTS
PROP_DP_DPOF_PARAM
PROP_DP_EXT_OPTION_PARAM
PROP_DP_STANDARD_PARAM
PROP_DSDEFINE
PROP_DUST_DELETE_DATA
PROP_ELECTRIC_SHUTTER_MODE
PROP_ERROR_FOR_DISPLAY
PROP_FILE_NUMBERING_MODE
PROP_FILE_PREFIX
PROP_FIRM_VERSION
PROP_FIXED_VERSION
PROP_FLAVOR_BW
PROP_FLAVOR_FAITHFUL
PROP_FLAVOR_LANDSCAPE
PROP_FLAVOR_MODE
PROP_FLAVOR_NEUTRAL
PROP_FLAVOR_PORTRAIT
PROP_FLAVOR_STANDARD
PROP_FLAVOR_USER1
PROP_FLAVOR_USER2
PROP_FLAVOR_USER3
PROP_FLAVOR_XXXX
PROP_GPS_STATUS
PROP_GUI_STATE
PROP_HDD_DCIM_PATH
PROP_HIGHLIGHT_ALERT
PROP_HISTOGRAM
PROP_ICU_AUTO_POWEROFF
PROP_ICU_UILOCK
PROP_Initialize
PROP_LANGUAGE
PROP_LAST_JOBID
PROP_LAST_JOB_STATE
PROP_LCD_BRIGHTNESS
PROP_LCD_STATE
PROP_LENS
PROP_LIVE_VIEW_GRID
PROP_LIVE_VIEW_VALID
PROP_LOGICAL_CONNECT
PROP_LOGICAL_CONNECT_WFT
PROP_LV_AF_RESULT
PROP_LV_AVAILABLE_AREA
PROP_LV_EXPOSURE_MODE
PROP_LV_HISTOGRAM
PROP_LV_OUTPUT_DEVICE
PROP_LV_SPDN_BTN_STATUS
PROP_LV_TEST_REMOTE_RELEASE
PROP_MENU_POSITION
PROP_METERING_MODE
PROP_METERING_TIMER_FOR_LV
PROP_MWB
PROP_MWB1
PROP_MYMENU_LIST
PROP_NO_CARD_RELEASE
PROP_NUMBER_OF_CONTINUOUS_MODE
PROP_PC_FLAVOR1_PARAM
PROP_PC_FLAVOR2_PARAM
PROP_PC_FLAVOR3_PARAM
PROP_PC_FREE_SIZE
PROP_PC_WB1
PROP_PC_WB2
PROP_PC_WB3
PROP_PC_WB4
PROP_PC_WB5
PROP_PERMIT_ICU_EVENT
PROP_PHOTO_STUDIO_ENABLE_ISOCOMP
PROP_PHOTO_STUDIO_ISOCOMP
PROP_PHOTO_STUDIO_MODE
PROP_PHOTO_STUDIO_MODE_CHANGE_AUTO_PASSWORD_KEY
PROP_PHOTO_STUDIO_MODE_CHANGE_MANUAL_PASSWORD
PROP_PHOTO_STUDIO_SETUP_PASSWORD
PROP_PHYSICAL_CONNECT
PROP_QUICKREVIEW
PROP_QUICKREVIEW_MODE
PROP_RED_EYE_REDUCTION
PROP_REMOTE_BULB_RELEASE_END
PROP_REMOTE_BULB_RELEASE_START
PROP_REMOTE_RELEASE
PROP_SAVE_MODE
PROP_SaveMpuDebugData
PROP_SDIO_PHYSICAL_CONNECT
PROP_SDIO_PHYSICAL_CONNECT_START
PROP_SELECTED_FILE_PREFIX
PROP_SET_TV
PROP_SHOOTING_TYPE
PROP_SHUTTER_COUNTER
PROP_SPECIAL_OPTION
PROP_STARTUP_CONDITION
PROP_STROBO_CFN
PROP_STROBO_SETTING
PROP_STROBO_WIRELESS_SETTING
PROP_TEMP_STATUS
PROP_TRANS_METHOD_WFT
PROP_TUNING_FLAG
PROP_USBDEVICE_CONNECT
PROP_USER_FILE_PREFIX
PROP_USER_FILE_PREFIX2
PROP_VIDEO_PHYSICAL_CONNECT
PROP_VIDEO_SYSTEM
PROP_WBB_BA
PROP_WBB_GM
PROP_WB_MODE
PROP_WBS_BA
PROP_WBS_GM
PROP_WFT_ADAPTERINFO
PROP_WFT_CAPTION
PROP_WFT_DELIMITER_STATUS
PROP_WFT_DONGLE
PROP_WFT_FTP
PROP_WFT_HOSTINFO
PROP_WFT_HTTP
PROP_WFT_IMAGE_TRANS
PROP_WFT_LOCK
PROP_WFT_SYSTEM
PROP_WFT_TCPIP
PROP_WFT_TRANSMISSION
PROP_WFT_WIRED
PROP_WFT_WIRELESS
PROP_WIZARD_WFT
I think that 40D only allows MF on LV mode. What is the purpose of this property? ...
PROP_LV_AF_RESULT
waiting waiting waiting :)There's no ML for the 400D. It's a different project altogether called 400plus. We do share some code and ideas though
Just tried ML on a friend's 400d and now waiting aggressively for 40d version.......JPL really nice work and dedication.......
Is there any progress? Any idea (days or months) when we will be able to run ML on our 40d? Please! Do something we are waiting waiting waiting.
I have just registered just to post here and give you a thumbs up.
Great effort, I have been long waiting for somebody to port ML to my 40D.
It would be great to be able to record video and many of the ML features in photography, like focus peaking, advance bracketing, focus bracketing, etc.
I am seeking for any news about it.
Please keep trying and thanks for your efforts.
I will pay for the firmware as soon as there is an early versión.
The dveloper does not seem to be active in the forum, not just this post.
It seems he is busy with personal tasks.
Of course this is not probably his main priority, there is work and family, personal troubles...
Hope he will work en this soon.
The dveloper does not seem to be active in the forum, not just this post.
It seems he is busy with personal tasks.
Of course this is not probably his main priority, there is work and family, personal troubles...
Hope he will work en this soon.
YES!!! You are right! Thank you for your kindness.Well come back and many thanks for your efforts. Glad to hear from you.
You may not believe but I finally went and uncle have not photographed the child with a DSLR. :(
I love to shoot a little of everything but children are at the top of my list. And now I have a new reason to shoot.
BR
jplxpto,I found some information for you
1.http://valexvir.narod.ru/ -----from Russian,for 40D, 50D, 5D Mark II и 1Ds Mark III - record video 1024x680 with a pc.
2.DIGIC III - (VxWorks OS) from CHDK http://chdk.wikia.com/wiki/For_Developers
3.one chinese cracked the firmware of 40D,found out the “factory menu”;ISO 50-6400;AF CK;but he stoped (write text.bin),
Thank you!
Is there AF microadjustment function?Нету в ML микроаджустмента, такчто даже не надейтесь.
Or maybe I can adjust AF without ML?У 40д нет такой фичи, так что только нести объектив в сервис.
I'm from Russia :)Ничего, бывает =)
No, but it will be easier to port, if anyone is interested in doing that.
http://www.eoshd.com/content/10507/it-lives-5-year-old-350-canon-50d-becomes-raw-cinema-monster (http://www.eoshd.com/content/10507/it-lives-5-year-old-350-canon-50d-becomes-raw-cinema-monster)I found the required function stubs for it, so in theory it should work if somebody is still working on this port ;)
Wow......will this happen on 40D ?
I'M LIVE :)
Sorry ... I have spent many days with health problems and hard work.
My life has been a bit complicated but I hope to get back to work on this project a few days from now.
I'll need to read some posts. I am now a bit outdated.
I think the developers have done an excellent job.
I promise appear shortly.
BR
Good to hear from jplxpto after long long time. You are only person working on this port and all our eyes are on you.....May God bless you with health and you can work on this port.
Can you please tell us how much more work would be required to complete this port. Last time I think you were working with menus. hope to hear good news from you and we all pray from your health......amen
I hope your health problems are not serious.
It's nice to see you are back to work with us!
Well come back.
Glad to hear you aee ok and tour health problemas are gone.
Great to ser you are back to the project toó.
As soon as you have a operational alpha versión i will try it in my camera.
if you could add iso 12800 - i would donate some cash for your work :)
I built a 40D "snapshot" build (but without the FIR loader, as I haven't nailed down a procedure for putting one together yet), if anyone is interested. To "bump up" interest, there's also 5D3 and 50D builds there.
https://bitbucket.org/rufustfirefly/magic-lantern/downloads
I've got a 40D body laying around -- I'd be perfectly willing to dump the firmware, search for function calls, etc; I just have little to no expertise in doing any of that, and the Magic Lantern wiki seems perilously out of date. Could anyone point me to a somewhat more up to date walkthrough of either a) using the extracted firmware components to analyse or b) dumping active ROM to do the same -- and any postings, articles, or pages about digging for the locations of specific calls?
I know it seems like a tall order, but I'd love to help if anyone can point me in the right direction. I'm using a Linux machine, but I have a Windows VM handy (as well as a copy of WINE) if it's needed.
I built a 40D "snapshot" build (but without the FIR loader, as I haven't nailed down a procedure for putting one together yet), if anyone is interested. To "bump up" interest, there's also 5D3 and 50D builds there.
https://bitbucket.org/rufustfirefly/magic-lantern/downloads
loading that 40d00111-ML.2013-08-30-007bb9a0574d.fir with the files from ML-40D.2013-08-30.53fbc6b53da5.zip on the card
doesnt work, only the upper display is on, battery has to be taken out...
how shall it work?
rufustfirefly can you please add a little tutorial as how can I added it to 40d and CF card. sorry but I am totally new to these firmwares stuff.
40d00111-ML.2013-08-30-007bb9a0574d.fir : screen turns black, DSLR works apart from the fact that it doesn't recognize the CF carf anymore. Needed a battery remove to restore proper function.I see more or less the same (also with 1.1.1) - except the camera won't capture, but focus works...
Anyone have an update on ML for the 40D? I've read this thread start to finish and looked all over without a clear answer. The ML website claims it's compatible with the 40D but I can't get it to work. Any help or guidance is much appreciated thanks to all for the hard work and time given to make this possible.
I also thought so and even told other people as such, but then I was told here that 40d is not working at all and this most likely won't change :-\ ... it's not even digic4 so copy/pasting code most likely won't work.
If anyone's still watching this, here's where I'm at:
I had tried, relatively unsuccessfully, to port the existing VxWorks ports to the 40D. I'm going back to the 1000d_dev work, and pushing out my current work, etc, to github. If anyone would like to assist, it's here:
https://github.com/jbuchbinder/40d_dev (https://github.com/jbuchbinder/40d_dev)
Thanks!
If anyone's still watching this, here's where I'm at:
I had tried, relatively unsuccessfully, to port the existing VxWorks ports to the 40D. I'm going back to the 1000d_dev work, and pushing out my current work, etc, to github. If anyone would like to assist, it's here:
https://github.com/jbuchbinder/40d_dev (https://github.com/jbuchbinder/40d_dev)
Thanks!
Aside from this extensive thread, are there any other resources regarding design of the app??? Or is it just "read the code?"
i just want to say that i would be so freakin' happy if you could make it possible to use a 40d as a video camera.
thank you very much for all the work here!
I've seen some videos on YouTube that show video recording on a 40D already. I'm going to google it now.
Don't pray, code!
I've got it compiling and linkingDid you try to run it on your camera?
There is no known address for write_card_bootflag so I formatted the card manually.
Added the 450D and 40D changes to the vxworks branch (https://bitbucket.org/hudson/magic-lantern/branch/vxworks) in the main repo. Did some minor cleanups (compiler warnings), had some attempts at emulating it in QEMU, but didn't really check any deeper yet.
For reverse engineering, I've adapted the dm-spy-experiments (http://www.magiclantern.fm/forum/index.php?topic=2388.msg113154#msg113154) branch as vxworks-dm-spy (https://bitbucket.org/hudson/magic-lantern/branch/vxworks-dm-spy) (tested in qemu).
Is ML for the 40D working? Are there any other alternatives? Does 400Plus work on the 40D or is only for the 400D as the documentation implies.
Thanks
is that primarily due to the age of the camera, the difficulty, or the devs lacking 40Ds on hand?
Likely all three.
Good news - 40D boots the GUI in QEMU, just like most other EOS models!
...
Also compiled ML from the rufustfirefly (https://bitbucket.org/rufustfirefly/magic-lantern/commits/all) repository and got a half-working Space Invaders clone (menu appears when pressing delete, navigation keys are working, fonts don't seem to work):
.....
Happy hacking!
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fa1ex.magiclantern.fm%2Fbleeding-edge%2Fqemu%2F40D-menu15.png&hash=ca5d6dd40e2a57c94ad13f73f09178d7)
The last screen looks a bit odd - how does it look on a real camera?
(https://www.magiclantern.fm/forum/proxy.php?request=http%3A%2F%2Fa1ex.magiclantern.fm%2Fbleeding-edge%2Fqemu%2F40D-menu15.png&hash=ca5d6dd40e2a57c94ad13f73f09178d7)
The last screen looks a bit odd - how does it look on a real camera?
This one is quite straightforward (anyone can follow a tutorial, sit down and debug ML). I've already provided and documented the tools for that.
The only roadblock is finding a 40D owner interested in porting ML on this camera (maybe you?), rather than waiting for someone else.
Don't expect a new port from me; these old models are very low on my priority list. I'm just making sure others have the tools they need to port ML, that's all.
cd platform/40D.111
make zip
$ ls -l
total 1028
-rwxr-xr-x 1 ... 33118 Jul 28 15:58 40D_111.sym
-rwxr-xr-x 1 ... 21828 Jul 28 16:03 adv_int.mo
-rwxr-xr-x 1 ... 11816 Jul 28 16:03 arkanoid.mo
-rwxr-xr-x 1 ... 17800 Jul 28 16:03 autoexpo.mo
-rwxr-xr-x 1 ... 18068 Jul 28 16:03 bench.mo
-rwxr-xr-x 1 ... 7632 Jul 28 16:03 deflick.mo
-rwxr-xr-x 1 ... 11636 Jul 28 16:03 dot_tune.mo
-rwxr-xr-x 1 ... 15488 Jul 28 16:03 dual_iso.mo
-rwxr-xr-x 1 ... 324544 Jul 28 16:03 edmac.mo
-rwxr-xr-x 1 ... 28240 Jul 28 16:03 ettr.mo
-rwxr-xr-x 1 ... 14600 Jul 28 16:03 file_man.mo
-rwxr-xr-x 1 ... 304104 Jul 28 16:03 lua.mo
-rwxr-xr-x 1 ... 42224 Jul 28 16:03 mlv_lite.mo
-rwxr-xr-x 1 ... 44372 Jul 28 16:03 mlv_play.mo
-rwxr-xr-x 1 ... 62596 Jul 28 16:03 mlv_rec.mo
-rwxr-xr-x 1 ... 5772 Jul 28 16:03 pic_view.mo
-rwxr-xr-x 1 ... 30576 Jul 28 16:03 raw_rec.mo
-rwxr-xr-x 1 ... 22028 Jul 28 16:03 silent.mo
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2Fumeaql3xh5hBN_bmNp8GXRJEDfr1pYKAZgp1W-woO4vSkrL_LNowZ3KtOQXaZdGsmze2bpwOvrHqtsNenjMKcuVREeSgwCDyKFr8v7yMB13EEsI7CkTbN9-HiTv_ZqdC22nzKx1k3efcIBS1P-hxEidfBsWQ5ibwLjzF_YTpBw2oyktw8_S8m6gHU5g670W6K2DhQFDYZUBqe0bI0m4kioHqbeynLZvX1W0cc62X_JWGV-8yJPIFROJVqb8I_1BIniHXFr27qqLW1Hq63ODRXsYPtaOYgONIz1HXWPFjU4tpcyl6KCcVyucZf7nT7lpCW15tVcNm2xQ73HLaMTmt2XNgNSUi6beONCB8jIEWKr4ZDIv6dS1cJ26I1OIEFub15g5YMuNEwdpKVd-ynL8GmjEVcPTfxMpEi4UBn7MCqi0mQRqYB8ZoXXBYT0KNimTaeLpXvrHAWE3iVAIoGS570PjsWWe7hFeA06KTmi6ounPK_269JEIFdUx2IsG_OzLyxkEMoee6hIq4KZ2ejUbG-SCVuLpw0QoJ7jXfKTP6Fh04VR5NXgjgCg7wDwZlxpWnmdh0X6EP-6R3qX3jNJ1HZB-AD7KKneV7D5sjcgkv-waQaTZA6-EZvBmdoSdrmMbmU9uAE1jCdqD6FwbHvjjuSr44HpZXh3T79DahtIQoKMteGoUlhS7UsvdQhISdEyy5NoHxsOnauSmy1X1h5BWMbQeo%3Dw1027-h770-no&hash=e3d65bdfbe60cd8f23807d09ad310dd9) | (https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2F9phT5t0s4D_FMvbedGFmBgqFTm0T4gsbW0WcliUlymlI8dq3y7PB3JZNERwyJn3e2Xli8rxzmI_QNa8Tni0twjMJtPL4pTtTLNEzSrOhD_rlUNl1PcLzTNcX7Ci7B2bq0Tz4rVuSqHe5jk5XaS1yczUK2yeF9b4G7S5KNaxh8mzoaBGztjxuwkgxEZwmKTgFfZDTMWHnrNhfLGeFF9PnbXjrEQIwnwrh1GxSNwOcDpA-ZgpkeIfkNWgVll2oqPNpIMUQjVmEGqrZtMAzgG0EUScDmZcKJu0K4j-d6WrbUcd9tIhl0pkoAoSCtCAprWrLtnB4QcH6LhSb4eBF_eIEqkv0h-QqxMj8svlkMTubAseHGXIuvZfcioyTU-O_scE30QlXUSlPeqJgSrLho2LnMjQryGJIzU08b8SVSx54Wl_CDbWvXUVVDcDG_3wIIcP3qr_lfBMBFwLqY7wYcwKnmu6pjHG0yTNzhO73qNMq93jzJ10cMYtnqbZ5iztC3aV2gGOd9umrC_DiSyVEIn-nPC-QKiAC4MWlxRj6U4f1Xak27H4CEn6nVNxQX1zG6_NyH7c4tiagamz5HGbuDnnmbWOoUXtnF7u612JlfNkSu_5uveB0Tp6ujNEj9iC1RFqGf1oS8c4-UZz917-c5l-FM2pQ8ZHOpGVtCCvaOiiDKrBGWOcU8_Z-O5g7cyur7jvLR6GDEGfVrp6adjZnJqzr9DxD%3Dw1027-h770-no&hash=96d0303d1a3b06388066f36e568497ad) | (https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2Fyzv7BRLSpAwSjv4Lv4LRMpW1kLTEaPBPaaF6VADhup4VvANak2J3r6z0qxZ8HTkUtYEPSm-WteDIMjc9qgZ7NPz6wSKyr_MABRBC-lUChp9oRcZLbOHM6otkt2SSYIODLlDK39gJmUhm3ZeIFrHup7XYu5LwnJFSlqwqVxgXF34JGM5E3gyJUeVuqecPOiL8ywBepv0q2GhKB2bHGd9D8lBR5ePUEI0uEkeFFWuBYAqRWC7BMcxDDBfhYdbSSj4U4ii6Fe_b0jLWCAlw83bDnEzICLcDJbGcL7tIUQ9anaeclKrExerUc9H4FfSMHL0-GZvR0zvL1dXYHge-Qq3le9bV-R5Fp6hLMo__-HZEmJmsJL_FWC3aDtEyuf7Scvd70IoDoKReLlGvRLrvmW-mNS4XJSWhdPYgSE4bidDZC6a2iD82NN8BDQtMINsUddA97L-P4DAv5uHowa3ypVEsMFhIxu_4ead1JT-9sEj4rnyx_Wn5be1zPXmPWgAHdD7hbEQgmhbdUGNMvLRE5RZZmRdXqmg7RR58sbvtlXgnofVSOGX04uLyZTie07l04odtpWRwAUlHn0TnHIOGfmt-d_u8a3eNOV-hwDM4jQHVnZwFO7ixX_HAEWVjfN77q8BR6XGm5E9gYP8mi8cAHTSAqeOo9c9flThsdcS3ItIGQQuPpkENjai12x7guhsCfNArzFI63fGnyDGhYBGNWyPNORj3%3Dw1027-h770-no&hash=77b51e590ab917838b83aa1b4b9a06a4) |
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2FS-F6MCWyeIwPyJ_IEuo9Yske5cRpQVXiawLH1k2Itk9_TpQlM2rA416dtKnGoklvhma8BKb7HRxf5xHSMlv18tl5QBPSYvtwZkojxAKfkzYXFCd8T8KFyT9X8MvdVlONCskzVhV27WHMhFha4GdipF0v9J90n6eTPLqCdtr2S6Rn-QFAtkT6d3xyIlJq6nLQp3dpNilFlldowq4QZWcXkN2QNrSd_YGNaVfez8tEXKOtJ87u_Eev2HAtOu0KNT9Vpk6a1Uv-0GR822-etTzJ8TONG4nzjqTU7vUHHGJrR9vf9sxMeDNi6iExaucgYX8L7ZSlb60XEyBUBwcCfAPa4tEdmsFf0_JSvWa4wsaPpVBxEsdryt_bjzRXy1pMiBufTLphzF1nNtzJKYQOSVi5s5Qdh8zsyZZPjEwO-I2vC_gBCHJK90g_xmS7x5VjUq2sXbTr0YV5H_PieJq_C20sxGIyZZcmrUY7BQGkZ4J-WPwUirBnuiFhux3xk1BUsa7NsdUn-IfZTLVz1PilVusidt6EVyk3NEEKcpmsv2aULoHOayft5cPFSfpeV1DHMAKSk4m_w58pnUCAHAiBu2aPQ77E97nJR4wO82ZJrVLNTI5EIosS3rTS-ttfKx_ChQ7zoinN0dak2BuiQWfwjXdUEWvKCjBIyiXAemQ9SXzqsqqqctzDT9sNEfLV9KXBqcX06nCH3fLiUDhXwHWLZ6Aec3b0%3Dw1027-h770-no&hash=90fd098d55aa5ce2d57e47f2934b5b7f) | (https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2FI_VubBqmtUdjvhwk8uNx0krxNT8qpT-NL7_aeB4W4HfXlUhPvEB3dTeo2LQb3ba-WFh4U25Wh4JjuTAAIpLozKdiRUUuBtaBRwgBWnsgDfXbTiSB5XiFxgUbO7z8ue4ezc5eXv8oJyeFvUceqZccwYgShzhwRU7fru9yNvUzjY_x9vcpbK2S4OIIZy6bG92Ckd20iK7qm9V2sTbJtkLpLHRJHf0BN2aTVAm5GAZsA2OSu-Sb4u0uEW-OTPrIeWnbEmvliyth1qZlUu6w-jR144UCVMMFx3OZzIxOQ1aXDcokCVOiihJL_eP4FTMLz4BxGOthT5zIOfDKJck9tWQgAayKEmwfoPbSHvmdiKAZldXLb_9FifLb6N-f5dvnpXL2J7ElmfV9J82XJvNOZyKw1goMhdX0u1qwRNyyMUl2jhxwfsqbUjXczRnxjbvcxQLy9lzGEjlh3XznwYev8UElKhZmwCNwYhZe3anpae1zIdvZykpf5eT9NwAErSzNtO4Pl8eAc5frxeaiI0Aj25tLRRnXpxx1ZfoOcWR7tMB3fGfvTG_vo5NuWCz5Rp2s08Wrw3jhg22gkIliSQHdh7Cas9inA5GFpj7TQMec-U2x6-OBSVV1XoMCwlGHjqlk8RbXgY8qg1vUW_7vGC0n_jaIOTVq3d_c14FKFXUEfFZtEVyEABQFEZkXzttsVaWCoN6SSfqP3piWU1WDKXCCx9axEtvp%3Dw1027-h770-no&hash=ee79b8d19d41d090106cf0a35cbaa34a) | (https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Flh3.googleusercontent.com%2FovIpWheJOXTBHfatV-ToJCN9Ol-6fup1vEGIk-OarYWFwKN5KsbptpCbeKwbJdH5Q46a91pnl263ytvE8dbO-kXgeiZCwaNG5EJzYK695vfonIQelQktGoKrygYt2Gvn6hcdW_JQCew_m2RF6QJGK7exIVDLAECl6KqJDvAnvj_rGJm3RjLOt0LfFE33rqiuX3Xu_GXL_-bmw8NqylVOVJxXMlRVqOKfVmGQuNvYyoXqXepLpaDidBVXbo4BCgeSyKX5JXlp1LqJsgcfljvc4K2Ie6NXqXjtPi35dc8PZQIcT_NiX97Vu_k1xp-ke5KT9VQpDkbSSgqbn3Q_R8kmBdF2sdCO9XrnxnfLpc0WLbyuzE2NGFnSBsYDe3EAynQ7LvVnoxC3IL7TgocCn91JTod0vYkGvrYqVBZREZmXdDFJfe8in27kRHiwvRRjAIWEAIkliKVxJMm7QxJ0wQX7TTzKr52qX2kiXkJ9K4VwWnDwSASdshxKnegJZ-ZisyFhqA-bjMoKnAwU6gSqs8xFJCHhi1nfwB1eSjOoLS8kvzSH_4S_Dbj_v2Xa7d_O-5d7cChGCmcJMvpW9XvkkGYaYvTroBcNAD87pwtlhOerW5_02lCBQodkL-LYTC8oQI8tOq2ZcBnrcVCJJyBygVLBsjZXiEHg7bN4odMh3mir8Ti3CAF7zA13LdOyknjeDvPImR3TfJvbLyKxC7PcpkalX9xs%3Dw1027-h770-no&hash=1c976457c53d3fd23d85efa9d7680d7b) |
heder
Do you have the same problem (https://www.magiclantern.fm/forum/index.php?topic=8119.msg212509#msg212509) with ML menu in LV mode?
I don't known about 450D, but in Canon 40D LiveView has no special button, and must be enabled in Canon menu system. Once enabled LiveView can be enabled in some mode when pressing "set" button.
@heder Can you load modules?
Make sure module_task is launched from ml_big_init_task() inside custom init.c
I get wrong behaviour with 5DC, they are listed with wrong filename (it show only last 4 characters of the module's name) so can't be found on card.
Would like to know if it’s the same with 40D.
foo(uint32_t *)
Newer camera uses foo(uint32_t,uint32_t)
I would like to get that call tree.In case qemu can't get that far, you could also try using cache hacks (src/cache_hacks.h) on the camera.
I'v had troubles in the past with cache hacks on 40DI've had similar experience on PowerShots.
Ghidra shows no direct reference to lvGetResource, but alot of function is'nt called directly but indirectly just like lvGetResource, but in most cases I am able to find a pointer to the function, being passed as a argument to another function, but again with lvGetResource I ran out of luck.Assuming lvGetResource is the function that references the "[LV] lvGetResource 0x%lX (0x%lX)" string, there are 4 data references pointing to it (= the function's address appears 4 times). These references are a few kBytes "above" the function. It looks like Ghidra doesn't automatically notice references like that. I found them by placing the cursor to the function's first instruction and choosing "Search" -> "For direct references" in the CodeBrowser's menu. I then had to turn those bytes into pointers (P button). The references all appear to be part of a huge struct, and that struct is referenced from a function. I'm not familiar with this style of code as PowerShots implement state machines differently.
Assuming lvGetResource is the function that references the "[LV] lvGetResource 0x%lX (0x%lX)" string, there are 4 data references pointing to it (= the function's address appears 4 times). These references are a few kBytes "above" the function. It looks like Ghidra doesn't automatically notice references like that. I found them by placing the cursor to the function's first instruction and choosing "Search" -> "For direct references" in the CodeBrowser's menu. I then had to turn those bytes into pointers (P button). The references all appear to be part of a huge struct, and that struct is referenced from a function. I'm not familiar with this style of code as PowerShots implement state machines differently.
Try this:
Rename autoexec.bin to autoexec.bak
Insert card into cam and try to startup.
If cam is not starting up correctly:
Verified that Cam's bootflag is set and card is bootable.
If cam runs plain Canon: Either Cam's bootflag isn't set or card is not bootable.
Toggle/flip Cam's bootflag once and retest.
Currently stuck in finding adgt/cmos read/write function as they're not the same as the digic4 and newer platforms.
What about function names registered in sub_FFB24D68 (40D111) ?
00010000
000003dc
01008000
01101047
0120303c
0130000c
01700011
02100000
02201100
02500000
02600707
02700707
02800707
02900030
02a00000
02b00010
02c0000f
04000002
04100028
04200002
04300028
04400004
04500012
04a00012
04b00002
04e0000e
04f00234
058000f0
05900136
05a00234
05b00294
06000002
06100028
062000ee
06300230
06a00002
06b00028
06c00078
06d000e0
07600002
07700070
08a00236
08b0023c
09000236
0910023a
09200236
0930023a
09400238
09500238
09800246
0990024a
09a00246
09b0024a
09c0025e
09d0025e
09e00056
09f0005e
0a200234
0a300002
0a400002
0a50023c
0a600250
0a8000e8
0a900136
10102802
10205830
10305038
1140020e
11502234
11602028
1170204e
11800002
11900028
11a02056
11b0207e
11c0205e
11d02076
11e00082
11f016c6
14600002
14700709
1480000a
1490000a
14a00a3e
14b00001
15300003
15400a3f
15500a40
15a00a3e
15b00a3f
15c00a40
15d00002
20000008
20100003
30000101
3010061f
30200019
30300713
3040202c
30500000
34005555
34105555
34205555
34305554
34404555
34505555
34605555
34705555
34805554
04800236
0490023e
0520000e
05300234
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
02600606
02700606
02800606
09c0025e
09d0025e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
01008000
ffffffff
0100a002
ffffffff
01000003
ffffffff
01008004
ffffffff
01700111
08a00236
08b0023c
09000236
0910023a
09200236
0930023a
09400238
09500238
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
01700111
08a0024c
08b00252
0900024c
09100250
0920024c
09300250
0940024e
0950024e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
01700111
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
01700011
ffffffff
01203131
01700111
ffffffff
01203031
01700000
ffffffff
01000018
ffffffff
01000001
ffffffff
01000007
ffffffff
01100047
02b00000
0980025a
0990025e
09a0025a
09b0025e
14e00004
15000a3e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
09800246
0990024a
09a00246
09b0024a
14a00010
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
09800246
0990024a
09a00246
09b0024a
14a00a3e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
09800246
0990024e
09a00246
09b0024e
14a00a3e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
0980025a
0990025e
09a0025a
09b0025e
14a00a3e
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
01000000
ffffffff
********************************************************************************************************
Section liveview generic start ...
engio_write start/end = engio_write
EngDrvOuts = EngDrvOuts
All others are = EngDrvOut
First value = some timer tick counter
********************************************************************************************************
-99030 : Read Addr: 0xc0f04008, Data: 0x3ffffffe [16383 65534] DMA 0 REG dst
-99029 : Read Addr: 0xc0f04108, Data: 0x34913f4a [13457 16202] DMA 1 REG dst
-99028 : Read Addr: 0xc0f04208, Data: 0x38002ade [14336 10974] DMA 2 REG dst
-99027 : Read Addr: 0xc0f04308, Data: 0x3bf404a8 [15348 1192] DMA 3 REG dst
-95190 : Read Addr: 0xc0f04408, Data: 0x3e34587e [15924 22654] DMA 4 REG dst
-95189 : Read Addr: 0xc0f04508, Data: 0x3ea8f27e [16040 62078] DMA 5 REG dst
-95188 : Read Addr: 0xc0f04608, Data: 0x34a96fe8 [13481 28648] DMA 6 REG dst
-95187 : Read Addr: 0xc0f04708, Data: 0x 0 [ 0 0] DMA 7 REG dst
-91450 : Read Addr: 0xc0f04808, Data: 0x3ba65e1e [15270 24094] DMA 8 REG dst
-91448 : Read Addr: 0xc0f04908, Data: 0x1d2e4a48 [ 7470 19016] DMA 9 REG dst
-91448 : Read Addr: 0xc0f04a08, Data: 0x3e25122e [15909 4654] DMA 10 REG dst
-91446 : Read Addr: 0xc0f04b08, Data: 0x39e1dbce [14817 56270] DMA 11 REG dst
-87680 : Read Addr: 0xc0f04c08, Data: 0x35a051be [13728 20926] DMA 12 REG dst
-87679 : Read Addr: 0xc0f04d08, Data: 0x291b4efe [10523 20222] DMA 13 REG dst
-87678 : Read Addr: 0xc0f04e08, Data: 0x 0 [ 0 0] DMA 14 REG dst
-87677 : Read Addr: 0xc0f04f08, Data: 0x 0 [ 0 0] DMA 15 REG dst
-43209 : Write Addr: 0xc0f14080, Data: 0x fc0000 [ 252 0] LiveView
-43207 : Write Addr: 0xc0f14084, Data: 0x 346de7f [ 838 56959] LiveView
-43206 : Write Addr: 0xc0f14088, Data: 0x 36dcba1 [ 877 52129] LiveView
-43205 : Write Addr: 0xc0f1408c, Data: 0x 31a66ea [ 794 26346] LiveView
-43204 : Write Addr: 0xc0f14090, Data: 0x 3a42280 [ 932 8832] LiveView
-43202 : Write Addr: 0xc0f14094, Data: 0x 3604377 [ 864 17271] LiveView
-43201 : Write Addr: 0xc0f14098, Data: 0x 3cf9a16 [ 975 39446] LiveView
-43200 : Write Addr: 0xc0f1409c, Data: 0x 393b94b [ 915 47435] LiveView
-43199 : Write Addr: 0xc0f140a0, Data: 0x 0 [ 0 0] LiveView
-43198 : Write Addr: 0xc0f140a4, Data: 0x 3000000 [ 768 0] LiveView
-43197 : Write Addr: 0xc0f140a8, Data: 0x 3190000 [ 793 0] LiveView
-43195 : Write Addr: 0xc0f140ac, Data: 0x 33a0000 [ 826 0] LiveView
-43194 : Write Addr: 0xc0f140b0, Data: 0x 3750000 [ 885 0] LiveView
-43193 : Write Addr: 0xc0f140b4, Data: 0x 39c0000 [ 924 0] LiveView
-43192 : Write Addr: 0xc0f140b8, Data: 0x 3c30000 [ 963 0] LiveView
-43191 : Write Addr: 0xc0f140bc, Data: 0x 3eb0000 [ 1003 0] LiveView
-43189 : Write Addr: 0xc0f14078, Data: 0x 1 [ 0 1] LiveView
-68927 : Write Addr: 0xc0f14080, Data: 0x fc0000 [ 252 0] LiveView
-68926 : Write Addr: 0xc0f14084, Data: 0x 346de7f [ 838 56959] LiveView
-68924 : Write Addr: 0xc0f14088, Data: 0x 36dcba1 [ 877 52129] LiveView
-68923 : Write Addr: 0xc0f1408c, Data: 0x 31a66ea [ 794 26346] LiveView
-68922 : Write Addr: 0xc0f14090, Data: 0x 3a42280 [ 932 8832] LiveView
-68921 : Write Addr: 0xc0f14094, Data: 0x 3604377 [ 864 17271] LiveView
-68920 : Write Addr: 0xc0f14098, Data: 0x 3cf9a16 [ 975 39446] LiveView
-68918 : Write Addr: 0xc0f1409c, Data: 0x 393b94b [ 915 47435] LiveView
-68917 : Write Addr: 0xc0f140a0, Data: 0x 0 [ 0 0] LiveView
-68916 : Write Addr: 0xc0f140a4, Data: 0x 3000000 [ 768 0] LiveView
-68915 : Write Addr: 0xc0f140a8, Data: 0x 3190000 [ 793 0] LiveView
-68914 : Write Addr: 0xc0f140ac, Data: 0x 33a0000 [ 826 0] LiveView
-68913 : Write Addr: 0xc0f140b0, Data: 0x 3750000 [ 885 0] LiveView
-68912 : Write Addr: 0xc0f140b4, Data: 0x 39c0000 [ 924 0] LiveView
-68910 : Write Addr: 0xc0f140b8, Data: 0x 3c30000 [ 963 0] LiveView
-68909 : Write Addr: 0xc0f140bc, Data: 0x 3eb0000 [ 1003 0] LiveView
-68908 : Write Addr: 0xc0f14078, Data: 0x 1 [ 0 1] LiveView
Multiple ClockOuts
-58341 : Write Addr: 0xc0f0b000, Data: 0x 0 [ 0 0]
engio_write start
-58338 : Write Addr: 0xc0f03030, Data: 0x80010000 [32769 0]
-58334 : Write Addr: 0xc0f03068, Data: 0x80010004 [32769 4]
-58333 : Write Addr: 0xc0f03070, Data: 0x80010007 [32769 7]
-58332 : Write Addr: 0xc0f0b008, Data: 0x 0 [ 0 0]
engio_write end
-58272 : Write Addr: 0xc0f0b000, Data: 0x 1 [ 0 1]
Multiple ClockOuts
engio_write start
-57672 : Write Addr: 0xc0f18000, Data: 0x 2 [ 0 2]
-57669 : Write Addr: 0xc0f18004, Data: 0x 3fff000 [ 1023 61440]
-57668 : Write Addr: 0xc0f18008, Data: 0x 0 [ 0 0]
-57666 : Write Addr: 0xc0f1800c, Data: 0x 1c7f00 [ 28 32512]
-57665 : Write Addr: 0xc0f18010, Data: 0x 0 [ 0 0]
-57664 : Write Addr: 0xc0f06004, Data: 0x 0 [ 0 0] Videotiming - standby
-57662 : Write Addr: 0xc0f06008, Data: 0x 5490549 [ 1353 1353] Videotiming - T0(0)
-57661 : Write Addr: 0xc0f0600c, Data: 0x 5490549 [ 1353 1353] Videotiming - T0(1)
-57659 : Write Addr: 0xc0f06010, Data: 0x 549 [ 0 1353] Videotiming - T0(2)
-57658 : Write Addr: 0xc0f06018, Data: 0x 20 [ 0 32] Videotiming - ?
-57657 : Write Addr: 0xc0f0601c, Data: 0x 0 [ 0 0] Videotiming - ?
-57655 : Write Addr: 0xc0f06020, Data: 0x 2 [ 0 2] Videotiming - ?
-57654 : Write Addr: 0xc0f06024, Data: 0x 0 [ 0 0] Videotiming - ?
-57652 : Write Addr: 0xc0f06028, Data: 0x 0 [ 0 0] Videotiming - ?
-57651 : Write Addr: 0xc0f0602c, Data: 0x 0 [ 0 0] Videotiming - ?
-57649 : Write Addr: 0xc0f06030, Data: 0x 0 [ 0 0] Videotiming - ?
-57648 : Write Addr: 0xc0f06034, Data: 0x 0 [ 0 0] Videotiming - ?
-57647 : Write Addr: 0xc0f06038, Data: 0x 0 [ 0 0] Videotiming - ?
-57645 : Write Addr: 0xc0f0603c, Data: 0x 0 [ 0 0] Videotiming - ?
-57644 : Write Addr: 0xc0f06040, Data: 0x 0 [ 0 0] Videotiming - ?
-57642 : Write Addr: 0xc0f06044, Data: 0x 0 [ 0 0] Videotiming - ?
-57641 : Write Addr: 0xc0f06048, Data: 0x 0 [ 0 0] Videotiming - ?
-57640 : Write Addr: 0xc0f0604c, Data: 0x 0 [ 0 0] Videotiming - ?
-57638 : Write Addr: 0xc0f06050, Data: 0x 0 [ 0 0] Videotiming - ?
-57637 : Write Addr: 0xc0f06054, Data: 0x 0 [ 0 0] Videotiming - ?
-57635 : Write Addr: 0xc0f06058, Data: 0x 0 [ 0 0] Videotiming - ?
-57634 : Write Addr: 0xc0f0605c, Data: 0x 0 [ 0 0] Videotiming - ?
-57632 : Write Addr: 0xc0f06060, Data: 0x 0 [ 0 0] Videotiming - ?
-57631 : Write Addr: 0xc0f06064, Data: 0x 0 [ 0 0] Videotiming - ?
-57630 : Write Addr: 0xc0f06068, Data: 0x 0 [ 0 0] Videotiming - ?
-57628 : Write Addr: 0xc0f0606c, Data: 0x 0 [ 0 0] Videotiming - ?
-57627 : Write Addr: 0xc0f06070, Data: 0x 0 [ 0 0] Videotiming - ?
-57625 : Write Addr: 0xc0f06074, Data: 0x 0 [ 0 0] Videotiming - ?
-57624 : Write Addr: 0xc0f06078, Data: 0x 0 [ 0 0] Videotiming - ?
-57623 : Write Addr: 0xc0f0607c, Data: 0x 0 [ 0 0] Videotiming - ?
-57621 : Write Addr: 0xc0f060e8, Data: 0x 1fff [ 0 8191] Videotiming - ?
-57620 : Write Addr: 0xc0f06080, Data: 0x 0 [ 0 0] Videotiming - ?
-57619 : Write Addr: 0xc0f06084, Data: 0x 20271 [ 2 625] Videotiming - raw first line & coloum
-57617 : Write Addr: 0xc0f06088, Data: 0x 369050d [ 873 1293] Videotiming - raw last line & coloum
-57615 : Write Addr: 0xc0f0608c, Data: 0x3fff3fff [16383 16383] Videotiming - ?
-57614 : Write Addr: 0xc0f06090, Data: 0x3fff3fff [16383 16383] Videotiming - ?
-57612 : Write Addr: 0xc0f06094, Data: 0x3fff3fff [16383 16383] Videotiming - ?
-57611 : Write Addr: 0xc0f06098, Data: 0x3fff3fff [16383 16383] Videotiming - ?
-57610 : Write Addr: 0xc0f0609c, Data: 0x 2222200 [ 546 8704] Videotiming - ?
-57608 : Write Addr: 0xc0f060a0, Data: 0x 0 [ 0 0] Videotiming - ?
-57607 : Write Addr: 0xc0f060a8, Data: 0x 0 [ 0 0] Videotiming - ?
-57606 : Write Addr: 0xc0f060ac, Data: 0x 0 [ 0 0] Videotiming - ?
-57604 : Write Addr: 0xc0f060b0, Data: 0x 0 [ 0 0] Videotiming - ?
-57603 : Write Addr: 0xc0f060b4, Data: 0x 0 [ 0 0] Videotiming - ?
-57601 : Write Addr: 0xc0f060cc, Data: 0x 0 [ 0 0] Videotiming - ?
-57600 : Write Addr: 0xc0f060d0, Data: 0x 0 [ 0 0] Videotiming - ?
-57598 : Write Addr: 0xc0f060d4, Data: 0x 0 [ 0 0] Videotiming - ?
-57597 : Write Addr: 0xc0f060d8, Data: 0x 0 [ 0 0] Videotiming - ?
-57596 : Write Addr: 0xc0f060dc, Data: 0x 10 [ 0 16] Videotiming - ?
-57594 : Write Addr: 0xc0f060e0, Data: 0x 0 [ 0 0] Videotiming - ?
-57593 : Write Addr: 0xc0f060e4, Data: 0x 0 [ 0 0] Videotiming - ?
-57592 : Write Addr: 0xc0f06000, Data: 0x 1 [ 0 1] Videotiming - trig
-57590 : Write Addr: 0xc0f07008, Data: 0x 1 [ 0 1] HEAD timer
-57589 : Write Addr: 0xc0f07010, Data: 0x 3fff [ 0 16383] HEAD timer
-57587 : Write Addr: 0xc0f07014, Data: 0x 63 [ 0 99] HEAD timer
-57586 : Write Addr: 0xc0f07018, Data: 0x 1c [ 0 28] HEAD timer
-57585 : Write Addr: 0xc0f0701c, Data: 0x 0 [ 0 0] HEAD timer
-57583 : Write Addr: 0xc0f0707c, Data: 0x 0 [ 0 0] HEAD timer
-57582 : Write Addr: 0xc0f071ac, Data: 0x 10 [ 0 16] HEAD timer
-57580 : Write Addr: 0xc0f07004, Data: 0x 1 [ 0 1] HEAD timer
-57579 : Write Addr: 0xc0f0700c, Data: 0x 1 [ 0 1] HEAD timer
-57578 : Write Addr: 0xc0f07020, Data: 0x 0 [ 0 0] HEAD timer
-57576 : Write Addr: 0xc0f07024, Data: 0x 0 [ 0 0] HEAD timer
-57575 : Write Addr: 0xc0f07028, Data: 0x 1000 [ 0 4096] HEAD timer
-57573 : Write Addr: 0xc0f0702c, Data: 0x 0 [ 0 0] HEAD timer
-57572 : Write Addr: 0xc0f07038, Data: 0x 40 [ 0 64] HEAD timer
-57571 : Write Addr: 0xc0f07048, Data: 0x 0 [ 0 0] HEAD timer
-57569 : Write Addr: 0xc0f0704c, Data: 0x 0 [ 0 0] HEAD timer
-57568 : Write Addr: 0xc0f07050, Data: 0x 0 [ 0 0] HEAD timer
-57567 : Write Addr: 0xc0f0705c, Data: 0x 0 [ 0 0] HEAD timer
-57565 : Write Addr: 0xc0f07060, Data: 0x 0 [ 0 0] HEAD timer
-57564 : Write Addr: 0xc0f07064, Data: 0x 0 [ 0 0] HEAD timer
-57562 : Write Addr: 0xc0f07134, Data: 0x 0 [ 0 0] HEAD timer
-57561 : Write Addr: 0xc0f07138, Data: 0x 0 [ 0 0] HEAD timer
-57559 : Write Addr: 0xc0f0713c, Data: 0x 0 [ 0 0] HEAD timer
-57558 : Write Addr: 0xc0f07148, Data: 0x 0 [ 0 0] HEAD timer
-57557 : Write Addr: 0xc0f0714c, Data: 0x 0 [ 0 0] HEAD timer
-57555 : Write Addr: 0xc0f07150, Data: 0x 0 [ 0 0] HEAD timer
-57554 : Write Addr: 0xc0f07068, Data: 0x 0 [ 0 0] HEAD timer
-57552 : Write Addr: 0xc0f0706c, Data: 0x 0 [ 0 0] HEAD timer
-57551 : Write Addr: 0xc0f07070, Data: 0x 0 [ 0 0] HEAD timer
-57550 : Write Addr: 0xc0f07078, Data: 0x 0 [ 0 0] HEAD timer
-57548 : Write Addr: 0xc0f0708c, Data: 0x 0 [ 0 0] HEAD timer
-57547 : Write Addr: 0xc0f07090, Data: 0x 0 [ 0 0] HEAD timer
-57546 : Write Addr: 0xc0f07094, Data: 0x 0 [ 0 0] HEAD timer
-57544 : Write Addr: 0xc0f07098, Data: 0x 0 [ 0 0] HEAD timer
-57543 : Write Addr: 0xc0f0709c, Data: 0x 0 [ 0 0] HEAD timer
-57541 : Write Addr: 0xc0f070a0, Data: 0x 0 [ 0 0] HEAD timer
-57540 : Write Addr: 0xc0f070a4, Data: 0x 0 [ 0 0] HEAD timer
-57539 : Write Addr: 0xc0f070b4, Data: 0x 0 [ 0 0] HEAD timer
-57537 : Write Addr: 0xc0f070b8, Data: 0x 10020 [ 1 32] HEAD timer
-57535 : Write Addr: 0xc0f070bc, Data: 0x 0 [ 0 0] HEAD timer
-57534 : Write Addr: 0xc0f070c0, Data: 0x 411 [ 0 1041] HEAD timer
-57533 : Write Addr: 0xc0f070c4, Data: 0x 1101000 [ 272 4096] HEAD timer
-57531 : Write Addr: 0xc0f070cc, Data: 0x 0 [ 0 0] HEAD timer
-57530 : Write Addr: 0xc0f070d0, Data: 0x 0 [ 0 0] HEAD timer
-57529 : Write Addr: 0xc0f070d4, Data: 0x 0 [ 0 0] HEAD timer
-57527 : Write Addr: 0xc0f070e0, Data: 0x 4 [ 0 4] HEAD timer
-57526 : Write Addr: 0xc0f070e4, Data: 0x 4 [ 0 4] HEAD timer
-57524 : Write Addr: 0xc0f070e8, Data: 0x 8 [ 0 8] HEAD timer
-57523 : Write Addr: 0xc0f070ec, Data: 0x 8 [ 0 8] HEAD timer
-57522 : Write Addr: 0xc0f070f0, Data: 0x 10 [ 0 16] HEAD timer
-57520 : Write Addr: 0xc0f070f4, Data: 0x 10 [ 0 16] HEAD timer
-57519 : Write Addr: 0xc0f070f8, Data: 0x 0 [ 0 0] HEAD timer
-57517 : Write Addr: 0xc0f070fc, Data: 0x 1 [ 0 1] HEAD timer
-57516 : Write Addr: 0xc0f07100, Data: 0x 0 [ 0 0] HEAD timer
-57515 : Write Addr: 0xc0f07104, Data: 0x 0 [ 0 0] HEAD timer
-57513 : Write Addr: 0xc0f07108, Data: 0x 211 [ 0 529] HEAD timer
-57512 : Write Addr: 0xc0f0710c, Data: 0x 500 [ 0 1280] HEAD timer
-57511 : Write Addr: 0xc0f07110, Data: 0x 0 [ 0 0] HEAD timer
-57509 : Write Addr: 0xc0f07114, Data: 0x 0 [ 0 0] HEAD timer
-57508 : Write Addr: 0xc0f07000, Data: 0x 0 [ 0 0] HEAD timer
engio_write end
engio_write start
-57499 : Write Addr: 0xc0f06008, Data: 0x 5490549 [ 1353 1353] Videotiming - T0(0)
-57497 : Write Addr: 0xc0f0600c, Data: 0x 5490549 [ 1353 1353] Videotiming - T0(1)
-57496 : Write Addr: 0xc0f06010, Data: 0x 549 [ 0 1353] Videotiming - T0(2)
-57494 : Write Addr: 0xc0f06084, Data: 0x 20271 [ 2 625] Videotiming - raw first line & coloum
-57493 : Write Addr: 0xc0f06088, Data: 0x 369050d [ 873 1293] Videotiming - raw last line & coloum
-57492 : Write Addr: 0xc0f06000, Data: 0x 1 [ 0 1] Videotiming - trig
engio_write end
engio_write start
-57483 : Write Addr: 0xc0f06014, Data: 0x 218 [ 0 536] Videotiming - T1
-57482 : Write Addr: 0xc0f06000, Data: 0x 1 [ 0 1] Videotiming - trig
engio_write end
Multiple ClockOuts
-56996 : Write Addr: 0xc0f05004, Data: 0x 6 [ 0 6] edmac connection
-56994 : Write Addr: 0xc0f05038, Data: 0x 1 [ 0 1] edmac connection
EngDrvOuts start
-56981 : Write Addr: 0xc0f0410c, Data: 0x 2 [ 0 2] DMA 1 REG yn | xn
-56980 : Write Addr: 0xc0f04110, Data: 0x ca70080 [ 3239 128] DMA 1 REG yb | xb
-56979 : Write Addr: 0xc0f04114, Data: 0x 80 [ 0 128] DMA 1 REG ya | xa
-56978 : Write Addr: 0xc0f04118, Data: 0x 0 [ 0 0] DMA 1 REG off1
-56977 : Write Addr: 0xc0f0411c, Data: 0x 0 [ 0 0] DMA 1 REG off2b
-56976 : Write Addr: 0xc0f04120, Data: 0x 0 [ 0 0] DMA 1 REG off1a
-56974 : Write Addr: 0xc0f04124, Data: 0x 0 [ 0 0] DMA 1 REG off2a
-56973 : Write Addr: 0xc0f04128, Data: 0x 0 [ 0 0] DMA 1 REG off3
EngDrvOuts end
-56969 : Write Addr: 0xc0f04104, Data: 0x60000000 [24576 0] DMA 1 REG flags
-56967 : Write Addr: 0xc0f04108, Data: 0x1dbc0064 [ 7612 100] DMA 1 REG dst
EngDrvOuts start
-56961 : Write Addr: 0xc0f0490c, Data: 0x 2 [ 0 2] DMA 9 REG yn | xn
-56960 : Write Addr: 0xc0f04910, Data: 0x ca70080 [ 3239 128] DMA 9 REG yb | xb
-56959 : Write Addr: 0xc0f04914, Data: 0x 80 [ 0 128] DMA 9 REG ya | xa
-56958 : Write Addr: 0xc0f04918, Data: 0x 1ff80 [ 1 65408] DMA 9 REG off1
-56957 : Write Addr: 0xc0f0491c, Data: 0x fffff80 [ 4095 65408] DMA 9 REG off2b
-56956 : Write Addr: 0xc0f04920, Data: 0x 1ff80 [ 1 65408] DMA 9 REG off1a
-56955 : Write Addr: 0xc0f04924, Data: 0x 0 [ 0 0] DMA 9 REG off2a
-56954 : Write Addr: 0xc0f04928, Data: 0x 0 [ 0 0] DMA 9 REG off3
EngDrvOuts end
-56951 : Write Addr: 0xc0f04904, Data: 0x40000001 [16384 1] DMA 9 REG flags
-56950 : Write Addr: 0xc0f04908, Data: 0x1078bbf8 [ 4216 48120] DMA 9 REG dst
-56943 : Write Addr: 0xc0f04104, Data: 0x60000000 [24576 0] DMA 1 REG flags
-56942 : Write Addr: 0xc0f04100, Data: 0x 1 [ 0 1] DMA 1 REG ctrl
-56941 : Write Addr: 0xc0f04904, Data: 0x40010001 [16385 1] DMA 9 REG flags
-56940 : Write Addr: 0xc0f04900, Data: 0x 1 [ 0 1] DMA 9 REG ctrl
-50079 : Read Addr: 0xc0f04130, Data: 0x 2 [ 0 2] DMA 1 REG intr
-50067 : Write Addr: 0xc0f04104, Data: 0x 0 [ 0 0] DMA 1 REG flags
-50064 : Write Addr: 0xc0f04100, Data: 0x 4 [ 0 4] DMA 1 REG ctrl
-49995 : Read Addr: 0xc0f04930, Data: 0x 1 [ 0 1] DMA 9 REG intr
-49986 : Write Addr: 0xc0f04904, Data: 0x 0 [ 0 0] DMA 9 REG flags
-49985 : Write Addr: 0xc0f04900, Data: 0x 4 [ 0 4] DMA 9 REG ctrl
-49886 : Read Addr: 0xc0f01004, Data: 0x 3045 [ 0 12357] PowerCtrl
-49883 : Read Addr: 0xc0f01000, Data: 0x b045 [ 0 45125] PowerCtrl
-49878 : Write Addr: 0xc0f01004, Data: 0x 3045 [ 0 12357] PowerCtrl
-49877 : Write Addr: 0xc0f01000, Data: 0x b045 [ 0 45125] PowerCtrl
Multiple ClockOuts
engio_write start
-48732 : Write Addr: 0xc0f08100, Data: 0x 0 [ 0 0] PreProc
-48730 : Write Addr: 0xc0f082dc, Data: 0x 1 [ 0 1] PreProc
-48729 : Write Addr: 0xc0f0810c, Data: 0x 0 [ 0 0] PreProc
-48728 : Write Addr: 0xc0f08394, Data: 0x 0 [ 0 0] PreProc
-48725 : Write Addr: 0xc0f08108, Data: 0x 3 [ 0 3] PreProc
-48724 : Write Addr: 0xc0f08390, Data: 0x 0 [ 0 0] PreProc
-48723 : Write Addr: 0xc0f08264, Data: 0x 0 [ 0 0] PreProc
-48721 : Write Addr: 0xc0f08130, Data: 0x80000000 [32768 0] PreProc
-48719 : Write Addr: 0xc0f08134, Data: 0x 1 [ 0 1] PreProc
-48718 : Write Addr: 0xc0f08138, Data: 0x 10 [ 0 16] PreProc
-48716 : Write Addr: 0xc0f0814c, Data: 0x 6 [ 0 6] PreProc
-48715 : Write Addr: 0xc0f08158, Data: 0x 0 [ 0 0] PreProc
-48713 : Write Addr: 0xc0f08154, Data: 0x 8 [ 0 8] PreProc
-48711 : Write Addr: 0xc0f08140, Data: 0x 0 [ 0 0] PreProc
-48710 : Write Addr: 0xc0f08150, Data: 0x fff [ 0 4095] PreProc
-48708 : Write Addr: 0xc0f0815c, Data: 0x 2 [ 0 2] PreProc
-48706 : Write Addr: 0xc0f08160, Data: 0x 3fff [ 0 16383] PreProc
-48705 : Write Addr: 0xc0f0826c, Data: 0x 0 [ 0 0] PreProc
-48703 : Write Addr: 0xc0f08180, Data: 0x80000000 [32768 0] PreProc
-48702 : Write Addr: 0xc0f08420, Data: 0x 200 [ 0 512] PreProc
-48700 : Write Addr: 0xc0f08428, Data: 0x 111 [ 0 273] PreProc
-48699 : Write Addr: 0xc0f0842c, Data: 0x 0 [ 0 0] PreProc
-48697 : Write Addr: 0xc0f08430, Data: 0x 0 [ 0 0] PreProc
-48696 : Write Addr: 0xc0f08218, Data: 0x 8 [ 0 8] PreProc
-48694 : Write Addr: 0xc0f08214, Data: 0x 0 [ 0 0] PreProc
-48692 : Write Addr: 0xc0f08184, Data: 0x 367 [ 0 871] PreProc
-48691 : Write Addr: 0xc0f08188, Data: 0x 537 [ 0 1335] PreProc
-48689 : Write Addr: 0xc0f0819c, Data: 0x 400 [ 0 1024] PreProc
-48687 : Write Addr: 0xc0f0818c, Data: 0x 0 [ 0 0] PreProc
-48686 : Write Addr: 0xc0f08190, Data: 0x 0 [ 0 0] PreProc
-48684 : Write Addr: 0xc0f08194, Data: 0x 537 [ 0 1335] PreProc
-48683 : Write Addr: 0xc0f08198, Data: 0x 537 [ 0 1335] PreProc
-48681 : Write Addr: 0xc0f081c4, Data: 0x 0 [ 0 0] PreProc
-48679 : Write Addr: 0xc0f081c8, Data: 0x 0 [ 0 0] PreProc
-48678 : Write Addr: 0xc0f081cc, Data: 0x 0 [ 0 0] PreProc
-48677 : Write Addr: 0xc0f081d0, Data: 0x 0 [ 0 0] PreProc
-48675 : Write Addr: 0xc0f081d4, Data: 0x 0 [ 0 0] PreProc
-48673 : Write Addr: 0xc0f081d8, Data: 0x 0 [ 0 0] PreProc
-48672 : Write Addr: 0xc0f081dc, Data: 0x 0 [ 0 0] PreProc
-48670 : Write Addr: 0xc0f081e0, Data: 0x 0 [ 0 0] PreProc
-48668 : Write Addr: 0xc0f081e4, Data: 0x 1 [ 0 1] PreProc
-48667 : Write Addr: 0xc0f081e8, Data: 0x 1 [ 0 1] PreProc
-48665 : Write Addr: 0xc0f081ec, Data: 0x 0 [ 0 0] PreProc
-48664 : Write Addr: 0xc0f081f0, Data: 0x 0 [ 0 0] PreProc
-48662 : Write Addr: 0xc0f081f4, Data: 0x 0 [ 0 0] PreProc
-48660 : Write Addr: 0xc0f081a4, Data: 0x 0 [ 0 0] PreProc
-48659 : Write Addr: 0xc0f081a8, Data: 0x 1 [ 0 1] PreProc
-48658 : Write Addr: 0xc0f081ac, Data: 0x 1 [ 0 1] PreProc
-48655 : Write Addr: 0xc0f081b0, Data: 0x 0 [ 0 0] PreProc
-48654 : Write Addr: 0xc0f081b4, Data: 0x 0 [ 0 0] PreProc
-48653 : Write Addr: 0xc0f082c4, Data: 0x 1 [ 0 1] PreProc
-48651 : Write Addr: 0xc0f08180, Data: 0x 0 [ 0 0] PreProc
-48649 : Write Addr: 0xc0f0820c, Data: 0x 29b0000 [ 667 0] PreProc
-48648 : Write Addr: 0xc0f08208, Data: 0x 11 [ 0 17] PreProc
-48646 : Write Addr: 0xc0f08020, Data: 0x80000000 [32768 0] Preproc REG SHAD ctrl
-48645 : Write Addr: 0xc0f08024, Data: 0x 1008 [ 0 4104] Preproc REG SHAD mode
-48643 : Write Addr: 0xc0f08028, Data: 0x 0 [ 0 0] Preproc REG SHAD pre
-48641 : Write Addr: 0xc0f0802c, Data: 0x 0 [ 0 0] Preproc REG SHAD post
-48640 : Write Addr: 0xc0f08030, Data: 0x 1000 [ 0 4096] Preproc REG SHAD gain
-48639 : Write Addr: 0xc0f08034, Data: 0x 1c00 [ 0 7168] Preproc REG SHAD pre2
-48636 : Write Addr: 0xc0f08038, Data: 0x 400 [ 0 1024] Preproc REG SHAD post2
-48635 : Write Addr: 0xc0f08280, Data: 0x 0 [ 0 0] PreProc
-48634 : Write Addr: 0xc0f08284, Data: 0x 0 [ 0 0] PreProc
-48632 : Write Addr: 0xc0f08288, Data: 0x 0 [ 0 0] PreProc
-48630 : Write Addr: 0xc0f0828c, Data: 0x 1 [ 0 1] PreProc
-48629 : Write Addr: 0xc0f08290, Data: 0x 0 [ 0 0] PreProc
-48627 : Write Addr: 0xc0f082a8, Data: 0x 1 [ 0 1] PreProc
-48626 : Write Addr: 0xc0f080a0, Data: 0x80000000 [32768 0] PreProc
-48624 : Write Addr: 0xc0f080a4, Data: 0x 0 [ 0 0] PreProc
-48622 : Write Addr: 0xc0f080a8, Data: 0x 103 [ 0 259] PreProc
-48621 : Write Addr: 0xc0f080ac, Data: 0x 0 [ 0 0] PreProc
-48620 : Write Addr: 0xc0f080b0, Data: 0x 3670537 [ 871 1335] PreProc
-48617 : Write Addr: 0xc0f080b4, Data: 0x 0 [ 0 0] PreProc
-48616 : Write Addr: 0xc0f080bc, Data: 0x 0 [ 0 0] PreProc
-48615 : Write Addr: 0xc0f080d0, Data: 0x 0 [ 0 0] PreProc
-48613 : Write Addr: 0xc0f080d4, Data: 0x 1 [ 0 1] PreProc
-48611 : Write Addr: 0xc0f08270, Data: 0x 0 [ 0 0] PreProc
-48610 : Write Addr: 0xc0f082b4, Data: 0x 1 [ 0 1] PreProc
-48608 : Write Addr: 0xc0f08114, Data: 0x a [ 0 10] PreProc
-48607 : Write Addr: 0xc0f08398, Data: 0x 0 [ 0 0] PreProc
-48605 : Write Addr: 0xc0f082d4, Data: 0x 0 [ 0 0] PreProc
-48603 : Write Addr: 0xc0f08090, Data: 0x80000000 [32768 0] PreProc
-48602 : Write Addr: 0xc0f08094, Data: 0x 20 [ 0 32] PreProc
-48601 : Write Addr: 0xc0f08268, Data: 0x 0 [ 0 0] PreProc
-48598 : Write Addr: 0xc0f0d000, Data: 0x80000000 [32768 0]
-48597 : Write Addr: 0xc0f0d004, Data: 0x 0 [ 0 0]
-48596 : Write Addr: 0xc0f0d008, Data: 0x77772222 [30583 8738]
-48594 : Write Addr: 0xc0f0d00c, Data: 0x 0 [ 0 0]
-48592 : Write Addr: 0xc0f0d010, Data: 0x 0 [ 0 0]
-48591 : Write Addr: 0xc0f0d014, Data: 0x 3670538 [ 871 1336]
-48589 : Write Addr: 0xc0f0d018, Data: 0x 583 [ 0 1411]
-48588 : Write Addr: 0xc0f0d01c, Data: 0x 0 [ 0 0]
-48586 : Write Addr: 0xc0f0d020, Data: 0x 0 [ 0 0]
-48584 : Write Addr: 0xc0f0d024, Data: 0x 0 [ 0 0]
-48583 : Write Addr: 0xc0f0d028, Data: 0x 0 [ 0 0]
-48582 : Write Addr: 0xc0f0d02c, Data: 0x 0 [ 0 0]
-48579 : Write Addr: 0xc0f0d030, Data: 0x 0 [ 0 0]
-48578 : Write Addr: 0xc0f0d038, Data: 0x 20 [ 0 32]
-48577 : Write Addr: 0xc0f0d03c, Data: 0x 0 [ 0 0]
-48575 : Write Addr: 0xc0f0d040, Data: 0x 0 [ 0 0]
-48573 : Write Addr: 0xc0f0d044, Data: 0x 0 [ 0 0]
-48572 : Write Addr: 0xc0f0d048, Data: 0x 0 [ 0 0]
-48570 : Write Addr: 0xc0f0d04c, Data: 0x 0 [ 0 0]
-48569 : Write Addr: 0xc0f0d050, Data: 0x 0 [ 0 0]
-48567 : Write Addr: 0xc0f0d054, Data: 0x 0 [ 0 0]
-48565 : Write Addr: 0xc0f0d058, Data: 0x 0 [ 0 0]
-48564 : Write Addr: 0xc0f0d05c, Data: 0x 0 [ 0 0]
-48563 : Write Addr: 0xc0f0d060, Data: 0x 0 [ 0 0]
-48560 : Write Addr: 0xc0f0d064, Data: 0x 0 [ 0 0]
-48559 : Write Addr: 0xc0f0d070, Data: 0x 1 [ 0 1]
-48558 : Write Addr: 0xc0f0d074, Data: 0x 103 [ 0 259]
-48556 : Write Addr: 0xc0f0d078, Data: 0x 1 [ 0 1]
-48554 : Write Addr: 0xc0f0d07c, Data: 0x 0 [ 0 0]
-48553 : Write Addr: 0xc0f0d080, Data: 0x 0 [ 0 0]
-48551 : Write Addr: 0xc0f0d084, Data: 0x 0 [ 0 0]
-48550 : Write Addr: 0xc0f0d088, Data: 0x 0 [ 0 0]
-48548 : Write Addr: 0xc0f0d094, Data: 0x 0 [ 0 0]
-48546 : Write Addr: 0xc0f0d02c, Data: 0x 0 [ 0 0]
-48545 : Write Addr: 0xc0f0d040, Data: 0x b0076 [ 11 118]
-48544 : Write Addr: 0xc0f0d044, Data: 0x 367057e [ 871 1406]
-48541 : Write Addr: 0xc0f11004, Data: 0x 0 [ 0 0] Resample ?
-48540 : Write Addr: 0xc0f1108c, Data: 0x 3 [ 0 3] Resample ?
-48539 : Write Addr: 0xc0f112c0, Data: 0x 1 [ 0 1] Resample ?
-48537 : Write Addr: 0xc0f11300, Data: 0x 1 [ 0 1] Resample ?
-48535 : Write Addr: 0xc0f11108, Data: 0x 1 [ 0 1] Resample ?
-48534 : Write Addr: 0xc0f111c0, Data: 0x 1 [ 0 1] Resample ?
-48532 : Write Addr: 0xc0f110c4, Data: 0x 4 [ 0 4] Resample ?
-48531 : Write Addr: 0xc0f11280, Data: 0x 1 [ 0 1] Resample ?
-48529 : Write Addr: 0xc0f11284, Data: 0x 0 [ 0 0] Resample ?
-48527 : Write Addr: 0xc0f11580, Data: 0x 1 [ 0 1] Resample ?
-48526 : Write Addr: 0xc0f11584, Data: 0x 0 [ 0 0] Resample ?
-48525 : Write Addr: 0xc0f11100, Data: 0x 5 [ 0 5] Resample ?
-48522 : Write Addr: 0xc0f11170, Data: 0x 1 [ 0 1] Resample ?
-48521 : Write Addr: 0xc0f11440, Data: 0x 1 [ 0 1] Resample ?
-48520 : Write Addr: 0xc0f11444, Data: 0x 0 [ 0 0] Resample ?
-48518 : Write Addr: 0xc0f11144, Data: 0x 7 [ 0 7] Resample ?
-48516 : Write Addr: 0xc0f11110, Data: 0x 1 [ 0 1] Resample ?
-48515 : Write Addr: 0xc0f11500, Data: 0x 1 [ 0 1] Resample ?
-48513 : Write Addr: 0xc0f11504, Data: 0x 0 [ 0 0] Resample ?
-48512 : Write Addr: 0xc0f11508, Data: 0x 0 [ 0 0] Resample ?
-48510 : Write Addr: 0xc0f1150c, Data: 0x 8000a1 [ 128 161] Resample ?
-48508 : Write Addr: 0xc0f11510, Data: 0x 60200 [ 6 512] Resample ?
-48507 : Write Addr: 0xc0f11514, Data: 0x 0 [ 0 0] Resample ?
-48506 : Write Addr: 0xc0f11518, Data: 0x 3ff [ 0 1023] Resample ?
-48503 : Write Addr: 0xc0f1151c, Data: 0x 35b0507 [ 859 1287] Resample ?
-48502 : Write Addr: 0xc0f11520, Data: 0x 0 [ 0 0] Resample ?
-48501 : Write Addr: 0xc0f11524, Data: 0x 0 [ 0 0] Resample ?
-48499 : Write Addr: 0xc0f11114, Data: 0x b [ 0 11] Resample ?
-48497 : Write Addr: 0xc0f11540, Data: 0x 1 [ 0 1] Resample ?
-48496 : Write Addr: 0xc0f11544, Data: 0x 0 [ 0 0] Resample ?
-48494 : Write Addr: 0xc0f11548, Data: 0x 0 [ 0 0] Resample ?
-48493 : Write Addr: 0xc0f1154c, Data: 0x 22002b [ 34 43] Resample ?
-48491 : Write Addr: 0xc0f11550, Data: 0x 503c4 [ 5 964] Resample ?
-48489 : Write Addr: 0xc0f11554, Data: 0x 0 [ 0 0] Resample ?
-48488 : Write Addr: 0xc0f11558, Data: 0x 2a7 [ 0 679] Resample ?
-48486 : Write Addr: 0xc0f1155c, Data: 0x 35b03ff [ 859 1023] Resample ?
-48484 : Write Addr: 0xc0f11560, Data: 0x 0 [ 0 0] Resample ?
-48483 : Write Addr: 0xc0f11564, Data: 0x 0 [ 0 0] Resample ?
-48482 : Write Addr: 0xc0f11158, Data: 0x c [ 0 12] Resample ?
-48480 : Write Addr: 0xc0f11050, Data: 0x 0 [ 0 0] Resample ?
-48478 : Write Addr: 0xc0f1e000, Data: 0x80000000 [32768 0]
-48477 : Write Addr: 0xc0f1e004, Data: 0x 2 [ 0 2]
-48475 : Write Addr: 0xc0f1e008, Data: 0x 1007f [ 1 127]
-48474 : Write Addr: 0xc0f1e00c, Data: 0x 10001 [ 1 1]
-48472 : Write Addr: 0xc0f1e010, Data: 0x 0 [ 0 0]
-48470 : Write Addr: 0xc0f1e014, Data: 0x 0 [ 0 0]
-48469 : Write Addr: 0xc0f1e018, Data: 0x 0 [ 0 0]
-48467 : Write Addr: 0xc0f1e01c, Data: 0x 0 [ 0 0]
-48465 : Write Addr: 0xc0f03034, Data: 0x80050000 [32773 0]
-48464 : Write Addr: 0xc0f03038, Data: 0x80050004 [32773 4]
-48462 : Write Addr: 0xc0f03024, Data: 0x80020000 [32770 0]
-48461 : Write Addr: 0xc0f03064, Data: 0x80020002 [32770 2]
-48459 : Write Addr: 0xc0f0306c, Data: 0x80020005 [32770 5]
-48457 : Write Addr: 0xc0f03000, Data: 0x80040000 [32772 0]
-48456 : Write Addr: 0xc0f03004, Data: 0x80040002 [32772 2]
-48455 : Write Addr: 0xc0f03008, Data: 0x80040004 [32772 4]
-48453 : Write Addr: 0xc0f0300c, Data: 0x80040006 [32772 6]
-48451 : Write Addr: 0xc0f03020, Data: 0x80070000 [32775 0]
-48450 : Write Addr: 0xc0f03028, Data: 0x80070002 [32775 2]
-48448 : Write Addr: 0xc0f0302c, Data: 0x80070005 [32775 5]
-48446 : Write Addr: 0xc0f03018, Data: 0x800c0000 [32780 0]
-48445 : Write Addr: 0xc0f0301c, Data: 0x800d0000 [32781 0]
-48443 : Write Addr: 0xc0f03090, Data: 0x 1 [ 0 1]
-48442 : Write Addr: 0xc0f04f10, Data: 0x 1 [ 0 1] DMA 15 REG yb | xb
-48440 : Write Addr: 0xc0f03054, Data: 0x 0 [ 0 0]
engio_write end
engio_write start
-48433 : Write Addr: 0xc0f112c4, Data: 0x 10010 [ 1 16] Resample ?
-48431 : Write Addr: 0xc0f112c8, Data: 0x 25aa1 [ 2 23201] Resample ?
-48430 : Write Addr: 0xc0f112cc, Data: 0x 0 [ 0 0] Resample ?
-48429 : Write Addr: 0xc0f112d0, Data: 0x 2cf [ 0 719] Resample ?
-48426 : Write Addr: 0xc0f112d4, Data: 0x 35b0508 [ 859 1288] Resample ?
-48425 : Write Addr: 0xc0f112d8, Data: 0x 0 [ 0 0] Resample ?
-48424 : Write Addr: 0xc0f112dc, Data: 0x 0 [ 0 0] Resample ?
-48422 : Write Addr: 0xc0f11304, Data: 0x 10 [ 0 16] Resample ?
-48420 : Write Addr: 0xc0f11308, Data: 0x 1d6d7 [ 1 54999] Resample ?
-48419 : Write Addr: 0xc0f1130c, Data: 0x 0 [ 0 0] Resample ?
-48417 : Write Addr: 0xc0f11310, Data: 0x 3570000 [ 855 0] Resample ?
-48416 : Write Addr: 0xc0f11314, Data: 0x 35b02cf [ 859 719] Resample ?
-48414 : Write Addr: 0xc0f11318, Data: 0x 0 [ 0 0] Resample ?
-48412 : Write Addr: 0xc0f1131c, Data: 0x 0 [ 0 0] Resample ?
-48411 : Write Addr: 0xc0f1133c, Data: 0x 1bb [ 0 443] Resample ?
-48410 : Write Addr: 0xc0f111c4, Data: 0x 0 [ 0 0] Resample ?
-48407 : Write Addr: 0xc0f111c8, Data: 0x 0 [ 0 0] Resample ?
-48406 : Write Addr: 0xc0f11588, Data: 0x 3 [ 0 3] Resample ?
-48405 : Write Addr: 0xc0f1158c, Data: 0x 0 [ 0 0] Resample ?
-48403 : Write Addr: 0xc0f11590, Data: 0x d502cf [ 213 719] Resample ?
-48401 : Write Addr: 0xc0f11594, Data: 0x 0 [ 0 0] Resample ?
-48400 : Write Addr: 0xc0f11448, Data: 0x 0 [ 0 0] Resample ?
-48398 : Write Addr: 0xc0f1144c, Data: 0x 0 [ 0 0] Resample ?
-48397 : Write Addr: 0xc0f11450, Data: 0x d502cf [ 213 719] Resample ?
-48395 : Write Addr: 0xc0f11454, Data: 0x 0 [ 0 0] Resample ?
engio_write end
-48391 : Write Addr: 0xc0f05040, Data: 0x 0 [ 0 0] edmac connection
-48381 : Write Addr: 0xc0f05004, Data: 0x 4 [ 0 4] edmac connection
-48379 : Write Addr: 0xc0f05010, Data: 0x 0 [ 0 0] edmac connection => this is DMA 4 connected to 0
-48377 : Write Addr: 0xc0f05000, Data: 0x 15 [ 0 21] edmac connection
********************************************************************************************************
Section: one frame of i/o ..
engio_write start/end = engio_write
EngDrvOuts = EngDrvOuts
All others are = EngDrvOut
First value = some timer tick counter
********************************************************************************************************
**************** [DPATH] LV_JPG STOP ---
engio_write start
-61593 : Write Addr: 0xc0f03010, Data: 0x 0 [ 0 0]
-61591 : Write Addr: 0xc0f03014, Data: 0x 0 [ 0 0]
-61590 : Write Addr: 0xc0f0305c, Data: 0x 0 [ 0 0]
-61588 : Write Addr: 0xc0f03060, Data: 0x 0 [ 0 0]
-61586 : Write Addr: 0xc0f113c4, Data: 0x 0 [ 0 0] Resample ?
-61585 : Write Addr: 0xc0f113c0, Data: 0x 1 [ 0 1] Resample ?
-61583 : Write Addr: 0xc0f11008, Data: 0x 0 [ 0 0] Resample ?
-61581 : Write Addr: 0xc0f11180, Data: 0x 1 [ 0 1] Resample ?
-61580 : Write Addr: 0xc0f11404, Data: 0x 0 [ 0 0] Resample ?
-61578 : Write Addr: 0xc0f11400, Data: 0x 1 [ 0 1] Resample ?
-61576 : Write Addr: 0xc0f11040, Data: 0x 0 [ 0 0] Resample ?
-61575 : Write Addr: 0xc0f13000, Data: 0x80000000 [32768 0]
engio_write end
multiple masterclocks (clockout)
-60655 : Write Addr: 0xc0f0500c, Data: 0x 3 [ 0 3] edmac connection
-60652 : Write Addr: 0xc0f0502c, Data: 0x 2 [ 0 2] edmac connection
-60638 : Write Addr: 0xc0f04304, Data: 0x20000000 [ 8192 0] DMA 3 - flags
-60636 : Write Addr: 0xc0f04308, Data: 0x107a9408 [ 4218 37896] DMA 3 - dst
-60629 : Write Addr: 0xc0f04a04, Data: 0x20000000 [ 8192 0] DMA 10 - flags
-60628 : Write Addr: 0xc0f04a08, Data: 0x1079947c [ 4217 38012] DMA 10 - dst
-60626 : Read Addr: 0xc0f04a08, Data: 0x1079947c [ 4217 38012] DMA 10 - dst
-60624 : Read Addr: 0xc0f04308, Data: 0x107a9408 [ 4218 37896] DMA 3 - dst
engio_write start
-60532 : Write Addr: 0xc0f113c4, Data: 0x 0 [ 0 0] Resample ?
-60529 : Write Addr: 0xc0f113c0, Data: 0x 1 [ 0 1] Resample ?
-60527 : Write Addr: 0xc0f11008, Data: 0x 0 [ 0 0] Resample ?
-60526 : Write Addr: 0xc0f11340, Data: 0x 1 [ 0 1] Resample ?
-60524 : Write Addr: 0xc0f11380, Data: 0x 1 [ 0 1] Resample ?
-60522 : Write Addr: 0xc0f11180, Data: 0x 1 [ 0 1] Resample ?
-60521 : Write Addr: 0xc0f11404, Data: 0x 0 [ 0 0] Resample ?
-60519 : Write Addr: 0xc0f11400, Data: 0x 1 [ 0 1] Resample ?
-60517 : Write Addr: 0xc0f04f10, Data: 0x 1 [ 0 1] DMA 15 - yb | xb
-60516 : Write Addr: 0xc0f04a0c, Data: 0x 0 [ 0 0] DMA 10 - yn | xn
-60514 : Write Addr: 0xc0f04a10, Data: 0x 2a70030 [ 679 48] DMA 10 - yb | xb => 680 * 48 = 32640
-60512 : Write Addr: 0xc0f04a14, Data: 0x 0 [ 0 0] DMA 10 - ya | xa
-60510 : Write Addr: 0xc0f04a18, Data: 0x 0 [ 0 0] DMA 10 - off1
-60509 : Write Addr: 0xc0f04a1c, Data: 0x 0 [ 0 0] DMA 10 - off2b
-60507 : Write Addr: 0xc0f04a20, Data: 0x 0 [ 0 0] DMA 10 - off1a
-60505 : Write Addr: 0xc0f04a24, Data: 0x 0 [ 0 0] DMA 10 - off2a
-60504 : Write Addr: 0xc0f04a28, Data: 0x 0 [ 0 0] DMA 10 - off3
-60502 : Write Addr: 0xc0f11084, Data: 0x 1 [ 0 1] Resample ?
-60500 : Write Addr: 0xc0f113c8, Data: 0x 400 [ 0 1024] Resample ?
-60499 : Write Addr: 0xc0f113cc, Data: 0x 0 [ 0 0] Resample ?
-60497 : Write Addr: 0xc0f113d0, Data: 0x 2a7001f [ 679 31] Resample ?
-60495 : Write Addr: 0xc0f113d4, Data: 0x 0 [ 0 0] Resample ?
-60494 : Write Addr: 0xc0f11090, Data: 0x 0 [ 0 0] Resample ?
-60492 : Write Addr: 0xc0f1110c, Data: 0x 2 [ 0 2] Resample ?
-60490 : Write Addr: 0xc0f11344, Data: 0x 10100 [ 1 256] Resample ?
-60489 : Write Addr: 0xc0f11348, Data: 0x 0 [ 0 0] Resample ?
-60487 : Write Addr: 0xc0f1134c, Data: 0x 0 [ 0 0] Resample ?
-60486 : Write Addr: 0xc0f11350, Data: 0x 0 [ 0 0] Resample ?
-60484 : Write Addr: 0xc0f11354, Data: 0x 0 [ 0 0] Resample ?
-60482 : Write Addr: 0xc0f11358, Data: 0x 0 [ 0 0] Resample ?
-60481 : Write Addr: 0xc0f1135c, Data: 0x 0 [ 0 0] Resample ?
-60479 : Write Addr: 0xc0f11388, Data: 0x 0 [ 0 0] Resample ?
-60477 : Write Addr: 0xc0f1138c, Data: 0x 0 [ 0 0] Resample ?
-60476 : Write Addr: 0xc0f11394, Data: 0x 0 [ 0 0] Resample ?
-60474 : Write Addr: 0xc0f1139c, Data: 0x 0 [ 0 0] Resample ?
-60472 : Write Addr: 0xc0f113bc, Data: 0x 3 [ 0 3] Resample ?
-60471 : Write Addr: 0xc0f110c0, Data: 0x 5 [ 0 5] Resample ?
-60469 : Write Addr: 0xc0f11184, Data: 0x 1f [ 0 31] Resample ?
-60467 : Write Addr: 0xc0f11188, Data: 0x10000778 [ 4096 1912] Resample ?
-60466 : Write Addr: 0xc0f11140, Data: 0x 4 [ 0 4] Resample ?
-60464 : Write Addr: 0xc0f11408, Data: 0x 800 [ 0 2048] Resample ?
-60463 : Write Addr: 0xc0f1140c, Data: 0x 0 [ 0 0] Resample ?
-60461 : Write Addr: 0xc0f11410, Data: 0x 2a7 [ 0 679] Resample ?
-60459 : Write Addr: 0xc0f11414, Data: 0x 0 [ 0 0] Resample ?
-60458 : Write Addr: 0xc0f0430c, Data: 0x 0 [ 0 0] DMA 3 - yn | xn
-60456 : Write Addr: 0xc0f04310, Data: 0x 2a8 [ 0 680] DMA 3 - yb | xb
-60454 : Write Addr: 0xc0f04314, Data: 0x 0 [ 0 0] DMA 3 - ya | xa
-60452 : Write Addr: 0xc0f04318, Data: 0x 0 [ 0 0] DMA 3 - off1
-60451 : Write Addr: 0xc0f0431c, Data: 0x 0 [ 0 0] DMA 3 - off2b
-60449 : Write Addr: 0xc0f04320, Data: 0x 0 [ 0 0] DMA 3 - off1a
-60447 : Write Addr: 0xc0f04324, Data: 0x 0 [ 0 0] DMA 3 - off2a
-60445 : Write Addr: 0xc0f04328, Data: 0x 0 [ 0 0] DMA 3 - off3
engio_write end
-60434 : Write Addr: 0xc0f04304, Data: 0x20000000 [ 8192 0] DMA 3 - flags
-60433 : Write Addr: 0xc0f04300, Data: 0x 1 [ 0 1] DMA 3 - ctrl
engio_write start
-60430 : Write Addr: 0xc0f11400, Data: 0x 0 [ 0 0] Resample ?
-60429 : Write Addr: 0xc0f11404, Data: 0x 1 [ 0 1] Resample ?
-60427 : Write Addr: 0xc0f11180, Data: 0x 0 [ 0 0] Resample ?
-60425 : Write Addr: 0xc0f11340, Data: 0x 0 [ 0 0] Resample ?
-60424 : Write Addr: 0xc0f11380, Data: 0x 0 [ 0 0] Resample ?
-60422 : Write Addr: 0xc0f11008, Data: 0x 1 [ 0 1] Resample ?
-60421 : Write Addr: 0xc0f113c0, Data: 0x 0 [ 0 0] Resample ?
-60419 : Write Addr: 0xc0f113c4, Data: 0x 1 [ 0 1] Resample ?
engio_write end
-60416 : Write Addr: 0xc0f04a04, Data: 0x20030000 [ 8195 0] DMA 10 - flags
-60415 : Write Addr: 0xc0f04a00, Data: 0x 1 [ 0 1] DMA 10 - ctrl
-60205 : Read Addr: 0xc0f04330, Data: 0x 2 [ 0 2] DMA 3 - intr
-60197 : Write Addr: 0xc0f04304, Data: 0x 0 [ 0 0] DMA 3 - flags
-60196 : Write Addr: 0xc0f04300, Data: 0x 4 [ 0 4] DMA 3 - ctrl
-60093 : Read Addr: 0xc0f04a30, Data: 0x 2 [ 0 2] DMA 10 - intr
-60084 : Write Addr: 0xc0f04a04, Data: 0x 0 [ 0 0] DMA 10 - flags
-60083 : Write Addr: 0xc0f04a00, Data: 0x 4 [ 0 4] DMA 10 - ctrl
-60018 : Read Addr: 0xc0f04a08, Data: 0x107a13fc [ 4218 5116] DMA 10 - dst
-60017 : Read Addr: 0xc0f04308, Data: 0x107a96b0 [ 4218 38576] DMA 3 - dst
engio_write start
-59928 : Write Addr: 0xc0f113c4, Data: 0x 0 [ 0 0] Resample ?
-59924 : Write Addr: 0xc0f113c0, Data: 0x 1 [ 0 1] Resample ?
-59922 : Write Addr: 0xc0f11008, Data: 0x 0 [ 0 0] Resample ?
-59920 : Write Addr: 0xc0f11340, Data: 0x 1 [ 0 1] Resample ?
-59918 : Write Addr: 0xc0f11380, Data: 0x 1 [ 0 1] Resample ?
-59917 : Write Addr: 0xc0f11180, Data: 0x 1 [ 0 1] Resample ?
-59915 : Write Addr: 0xc0f11404, Data: 0x 0 [ 0 0] Resample ?
-59913 : Write Addr: 0xc0f11400, Data: 0x 1 [ 0 1] Resample ?
engio_write end
mltiple masterclocks (clockout)
engio_write start
-57709 : Write Addr: 0xc0f07148, Data: 0x 4 [ 0 4] HEAD timer
engio_write end
engio_write start
-57507 : Write Addr: 0xc0f0714c, Data: 0x 0 [ 0 0] HEAD timer
-57503 : Write Addr: 0xc0f07148, Data: 0x 4 [ 0 4] HEAD timer
engio_write end
engio_write start
-56684 : Write Addr: 0xc0f08180, Data: 0x 0 [ 0 0] PreProc
-56679 : Write Addr: 0xc0f0820c, Data: 0x 29b0000 [ 667 0] PreProc
-56677 : Write Addr: 0xc0f08208, Data: 0x 11 [ 0 17] PreProc
engio_write end
EngDrvOuts start
-56662 : Write Addr: 0xc0f0490c, Data: 0x 0 [ 0 0] DMA 9 - yn | xn
-56661 : Write Addr: 0xc0f04910, Data: 0x a60020 [ 166 32] DMA 9 - yb | xb 167 * 32 = 5344
-56660 : Write Addr: 0xc0f04914, Data: 0x 0 [ 0 0] DMA 9 - ya | xa
-56659 : Write Addr: 0xc0f04918, Data: 0x 0 [ 0 0] DMA 9 - off1
-56658 : Write Addr: 0xc0f0491c, Data: 0x 0 [ 0 0] DMA 9 - off2b
-56657 : Write Addr: 0xc0f04920, Data: 0x 0 [ 0 0] DMA 9 - off1a
-56656 : Write Addr: 0xc0f04924, Data: 0x 0 [ 0 0] DMA 9 - off2a
-56655 : Write Addr: 0xc0f04928, Data: 0x 0 [ 0 0] DMA 9 - off3
EngDrvOuts end
-56651 : Write Addr: 0xc0f04904, Data: 0x40000000 [16384 0] DMA 9 - flags
-56649 : Write Addr: 0xc0f04908, Data: 0x102b1f2c [ 4139 7980] DMA 9 - dst
-56643 : Write Addr: 0xc0f0505c, Data: 0x 1 [ 0 1] edmac connection
-56634 : Write Addr: 0xc0f04904, Data: 0x40010000 [16385 0] DMA 9 - flags
-56633 : Write Addr: 0xc0f04900, Data: 0x 1 [ 0 1] DMA 9 - ctrl
EngDrvOuts start
-56614 : Write Addr: 0xc0f0410c, Data: 0x 0 [ 0 0] DMA 1 - yn | xn
-56612 : Write Addr: 0xc0f04110, Data: 0x d50438 [ 213 1080] DMA 1 - yb | xb 214 * 1080 = 231120
-56611 : Write Addr: 0xc0f04114, Data: 0x 0 [ 0 0] DMA 1 - ya | xa
-56610 : Write Addr: 0xc0f04118, Data: 0x 0 [ 0 0] DMA 1 - off1
-56608 : Write Addr: 0xc0f0411c, Data: 0x 0 [ 0 0] DMA 1 - off2b
-56607 : Write Addr: 0xc0f04120, Data: 0x 0 [ 0 0] DMA 1 - off1a
-56592 : Read Addr: 0xc0f04930, Data: 0x 2 [ 0 2] DMA 9 - intr
-56586 : Write Addr: 0xc0f04904, Data: 0x 0 [ 0 0] DMA 9 - flags
-56585 : Write Addr: 0xc0f04900, Data: 0x 4 [ 0 4] DMA 9 - ctrl
-56569 : Write Addr: 0xc0f04124, Data: 0x 0 [ 0 0] DMA 1 - off2a
-56567 : Write Addr: 0xc0f04128, Data: 0x 0 [ 0 0] DMA 1 - off3
EngDrvOuts end
-56564 : Write Addr: 0xc0f04104, Data: 0x20000000 [ 8192 0] DMA 1 - flags
-56562 : Write Addr: 0xc0f04108, Data: 0x1dbc0064 [ 7612 100] DMA 1 - dst LiveView Image address
-56558 : Write Addr: 0xc0f04104, Data: 0x20000000 [ 8192 0] DMA 1 - flags
-56557 : Write Addr: 0xc0f04100, Data: 0x 1 [ 0 1] DMA 1 - ctrl
EngDrvOuts start
-56552 : Write Addr: 0xc0f0400c, Data: 0x 0 [ 0 0] DMA 0 - yn | xn
-56551 : Write Addr: 0xc0f04010, Data: 0x 2a70800 [ 679 2048] DMA 0 - yb | xb LiveView Image YUV (680 * 1024 * 2) = 1392640
-56550 : Write Addr: 0xc0f04014, Data: 0x 0 [ 0 0] DMA 0 - ya | xa
-56549 : Write Addr: 0xc0f04018, Data: 0x 0 [ 0 0] DMA 0 - off1
-56548 : Write Addr: 0xc0f0401c, Data: 0x 0 [ 0 0] DMA 0 - off2b
-56547 : Write Addr: 0xc0f04020, Data: 0x 0 [ 0 0] DMA 0 - off1a
-56546 : Write Addr: 0xc0f04024, Data: 0x 0 [ 0 0] DMA 0 - off2a
-56545 : Write Addr: 0xc0f04028, Data: 0x 0 [ 0 0] DMA 0 - off3
EngDrvOuts end
-56543 : Write Addr: 0xc0f04004, Data: 0x20000000 [ 8192 0] DMA 0 - flags
-56542 : Write Addr: 0xc0f04008, Data: 0x1de43c64 [ 7652 15460] DMA 0 - dst
-56540 : Write Addr: 0xc0f04004, Data: 0x20000000 [ 8192 0] DMA 0 - flags
-56539 : Write Addr: 0xc0f04000, Data: 0x 1 [ 0 1] DMA 0 - ctrl
engio_write start
-56534 : Write Addr: 0xc0f08114, Data: 0x 1 [ 0 1] PreProc
engio_write end
EngDrvOuts start
-56527 : Write Addr: 0xc0f0440c, Data: 0x 0 [ 0 0] DMA 4 - yn | xn
-56526 : Write Addr: 0xc0f04410, Data: 0x 3670922 [ 871 2338] DMA 4 - yb | xb Bayer raw image 872 * 1336 * (14/8) = 2038736
-56525 : Write Addr: 0xc0f04414, Data: 0x 0 [ 0 0] DMA 4 - ya | xa
-56524 : Write Addr: 0xc0f04418, Data: 0x 0 [ 0 0] DMA 4 - off1
-56523 : Write Addr: 0xc0f0441c, Data: 0x 0 [ 0 0] DMA 4 - off2b
-56522 : Write Addr: 0xc0f04420, Data: 0x 0 [ 0 0] DMA 4 - off1a
-56521 : Write Addr: 0xc0f04424, Data: 0x 0 [ 0 0] DMA 4 - off2a
-56520 : Write Addr: 0xc0f04428, Data: 0x 0 [ 0 0] DMA 4 - off3
EngDrvOuts end
-56518 : Write Addr: 0xc0f04404, Data: 0x20000000 [ 8192 0] DMA 4 - flags
-56517 : Write Addr: 0xc0f04408, Data: 0x1df97c6c [ 7673 31852] DMA 4 - dst
-56515 : Write Addr: 0xc0f04404, Data: 0x20000080 [ 8192 128] DMA 4 - flags
-56513 : Write Addr: 0xc0f04400, Data: 0x 1 [ 0 1] DMA 4 - ctrl
-56511 : Write Addr: 0xc0f08030, Data: 0x 1e00 [ 0 7680] Preproc - SHAD gain
engio_write start
-56507 : Write Addr: 0xc0f1108c, Data: 0x 3 [ 0 3] Resample ?
engio_write end
EngDrvOuts start
-56503 : Write Addr: 0xc0f0480c, Data: 0x 0 [ 0 0] DMA 8 - yn | xn
-56502 : Write Addr: 0xc0f04810, Data: 0x 4e10020 [ 1249 32] DMA 8 - yb | xb 1250 * 32 = 40000
-56501 : Write Addr: 0xc0f04814, Data: 0x 0 [ 0 0] DMA 8 - ya | xa
-56500 : Write Addr: 0xc0f04818, Data: 0x 0 [ 0 0] DMA 8 - off1
-56499 : Write Addr: 0xc0f0481c, Data: 0x 0 [ 0 0] DMA 8 - off2b
-56498 : Write Addr: 0xc0f04820, Data: 0x 0 [ 0 0] DMA 8 - off1a
-56497 : Write Addr: 0xc0f04824, Data: 0x 0 [ 0 0] DMA 8 - off2a
-56496 : Write Addr: 0xc0f04828, Data: 0x 0 [ 0 0] DMA 8 - off3
EngDrvOuts end
-56494 : Write Addr: 0xc0f04804, Data: 0x40000000 [16384 0] DMA 8 - flags
-56493 : Write Addr: 0xc0f04808, Data: 0x10283268 [ 4136 12904] DMA 8 - dst
engio_write start
-56491 : Write Addr: 0xc0f03048, Data: 0x 2 [ 0 2]
-56489 : Write Addr: 0xc0f03048, Data: 0x 0 [ 0 0]
-56487 : Write Addr: 0xc0f03050, Data: 0x 2 [ 0 2]
-56486 : Write Addr: 0xc0f03050, Data: 0x 0 [ 0 0]
-56484 : Write Addr: 0xc0f03074, Data: 0x 2 [ 0 2]
-56483 : Write Addr: 0xc0f03074, Data: 0x 0 [ 0 0]
-56481 : Write Addr: 0xc0f03088, Data: 0x 0 [ 0 0]
-56479 : Write Addr: 0xc0f0308c, Data: 0x 0 [ 0 0]
-56478 : Write Addr: 0xc0f11050, Data: 0x 1 [ 0 1] Resample ?
-56477 : Write Addr: 0xc0f1e000, Data: 0x 1 [ 0 1]
-56474 : Write Addr: 0xc0f11540, Data: 0x 0 [ 0 0] Resample ?
-56473 : Write Addr: 0xc0f11544, Data: 0x 1 [ 0 1] Resample ?
-56472 : Write Addr: 0xc0f11500, Data: 0x 0 [ 0 0] Resample ?
-56470 : Write Addr: 0xc0f11504, Data: 0x 1 [ 0 1] Resample ?
-56468 : Write Addr: 0xc0f11440, Data: 0x 0 [ 0 0] Resample ?
-56467 : Write Addr: 0xc0f11444, Data: 0x 1 [ 0 1] Resample ?
-56465 : Write Addr: 0xc0f11580, Data: 0x 0 [ 0 0] Resample ?
-56464 : Write Addr: 0xc0f11584, Data: 0x 1 [ 0 1] Resample ?
-56462 : Write Addr: 0xc0f111c0, Data: 0x 0 [ 0 0] Resample ?
-56460 : Write Addr: 0xc0f112c0, Data: 0x 0 [ 0 0] Resample ?
-56459 : Write Addr: 0xc0f11300, Data: 0x 0 [ 0 0] Resample ?
-56458 : Write Addr: 0xc0f11004, Data: 0x 1 [ 0 1] Resample ?
-56455 : Write Addr: 0xc0f0d000, Data: 0x 1 [ 0 1]
-56454 : Write Addr: 0xc0f08090, Data: 0x 1 [ 0 1] PreProc
-56453 : Write Addr: 0xc0f080a0, Data: 0x 1 [ 0 1] PreProc
-56451 : Write Addr: 0xc0f08020, Data: 0x 1 [ 0 1] Preproc - SHAD ctrl
-56449 : Write Addr: 0xc0f08208, Data: 0x 10 [ 0 16] PreProc
-56448 : Write Addr: 0xc0f08208, Data: 0x 0 [ 0 0] PreProc
-56446 : Write Addr: 0xc0f08180, Data: 0x 1 [ 0 1] PreProc
-56445 : Write Addr: 0xc0f08130, Data: 0x 1 [ 0 1] PreProc
engio_write end
-56441 : Write Addr: 0xc0f04804, Data: 0x40010000 [16385 0] DMA 8 - flags
-56440 : Write Addr: 0xc0f04800, Data: 0x 1 [ 0 1] DMA 8 - ctrl
engio_write start
-52761 : Write Addr: 0xc0f07048, Data: 0x 4 [ 0 4] HEAD timer
engio_write end
engio_write start
-52552 : Write Addr: 0xc0f0713c, Data: 0x 370 [ 0 880] HEAD timer
-52548 : Write Addr: 0xc0f07134, Data: 0x 4 [ 0 4] HEAD timer
-52546 : Write Addr: 0xc0f07138, Data: 0x c [ 0 12] HEAD timer
engio_write end
engio_write start
-52528 : Write Addr: 0xc0f07150, Data: 0x 59c [ 0 1436] HEAD timer
-52526 : Write Addr: 0xc0f07148, Data: 0x 4 [ 0 4] HEAD timer
-52525 : Write Addr: 0xc0f0714c, Data: 0x c [ 0 12] HEAD timer
engio_write end
-28634 : Read Addr: 0xc0f04530, Data: 0x 2 [ 0 2] DMA 5 - intr
-28622 : Write Addr: 0xc0f04504, Data: 0x 0 [ 0 0] DMA 5 - flags
-28620 : Write Addr: 0xc0f04500, Data: 0x 4 [ 0 4] DMA 5 - ctrl
-28507 : Write Addr: 0xc0f0b0c4, Data: 0x 0 [ 0 0]
-28505 : Read Addr: 0xc0f0c804, Data: 0x 0 [ 0 0]
-28503 : Write Addr: 0xc0f0b0c4, Data: 0x 1 [ 0 1]
engio_write start
-28500 : Write Addr: 0xc0f09000, Data: 0x80000000 [32768 0]
-28498 : Write Addr: 0xc0f0b000, Data: 0x 1 [ 0 1]
-28497 : Write Addr: 0xc0f0b004, Data: 0x 0 [ 0 0]
engio_write end
-28164 : Read Addr: 0xc0f04030, Data: 0x 2 [ 0 2] DMA 0 - intr
-28161 : Write Addr: 0xc0f04004, Data: 0x 0 [ 0 0] DMA 0 - flags
-28160 : Write Addr: 0xc0f04000, Data: 0x 4 [ 0 4] DMA 0 - ctrl
-28148 : Read Addr: 0xc0f04130, Data: 0x 2 [ 0 2] DMA 1 - intr
-28147 : Write Addr: 0xc0f04104, Data: 0x 0 [ 0 0] DMA 1 - flags
-28146 : Write Addr: 0xc0f04100, Data: 0x 4 [ 0 4] DMA 1 - ctrl
-28134 : Read Addr: 0xc0f04430, Data: 0x 2 [ 0 2] DMA 4 - intr
-28133 : Write Addr: 0xc0f04404, Data: 0x 0 [ 0 0] DMA 4 - flags
-28132 : Write Addr: 0xc0f04400, Data: 0x 4 [ 0 4] DMA 4 - ctrl
engio_write start
-27968 : Write Addr: 0xc0f07134, Data: 0x 4 [ 0 4] HEAD timer
engio_write end
engio_write start
-27735 : Write Addr: 0xc0f07138, Data: 0x 0 [ 0 0] HEAD timer
-27733 : Write Addr: 0xc0f07134, Data: 0x 4 [ 0 4] HEAD timer
engio_write end
engio_write start
-27463 : Write Addr: 0xc0f08130, Data: 0x80000000 [32768 0] PreProc
-27460 : Write Addr: 0xc0f08180, Data: 0x80000000 [32768 0] PreProc
-27459 : Write Addr: 0xc0f08020, Data: 0x80000000 [32768 0] Preproc - SHAD ctrl
-27456 : Write Addr: 0xc0f080a0, Data: 0x80000000 [32768 0] PreProc
-27455 : Write Addr: 0xc0f08090, Data: 0x80000000 [32768 0] PreProc
-27453 : Write Addr: 0xc0f08114, Data: 0x a [ 0 10] PreProc
-27452 : Write Addr: 0xc0f0d000, Data: 0x80000000 [32768 0]
-27449 : Write Addr: 0xc0f11004, Data: 0x 0 [ 0 0] Resample ?
-27447 : Write Addr: 0xc0f112c0, Data: 0x 1 [ 0 1] Resample ?
-27446 : Write Addr: 0xc0f11300, Data: 0x 1 [ 0 1] Resample ?
-27444 : Write Addr: 0xc0f111c0, Data: 0x 1 [ 0 1] Resample ?
-27442 : Write Addr: 0xc0f11280, Data: 0x 1 [ 0 1] Resample ?
-27440 : Write Addr: 0xc0f11284, Data: 0x 0 [ 0 0] Resample ?
-27439 : Write Addr: 0xc0f11440, Data: 0x 1 [ 0 1] Resample ?
-27437 : Write Addr: 0xc0f11444, Data: 0x 0 [ 0 0] Resample ?
-27434 : Write Addr: 0xc0f11500, Data: 0x 1 [ 0 1] Resample ?
-27433 : Write Addr: 0xc0f11504, Data: 0x 0 [ 0 0] Resample ?
-27431 : Write Addr: 0xc0f11540, Data: 0x 1 [ 0 1] Resample ?
-27430 : Write Addr: 0xc0f11544, Data: 0x 0 [ 0 0] Resample ?
-27427 : Write Addr: 0xc0f1e000, Data: 0x80000000 [32768 0]
engio_write end
-27418 : Write Addr: 0xc0f04834, Data: 0x 3 [ 0 3] DMA 8 - abort
-27409 : Read Addr: 0xc0f04830, Data: 0x 0 [ 0 0] DMA 8 - intr
-27399 : Write Addr: 0xc0f04804, Data: 0x 0 [ 0 0] DMA 8 - flags
-27398 : Write Addr: 0xc0f04834, Data: 0x 0 [ 0 0] DMA 8 - abort
-27396 : Write Addr: 0xc0f04800, Data: 0x 4 [ 0 4] DMA 8 - ctrl
-26240 : Write Addr: 0xc0f1a000, Data: 0x 1 [ 0 1]
-26238 : Write Addr: 0xc0f1a004, Data: 0x 0 [ 0 0]
multiple masterclocks (clockout)
-23710 : Read Addr: 0xc0e00000, Data: 0x 1010000 [ 257 0] JPEG
-23707 : Read Addr: 0xc0e00030, Data: 0xffffffff [65535 65535] JPEG
-23646 : Write Addr: 0xc0f0500c, Data: 0x 5 [ 0 5] edmac connection
-23645 : Write Addr: 0xc0f05008, Data: 0x 3 [ 0 3] edmac connection
-23643 : Write Addr: 0xc0f0502c, Data: 0x 2 [ 0 2] edmac connection
EngDrvOuts start
-23574 : Write Addr: 0xc0f0430c, Data: 0x 0 [ 0 0] DMA 3 - yn | xn
-23572 : Write Addr: 0xc0f04310, Data: 0x fff01fe [ 4095 510] DMA 3 - yb | xb 4096 * 510 = 2088960
-23571 : Write Addr: 0xc0f04314, Data: 0x 0 [ 0 0] DMA 3 - ya | xa
-23570 : Write Addr: 0xc0f04318, Data: 0x 0 [ 0 0] DMA 3 - off1
-23569 : Write Addr: 0xc0f0431c, Data: 0x 0 [ 0 0] DMA 3 - off2b
-23568 : Write Addr: 0xc0f04320, Data: 0x 0 [ 0 0] DMA 3 - off1a
-23567 : Write Addr: 0xc0f04324, Data: 0x 0 [ 0 0] DMA 3 - off2a
-23566 : Write Addr: 0xc0f04328, Data: 0x 0 [ 0 0] DMA 3 - off3
EngDrvOuts end
-23562 : Write Addr: 0xc0f04304, Data: 0x20000001 [ 8192 1] DMA 3 - flags
-23560 : Write Addr: 0xc0f04308, Data: 0x1ca700c8 [ 7335 200] DMA 3 - dst
-23543 : Write Addr: 0xc0f04204, Data: 0x20000000 [ 8192 0] DMA 2 - flags
-23542 : Write Addr: 0xc0f04208, Data: 0x1079947c [ 4217 38012] DMA 2 - dst
-23540 : Write Addr: 0xc0f04a04, Data: 0x20000000 [ 8192 0] DMA 10 - flags
-23539 : Write Addr: 0xc0f04a08, Data: 0x1de43c64 [ 7652 15460] DMA 10 - dst
-23535 : Read Addr: 0xc0f04a08, Data: 0x1de43c64 [ 7652 15460] DMA 10 - dst
-23534 : Read Addr: 0xc0f04308, Data: 0x1ca700c8 [ 7335 200] DMA 3 - dst
-23533 : Read Addr: 0xc0f04208, Data: 0x1079947c [ 4217 38012] DMA 2 - dst
********* [DPATH] LV_JPG ....
engio_write start
-23413 : Write Addr: 0xc0f113c4, Data: 0x 0 [ 0 0] Resample ?
-23410 : Write Addr: 0xc0f113c0, Data: 0x 1 [ 0 1] Resample ?
-23409 : Write Addr: 0xc0f11008, Data: 0x 0 [ 0 0] Resample ?
-23407 : Write Addr: 0xc0f11180, Data: 0x 1 [ 0 1] Resample ?
-23405 : Write Addr: 0xc0f11040, Data: 0x 0 [ 0 0] Resample ?
-23404 : Write Addr: 0xc0f11404, Data: 0x 0 [ 0 0] Resample ?
-23402 : Write Addr: 0xc0f11400, Data: 0x 1 [ 0 1] Resample ?
-23401 : Write Addr: 0xc0f13000, Data: 0x80000000 [32768 0]
-23399 : Write Addr: 0xc0f03010, Data: 0x80000000 [32768 0]
-23397 : Write Addr: 0xc0f03014, Data: 0x80000002 [32768 2]
-23396 : Write Addr: 0xc0f0305c, Data: 0x80000004 [32768 4]
-23394 : Write Addr: 0xc0f03060, Data: 0x80000006 [32768 6]
-23392 : Write Addr: 0xc0f03090, Data: 0x 1 [ 0 1]
-23391 : Write Addr: 0xc0f04f10, Data: 0x 1 [ 0 1] DMA 15 - yb | xb
-23389 : Write Addr: 0xc0f04a0c, Data: 0x 540003 [ 84 3] DMA 10 - yn | xn
-23387 : Write Addr: 0xc0f04a10, Data: 0x 70200 [ 7 512] DMA 10 - yb | xb =
-23385 : Write Addr: 0xc0f04a14, Data: 0x 70200 [ 7 512] DMA 10 - ya | xa
-23384 : Write Addr: 0xc0f04a18, Data: 0x 600 [ 0 1536] DMA 10 - off1
-23382 : Write Addr: 0xc0f04a1c, Data: 0x fffc800 [ 4095 51200] DMA 10 - off2b
-23380 : Write Addr: 0xc0f04a20, Data: 0x 600 [ 0 1536] DMA 10 - off1a
-23379 : Write Addr: 0xc0f04a24, Data: 0x fffc800 [ 4095 51200] DMA 10 - off2a
-23377 : Write Addr: 0xc0f04a28, Data: 0x 0 [ 0 0] DMA 10 - off3
-23375 : Write Addr: 0xc0f11084, Data: 0x 1 [ 0 1] Resample ?
-23374 : Write Addr: 0xc0f113c8, Data: 0x 1000 [ 0 4096] Resample ?
-23372 : Write Addr: 0xc0f113cc, Data: 0x 540003 [ 84 3] Resample ?
-23370 : Write Addr: 0xc0f113d0, Data: 0x 700ff [ 7 255] Resample ?
-23369 : Write Addr: 0xc0f113d4, Data: 0x 700ff [ 7 255] Resample ?
-23367 : Write Addr: 0xc0f11090, Data: 0x 0 [ 0 0] Resample ?
-23365 : Write Addr: 0xc0f11148, Data: 0x 2 [ 0 2] Resample ?
-23364 : Write Addr: 0xc0f13008, Data: 0x 101 [ 0 257]
-23362 : Write Addr: 0xc0f1300c, Data: 0x 400 [ 0 1024]
-23361 : Write Addr: 0xc0f13010, Data: 0x 600 [ 0 1536]
-23359 : Write Addr: 0xc0f13014, Data: 0x 3 [ 0 3]
-23357 : Write Addr: 0xc0f13018, Data: 0x 2a700ff [ 679 255]
-23356 : Write Addr: 0xc0f1301c, Data: 0x ff [ 0 255]
-23354 : Write Addr: 0xc0f13020, Data: 0x 1 [ 0 1]
-23352 : Write Addr: 0xc0f13050, Data: 0x 0 [ 0 0]
-23351 : Write Addr: 0xc0f13054, Data: 0x 0 [ 0 0]
-23349 : Write Addr: 0xc0f110c0, Data: 0x 2 [ 0 2] Resample ?
-23347 : Write Addr: 0xc0f11184, Data: 0x 1f [ 0 31] Resample ?
-23346 : Write Addr: 0xc0f11188, Data: 0x10000778 [ 4096 1912] Resample ?
-23344 : Write Addr: 0xc0f11140, Data: 0x 4 [ 0 4] Resample ?
-23343 : Write Addr: 0xc0f11408, Data: 0x 0 [ 0 0] Resample ?
-23341 : Write Addr: 0xc0f1140c, Data: 0x 540003 [ 84 3] Resample ?
-23339 : Write Addr: 0xc0f11410, Data: 0x 70007 [ 7 7] Resample ?
-23338 : Write Addr: 0xc0f11414, Data: 0x 70007 [ 7 7] Resample ?
-23336 : Write Addr: 0xc0f0420c, Data: 0x 540003 [ 84 3] DMA 2 - yn | xn
-23334 : Write Addr: 0xc0f04210, Data: 0x 7000c [ 7 12] DMA 2 - yb | xb
-23333 : Write Addr: 0xc0f04214, Data: 0x 7000c [ 7 12] DMA 2 - ya | xa
-23331 : Write Addr: 0xc0f04218, Data: 0x 24 [ 0 36] DMA 2 - off1
-23329 : Write Addr: 0xc0f0421c, Data: 0x ffffeb0 [ 4095 65200] DMA 2 - off2b
-23327 : Write Addr: 0xc0f04220, Data: 0x 24 [ 0 36] DMA 2 - off1a
-23326 : Write Addr: 0xc0f04224, Data: 0x ffffeb0 [ 4095 65200] DMA 2 - off2a
-23324 : Write Addr: 0xc0f04228, Data: 0x 0 [ 0 0] DMA 2 - off3
engio_write end
-23311 : Write Addr: 0xc0f04304, Data: 0x20000001 [ 8192 1] DMA 3 - flags
-23310 : Write Addr: 0xc0f04300, Data: 0x 1 [ 0 1] DMA 3 - ctrl
-23306 : Write Addr: 0xc0f04204, Data: 0x20000000 [ 8192 0] DMA 2 - flags
-23305 : Write Addr: 0xc0f04200, Data: 0x 1 [ 0 1] DMA 2 - ctrl
engio_write start
-23303 : Write Addr: 0xc0f03040, Data: 0x 2 [ 0 2]
-23301 : Write Addr: 0xc0f03040, Data: 0x 0 [ 0 0]
-23299 : Write Addr: 0xc0f13000, Data: 0x 0 [ 0 0]
engio_write end
-23296 : Write Addr: 0xc0f13000, Data: 0x 0 [ 0 0]
-23294 : Write Addr: 0xc0f13048, Data: 0x 3 [ 0 3]
-23293 : Write Addr: 0xc0f1304c, Data: 0x 0 [ 0 0]
-23291 : Write Addr: 0xc0f13004, Data: 0x 1 [ 0 1]
-23283 : Read Addr: 0xc0e00000, Data: 0x 1010000 [ 257 0] JPEG
-23280 : Read Addr: 0xc0e00030, Data: 0xffffffff [65535 65535] JPEG
-23277 : Read Addr: 0xc0e00000, Data: 0x 1010000 [ 257 0] JPEG
engio_write start
-23273 : Write Addr: 0xc0f11040, Data: 0x 1 [ 0 1] Resample ?
-23270 : Write Addr: 0xc0f11400, Data: 0x 0 [ 0 0] Resample ?
-23268 : Write Addr: 0xc0f11404, Data: 0x 1 [ 0 1] Resample ?
-23267 : Write Addr: 0xc0f11180, Data: 0x 0 [ 0 0] Resample ?
-23265 : Write Addr: 0xc0f11008, Data: 0x 1 [ 0 1] Resample ?
-23263 : Write Addr: 0xc0f113c0, Data: 0x 0 [ 0 0] Resample ?
-23261 : Write Addr: 0xc0f113c4, Data: 0x 1 [ 0 1] Resample ?
engio_write end
-23257 : Write Addr: 0xc0f04a04, Data: 0x20030000 [ 8195 0] DMA 10 - flags
-23256 : Write Addr: 0xc0f04a00, Data: 0x 1 [ 0 1] DMA 10 - ctrl
-16661 : Read Addr: 0xc0f04230, Data: 0x 2 [ 0 2] DMA 2 - intr
-16648 : Write Addr: 0xc0f04204, Data: 0x 0 [ 0 0] DMA 2 - flags
-16646 : Write Addr: 0xc0f04200, Data: 0x 4 [ 0 4] DMA 2 - ctrl
-16583 : Read Addr: 0xc0f04a30, Data: 0x 2 [ 0 2] DMA 10 - intr
-16576 : Write Addr: 0xc0f04a04, Data: 0x 0 [ 0 0] DMA 10 - flags
-16575 : Write Addr: 0xc0f04a00, Data: 0x 4 [ 0 4] DMA 10 - ctrl
-16539 : Read Addr: 0xc0e00044, Data: 0x 400 [ 0 1024] JPEG
-16533 : Read Addr: 0xc0e00024, Data: 0x 4aa36 [ 4 43574] JPEG
-16399 : Write Addr: 0xc0f04304, Data: 0x20000006 [ 8192 6] DMA 3 - flags
-16381 : Read Addr: 0xc0f04330, Data: 0x 4 [ 0 4] DMA 3 - intr
-16376 : Write Addr: 0xc0f04304, Data: 0x 2 [ 0 2] DMA 3 - flags
-16374 : Write Addr: 0xc0f04300, Data: 0x 4 [ 0 4] DMA 3 - ctrl
-16372 : Write Addr: 0xc0f04304, Data: 0x 0 [ 0 0] DMA 3 - flags
-16276 : Read Addr: 0xc0f04a08, Data: 0x1df97c64 [ 7673 31844] DMA 10 - dst
-16275 : Read Addr: 0xc0f04308, Data: 0x1cabaafe [ 7339 43774] DMA 3 - dst
-16273 : Read Addr: 0xc0f04208, Data: 0x107a13fc [ 4218 5116] DMA 2 - dst
-16009 : Write Addr: 0xc0f13048, Data: 0x 0 [ 0 0]
-16008 : Write Addr: 0xc0f1304c, Data: 0x 0 [ 0 0]
-16006 : Write Addr: 0xc0f13000, Data: 0x80000000 [32768 0]
************** [DPATH] LV_JPG STOP ....
.....
@reddeercity: more details after I'll get a new card (it *is* possible to overclock the 5D2 CF interface).
https://bitbucket.org/hudson/magic-lantern/branch/hdparmetc. .....
Might be useful for overclocking, too.
On the CF card write speed , your saying you only get around 20MB/s ?
Is this on a type 1 or type 2 CF card ?
ExplanationsSource: Late and lamented http://www.hjreggel.net/cardspeed/index.html (Current = Years and years ago)
The CF interface is derived from the ATA Interface. The CF 2.0 specification allowed PIO-4 mode that has a theoretical limit of about 15.9MB/s. CF 3.0 introduced two additional PIO modes that are not part of the original ATA specification: PIO-5 and PIO-6, where PIO-6 has a theoretical limit of about 23.8MB/s. Most CF cards with speed ratings from 80x to 166x use PIO-6 to achieve this speed. However, there is currently no FireWire reader with support for PIO-5 or PIO-6. This means that PIO-6 cards run in the slower PIO-4 mode, and therefore run slower than with current USB 2.0 readers. Support for MDMA modes is most likely not that popular, but you can't really tell the difference between PIO-4 and MDMA-2 when a card reader is used, because PIO only occupies the card reader controller, not the host CPU. CF 3.0 also introduced two additional MDMA modes, MDMA-3 and MDMA-4 using the same timing as PIO-5 and PIO-6.
CF 1.0: Max. PIO-2 (240ns), 7.95MB/s.
CF 2.0: Max. PIO-4 (120ns), 15.89MB/s.
CF 3.0: The new CF PIO modes PIO-5 and PIO-6 and the ATA UDMA modes UDMA-0 to UDMA-4 were introduced, offering a theoretical limit of about 63MB/s for UDMA-4.
CF 4.0: The remaining ATA UDMA modes UDMA-5 and UDMA-6 were added, allowing up to about 127MB/s.
CF 5.0: 48-bit commands were added. This command set allows a transfer block size of up to 32MB compared to 128kB with the previous command set. This will allow actual transfer rates to come closer to the theoretical limit.
CF 6.0: The new CF UDMA mode UDMA-7 (24ns/166M) was added, allowing up to about 158MB/s transfer rate.
In case you have plans on using CF cards as regular ATA device: For all timings of 100ns or faster (UDMA-5, UDMA-6 and UDMA-7), the CompactFlash specification only allows one device per bus with a maximum distance of 0.15m (6in) from the card connector to the host controller, at 3.3V supply voltage! In addition to that, 80-wire cables must be used for all UDMA modes.
Current UDMA CF Cards and UDMA CF readers support UDMA-5 or UDMA-6, with real-world transfer rates of more than 80MB/s. This is already beyond the theoretical transfer rate of UDMA-4. Current USB 2.0 UDMA CF readers are maxed out at about 32MB/s, less than 40% of the actual card performance.
Nice work! How close are you to mjpeg stream? How would that work in practice? mv1080p compressed into mjpeg? Recorded as single images? Curious.
Great Job @heder , I've been watching your progress with great interest :D
One of my long term goals in to have Mjpeg compression -> .avi (4.2.2 8bit)
I know the stream is there but was unable to fully understand it to be implemented in d4 cams
this something that All ML cams can use specially the older d4 e.g. 500d etc. ...
On the CF card write speed , your saying you only get around 20MB/s ?
Is this on a type 1 or type 2 CF card ? spec. say it can use either one .
There is a branch that has to do with CF bus clocking or overclocking ,
I've been looking in to this for the 5d2 & 50d .
Some useful link from previous conversation's about CF card speed
https://www.magiclantern.fm/forum/index.php?topic=12862.msg206010#msg206010
https://www.magiclantern.fm/forum/index.php?topic=12862.msg206011#msg206011
https://www.magiclantern.fm/forum/index.php?topic=19336.msg206067#msg206067etc. .....
Danne, Atleast the older cameras like 40d,450d,1000d were built with jpeg streaming capabilities, were each images is downsampled, mjpeg compressed and finally tranfered to the pc. We can utilize this in magic lantern and save each mjpeg into a file, which will result in a motion-jpeg stream. A tool like ffmpeg supports this non-standard format. The interessing features is that each frame is a full image.Sounds like a game changer to me :).
We can utilize this in magic lantern and save each mjpeg into a file, which will result in a motion-jpeg stream.
https://www.magiclantern.fm/forum/index.php?topic=8119.msg212429#msg212429 (https://www.magiclantern.fm/forum/index.php?topic=8119.msg212429#msg212429)Yes exatly.
The JPEG buffer is is populated *and* freed in lvcdevResourceGet, so... that's pretty much the only place for a hook, if you want to reuse Canon's approach. You could place a hook (patchmgr: patch_hook_function) directly into 0xFFAD5870, but that won't solve much (the hook code will only execute when needed, so it will be a bit cleaner). You should also speed up the copying process with either dma_memcpy (HPCopy) or edmac_memcpy; that should get rid of dropped frames.
On newer models (DIGIC 5, IIRC also 60D and newer DIGIC 4), this function no longer runs automagically while in LiveView, so this approach is only valid for older models.
There is another drawback of this JPEG stream: it's not using the full LiveView resolution. On 450D, CR2 resolution is 4312x2876 (with dcraw), so I'd expect something close to 1436x958 in LiveView. On 5D2, CR2 resolution is 5634x3753, LiveView resolution is 1880x1248, LV-JPEG resolution is 1024x680. I'm pretty sure the hardware can deliver MJPEG at full LiveView resolution; "just" need to figure out how to how to request a full-size YUV buffer (most Canons do this while recording H.264) and how to call the JPEG encoder on an arbitrarily-sized YUV buffer (likely very similar to the lossless encoder).
BTW - disabling this JPEG stream on old models could be useful for reducing power consumption. Nothing measured; just theory.
So, this camera wouldn't be able to output the full speed raw video stream (*.mlv)?
Thanks so much for the continued work! It almost seems as if the finish line is becoming visible on the horizon now.
Once you collect your trophy, might I interest you in running the 80D marathon afterward? ;)
(and properly helping 1300D users abit).Thank you for taking the time to help us move on.
Nice progress @heder. Not many around here nowadays that can accomplish these things. How many frames per second are you getting?
heder
Maybe you will commit changes to your repository?
But the future ? there are so many cameras that are interessing, I can't
say were I want to go after 40d, we will see, but im only interessed in cameras that is missing ML. For now it's the 40d
(and properly helping 1300D users abit).
You don't mean there's already a version of ML that works on the 80D, do you?No. My point was that the next camera i buy next should not have a working ml, but there are alot og those.
Im trying to run the 40d dump from my camera in qemu-eos but is not working, it goes in a loop, does it work for you guys? It seems to boot though..
Also manage to get the Magic Lantern boot screen with boot=1 option.
Is it maybe the wrong approach and is the heder magic lantern that I should try and run in qemu?
Do I need to compile magic lantern 40d in some special way for qemu? Or will the last heder build run in it and no need to compile myself?
How do I run the build?
I'm stuck at this point, I want to try and help, but i'd like to load the software in qemu before trying it on my camera.
Any help appreciated, thanks.
Also would like to say thanks and hurray to heder for pushing forward the 40d, been following this thread 10 years and tried to do it myself lol, just not skilled enough. Following your footsteps and learning along the way. :)
When everything is working in QEMU (magic lantern loaded) the text that should be written (spammed) into the console by QEMU is:If you get the magic lantern to run (press delete button) but text is missing, PM me and tell me text in QEMU is missing, I have not worked with QEMU since januar.Code: [Select]Lockdown read 2
FF819A28: MRC p15,3,Rd,cr15,cr2,0: DcacheTag -> 0x0
FF819A34: MCR p15, ... : CACHEMAINT x1 (omitted)
FF819A34: MCR p15,3,Rd,cr15,cr0,0: CacheDbgIdx <- 0xC0000780
Lockdown read 2
FF819A28: MRC p15,3,Rd,cr15,cr2,0: DcacheTag -> 0x0
FF819A28: MCR p15, ... : CACHEMAINT x1 (omitted)
FF819A28: MCR p15,3,Rd,cr15,cr0,0: CacheDbgIdx <- 0xC00007A0
Lockdown read 2
FF819A28: MRC p15,3,Rd,cr15,cr2,0: DcacheTag -> 0x0
FF819A28: MCR p15, ... : CACHEMAINT x1 (omitted)
FF819A28: MCR p15,3,Rd,cr15,cr0,0: CacheDbgIdx <- 0xC00007C0
Lockdown read 2
FF819A28: MRC p15,3,Rd,cr15,cr2,0: DcacheTag -> 0x0
FF819A34: MCR p15, ... : CACHEMAINT x1 (omitted)
FF819A34: MCR p15,3,Rd,cr15,cr0,0: CacheDbgIdx <- 0xC00007E0
Lockdown read 2
FF819A28: MRC p15,3,Rd,cr15,cr2,0: DcacheTag -> 0x0
As it turns out the canon dump was working on qemu, my terminal screen was printing what you posted, I was just not pushing the right buttons, when i pushed menu (M key) and I saw the canon interface couldn't believe it.
Now I got to play a bit more with it and run/load the 40d magic.
When I press backspace key (delete button?) nothing seems to happen, I've tried also D key for direct printing, how do I load the magic lantern?
Hopefully at some point I might be able to do some debugging and/or find some calls and stubs to help your effort.
qemu-2.5.0/arm-softmmu/qemu-system-arm -drive if=ide,format=raw,file=cf.img -chardev socket,server,nowait,path=qemu.monitor,id=monsock -mon chardev=monsock,mode=readline -sdl -name 40D -M 40D,firmware=boot=1
Ok. I finally got to emulate Magiclantern 40d on qemu-eos. If anyone is following that process you need to use mount.sh script within qemu-eos to mount cf.img (It's the virtual compact flash), so you can copy the ML files in it, otherwise you get permission issues, also but not least the key to launch ML menu in some computers is Supr instead of Del, just saying cause that bit got me stuck for a while.
When i have time i'll play a bit with the ML menu and see where to go from there, once more thanks to everyone that made it posible.
Updated open beta to 1.0.2
https://www.magiclantern.fm/forum/index.php?topic=1452.msg224594#msg224594
Hi Heder :) Just letting you know you're not talking to yourself. I really appreciate these documentation posts and think they're a valuable addition to the community. I always turn them over in my mind and see if they might help me with 200D.
I am just wonder as of this writing where do things stand as far as Video recording on the 40D?See heder's reply #542
I bought a SD to CF card adapter:
and have been using a 16 gb sd card in it:
https://www.amazon.com/Kingston-16GB-microSDHC-Adapter-SDCS2/dp/B07YGZHSJS
This seems to be working well for photos; so I am wondering what the theoretical limits of this kind of arrangement could be for Video capture and when the functionality in any form will be available?
Expo settings don't work in ML. Changed ML digital ISO not have effect to exposure.
Expo sim enabled in Canon menu. Live view active.
See heder's reply #542
Which are - generally speaking - crap.
Most likely performance is far from modern standards. Should not be a concern with 40D which is - according to heder's experiments - limited to around 20 MByte/s bandwidth.
A more serious problem exists supporting boot from card. Some adapters are not able to act like bootable CF-cards, rendering them pretty useless for Magic Lantern.
You may want to test this with an ML-supported cam hosting CF slot (7D, 5D2, 5D3).
According to Kingston this card should do 45 MByte/s in write mode.
Take a decent cardreader with CF slot ( www.cameramemoryspeed.com -> Reviews -> Card readers) and do some benchmark runs with tools like CrystalDiskMark (Windows) or Blackmagic Disk Speed Test (macOS).
20 MByte/s translates to around 720p25 for raw/MLV using lossless compression.
Expo sim enabled in Canon menu. Live view active.
Do you know if this problem is only in photo or liveview or both ?description "This feature only works in LiveView"
Hi Dezmond2Can you share raw file with non standart ISO...50 or more than 3200 ?
Expo settings don't work in ML. Changed ML digital ISO not have effect to exposure.
Expo sim enabled in Canon menu. Live view active.
Can you share raw file with non standart ISO...50 or more than 3200 ?
Try 1.0.4.Now expo settings work, also ISO 2500 - not available in Canon menu. 125, 160 and etc is present in Canon menu, i mostly shot in ISO 160 with stock FW
The only values I found in firmware were 100,200,400,800,1600,3200. I tried to acticate 6400,12800 but the camera crashed. All other non standard values (125,160....) must then be digital ISO amplification from the standard ISO. Lowest ISO 100, highest 3200.
nice work for this oldtimer. You put a lot of efforts in this port and as you are already familar with QEMU (https://www.magiclantern.fm/forum/index.php?topic=1452.msg220263#msg220263) I would like to ask if you only plan to work on ML for 40D? maybe some DIGIC6/7/8 port next (once this got finished)?
Hi immeAwesomeness.
Thank you for your kind words. Currently im working on Ant123s mjpeg video module, and this morning I finally got it running in 1024x680x24fps continuesly, very high quality. Im working on releasing the first version of this module next month.
I finally got it running in 1024x680x24fps continuesly, very high quality. Im working on releasing the first version of this module next month.
Is 1024x680 in x5 Mode? I mean . . we can expand the preview already :D
Waiting the good news, pretty nice!
I am excited to take a look into MJPEG code :DYou can look into my current version (https://filebin.net/tykbeh2to6sq890t/mj_rec.c)
On newer models (DIGIC 5, IIRC also 60D and newer DIGIC 4), this function no longer runs automagically while in LiveView, so this approach is only valid for older models.
Hi all,
So, went through all pages here and just wanted to confirm if I maybe a bit too dumb to understand the codes used here or the LiveView "timeout" is not on the list of mods planned.
Currently my 40D times out at around 30 min and closes LiveView (I am using at work as a webcam to present stuff to the team, so EOS Camera Movie Recorder + OBS), but I could only find the LiveView mentions as being part of the video function, if I got it correctly. Do you know if there is any flag I could maybe change to remove the limit to it?
Thanks!
Managed to boot your build in qemu, now i can boot both canon firmware and your ML build. :)
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fi.postimg.cc%2FDJjg9hFJ%2FUntitled.png&hash=140cc151ffac993aaa3f0b3f07b2dc4f) (https://postimg.cc/DJjg9hFJ)
Next I'll try to run it in the camera and dump the RAM.. Also.. How would one go about finding the half shutter button? Id like to try that.
Thanks for your work heder!
FIO_SeekSkipFile: should be testable in QEMU, with a large SD image and the test code from selftest.mo. That test will create a large file (2GB) and seek within that file.
There are two versions in Canon firmware: one that accepts 32 bits for the position and another one that accepts 64 bits. They are not interchangeable at binary level.
After installing this firmware, the camera did not want to start, although everything was done according to the instructions + video. From time to time I can achieve that the red light is on.
Magic Ball tells: Don't use SD-to-CF adapters. They are crap and ML doesn't support issues with this kind of adapter.
If Magic Ball is wrong: Remove battery, remove card. Insert battery. Do not insert card. Startup cam and report back.
Give some details about the card you are using.kingston compact flash cf/16gb-u2
Check card contents. Is autoexec.bin located in card root?
Do you have a spare card to use with ML?
Been trying the raw video but don't understand very well how it works, it seems to stop automatically after short periods, and also then after I don't know what to do with those files, how to play those raw vid files, looking at my CF card I think the are the ones with .mlv extension..
Ok, MLV app is working like a charm, thanks! :)
My vids are quiet buggy though, in the other hand they were my first try with raw video..
Contrast seems really hight, sometimes the screen just fades to black.
Still amazing to have been able to record some vid with the 40D! :)
Looking forward to mjpeg.
Why does my image fade to black when recording raw video? Could that be bad for my CMOS sensor or something? Should I stop the vid when that happens?
If I go as low as 640x160 and 5:1 or 4:1 aspect ratio i get continous mode in green letters, that seems good..
Under heavier loads i get blueish cold temperature screen, or snow, or splat screen half-half mirror effect..
How do you get those non standard resolutions of 924x388?
Do you use fps overrride to set the 24 fps?
What do "Use SRM job memory" and "Small hacks" do? How can I load the mlv_play module for playback?
I am enjoying very much testing the video on the 40d. :)
Btw, what is binning?
What does the SRM acronym stand for?No idea, but the "SRM_" name originates from the firmware itself.
The closest I get to 924x388 is 928x388 at 2.39:1 .. What aspect ratio are you using? Or it might have been a typo..The 924x388 is properly just a typo, my mistake.
The Blueish cold temperature screen, snow, or half-half screen effect shows on liveview, it does disappear if you turn it off and on again, at least temporarily.Do you get these effect in LiveView even without recording ?
Haven't tried the x5, x10 zoom yet.. Should I be recording with zoom on?When you go into zoom mode, mlv_lite is not recording in "zoom mode", but rather the raw sensor (not binning mode), mlv_lite for 40D can currently recording around 1920(?) x 806(?), but the crop mode is high and aspect ratio around 2.39
No idea, but the "SRM_" name originates from the firmware itself.
General note: from own preview experiments on 700D/5D3, LiveView seems to have multiple layers, if one of the layers didn't match horizontal resolution of e.g. YUV path, some artifact would show (similar to your image). But no idea if it the same thing in your case.
Try to compare registers among none crop mode vs x5 mode, tweak registers you found and see if one of the registers causes these kind of artifacts. We usually do this by adtg_gui module on DIGIC 4/5.
If x5 mode works for JPEG recording and you prefer none-crop mode, You can patch 1:1 (x5) mode back to 3x3 (none crop) mode without touching preview registers, see this (https://www.magiclantern.fm/forum/index.php?topic=17021.0). This can be done using CMOS and ADTG registers and it's very simple. We also can do this by adtg_gui module, and it's very simple to do it. Unfortunately no idea how to do it on 40D.
No one have documented to JPEG engine and registers so it's a black box.
Have you tried to logging (https://www.magiclantern.fm/forum/index.php?topic=2388.msg197313#msg197313) MMIO traffic through JPCore?