UHS-I / SD cards investigation

Started by nikfreak, July 30, 2014, 05:46:56 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

nikfreak

Any idea how to identify which hi-speed mode gets used in e.g. photo mode or while raw recording. I attached an image of ARMu so you can see what I mean.

[size=8pt]70D.112 & 100D.101[/size]

nikfreak

Spend some hours now to read through standarized specifications. Found a really interesting document here https://www.sdcard.org/downloads/pls/simplified_specs/part1_410.pdf.

To sum it up UHS-I modes and speeds are controlled by different commands for e.g. cmd6, cmd11, cmd55 and so on. Those control and set block lengths, speed modes, bus widths, voltages and much more. As canon specifies cams like 6D as UHS-I capable I was able to verify in 6D ROm with ARMu that we use "1.8V signaling" and there' also command for "voltageswitch" and blocklength control or set"buswidth" stuff and also that earlier stated commands cmd6, cmd11, cmd55 etc. I also found out that the default voltage is 0.72w for UHS-I and it's stated in the linked document above that for maximum performance standardized 1.44W should be used and as I understood can be used riskfree as it is standardized for UHS-I spec. But i have no clue how to use earlier stated "voltage" sw.
Document above also states that somehow in idle mode of a card when it's powered on again the bus width i 1bit and needs first to be set to 4bit again via commands. This could explain while we need some kind of warm up for our cards before we reach max performance in benchmarking? If anyone has some more ideas please help. i am free to try experiments with my 6D. in ARmu for eg I think I found some stubs for voltageswitch, transfer commands and so on. But for e.g. I have also no clue how to disassemble "./card/STGinitialsetting.c " which i see in ARMu comments.





[size=8pt]70D.112 & 100D.101[/size]

Levas

What is it that you're looking for ?
Do you think you can optimize speed performance so we have 50MB/s speed ? (at the moment 40MB/s is max what I get with the 6d)
Or do you want to know if the 6d is capable of the 104MB/s mode ?

nikfreak

Actually I guess Host type for 6D according to the above table is SDR50. If we are lucky then it also could be SDR104. Dunno the technical details of my cam  :o
And yes I get 40MB max, too. This could be influenced by some of those variables / commands stated above. Good thing is it's a standardized spec which Canon has to follow as long as they state that a cam is UHS capable. They do so I found lots of stuff in ARMu. It's not only squeezing out the max performance for 6D I am looking for but also for 650D, 700D, 70D and future cams. Investigating all the threads on the forum I realized there's simply no other chance actually to get more write performance. I tried setting higher buffer size, reducing fps and or resolution for raw recording. I don't know if it is possible but I simply think and hope that Canon crippled max. performance by commands / software.
[size=8pt]70D.112 & 100D.101[/size]

a1ex

