Trying to get SDHC access working with a Laird MG100 (nrf52840) using NCS Zephyr. I'm using the Zephyr `fat_fs` sample as a starting point.
Regardless of the SDCard I use, sending CMD8 to the subsystem via `sdhc_request()` always returns 0 when using NCS Zephyr.
From `\nordic\v2.3.0\zephyr\subsys\sd\sd.c`
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* Sends CMD8 during SD initialization */
static int sd_send_interface_condition(struct sd_card *card)
{
struct sdhc_command cmd = {0};
int ret;
uint32_t resp;
cmd.opcode = SD_SEND_IF_COND;
cmd.arg = SD_IF_COND_VHS_3V3 | SD_IF_COND_CHECK;
cmd.response_type = (SD_RSP_TYPE_R7 | SD_SPI_RSP_TYPE_R7);
cmd.timeout_ms = CONFIG_SD_CMD_TIMEOUT;
ret = sdhc_request(card->sdhc, &cmd, NULL);
if (ret) {
LOG_DBG("SD CMD8 failed with error %d", ret);
/* Retry */
return SD_RETRY;
}
if (card->host_props.is_spi) {
resp = cmd.response[1];
This results in overall initialization failure:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
*** Booting Zephyr OS build v3.2.99-ncs2 ***
[00:00:02.078,033] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.088,195] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.098,358] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.108,520] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.118,682] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.128,845] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.139,038] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.149,200] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.159,362] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.169,525] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.179,687] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:02.189,117] <inf> sd: sd_common_init: Card does not support CMD8, assuming legacy card
[00:00:02.199,859] <err> sd: sd_check_card_type: No usable card type was found
[00:00:02.208,038] <err> sd: sd_command_init: Unusable card
[00:00:02.214,538] <err> file_io: mount_sd_card: Storage init ERROR!
[00:00:04.250,122] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:04.260,314] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:04.270,477] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
[00:00:04.280,670] <inf> sd: sd_send_interface_condition: Legacy card detected, no CMD8 support
This isn't the case when using downstream zephyr. While I still get Legacy card detected error, it seems that I'm still able to read the card.
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
*** Booting Zephyr OS build zephyr-v3.3.0-1195-g9a759025d912 ***
[00:00:00.356,781] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.357,574] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.358,337] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.359,100] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.359,832] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.360,595] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.361,358] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.362,121] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.362,884] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.363,647] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.364,379] <inf> sd: Legacy card detected, no CMD8 support
[00:00:00.364,410] <inf> sd: Card does not support CMD8, assuming legacy card
[00:00:06.406,860] <inf> sd: Maximum SD clock is under 25MHz, using clock of 8000000Hz
My suspicion is that there is some critical difference that I can't find between NCS Zephyr and Downstream Zephyr, though there may be some other underlying issue at work here.
Can anyone provide any insight on how to resolve this?
Cheers,
S.