Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Инициализация AT91SAM7S64
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
SolarA
Всем привет!
Тут такое дело: надо данный МК проинициализировать. Опыта работы у меня с АРМами и с атмелами в часности нету. Я сдер с примера на сайте атмела инциализацию для ИАР 4.11. Тестовая прожка пошла на ура. Но когда я увеличил прогу у меня стало нехватать РАМ памяти. Я влез покопатся настроечный файл линкера .xcl. И там обнаружил такую запись

-DRAMSTART=00000000
-DRAMEND=00003FFF

-DROMSTART=00000000
-DROMEND=0000FFFF

Начитавшись мануалов я попробовал менять эти значения и у меня стала постоянно на инициализации зацикливается прога, то по Data Abort то Undefined command.

Как нада проинициализировать для ИАР 4.11 МК так чтоб использовать всю его РАМ 16кб и РОМ(флеш) 64кб?

А то я так понимаю что изза накладки сегментов я теряю кусок памяти.
Происходит это так сегмент CODE занимает такое место 1b8-607d в памяти, и тогда сегментам DATA_I, DATA_Z,DATA_N не хватает места в РАМ которая от 0000 до 3FFF. Если же пытаюсь переместить както сегменты, то вылезают разные бока.

Я просмотрел несколько примеров для ИАР и они почемуто все инициализируют память так как я писал выше. Кроме некоторых, я брал их .xcl файлы но получается та же фигня. Получается нада чтобы подходили друг другу файлы инициализации.s79 и memory_maping.xcl

Посоветуйте, пожалуйста, хоть куда копать, а то мучусь уже 2 или 3 дня
Сергей Борщ
Цитата(SolarA @ Aug 28 2008, 23:19) *
Я просмотрел несколько примеров для ИАР и они почемуто все инициализируют память так как я писал выше.

twak.gif Неправда, не все. Вы смотрели в них target RAM, которая предназначена для отладки программы путем запуска ее в ОЗУ. Но если ваша программа физически не влезает в ОЗУ, то никакими ухищрениями с файлами линкера вы ее туда не засуните. Надо переходить на работу во флеш. Выберете в любом примере target FLASH - увидите разницу. Возьмите из любого примера .xcl, но не тот, чье имя оканчивается на _ram.xcl, а тот, который оканчивается на _flash.xcl. Его и мучайте. Не забудьте включить генерацию raw-binary образа прошивки в опциях прошивки и флеш-загрузчик в опциях отладчика. Как это делается, смотрите тут.
KRS
так конечно будет в DATA ABORT вылетать!
у вас границы RAM не правильно заданы.
Скорее всего вы взяли XCL файл для отладки в RAM.
А если уже памяти на код и данные не хватает надо уже прошивать программу во FLASH
А границы RAM
Код
-DRAMSTART=00200000
-DRAMEND=00203FFF
Partizzan
Точно такое может быть. Границы РАМ такие для вашего МК
// No remap
// ROMSTART
// Start address 0x0000 0000
// Size 64 Kbo 0x0001 0000
// RAMSTART
// Start address 0x0020 0000
// Size 16 Kbo 0x0000 4000
// Remap done
// RAMSTART
// Start address 0x0000 0000
// Size 16 Kbo 0x0000 4000
// ROMSTART
// Start address 0x0010 0000
// Size 64 Kbo 0x0001 0000
KRS
ARM начинает выполнение с адреса 0 и там находятся вектора прерываний...
по умолчанию туда отмаплен флешь ( можно отмапить RAM).
в общем проще считать что сегмент кода идет с 0
SolarA
Спасибо за советы.
Прога моя работает пока очень криво smile.gif

Зашил ее сеггер ДжейФлеш в плату и она не выполняется. При зашивании пишет что ей не хватает места начиная с 0х00000000, просит перенести все в 0х00100000. Когда переношу, то после этого она не запускается.
Тут писали что сначала РОМ находится в 0х00000000, но получается что нет?

Плюс если сразу запустить прогу на выполнение слетаю в бесконечный цикл default_irq_handler. Я его не прописал поэтому он и переходит на себя. Но суть не в этом, если в пошаговом режиме работать, дойти до какогото момента и оттуда запустить на дальнейшее выполнение такого не происходит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.