Как сделать принудительный сброс на карту MMC / SD - PullRequest
0 голосов
/ 01 октября 2019

Справочная информация:

У меня есть встроенная система (я не могу сменить оборудование) с собственной системой Linux (у меня есть полный контроль над программным обеспечением).

В этой системе несколько (3-провода, 3,3 В) последовательных линий, и я не имею никакого контроля над тем, что и где подключено (я могу узнать после загрузки).

Проблема:

Если некоторые внешниеУстройство подключено к последовательной линии, «метка» на линии (и) RX (что я вообще не могу предотвратить), непосредственно подключенная к микроконтроллеру (MT7628AN, если это имеет значение), достаточна для подачи питания в систему.

Единственное место, где это имеет значение, это SD-карта (опять же, подключенная напрямую к микроконтроллеру), которая никогда не отключается полностью.

В этом состоянии я часто вижу при загрузке:

[    4.679850] mmc0: card never left busy state
[    4.684203] mmc0: error -145 whilst initialising SD card

Это повторяется четыре раза в последовательности загрузки, и более поздние устройства SD (/dev/mmcblk0*) недоступны.

Аналогичная ситуация, если я компилирую драйверы mmc (mtk_mmc.ko, если это имеет значение) и modprobe mtk_mmc позже.

Вопрос:

Есть ли какая-либо последовательность команд, которую я могу отправить в MMC с помощью программного обеспечения , до / во время / после последовательности инициализации, чтобы полностью сбросить ее, как если бы питание было отключено?

Примечание:

Это особенно плохо, потому что (часть) моя корневая файловая система находится на этой карте MMC, и поэтому любые изменения должны выполняться в ядре / initrd.

Если это имеет значение: все карты MMC: "Transcend 8GB C10 MicroSD HC ".

...