Vengo de un entorno de software, pero siento que esta es una pregunta de hardware/electrónica.
Buscando una forma de protección contra escritura de hardware en medios flash, compré una tarjeta SDHC (con un pequeño interruptor etiquetado como "bloqueo") y un lector de tarjetas USB económico. Quería crear un dispositivo de "solo lectura" que pueda estar seguro de que no se modificará, sin tener que considerar el software en los hosts a los que lo conecto.
Insertada directamente en mi computadora portátil Dell, la tarjeta solo se puede escribir cuando está desbloqueada... Supuse que esto significaba que la tarjeta SD implementaba la protección contra escritura... Sin embargo, cuando coloco la tarjeta SD en el lector USB, ocurre lo mismo portátil me permite escribir en la tarjeta bloqueada. Ahora he leído esta pregunta y esta confirmación de que me equivoqué al suponer que el interruptor de 'bloqueo' proporcionaría protección contra escritura de hardware. Ahora sé que el 'bloqueo' no es una característica de la tarjeta de forma aislada, y que el 'bloqueo' estándar depende de los controladores del sistema operativo (en los que no quiero verme obligado a confiar).
Me gustaría saber: ¿Cuál sería una forma directa, simple, confiable, ordenada y económica de implementar un interruptor de protección contra escritura de hardware para medios flash? Idealmente, me gustaría acceder a este medio a través de USB. Supongo que necesitaré un dispositivo que pueda interceptar los bloques de datos intercambiados a través de la interfaz serial a USB o a la tarjeta SD.
Puede marcar la tarjeta SD como de solo lectura o protección temporal contra escritura. También puede ocultar el almacenamiento o proteger con contraseña para escribir.
Si no desea modificar el código o los controladores, puede construir una unidad externa para proteger rápidamente contra escritura sus tarjetas SD.
Vea aquí una implementación que usa un micro ATTiny85 externo como intermediario.
Deberías leer las especificaciones simplificadas
Encontrará una discusión general en la capa física 5.0. Puede marcar de forma permanente e irrevocable un área de almacenamiento como de solo lectura.
4.3.6 Gestión de protección contra escritura
La tarjeta de memoria SD admite tres métodos de protección contra escritura:
- Interruptor mecánico de protección contra escritura (responsabilidad del host únicamente)
- Protección contra escritura interna de la tarjeta (responsabilidad de la tarjeta)
- Operación de bloqueo de la tarjeta con protección de contraseña.
Password Card Lock parece ser la mejor opción para usted.
4.3.7 Operación de bloqueo/desbloqueo de tarjeta
La función de protección con contraseña permite que el host bloquee una tarjeta mientras proporciona una contraseña, que luego se usará para desbloquear la tarjeta. La contraseña y su tamaño se guardan en registros PWD de 128 bits y PWD_LEN de 8 bits, respectivamente. Estos registros no son volátiles, por lo que un ciclo de encendido no los borrará.
Tenga en cuenta (del discurso de Ali Chen) que no todas las tarjetas SD que compra tienen implementadas todas las características de la especificación. YMMV dependiendo de lo que compre. Si quisiera ser minucioso, enviaría un correo electrónico a Sandisk u otros y les preguntaría si admiten esta función.
Mira estos dos proyectos:
Samsung definitivamente admite PERM_WRITE_PROTECT como se muestra en sus especificaciones para el registro CSD. Lo muestra correctamente como (W)1... un valor de escritura única.
A partir de estos, debería poder encontrar una solución que satisfaga sus necesidades.
La respuesta más simple es encontrar un lector de tarjetas USB diferente, uno que implemente correctamente el bloqueo.
Parece que podría ver los lectores de tarjetas USB como simples dispositivos de transferencia. No lo son: el protocolo USB es completamente diferente de los protocolos de la tarjeta SD. Entonces ya hay un microcontrolador interceptando continuamente los bloques de datos. Solo necesita encontrar uno mejor que también verifique el bit de bloqueo.
usuario2233709