banner
뉴스 센터
풍부한 경험과 앞선 기술

Raspberry Pi Pico 파일 시스템 및 SD 카드 리더기

May 06, 2023

Raspberry Pi Pico에는 이동식 저장소가 없지만 내부 플래시 메모리를 사용하여 파일을 읽고 쓸 수 있으며 SD 카드 리더를 쉽게 추가할 수 있습니다. MicroPython에서 이를 수행하는 방법을 보여줍니다.

이것은 최근 책을 확장하는 새로운 자료입니다.

아마존에서 구매하세요.

또한 관심 사항:

라즈베리 피코 파일 시스템

<아신:B0BR8LWYMZ>

Pico에는 MicroPython 인터프리터를 저장하는 데 사용되는 2MB의 플래시 메모리가 있습니다. 나머지 메모리는 자신의 MicroPython 프로그램 내에서 사용할 수 있는 파일 시스템으로 변환됩니다.

플래시 메모리는 시스템과 데이터를 보관하는 여러 파티션으로 나뉩니다. 일부 다른 MicroPython 구현과 달리 1.6MB의 데이터 파티션만 사용할 수 있으며 시스템 부팅 시 자동으로 루트로 마운트됩니다. 데이터 파티션을 나타내는 Partition 객체를 반환하는 rp2.Flash() 함수를 사용하여 이 파티션에 액세스할 수 있습니다.

파티션 인스턴스가 있으면 다음 방법 중 하나를 사용할 수 있습니다.

이러한 메서드는 os.AbstractBlockDev에서 정의한 단순 및 확장 블록 프로토콜을 모두 구현합니다. Pico에는 ioctl 명령의 하위 집합만 구현됩니다.

4 – 블록 수를 가져오고 정수를 반환해야 합니다(arg는 사용되지 않음).

5 – 블록의 바이트 수를 가져옵니다. 정수를 반환해야 하며, 기본값인 512가 사용되는 경우 None을 반환해야 합니다(arg는 사용되지 않음).

6 – 블록 지우기, arg는 지울 블록 번호입니다.

일반적으로 이러한 명령은 파티션에서 작업하기에는 너무 낮은 수준이므로 파일 측면에서 작업할 수 있도록 파일 시스템을 설치하려고 합니다. 그러나 정말로 바퀴를 재발명하고 싶다면 원시 블록 측면에서 직접 작업할 수 있습니다.

플래시 개체는 다른 파티션으로부터 사용자를 격리하고 해당 블록 번호가 0에서 시작하도록 설정됩니다. 따라서 블록 0에 일부 데이터를 쓰고 다시 읽으려면 다음을 사용할 수 있습니다.

먼저 파일 시스템을 사용할 수 없도록 마운트 해제합니다. 파티션이 마운트된 채로 남아 있으면 파일 시스템은 우리가 사용하려는 블록을 사용하고 덮어쓸 수 있습니다. 다음으로 블록 수와 블록 크기를 얻습니다. 블록에 새 데이터를 쓰기 전에 ioctl 명령 6을 사용하여 데이터를 지워야 합니다. 그 후에는 블록 크기까지 원하는 수의 바이트를 쓸 수 있습니다. 데이터를 다시 읽는 것은 읽을 바이트 수를 지정하기 위해 버퍼의 길이를 설정하기만 하면 됩니다. 이것을 시도하면 "Hello World"가 저장되어 있음을 알 수 있습니다.

"Hello World" 이외의 바이트는 이미 블록에 저장된 것입니다.