SD card initialization messages from 5D3:

        CSMgrTask:ff5c4634:1e:01: CSMgrTask: pMessage=0x361a4, pLStorage=0x647a5c
        CSMgrTask:ff5c457c:1e:01: MapLogToPhysic: pLStorage=0x647a5c
        CSMgrTask:ff5c45a0:1e:01: MapLogToPhysic: SUCCESS(ID=1)
        CSMgrTask:ff5c457c:1e:01: MapLogToPhysic: pLStorage=0x647a5c
        CSMgrTask:ff5c45a0:1e:01: MapLogToPhysic: SUCCESS(ID=1)
        CSMgrTask:ff6bda48:23:03: ---- SDEventHandler(ID=1:Event=8) ----
        CSMgrTask:ff6bcb14:23:01: SD_DeviceCreate: StorageID=1, WP=0
        CSMgrTask:ff6bcc20:23:01: sdIdentifyDrive Start
        CSMgrTask:ff6baeb0:23:01: sdSoftReset( 0 )
        CSMgrTask:ff6baf24:23:01: sdSoftReset SUCCESS
        CSMgrTask:ff6baf40:23:01: sdTrySendCommand1 Start
        CSMgrTask:ff6baf88:23:03: sdTrySendCommand1: Timeout
        CSMgrTask:ff6baeb0:23:01: sdSoftReset( 0 )
        CSMgrTask:ff6baf24:23:01: sdSoftReset SUCCESS
        CSMgrTask:ff6baac0:23:01: sdIdentifyDrive Start
        CSMgrTask:ff6bd6e4:23:01: sdSendIFCondition Start
        CSMgrTask:ff6bd8f4:23:01: sdSendIFCondition End
        CSMgrTask:ff6ba724:23:01: sdSendOCR Start
        CSMgrTask:ff6ba864:23:05: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff6ba888:23:05: sdSendOCR: 1.8V Signaling Card
        CSMgrTask:ff6baaa4:23:01: sdSendOCR End
        CSMgrTask:ff6bab48:23:01: sdAllSendCID Start
        CSMgrTask:ff6bac7c:23:01: sdAllSendCID End
        CSMgrTask:ff6ba5b0:23:01: sdSendRelativeAddress Start
        CSMgrTask:ff6ba6f8:23:01: sdSendRelativeAddress End
        CSMgrTask:ff6ba1cc:23:01: sdSendCSD Start
        CSMgrTask:ff6ba288:23:03: CsdStructVersion = 1
        CSMgrTask:ff6ba2a8:23:03: MMCSpecVersion = 0
        CSMgrTask:ff6ba370:23:03: C_SIZE=0x0001d0df READ_BL_LEN=0x0009
        CSMgrTask:ff6ba3ac:23:03: *** EraseBlks = 128 ***
        CSMgrTask:ff6ba3d0:23:05: CARD CAPACITY is 59504Mbyte( 121864192Sec )
        CSMgrTask:ff6ba438:23:01: sdSendCSD End
        CSMgrTask:ff6b9df8:23:01: sdSendCID Start
        CSMgrTask:ff6b9eac:23:01: ***********************************
        CSMgrTask:ff6b9ec4:23:01: MID: 0x41
        CSMgrTask:ff6b9ee8:23:01: OID: 0x3432
        CSMgrTask:ff6b9f18:23:01: PNM: SD64G
        CSMgrTask:ff6b9f38:23:01: PRV: 3.0
        CSMgrTask:ff6b9f64:23:01: PSN: 0x02e81ab2
        CSMgrTask:ff6b9f8c:23:01: MDT: 2013/05
        CSMgrTask:ff6b9fa4:23:01: CRC: 0x9b
        CSMgrTask:ff6b9fb4:23:01: ***********************************
        CSMgrTask:ff6ba038:23:03: sdSendCID: MID = 0x41, PDN = 0x5344
        CSMgrTask:ff6ba048:23:01: sdSendCID End
        CSMgrTask:ff6b9bf0:23:01: sdSelectDeselectCard Start
        CSMgrTask:ff6b9ddc:23:01: sdSelectDeselectCard End
        CSMgrTask:ff6b9a78:23:01: sdSetClearCardDetect Start
        CSMgrTask:ff6b9bd4:23:01: sdSetClearCardDetect End
        CSMgrTask:ff6b9708:23:01: sdSendStatus Start
        CSMgrTask:ff6b98bc:23:03: sdSendStatus: SD_CARD_TYPE_H  = 0x0000
        CSMgrTask:ff6b98d8:23:03: sdSendStatus: SD_CARD_TYPE_L  = 0x0000
        CSMgrTask:ff6b9958:23:01: sdSendStatus End
        CSMgrTask:ff6b95fc:23:01: sdSendSCR Start
        CSMgrTask:ff6b9690:23:03: sdSendSCR: SCR=0x03804502, SpecVersion=2
        CSMgrTask:ff6b96e8:23:01: sdSendSCR End
        CSMgrTask:ff6bd384:23:01: sdCheckFunction Start
        CSMgrTask:ff6bd40c:23:01: sdCheckFunction End
        CSMgrTask:ff6b8fec:23:01: sdSetFunction( 16776961 ) Start
        CSMgrTask:ff6b91c8:23:01: sdSetFunction( 16776961 ) End
        CSMgrTask:ff6bae58:23:01: sdIdentifyDrive End(2)
        CSMgrTask:ff6bcd20:23:01: pBlkDev=0x647b64
        CSMgrTask:ff6bcd40:23:03: nBlocks=121864192, blksPerTrack=0, nHeads=0
        CSMgrTask:ff6bcec0:23:03: ERASE_TIMEOUT:2a
        CSMgrTask:ff6bcee0:23:03: ERASE_OFFSET:2
        CSMgrTask:ff6bcf08:23:03: ERASE_SIZE:100
        CSMgrTask:ff6bcf28:23:03: AU_SIZE:f
        CSMgrTask:ff6bcf3c:23:03: dwEraseSectorSize:128
        CSMgrTask:ff6bcf5c:23:03: dwEraseBlks:80000 CSD:1
        CSMgrTask:ff6bdb44:23:05: SD_GetAccessMode=3
        CSMgrTask:ff6bdb7c:23:05: Set Hi-Speed Mode( 48MHz )
        CSMgrTask:ff6bc87c:23:01: sdReadBlk: st=0, num=1, buf=0x40647d4c
        CSMgrTask:ff6bb3f4:23:01: sdDMAReadBlk: st=0, num=1
        CSMgrTask:ff5c592c:21:01: fsuGetPart: default 1
        CSMgrTask:ff5c5948:21:01:             nBlocks = 121864192, blkOffset = 32768


Code from dm-spy-experiments branch, "CONFIG_DEBUG_INTERCEPT_STARTUP = y" in Makefile.user, and the following code changes:


diff -r 3f8197bdca6a src/dm-spy.c
--- a/src/dm-spy.c Thu Jul 31 10:23:06 2014 +0300
+++ b/src/dm-spy.c Thu Jul 31 10:23:37 2014 +0300
@@ -24,7 +24,7 @@
extern void dm_spy_extra_install();
extern void dm_spy_extra_uninstall();

-#define BUF_SIZE (1024*1024)
+#define BUF_SIZE (128*1024)
static char* buf = 0;
static volatile int len = 0;

@@ -86,6 +86,8 @@
/* careful, 1MB may be too much for your camera */
static char staticbuf[BUF_SIZE];

