Вам понадобится некоторый уровень файловой системы, который может правильно интерпретировать содержимое SD-карты. Такие карты обычно никогда не используются в качестве необработанной флэш-памяти, а вместо этого используют верхний слой файловой системы, который дает вам каталоги и файлы. Это, конечно, необходимо при перемещении карты между устройствами, чтобы сделать ее функциональной.
Когда у вас есть драйвер файловой системы, вы сможете в основном открывать файл на SD-карте для чтения, а затем сидеть в цикле чтения блоков подходящего размера. Для каждого прочитанного блока вы просто копируете его по нужному адресу в ОЗУ. Конечно, вы также можете прочитать его прямо по нужному адресу, минуя копию.
В псевдо-C это будет просто:
FILE *in;
if((in = fopen("sd0:\\file.dat", "rb")) != NULL)
{
unsigned char *target = (unsigned char *) 0xec008000; /* totally random */
size_t got;
while((got = fread(target, 1024, 1, in)) > 0)
{
target += got;
}
fclose(in);
}
Конечно, вы, вероятно, не будете использовать stdio
, поэтому функции fopen()
, fread()
и fclose()
будут отличаться в зависимости от драйвера вашей файловой системы.
person
unwind
schedule
30.04.2014