앞에서 설명 했던 SD memory card 프로젝트를 통하여 데이터를 SD 메모리에 쓰고 다시 읽어 오는 방법을 알아보았다.읽기와 쓰기 기능이 제대로 동작되는것을 확인하였으므로 이 기능들을 이용하면 SD 메모리에 원하는 데이터를 저장했다가 필요할 때 다시 읽어 올 수 있게 되었다.데이터 쓰기 동작에서 주의할 점이 있는데 SD 메모리 카드에 데이터가 기록되어 있는 상태에서 새로운 데이터를 저장 하려면, 이미 저장 되어 있는 데이터가 손상되지 않도록 기존 데이터가 기록되어 있는 영역을 피해서 새로운 데이터를 써 주어야 한다. 그리고, 시간이 흐른뒤에 SD메모리에 기록되어 있는 많은 데이터들 중에서 필요한 데이터를 쉽게 찾아서 읽어 올 수 있는 방법도 고려하여야 한다.이런 저런 이유로 SD 메모리 카드에 데..
이번 글에서는 SD 메모리 카드와 관련된 마지막 기능으로 SD 메모리 쓰기 동작에 대하여 설명하도록 하겠다.쓰기 동작은 앞에서 설명한 읽기 동작의 정 반대로 구현 하면 된다.SD 메모리 카드 규격 문서에는 위와 같은 표에 대한 설명이 들어 있다. 하나의 메모리 블럭 쓰기 동작을 위해서는 CMD24를 사용하면 되고, 여러 블럭에 대하여 연속 쓰기를 위해서는 CMD25를 사용하면 된다. UART 콘솔 창에서의 명령으로 특정 SD 메모리 블럭에 대한 쓰기 동작을 위한 코드는 다음과 같이 만들 수 있다.static void write_mem(int argc, char **argv) { uint32_t num_blk = 0; uint32_t blk_count = 1; if (argc>1) num_blk = str..
이번 글에서는 SD 메모리 카드 안에 저장 되어 있는 데이터를 읽어 오는 방법에 대해서 설명하도록 하겠다.SD 메모리 카드에서 데이터를 읽어 올때는 block 단위로 읽어 올 수 있는데, 한번에 하나의 블럭을 읽어 오는 방법과 하나의 명령으로 여러 블럭의 데이터를 읽어 오는 방법이 있다.위의 표에서 볼 수 있듯이, 하나의 블럭단위로 읽어 오기 위한 명령어는 CMD17이고, 여러 블럭을 한꺼번에 읽어 오기 위한 명령은 CMD18이다.명령어를 수행할 때에는 데이터를 어디에서 읽어 올지 그 주소를 알려주어야 하는데, 메모리 용량에 따라 주소의 의미가 달라진다. 위의 그림에서 보는것처럼 SDHC나 SDXC type의 메모리의 경우 block address를 의미하는것이지만, SDSC의 경우에는 byte addr..