안녕하세요. 오드로이드에서 사용하고 있는 2GByte짜리 micro-SD에 raw데이터를 써넣는 부분을
읽어보기 위해서 USB MultiCardReader에 micro-SD를 연결하여 윈도우에서 인식시킨 후
윈도우API프로그램에서 USB로인식된 L: 드라이브를 아래와같이 열어서 읽어보고있습니다.
질문1)
SetFilePointer(hStorage,0,NULL,FILE_BEGIN); 0번 섹터에서 2000000까지는 값이 나오는데요..
그이후부터는 아무런값이 안나와서요.. 제가 접근하는 방법이 맞는지 정확한 판단이 안서네요..
micro-SD끝에서부터 9KB정도를 읽어보고 싶어서 그러는데요 잘 안되네요..
혹시 고수님중 아래와 같은 경험을 해보신 분 계시면 조언부탁드립니다...(아래에코드가있습니다)
질문2)
S5PC100데이터 시트에 보면 internal Rom에있는 BL0가 OM핀 선택에 따른 장치에 있는 BL1을 internal RAM에 올리고
secure booting이 enable되어있으면 secure boot key값에 따라 BL1의 integrity를 체크한다고 되어있습니다.
만약 integrity check이 통과하면 0x34010으로 점프한다고 되어있네요..
그런데 오드로이드는 SD/MMC로 OM핀을 선택한 경우이므로 BL0코드가 micro-SD의 끝에서 9KB를 복사해서
0x34000에 올려놓고 점프하는 것으로 판단됩니다.
그래서 제생각에는 오드로이드 2GB짜리 micro-SD에 하드커널쪽에서 0x34000에서 돌아가는 작은부트로더를
micro-SD맨끝에서 9KB정도 위치에 써넣는 것으로 생각됩니다만... 제가생각하고있는것이 맞는지 고수님들
조언부탁드립니다. 만약 맞다면 그 코드는 하드커널에서 제공하는지 궁금합니다.
hStorage=CreateFile(
\\.\L:, GENERIC_READ|GENERIC_WRITE,//desired access
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,//
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH,
NULL);
bStatus=DeviceIoControl(hStorage,
FSCTL_LOCK_VOLUME,
NULL,
0,
NULL,
0,
&nBytesReturned,
NULL);
bStatus=DeviceIoControl(hStorage,
FSCTL_DISMOUNT_VOLUME,
NULL,
0,
NULL,
0,
&nBytesReturned,
NULL);
sector_start=0;
SetFilePointer(hStorage,512*sector_start,NULL,FILE_BEGIN);
if(!ReadFile(hStorage,g512Buffer,512,&nBytesReturned,NULL))
{
//Failed
}
bStatus=DeviceIoControl(hStorage,
FSCTL_UNLOCK_VOLUME,
NULL,
0,
NULL,
0,
&nBytesReturned,
NULL);
CloseHandle(hStorage);
답변 2) 아래에 있는 Odroid S5PC100 WiKi를 보시면 됩니다.http://dev.odroid.com/projects/uboot/#s-8