+#include "cache_hacks.h"
+
// call this from boot-hack.c
void debug_intercept()
{
@@ -95,12 +97,9 @@
     {
         buf = staticbuf;
         //~ dm_spy_extra_install();                     /* not exactly working, figure out why */
-        patch_memory(
-            DebugMsg_addr,                              /* hook on the first instruction in DebugMsg */
-            MEM(DebugMsg_addr),                         /* do not do any checks; on 5D2 it would be e92d000f, not sure if portable */
-            B_INSTR(DebugMsg_addr, my_DebugMsg),        /* replace all calls to DebugMsg with our own function (no need to call the original) */
-            "dm-spy: log all DebugMsg calls"
-        );
+        cache_lock();
+        cache_fake(DebugMsg_addr + 0xFF9F07C0, B_INSTR(DebugMsg_addr, &my_DebugMsg), TYPE_DCACHE);
+       
     }
     else // subsequent call, uninstall the hook and save log to file
     {

nikfreak

Thanx for this a1ex. Will try and see what I get from my 6D but my initial thoughts according to your card initiliazation messages on 5D3 should be true:

6D / 5D3 (and maybe other UHS-I capable cams) use at least SDR50 or DDR50 bus speed with 1.8V signal voltage and a possible max. power of 1.44W. 5D3 is set at 48Mhz. card initialization messages give no details about max. power or stuff like Buswidth (UHS-I can only use 1bit or 4bit).
[size=8pt]70D.112 & 100D.101[/size]

nikfreak

    Yes, back again! I tried to follow your tutorial. What steps did I do?


    • hg clone dm-spy-experiments branch
    • edited makefile.user and enabled "CONFIG_DEBUG_INTERCEPT_STARTUP = y"
    • edited dm-spy.c according to your instructions + plus ofc I set RAM_OFFSET of 6D not like in your code where you used 5D3 RAM_OFFSET
    • needed to verify and enable GetTaskname stub for 6d or compilation would fail
    • compiled and tested but nothing happens. No log on scard available after startup.
    • get back in makefile user and enabled "CONFIG_DEBUG_INTERCEPT = y" too although no instruction to do so. Got afterwards some "gdb_setup" error in dm-spy-extra. Deleted that line and could compile. Afterwards debugmsg Log menu is available  but all messages saved by menu have 0 bytes.

    What step am I mising or doing wrong? any hint?
[size=8pt]70D.112 & 100D.101[/size]

Audionut

Enable GDB in the makefile.

That's the debugger.

a1ex

You should also add a call to debug_intercept() somewhere early in the boot process; the 6D uses a different boot method than the one I've tested. I think putting it right before init_task should be OK.

There may be some more quirks (like who knows what is clearing the cache, or you run out of RAM), and to debug these, LED blinking (with busy waiting, not msleep) is pretty much the only tool you have. Take a look in blink.c.

I'll post a decoder for these blinks soon, so you can read the startup messages (encoded as LED blinks) with a second camera.

a1ex

Just updated the dm-spy-experiments branch, so you should no longer need to apply any code changes (CONFIG_DEBUG_INTERCEPT_STARTUP = y should be enough). Enabling the hook right before init_task seems to be the most portable way, and there we already have the DryOS task scheduler running (so msleep, task info routines and some basic stuff like snprintf are now available). There are no interesting debug mesages before init_task anyway.

nikfreak

cool i will try and report once i get home later
[size=8pt]70D.112 & 100D.101[/size]

a1ex

Here's a quick hack:


...
if sd_device.off_0x10 /*0x39970*/ != 0:
    sd_use_1_8V_signaling()
    if ret_sd_use_1_8V_signaling_FF6BAB0C != 0:
        RAM:DebugMsg(35, 5, msg='Set 1.8V Signaling')
        ...

NSTUB(0xff48446c, sd_use_1_8V_signaling):
ff48446c: e3a00000 mov r0, #0
ff484470: e12fff1e bx lr


=> when setting the DebugMsg hook:

+        patch_memory(0xff48446c, 0xe3a00000, 0xe3a00001, "SD 1.8V");
+        patch_memory(0x39970, 0, 1, "SD 1.8V");


=>


Set 1.8V Signaling
sdSendVoltageSwitch Start
sdSendVoltageSwitch End
sdAllSendCID Start
sdAllSendCID End
sdSendRelativeAddress Start
sdSendRelativeAddress End
sdSendCSD Start
CsdStructVersion = 1
MMCSpecVersion = 0
C_SIZE=0x0001d0df READ_BL_LEN=0x0009
*** EraseBlks = 128 ***
CARD CAPACITY is 59504Mbyte( 121864192Sec )
sdSendCSD End
sdSendCID Start
***********************************
MID: 0x41
OID: 0x3432
PNM: SD64G
PRV: 3.0
PSN: 0x02e81ab2
MDT: 2013/05
CRC: 0x9b
***********************************
sdSendCID: MID = 0x41, PDN = 0x5344
sdSendCID End
sdSelectDeselectCard Start
sdSelectDeselectCard End
sdSetClearCardDetect Start
sdSetClearCardDetect End
sdSendStatus Start
sdSendStatus: SD_CARD_TYPE_H  = 0x0000
sdSendStatus: SD_CARD_TYPE_L  = 0x0000
sdSendStatus End
sdSendSCR Start
sdSendSCR: SCR=0x03804502, SpecVersion=2
sdSendSCR End
sdCheckFunction Start
sdCheckFunction End
sdSetFunction( 16711682 ) Start
sdSetFunction( 16711682 ) End
sdIdentifyDrive End(2)
pBlkDev=0x647c44
nBlocks=121864192, blksPerTrack=0, nHeads=0
ERASE_TIMEOUT:2a
ERASE_OFFSET:2
ERASE_SIZE:100
AU_SIZE:f
dwEraseSectorSize:128
dwEraseBlks:80000 CSD:1
SD_GetAccessMode=7
Set Hi-Speed Mode( 96MHz )
sdReadBlk: st=0, num=1, buf=0x40648130
sdDMAReadBlk: st=0, num=1
fsuGetPart: default 1
            nBlocks = 121864192, blkOffset = 32768


With a regular (non-UHS) card, this command fails. I can still browse the photos on the card :D

That's it for now, see you next week.

nikfreak

Yeah only UHS-I (II/III) cards use 1.8V. Older cards operate at 3.3V. So I assume we can play with settings like bus-width, block length, hispeed-mode (96MHz) too and see if we can reach some performance increase as long as stubs for 'em are idenified. I think I found some interesting ones while browsing through ARMu. Just need to do it again and note them down.

Edit: Errrmm

Quote
SD_GetAccessMode=7
Set Hi-Speed Mode( 96MHz )

Compared to your earlier post you now got 96MHz? Same card as earlier where debug posted earlier showed 48MHz???  :D :D :D
[size=8pt]70D.112 & 100D.101[/size]

Greg

500D log

        CSMgrTask:ff329c70:1e:01: CSMgrTask: pMessage=0x1d548, pLStorage=0x7c67f8
        CSMgrTask:ff329bb0:1e:01: MapLogToPhysic: pLStorage=0x7c67f8
        CSMgrTask:ff329bd4:1e:01: MapLogToPhysic: SUCCESS(ID=1)
        CSMgrTask:ff329bb0:1e:01: MapLogToPhysic: pLStorage=0x7c67f8
        CSMgrTask:ff329bd4:1e:01: MapLogToPhysic: SUCCESS(ID=1)
        CSMgrTask:ff393d60:23:03: ---- SDEventHandler(ID=1:Event=8) ----
        CSMgrTask:ff393148:23:01: SD_DeviceCreate: StorageID=1, TotalBlks=0, HiddenBlk=0
        CSMgrTask:ff39315c:23:01:                  WriteProtect=0
        CSMgrTask:ff393244:23:01: sdIdentifyDrive Start
        CSMgrTask:ff392180:23:01: sdSoftReset( 0 )
        CSMgrTask:ff3921e8:23:01: sdSoftReset SUCCESS
        CSMgrTask:ff392204:23:01: sdTrySendCommand1 Start
        CSMgrTask:ff39223c:23:03: sdTrySendCommand1: Timeout
        CSMgrTask:ff392180:23:01: sdSoftReset( 0 )
        CSMgrTask:ff3921e8:23:01: sdSoftReset SUCCESS
        CSMgrTask:ff391d84:23:01: sdIdentifyDrive Start
        CSMgrTask:ff393b68:23:01: sdSendIFCondition Start
        CSMgrTask:ff393c34:23:01: sdSendIFCondition End
        CSMgrTask:ff391a54:23:01: sdSendOCR Start
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391b68:23:03: sdSendOCR: Hi-Capacity Card
        CSMgrTask:ff391d68:23:01: sdSendOCR End
        CSMgrTask:ff391de0:23:01: sdAllSendCID Start
        CSMgrTask:ff391f40:23:01: sdAllSendCID End
        CSMgrTask:ff3918ec:23:01: sdSendRelativeAddress Start
        CSMgrTask:ff391a28:23:01: sdSendRelativeAddress End
        CSMgrTask:ff3915a8:23:01: sdSendCSD Start
        CSMgrTask:ff391650:23:03: CsdStructVersion = 1
        CSMgrTask:ff39166c:23:03: MMCSpecVersion = 0
        CSMgrTask:ff391730:23:03: C_SIZE=0x000076b2 READ_BL_LEN=0x0009
        CSMgrTask:ff391770:23:03: *** EraseBlks = 128 ***
        CSMgrTask:ff391794:23:05: CARD CAPACITY is 15193Mbyte( 31116288Sec )
        CSMgrTask:ff3917ac:23:01: sdSendCSD End
        CSMgrTask:ff39133c:23:01: sdSendCID Start
        CSMgrTask:ff3913ec:23:01: **************************************************
        CSMgrTask:ff391400:23:01: 0x03534453
        CSMgrTask:ff391414:23:01: 0x55313647
        CSMgrTask:ff391428:23:01: 0x80160927
        CSMgrTask:ff39143c:23:01: 0x9300c22d
        CSMgrTask:ff39144c:23:01: **************************************************
        CSMgrTask:ff3914d4:23:03: sdSendCID: MID = 0x03, PDN = 0x5355
        CSMgrTask:ff3914e4:23:01: sdSendCID End
        CSMgrTask:ff3938e4:23:01: sdSelectDeselectCard Start
        CSMgrTask:ff3939b0:23:01: sdSelectDeselectCard End
        CSMgrTask:ff3910c4:23:01: sdSetClearCardDetect Start
        CSMgrTask:ff391320:23:01: sdSetClearCardDetect End
        CSMgrTask:ff390e90:23:01: sdSendStatus Start
        CSMgrTask:ff391050:23:01: sdSendStatus: SD_CARD_TYPE  = 0x0000
        CSMgrTask:ff3910a8:23:01: sdSendStatus End
        CSMgrTask:ff390c74:23:01: sdSendSCR Start
        CSMgrTask:ff390e48:23:03: sdSendSCR: SCR=0x03803502, SpecVersion=2
        CSMgrTask:ff390e70:23:01: sdSendSCR End
        CSMgrTask:ff390b6c:23:01: sdSwitchFunction( 0 ) Start
        CSMgrTask:ff390c28:23:03: sdSwitchFunction( 0 ) Status=0x80000003, AccessMode=3
        CSMgrTask:ff390c54:23:01: sdSwitchFunction( 0 ) End
        CSMgrTask:ff391ed0:23:03: Support Hi Speed Mode
        CSMgrTask:ff390b6c:23:01: sdSwitchFunction( 1 ) Start
        CSMgrTask:ff390c28:23:03: sdSwitchFunction( 1 ) Status=0x80000003, AccessMode=3
        CSMgrTask:ff390c54:23:01: sdSwitchFunction( 1 ) End
        CSMgrTask:ff39202c:23:01: sdIdentifyDrive End(2)
        CSMgrTask:ff39344c:23:01: pBlkDev=0x7c684c
        CSMgrTask:ff39346c:23:03: nBlocks=31116288, blksPerTrack=0, nHeads=0
        CSMgrTask:ff393e8c:23:05: SD_GetAccessMode=3
        CSMgrTask:ff393ea8:23:03: Set Hi-Speed Mode( 48MHz )
        CSMgrTask:ff29000c:21:01: [fsuDeviceAdd] (1)
        CSMgrTask:ff392e18:23:01: sdReadBlk: st=0, num=1, ofst=0
        CSMgrTask:ff3928a0:23:01: sdDMAReadBlk: st=0, num=1
        CSMgrTask:ff32fc0c:21:01: fsuGetPart: default 1
        CSMgrTask:ff32fc28:21:01:             nBlocks = 31116288, blkOffset = 8192

nikfreak

Quote from: a1ex on August 01, 2014, 06:12:52 AM
You should also add a call to debug_intercept() somewhere early in the boot process; the 6D uses a different boot method than the one I've tested. I think putting it right before init_task should be OK.

There may be some more quirks (like who knows what is clearing the cache, or you run out of RAM), and to debug these, LED blinking (with busy waiting, not msleep) is pretty much the only tool you have. Take a look in blink.c.

I'll post a decoder for these blinks soon, so you can read the startup messages (encoded as LED blinks) with a second camera.

Can you be more precise? The only log (pastebin ful log) I can get is this and it contains nothing about sdcard:
             init:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
             init:ff146a60:00:01: [PM] DisablePowerSave (Counter = 1)
             init:ff0c32b0:8b:16:
K302 ICU Firmware Version 1.1.3 ( 5.7.4 )
             init:ff0c32c4:8b:05:
ICU Release DateTime 2013.02.28 18:02:17
             init:ff0fc40c:00:03: [SEQ] CreateSequencer (Startup, Num = 6)
             init:ff0fc660:00:02: [SEQ] NotifyComplete (Startup, Flag = 0x10000)
             init:ff0fc6c4:00:03: [SEQ] NotifyComplete (Cur = 0, 0x10000, Flag = 0x10000)
          Startup:ff133ca0:02:16: PROPAD_CreateFROMPropertyHandle DRAMAddr 0x41744000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0x10000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0x10000
          Startup:ff1472f8:00:01: [SF] CreateSerial : 0x80a00408 0xc0820438 0xc0820404
          Startup:ff1471a0:00:01: [SF] readSerialFlash Dest 0x4044f9dc Src 0x10000 Size 512
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff147168:00:01: [SF] SendCommandWithAddress : 0x3 0x1 0x0 0x0
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff130d58:02:16: SerialFlash Packages!! 0x10000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0x10000
          Startup:ff1472f8:00:01: [SF] CreateSerial : 0x80a00408 0xc0820438 0xc0820404
          Startup:ff1471a0:00:01: [SF] readSerialFlash Dest 0x4044f9dc Src 0x10000 Size 512
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff147168:00:01: [SF] SendCommandWithAddress : 0x3 0x1 0x0 0x0
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff1472f8:00:01: [SF] CreateSerial : 0x80a00408 0xc0820438 0xc0820404
          Startup:ff147c88:00:01: [SF] readSerialFlashWithQuad Dest 0x41744000 Src 0x10000 Size 1813912

          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff149cd8:00:01: [SF] SendCommandToSerialFlash : 0x9f
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff147c50:00:03: [SF] readManufactureCodeSerialFlash 0xc2
          Startup:ff147cbc:00:03: [SF] MACRONIX
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff149cd8:00:01: [SF] SendCommandToSerialFlash : 0x6
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff149cd8:00:01: [SF] SendCommandToSerialFlash : 0x5
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff147bc8:00:01: [SF] SendCommandToSerialFlashWithData : 0x1 0x40 0xf0
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff149cd8:00:01: [SF] SendCommandToSerialFlash : 0x5
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff147168:00:01: [SF] SendCommandWithAddress : 0x6b 0x1 0x0 0x0
          Startup:ff0fc320:00:05: [SEQ] seqEventDispatch (Startup, 0)
          Startup:ff0c3664:8b:05: startupEntry
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf00c0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf00c0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf00c0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf01c0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf8080000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf8080000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf80ac000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf80ae000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0060000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0060000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0080000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf00a0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf01e0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf01e0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf01e0000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0200000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0020000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0020000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0020000
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0xf0021000
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff149b8c:00:01: [SF] IsAddressSerialFlash 0x490000
          Startup:ff1472f8:00:01: [SF] CreateSerial : 0x80a00408 0xc0820438 0xc0820404
          Startup:ff1471a0:00:01: [SF] readSerialFlash Dest 0x4059df3c Src 0x10000 Size 512
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x44
          Startup:ff147168:00:01: [SF] SendCommandWithAddress : 0x3 0x1 0x0 0x0
          Startup:ff149c04:00:01: [SF] SetCSSerialFlash : 0xc022002c 0x46
          Startup:ff130d58:02:16: SerialFlash Packages!! 0x7
          Startup:ff1311d4:02:03: pFromProperty->pNextWriteAddress 0x10000
          Startup:ff0c298c:8b:05: startupPropAdminMain : End
          Startup:ff0fc660:00:02: [SEQ] NotifyComplete (Startup, Flag = 0x20000000)
          Startup:ff0fc830:00:16: [SEQ ERROR] NotifyComplete (Cur = 1, 0x2, Flag = 0x20000000)
          Startup:ff2293b4:81:03: Initialize Adjective & Situation
          ....
          ....
          PropMgr:ff311d2c:01:03: LV_CFilter : kind 0 hv 0
          PropMgr:ff311d60:01:03: Level 0 0 0 0 0 0 0 0
          PropMgr:ff0cb72c:8a:03: HotPlug WifiSetting = 0
          PropMgr:ff3104fc:01:03: Complete WaitID = 0x8000003F, 0x00000000(0)
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          PropMgr:ff0f7f28:8d:03: emSlaveChangeCBR : AUTO_POWEROFF (1)
          PropMgr:ff0f7f58:8d:03: emSlaveChangeCBR : UILOCK (0x0)
          PropMgr:ff3104fc:01:03: Complete WaitID = 0x80000045, 0x00000000(0)
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          Startup:ff0fc320:00:05: [SEQ] seqEventDispatch (Startup, 1)
          Startup:ff0c43b8:8b:05: startupPrepareProperty
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          PropMgr:ff0c4378:8b:03: PROP_GPS_AUTO_TIME_SETTING 0
          PropMgr:ff3104fc:01:03: Complete WaitID = 0x8003006F, 0x00000000(0)
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          Startup:ff0fc660:00:02: [SEQ] NotifyComplete (Startup, Flag = 0x20000000)
          Startup:ff0fc6c4:00:03: [SEQ] NotifyComplete (Cur = 2, 0x20420110, Flag = 0x20000000)
          Startup:ff0c4400:8b:03: startupPrepareCapture : CLASSID_FLAG_PROPAD
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          Startup:ff128384:24:03: FM_Initialize (0, 1, 0)
          PropMgr:ff1281cc:24:03: fmResultCBR (0x5a16ac)
          PropMgr:ff128210:24:03: PROP_HDD_DCIM_PATH (/)
          PropMgr:ff0fce14:81:03: dwNewAeModeDial = 2
          PropMgr:ff228b50:81:01: CustomSlaveCBR 0x80000000(0 0 0) 0x2
          PropMgr:ff228f14:81:03: ChangeAEMode -> 2 @AE_MODE_DIAL
          PropMgr:ff228834:81:03: !! Convert End !!
          PropMgr:ff228b50:81:01: CustomSlaveCBR 0x80000044(0 0 0) 0x0
          PropMgr:ff228b50:81:01: CustomSlaveCBR 0x80000001(0 0 0) 0x2
          PropMgr:ff30d23c:01:03: Deliv WaitID = 0x80000001, 0xFF228B1C(1)
          PropMgr:ff228b50:81:01: CustomSlaveCBR 0x205000e(0 0 0) 0x1
          PropMgr:ff3104fc:01:03: Complete WaitID = 0x80000001, 0xFF228B1C(0)
          PropMgr:ff310570:01:03: SpecialComplete ID = 0x80000001, 0x80000001 2478
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          Startup:ff12260c:27:03: FC_Initialize [drive:3][ClassID:39]
          Startup:ff141348:00:03: [RTC] PROPAD_GetPropertyData : PROP_TIME_ZONE 19
          Startup:ff1414f4:00:03: [RTC] PROPAD_GetPropertyData : PROP_SUMMERTIME_SETTING 0
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          PropMgr:ff14108c:00:07: [RTC] ChangePropertyCBR 0x0, 0x6000
          Startup:ff14d6d8:00:03: [SND] Seq LPC 5-0
          Startup:ff14d708:00:03: [SND]  HARB_ARBMODE  Before:0x00000001 Current:0x00000000
          Startup:ff14d740:00:03: [SND]  HARB_HARBCTRL Before:0x2AAAAAE8 Current:0x2AAAAAE8
          Startup:ff14d750:00:03: [SND] Seq LPC 5-1
          Startup:ff14d778:00:03: [SND] Seq LPC 5-2
          Startup:ff14d79c:00:03: [SND] Seq LPC 5-3
          Startup:ff14d7d4:00:03: [SND] Seq LPC 5-4
          Startup:ff14d7e4:00:03: [SND] Seq LPC 5-5
          Startup:ff14d80c:00:03: [SND] Seq LPC 5-6
          Startup:ff14d820:00:03: [SND] Seq LPC 5-7
          Startup:ff0c44dc:00:16: [SND] Seq LPC fin
          Startup:ff0ef8ec:80:16: hMemoryQueue (0x800010) hStorageQueue (0x820012)
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          PropMgr:ff0ef054:80:16: MemoryStatusMasterResultCBR
          PropMgr:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
          PropMgr:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
    **INTERRUPT**:ff146a60:00:01: [PM] DisablePowerSave (Counter = 2)
    **INTERRUPT**:ff146ad0:00:01: [PM] EnablePowerSave (Counter = 1)
          Startup:ff1fb614:80:16: ### LIST 8 0 8 ###
          Startup:ff1fb744:80:03: AllocateMemoryUnit For ExMem1
          Startup:ff1fb744:80:03: AllocateMemoryUnit For ExMem1
          Startup:ff1fb744:80:03: AllocateMemoryUnit For ExMem1
          Startup:ff1fb744:80:03: AllocateMemoryUnit For ExMem1
          Startup:ff1fb950:80:03: AllocateMemoryUnit For OnlyMem1
          Startup:ff1fb950:80:03: AllocateMemoryUnit For OnlyMem1
          Startup:ff1fb950:80:03: AllocateMemoryUnit For OnlyMem1
          Startup:ff1fb950:80:03: AllocateMemoryUnit For OnlyMem1
          Startup:ff1fc1f8:80:03: #Add [ FreeUnit 4 AddNum 0 ]
          Startup:ff1fc244:80:03: #Add1[ 0-> Unit 006c2e60 Address 52400000 SubUnit 15]
          Startup:ff1fc330:80:03: #AddB[ 0-> Unit 006c2e60 Address 52400000 ]
          Startup:ff1fc244:80:03: #Add1[ 1-> Unit 006c2e44 Address 50000000 SubUnit 15]
          Startup:ff1fc330:80:03: #AddB[ 1-> Unit 006c2e44 Address 50000000 ]
          Startup:ff1fc244:80:03: #Add1[ 2-> Unit 006c2e28 Address 4d400000 SubUnit 15]
          Startup:ff1fc330:80:03: #AddB[ 2-> Unit 006c2e28 Address 4d400000 ]
          Startup:ff1fc244:80:03: #Add1[ 3-> Unit 006c2e0c Address 4b000000 SubUnit 15]
          Startup:ff1fc330:80:03: #AddB[ 3-> Unit 006c2e0c Address 4b000000 ]
          Startup:ff206b70:80:03: #Add2[ FreeUnit 4 ]
          Startup:ff206c1c:80:03: MemMgr(IMAGE) 0 1
          Startup:ff206c1c:80:03: MemMgr(IMAGE) 0 0
          Startup:ff206c1c:80:03: MemMgr(IMAGE) 0 6
          Startup:ff206c1c:80:03: MemMgr(IMAGE) 0 0
          Startup:ff1fa384:80:03: ---- MODE[0 0 0]
          Startup:ff201f30:80:03: RearrangeMemMgr 0 3
          Startup:ff201fec:80:03: PROP_MEMORY_STATUS(SELF) (10->)13 (OTHER) 13
          Startup:ff202020:80:03: Deliver PROP_MEMORY_STATUS 13
          Startup:ff1fd844:80:01: ###### AllocateMemoryFromShootMemoryObject 1
          Startup:ff1fd920:80:01: ###### 0 0x6C2FA0 0x6C2FA0
          Startup:ff1fd920:80:01: ###### 1 0x6C2FA8 0x6C2D80
          Startup:ff1fd948:80:01: ###### 1 pMemoryUnit 0x6C2D80 0xDBF50
          Startup:ff1fd9b4:80:01: AllocatableSizeOfPackHeap 4194192, 16384, 16384
          Startup:ff1fdc5c:80:01: !!AllocateMemory 16384
          Startup:ff1fda94:80:01: AllocateMemoryFromShootMemoryObject 1 4194192 16384 0x000dbfa0
          Startup:ff1fdab0:80:01: ###### VirtualXXXFreeSize1 4194192 0
          Startup:ff1fde70:80:01: ###### VirtualXXXFreeSize2 4177796 0
          Startup:ff1fde84:80:01: ###### !! AllocateMemoryFromShootMemoryObject hMemSuite 0xDBFA0
          Startup:ff201b74:80:01: OK AllocDev[0] DBFA0 4000 50 1 3FBF84 3FBF84 3FFF90
          Startup:ff1f5f9c:80:03: ClearBusy(0x1) 0x40->0x40,0x0(0x40)[0,0]
          Startup:ff2019d8:80:03: ### SRMExMem1_1State Event 0 Result State 0->6 ###
           RscMgr:ff0ef380:80:02: srmEventDispatch: Current = 0, dwEventID = 15, dwParam = 4 S
           RscMgr:ff0ef588:80:02: srmEventDispatch: Current = 0, dwEventID = 15, dwParam = 4 E
           RscMgr:ff0ef380:80:02: srmEventDispatch: Current = 0, dwEventID = 15, dwParam = 4 S
           RscMgr:ff0ef588:80:02: srmEventDispatch: Current = 0, dwEventID = 15, dwParam = 4 E
           RscMgr:ff0ef380:80:02: srmEventDispatch: Current = 0, dwEventID = 15, dwParam = 4 S
           RscMgr:ff2019d8:80:03: ### SRMExMem1_1State Event 4 Result State 6->6 ###
           RscMgr:ff1fe40c:80:01: ###### VirtualFreeMemoryToShootMemoryObject 0xDBFA0
           RscMgr:ff1fe0dc:80:01: VirtualAllocFreeMemory 0xDBFA0 0x6C2FA0 0x6C2F68
           RscMgr:ff1fe16c:80:01: ###### ChunkSize 16396
           RscMgr:ff1fe198:80:01: ###### VIRTUAL_FREE pMemoryUnit->VirtualFreeSize[0] 4194192
           RscMgr:ff1fe1c4:80:01: ######    +pMemoryObject->Virtual1stFreeSize 4194192
           RscMgr:ff1fe378:80:01: ######    +pMemoryObject->Virtual2ndFreeSize 0
           RscMgr:ff1fd7b8:80:01: FreeMemoryToShootMemoryObject 4194192 16384 0xDBFA0
           RscMgr:ff1fd7cc:80:01: ###### FreeMemoryToShootMemoryObject 0xDBFA0
           RscMgr:ff201dac:80:01: FMem3 DBFA0 4000 9AD6A00 9AD6A00 9AD6A00 3FFF90 3FFF90 3FFF90
           RscMgr:ff1fa384:80:03: ---- MODE[0 0 0]
           RscMgr:ff1fd844:80:01: ###### AllocateMemoryFromShootMemoryObject 1
           RscMgr:ff1fd920:80:01: ###### 0 0x6C2FA0 0x6C2FA0
           RscMgr:ff1fd920:80:01: ###### 1 0x6C2FA8 0x6C2D80
           RscMgr:ff1fd948:80:01: ###### 1 pMemoryUnit 0x6C2D80 0xDBF50
           RscMgr:ff1fd9b4:80:01: AllocatableSizeOfPackHeap 4194192, 16384, 16384
           RscMgr:ff1fdc5c:80:01: !!AllocateMemory 16384
           RscMgr:ff1fda94:80:01: AllocateMemoryFromShootMemoryObject 1 4194192 16384 0x000dbfa0
           RscMgr:ff1fdab0:80:01: ###### VirtualXXXFreeSize1 4194192 0
           RscMgr:ff1fde70:80:01: ###### VirtualXXXFreeSize2 4177796 0
           RscMgr:ff1fde84:80:01: ###### !! AllocateMemoryFromShootMemoryObject hMemSuite 0xDBFA0
   ....
        .....
          ....
          .....
          ....


edit: I tried to set debug_intercept(); earlier in boot-hack.c but had no luck. lol those fake cache hacks in there for 6D are irritating btw. Is this the reason why you once said 6D doesn't use gui_massive_eventloop? Just got the idea that those could also be related to the ML menu disappearing bug...
[size=8pt]70D.112 & 100D.101[/size]

a1ex

Yeah, that's the log; probably it's full and you either need a larger size, or just print the interesting messages only - for example, only log those messages from CSMgrTask.

I've ran some benchmarks meanwhile: 7.9 MB/s write / 10.9 read with the hack, 11.1 / 21.4 without.

nikfreak

Ok so you got 96MHz Hi-SpeedMode set? Do we have a possibility to check buswidth set in this mode, too (e.g. 1bit or 4bit)? Which result would a downclock set at 24MhZ produce? ANother question: did you run that bench on something like 600D or 5d3. the results look slow to me..
[size=8pt]70D.112 & 100D.101[/size]

nikfreak

Looks like this needs more time to study - at least for me. As far as I understood a complete set of commands (CMD) have to be executed step by step to get the desired result. Some commands have default values which will be used if they are not set properly (see 2nd post the graphics showing function groups with default values like "power limit 0.72W / driver strength default B"). This may result in unexpected low results by using defaults.
I dunno where to interrupt this in our case and send own commands or even if this would be possible without re-initiating the whole steps.

ACMD6 is required to set 4bit mode.
CMD6 still looks most interesting to me as this will define UHS-I modes, power limits and driver strengths.
I have still no clue if SDR104 mode is supported or we are using SDR50 mode.

https://www.sdcard.org/developers/overview/host_controller/simple_spec/Simplified_SD_Host_Controller_Spec.pdf



[size=8pt]70D.112 & 100D.101[/size]

nikfreak

Ok and here are some stats from a log where my 6D crashed with an ERR70. Summed up: 6D uses 96MHz Hi-SpeedMode and as long 6D can't use more than 96MHz (more possible? less maybe more effective {downclock}?)  the only things which could now improve write performance on 6D could be adjusting values for driver strength, bus speed, bus width and/or power limit. Still "guess & hope" so if anyone has more knowledge give a shout plz:


[SD] ---- SDEventHandler(ID=1:Event=8) ----
    751:   479.188 [SD] sdTrySendCommand1: Timeout
    752:   581.824 [SD] sdSendOCR: CCS=1, S18A=1
    753:   581.940 [SD] Set 1.8V Signaling
    754:   616.888 [SD] CsdStructVersion = 1
    755:   616.912 [SD] MMCSpecVersion = 0
    756:   616.941 [SD] C_SIZE=0x000077bf READ_BL_LEN=0x0009
    757:   616.960 [SD] *** EraseBlks = 128 ***
    758:   616.988 [SD] CARD CAPACITY is 15328Mbyte( 31391744Sec )
    759:   618.293 [SD] sdSendCID: MID = 0x01, PDN = 0x5355
    760:   625.440 [SD] sdSendStatus: SD_CARD_TYPE_H  = 0x0000
    761:   625.457 [SD] sdSendStatus: SD_CARD_TYPE_L  = 0x0000
    762:   628.260 [SD] sdSendSCR: SCR=0x03803502, SpecVersion=2
    763:   629.946 [SD] nBlocks=31391744, blksPerTrack=0, nHeads=0
    764:   629.968 [SD] ERASE_TIMEOUT:1
    765:   629.979 [SD] ERASE_OFFSET:3
    766:   629.992 [SD] ERASE_SIZE:8
    767:   630.001 [SD] AU_SIZE:9
    768:   630.013 [SD] dwEraseSectorSize:128
    769:   630.028 [SD] dwEraseBlks:2000 CSD:1
    770:   630.054 [SD] SD_GetAccessMode=7
    771:   630.066 [SD] Set Hi-Speed Mode( 96MHz )
    772:   631.102 [FSU] fsuGetPart: Block(8192, 31383552, 31391744)
    773:   634.495 [FM] EV_INSERTION_COMPLETE : ID = 2, stat = 8192
    774:   634.561 [FM] fmLateMountCard
    775:   634.584 [FM] fmPrepareShooting (Drive = 2)
[size=8pt]70D.112 & 100D.101[/size]

nikfreak

Found out that 4bit bus width is mandatory for UHS-I in Hi-Speed-Mode. So forget about that - at least for 650D / 700D / 70D and 6D. So the only things left are : bus speed, driver strength and power limit. From what I can definitely say that our UHS-I capable cams support at least "sdio spec V3.0". And in conjunction with that there are so called CCCR registers (Card Common Control Registers). Very interesting are adresses 14h (DDR50 / SDR50 or SDR104 bus modes) and 15h (driver strength). See also page 32 of the official specification V3.

I guess that all of those are somehow related to "STGInitialSetting.c" or those SUBs seen around that in ARMu. See following picture.

[size=8pt]70D.112 & 100D.101[/size]

nikfreak

Btw earlier post was done because I simply hope that we can switch some day to SDR104 because while googling around all host controllers I found also supported SDR104 (not only SDR50 / DDR50). I think incam controller could be same.
[size=8pt]70D.112 & 100D.101[/size]

Levas

Would be insane if the controllers support SDR104  :D
But I doubt they would, why would Canon not make use of the speed  :-\
I can imagine that Canon slows down the max speed of 50MbitMb to 40MbitMb for better lifetime or more stable performance.
But why would you slow down to 40MbitMb if the controller supports 100MbitMb

But don't let me stop you from investigation, who knows what will be discovered  8)

nikfreak

Quote from: Levas on August 07, 2014, 04:47:20 PM
But I doubt they would, why would Canon not make use of the speed  :-\
I can imagine that Canon slows down the max speed of 50Mbit to 40Mbit for better lifetime or more stable performance.
But why would you slow down to 40Mbit if the controller supports 100Mbit...
...
No clue myself just guessing why they could slow it down:


  • making 5D2/3 more attractive (burst speed etc.) those use fast CF cards - same for 7D. Would you buy one of that if you knew you could have same write performance. What would differ? AF performance?
  • saving energy  / power to promote high battery power
  • .....


But ofc you may be right that they use simply crippled and cheap to produce components for cheap cameras including a fullframe 6D.
[size=8pt]70D.112 & 100D.101[/size]

Levas

Didn't think about the CF card versus SD card speed theory.
Sounds like a good enough reasons for Canon to slow down the SD controllers to make a speed difference statement between CF and SD camera's.

Hmm,  :D   would be insane if you can manage to get speeds above 50Mb!  (Although getting actually 50Mb output speed (instead of the 40Mb) would be a big break through too!)


nikfreak

Actually I am still freshman but documenting here what I find. reverse enginnering is for other guys. maybe some day I can manage to do this on my own but for now other have to do some work or lead me into the right direction. As long as my camera has warranty I am willing to risk everything  8)
And yes even if it's only 50MB/s we theroretically still have 10MB/s lost somewhere. So it's worth it in my eyes to spend some work into this. In real worl practice it should be something about 5-7MB/s which I assume we can gain if it's 50MB/s only...
[size=8pt]70D.112 & 100D.101[/size]