SolarA 0 28 августа, 2008 Опубликовано 28 августа, 2008 · Жалоба Всем привет! Тут такое дело: надо данный МК проинициализировать. Опыта работы у меня с АРМами и с атмелами в часности нету. Я сдер с примера на сайте атмела инциализацию для ИАР 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 дня Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 29 августа, 2008 Опубликовано 29 августа, 2008 · Жалоба Я просмотрел несколько примеров для ИАР и они почемуто все инициализируют память так как я писал выше. :twak: Неправда, не все. Вы смотрели в них target RAM, которая предназначена для отладки программы путем запуска ее в ОЗУ. Но если ваша программа физически не влезает в ОЗУ, то никакими ухищрениями с файлами линкера вы ее туда не засуните. Надо переходить на работу во флеш. Выберете в любом примере target FLASH - увидите разницу. Возьмите из любого примера .xcl, но не тот, чье имя оканчивается на _ram.xcl, а тот, который оканчивается на _flash.xcl. Его и мучайте. Не забудьте включить генерацию raw-binary образа прошивки в опциях прошивки и флеш-загрузчик в опциях отладчика. Как это делается, смотрите тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 29 августа, 2008 Опубликовано 29 августа, 2008 · Жалоба так конечно будет в DATA ABORT вылетать! у вас границы RAM не правильно заданы. Скорее всего вы взяли XCL файл для отладки в RAM. А если уже памяти на код и данные не хватает надо уже прошивать программу во FLASH А границы RAM -DRAMSTART=00200000 -DRAMEND=00203FFF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Partizzan 0 29 августа, 2008 Опубликовано 29 августа, 2008 (изменено) · Жалоба Точно такое может быть. Границы РАМ такие для вашего МК // 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 Изменено 29 августа, 2008 пользователем Partizzan Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 29 августа, 2008 Опубликовано 29 августа, 2008 · Жалоба ARM начинает выполнение с адреса 0 и там находятся вектора прерываний... по умолчанию туда отмаплен флешь ( можно отмапить RAM). в общем проще считать что сегмент кода идет с 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SolarA 0 29 августа, 2008 Опубликовано 29 августа, 2008 · Жалоба Спасибо за советы. Прога моя работает пока очень криво :) Зашил ее сеггер ДжейФлеш в плату и она не выполняется. При зашивании пишет что ей не хватает места начиная с 0х00000000, просит перенести все в 0х00100000. Когда переношу, то после этого она не запускается. Тут писали что сначала РОМ находится в 0х00000000, но получается что нет? Плюс если сразу запустить прогу на выполнение слетаю в бесконечный цикл default_irq_handler. Я его не прописал поэтому он и переходит на себя. Но суть не в этом, если в пошаговом режиме работать, дойти до какогото момента и оттуда запустить на дальнейшее выполнение такого не происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться