реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Инициализация AT91SAM7S64
SolarA
сообщение Aug 28 2008, 20:19
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Всем привет!
Тут такое дело: надо данный МК проинициализировать. Опыта работы у меня с АРМами и с атмелами в часности нету. Я сдер с примера на сайте атмела инциализацию для ИАР 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 дня
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 29 2008, 06:36
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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

twak.gif Неправда, не все. Вы смотрели в них target RAM, которая предназначена для отладки программы путем запуска ее в ОЗУ. Но если ваша программа физически не влезает в ОЗУ, то никакими ухищрениями с файлами линкера вы ее туда не засуните. Надо переходить на работу во флеш. Выберете в любом примере target FLASH - увидите разницу. Возьмите из любого примера .xcl, но не тот, чье имя оканчивается на _ram.xcl, а тот, который оканчивается на _flash.xcl. Его и мучайте. Не забудьте включить генерацию raw-binary образа прошивки в опциях прошивки и флеш-загрузчик в опциях отладчика. Как это делается, смотрите тут.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
KRS
сообщение Aug 29 2008, 06:42
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



так конечно будет в DATA ABORT вылетать!
у вас границы RAM не правильно заданы.
Скорее всего вы взяли XCL файл для отладки в RAM.
А если уже памяти на код и данные не хватает надо уже прошивать программу во FLASH
А границы RAM
Код
-DRAMSTART=00200000
-DRAMEND=00203FFF
Go to the top of the page
 
+Quote Post
Partizzan
сообщение Aug 29 2008, 14:45
Сообщение #4





Группа: Участник
Сообщений: 8
Регистрация: 27-12-07
Пользователь №: 33 670



Точно такое может быть. Границы РАМ такие для вашего МК
// 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

Сообщение отредактировал Partizzan - Aug 29 2008, 14:50
Go to the top of the page
 
+Quote Post
KRS
сообщение Aug 29 2008, 14:49
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



ARM начинает выполнение с адреса 0 и там находятся вектора прерываний...
по умолчанию туда отмаплен флешь ( можно отмапить RAM).
в общем проще считать что сегмент кода идет с 0
Go to the top of the page
 
+Quote Post
SolarA
сообщение Aug 29 2008, 15:05
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Спасибо за советы.
Прога моя работает пока очень криво smile.gif

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

Плюс если сразу запустить прогу на выполнение слетаю в бесконечный цикл default_irq_handler. Я его не прописал поэтому он и переходит на себя. Но суть не в этом, если в пошаговом режиме работать, дойти до какогото момента и оттуда запустить на дальнейшее выполнение такого не происходит.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016