2012-12-26 2 views
1

내 임베디드 시스템에서 eMMC에 원시 쓰기를 수행하려고합니다. 장치 노드는 /dev/mmcblk1p1이고 이진 example.bineMMC의 특정 주소 (예 : 0x1000)로 복사하려고합니다.Linux에서 eMMC RAW 액세스

누군가 내가이 문제를 어떻게 해결할 수 있는지 알려주세요. Linux를 실행하는 ARM 플랫폼을 사용하고 있습니다. 어떤 도움이라도 실제로 유용 할 것입니다. 미리 감사드립니다.

+1

정확히 무엇을하려고합니까? 이미지를 MMC로 플래싱하려면 부트 로더에 viz.nand.write 명령이 있어야합니다. – itisravi

+0

내가 다루고있는 부트 로더가 아닙니다. 응용 프로그램에서 eMMC의 특정 주소로 이진 파일을 작성하고 싶습니다. 내가 잘못하지 않았다면, 부트 로더는 커널 이미지 등을 다루고있을 것입니다. 단지 주소로 내 바이너리를 플래시하고 싶습니다. 희망이 도움이 .. – Prashanth

+0

난 당신이 (/ dev/mmcblkp1), (eMMC 주소에 해당하는 원하는 오프셋을 찾아()/바이너리 파일을 쓰기 시작할 수있는 프로그램을 작성할 수있을 것 같아요. – itisravi

답변

-4

먼저 Linux 파일 시스템에 장치 노드를 마운트해야합니다.

# mount -t msdos /dev/mmcblk1p1 /mnt/ 
# cp /mnt/libnsl.so /lib/libnsl.so.1 
# /mnt/lrz 

lrz

ZMODEM 프로토콜을 사용하여 파일을 전송합니다 응용 프로그램입니다. TeraTerm을 사용하여

파일 -> 전송 -> ZMODEM -> example.bin을 열고 OK을 클릭하십시오.

+0

주소에 RAW 쓰기를 수행하기 때문에이 작업이 수행되지 않습니다. 당신이 제안한 것은 파일 시스템에있을 것입니다. – Prashanth

4

이 작업은 dd 명령 줄 프로그램을 사용하여 수행 할 수 있습니다. 아웃 파일 (/dev/mmcblk1)의 오프셋 (offset)

dd if=example.bin of=/dev/mmcblk1 seek=8 

가 검색 옵션으로 지정되고 512의 블록 DD 작품 등이 예에서 8 : 다음과 같이 0x1000 인 오프셋에서 /dev/mmcblk1-example.bin 복사는 할 것 기본적으로 바이트입니다. 자세한 내용은 man dd을 참조하십시오.

이것은 C의 프로그래밍 방식으로 out 파일의 열린 파일 설명 자에 lseek() 함수를 사용하여 수행 할 수도 있습니다.

질문에서 /dev/mmcblk1p1 파일이 언급되었지만 MMC 장치 (p1)의 첫 번째 파티션의 장치 노드임을 유의하십시오. /dev/mmcblk1 파일은 실제 MMC 장치에 대한 올바른 노드입니다.

관련 문제