Плата ARM9 Mini2440 или S3C2440 оснащена процессором arm, при загрузке с NOR-флешки она может напрямую запускаться с NOR-флешки, которая загружает небольшой загрузчик под названием «super vivi», есть опция «Download and Run».
Я попытался скомпилировать светодиодную программу C и соответствующий код сборки, чтобы загрузить основную функцию C.
После компиляции я создал файл bin, загрузил его в supervivi.
Сценарий ссылки:
ENTRY(_start)
SECTIONS
{
. = 0x30000000;
/* code and constants */
.text :{
*(.text)
}
. = ALIGN(32);
.data :{
*(.data)
}
. = ALIGN(32);
.bss :{
*(.bss)
}
}
Мой вопрос: как распределяется память, supervivi (загрузчик) будет запускаться с 0x0000000, моя программа светодиодной вспышки запускается с 0x30000000, это правильно?
У supervivi будут некоторые данные или стек, где они находятся?
Если мой скрипт ссылки изменится с ". = 0x30000000;" to ". = 0x0;", что будет?
Может ли мое приложение прочитать флэш-память NAND и скопировать ее в ОЗУ, скажем, прочитать из 0x60000, в котором хранится ядро, и запустить ядро из ОЗУ? Если я могу, где следует использовать позицию ОЗУ?
Извините, слишком много вопросов, наверное, они связаны между собой.