Topic: how to use the four SD cards of s5pv210 under wince6.0 at the same time
By gooogleman
Platform: s5pv210 sate210
Address: http://blog.csdn.net/gooogleman/article/details/7623553
The sate210 core board introduces four SD card interfaces, but currently only two SD cards (sd0 and sd2) are available on the base board and can be used properly under wince6.0. Someone asks me how to use four SD cards at the same time, let me analyze the support for the wince6.0 driver.
View the platform. reg registry,
Yes
If bsp_nosdmmc_ch0!
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch0]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch0.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch0object"
"Membase" = DWORD: eb000000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 5E; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
; "Baseclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
; "Timeoutclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
Endif bsp_nosdmmc_ch0!
If bsp_nosdmmc_ch0
If bsp_nosdmmc_timeout!
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch1]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch1.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch1object"
"Membase" = DWORD: eb100000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 5f; sdmmc1 virtual IRQ = 95 (0x5f), physical IRQ = 59
; "Baseclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
; "Timeoutclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
Endif bsp_nosdmmc_timeout!
Endif bsp_nosdmmc_ch0
If bsp_nosdmmc_ch2!
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch2]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch2.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch2object"
"Membase" = DWORD: eb200000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 60; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
Endif bsp_nosdmmc_ch2!
If bsp_use_sdmmc_ch2_8bit!
If bsp_nosdmmc_ch3!
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch3]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch3.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchca7object"
"Membase" = DWORD: eb300000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 86; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
Endif bsp_nosdmmc_ch3!
Endif bsp_use_sdmmc_ch2_8bit!
Let's take a look at the environment variable settings for bsp_nosdmmc_ch0, bsp_nosdmmc_ch2, bsp_nosdmmc_ch3.
In sate210.bat
Set bsp_nosdmmc_boot = 1
@ REM ----- SD/MMC driver configuration -------------------------
Set bsp_nosdmmc_ch0 =
Set bsp_use_sdmmc_ch0_8bit =
Set bsp_nosdmmc_1_= 1
Set bsp_nosdmmc_ch2 =
Set bsp_use_sdmmc_ch2_8bit =
Set bsp_nosdmmc_ch3 = 1
If/I "% bsp_nosdmmc_boot %" = "" set bsp_nosdmmc_ch0 = 1
The above configuration is combined with the SD configuration of the registry, which means that sd0 and sd2 are both directly available, so sd1 and sd3 can also be used in this case-the simplest way, delete all environment variables in the registry so that the environment variables are not controlled by sate210.bat.
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch0]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch0.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch0object"
"Membase" = DWORD: eb000000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 5E; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
; "Baseclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
; "Timeoutclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch1]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch1.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch1object"
"Membase" = DWORD: eb100000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 5f; sdmmc1 virtual IRQ = 95 (0x5f), physical IRQ = 59
; "Baseclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
; "Timeoutclockfrequency" = DWORD: b71b000; 2aea540-> 45 MHz (epll)
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch2]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch2.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchcch2object"
"Membase" = DWORD: eb200000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 60; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
[HKEY_LOCAL_MACHINE \ drivers \ builtin \ sdmmc_ch3]
"Interfacetype" = DWORD: 0; internal
"Order" = DWORD: 21
"DLL" = "sdmmc_ch3.dll"
"Prefix" = "HSCC"
"Objectcreationproc" = "createsdmmchca7object"
"Membase" = DWORD: eb300000
"Memlen" = DWORD: 100
"IRQ" = DWORD: 86; sdmmc0 virtual IRQ = 94 (0x5e), physical IRQ = 58
"Baseclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Timeoutclockfrequency" = DWORD: 5b8d800; 2aea540-> 45 MHz (epll)
"Iclass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}"; power-manageable generic
See platform. bib file.
; -------- Smdkv210 sdmmc -----------------------------------------------------------------------
If bsp_nosdmmc_ch0!
Sdmmc_ch0.dll $ (_ flatreleasedir) \ sdmmc_ch0.dll NK shmk
Endif bsp_nosdmmc_ch0!
If bsp_nosdmmc_ch0
If bsp_nosdmmc_timeout!
Sdmmc_ch1.dll $ (_ flatreleasedir) \ sdmmc_ch1.dll NK shmk
Endif bsp_nosdmmc_timeout!
Endif bsp_nosdmmc_ch0
If bsp_nosdmmc_ch2!
Sdmmc_ch2.dll $ (_ flatreleasedir) \ sdmmc_ch2.dll NK shmk
Endif bsp_nosdmmc_ch2!
If bsp_use_sdmmc_ch2_8bit!
If bsp_nosdmmc_ch3!
Sdmmc_ch3.dll $ (_ flatreleasedir) \ sdmmc_ch3.dll NK shmk
Endif bsp_nosdmmc_ch3!
Endif bsp_use_sdmmc_ch2_8bit!
In this way, you can also delete the environment variables.
Sdmmc_ch0.dll $ (_ flatreleasedir) \ sdmmc_ch0.dll NK shmk
Sdmmc_ch1.dll $ (_ flatreleasedir) \ sdmmc_ch1.dll NK shmk
Sdmmc_ch2.dll $ (_ flatreleasedir) \ sdmmc_ch2.dll NK shmk
Sdmmc_ch3.dll $ (_ flatreleasedir) \ sdmmc_ch3.dll NK shmk