Цитата
bootstrap проинициализировал всю необходимую перифирию, тогда какие модули и дефайны должно содержать приложение, если нужно например посредством printf вывестив DBGU-порт строку?
Ответ на этот вопрос довольно многоярусный.
bootstrap хорош для изучения своим небольшим размером. Чтобы им вывести строку с помощью printf, несложно найти в исходнике функцию DBGU(). Только радость от нее будет недолгая. Раз уж Вы взялись за 9260, то с инициализацией памяти придется разобраться.
При старте запускается программа из ROM процессора. Она умеет инициализировать DataFlash, EEPROM и NANDFlash. Если она их находит, читает вектор номер 6 из таблицы векторов прерываний, могу ошибиться в номере, в качестве размера, грузит программу того самого размера из первой найденной памяти во ВНУТРЕННЮЮ SRAM процессора и передает ей управление. Если в памяти чисто, или перемычка с ChipSelect снята, то ничего не находит, и выдает то самое >.
Та самая программа, загруженная в SRAM, уже может делать все, что захочет программист (но не всегда, что попросит (точнее, наоборот, шутка)). Для этого Atmel и сделал bootstrap.
bootstrap предлагается Atmelом как раз для упрощения жизни. Он имеет тот размер, который помещается во внутреннюю SRAM процессора, умеет инициализировать загрузочную память любого типа и прост в исходниках, что позволяет перенаправить его загружать приложение из любой доступной памяти по желанию. Размер загружаемого приложения теперь ограничен только размером ОЗУ. В дефайнах bootstrapа определяется участок памяти, в который грузится приложение, ну и, естественно, адрес запуска загруженного приложения.
Теперь погрустнее. Загруженное приложение должно повторно проинициализировать, как минимум, оперативную память. bootstrapовые функции остались уже недоступны. Но его исходный код можно использовать повторно. Что обычно и делается.
Теперь становится доступным все адресное пространство процессора. Можно брать пример с упоминавшегося выше диска, компилировать этот пример с опцией sdram и запускать. На этой стадии уже становятся актуальными sprintf.
Дальше, как вариант, можно запустить U-Boot и Linux.
И немного про геометрию размещения. Скажем, при существующей DataFlash и bootstrap, и приложение будут находиться в ней. Они, естественно, не должны пересекаться по адресам. При перепрошивке нужно зашивать их обоих. SAM-BA это умеет, но лучше для начала разнести их по адресам подальше. На размер одного-двух секторов памяти. Тогда можно будет править только приложение.
Сообщение отредактировал Drozd2 - Oct 26 2010, 20:29