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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Не работает bin файл для SAM7S
Arkasha
сообщение Jan 8 2010, 20:30
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Уважаемые форумчане, помогите пожалуйста чайнику! Создал свой проект (IAR 5.4) для мигания светодиодами (контроллер AT91SAM7S256), в эмуляторе (RDI) все прекрасно работает, лампочки мигают, функции вызываются и т.д. Когда создаю bin файл и прошиваю, ничего не работает. Прошивал различными способами, через самбу, флешер и встроенный флеш лоадер - результат одинаковый (то есть нулевой). То же самое происходит и при отладке из флеш - "фирменные" проекты продолжают работать после переброски питания, а мой нет. Все файлы конфигурации брал из IARовских примеров атмейл. Настройки проекта также брал из рабочих примеров. Установил более свежий H-JTAG, флешлоадер стал выдавать ошибку Skipping flash loading pass because there is no data in the designated range: 0x100000-0x140000. То есть по идее, данные не в том диапазоне находятся, но как это исправить не понимаю. Проект прикладываю. Заранее спасибо!
Прикрепленные файлы
Прикрепленный файл  LED.rar ( 120.6 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jan 8 2010, 20:47
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Arkasha @ Jan 8 2010, 23:30) *
Все файлы конфигурации брал из IARовских примеров атмейл. Настройки проекта также брал из рабочих примеров.

1) В ИАР-е используются icf-файлы - в нем указания для компоновщика (linker) о том, по каким адресам разместить код-данные.
2) Все примеры включают в себя по два таких файла - один для размещения кода-данных в ОЗУ (для временной отладки) и один для размещения кода-данных во флэши (при запуске отладчика все это заливается во флэш - опционально можно отключить).
3) Разберитесь в настройках проекта - "linker" (где указать используемый icf-файл), debugger (галка для использования mac-файла и путь к нему при отладке из ОЗУ; галка для использования flashloadder-а при заливке проги во флэш). Посмотрите userguide и т.п.
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 8 2010, 21:08
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Цитата(Student Pupkin @ Jan 8 2010, 23:47) *
Разберитесь в настройках проекта - "linker" (где указать используемый icf-файл), debugger (галка для использования mac-файла и путь к нему при отладке из ОЗУ; галка для использования flashloadder-а при заливке проги во флэш).

Прошу прощения, немного ввел в заблуждение, в процессе экспериментов поменял mac и icf файлы на другие. На самом деле я изначально использовал файлы at91sam7s-ek-flash.mac и flash.icf из из атмейловского примера getting started. Все настройки тоже из этого проекта. Сейчас вернул их на место, ошибка при запуске флеш дебага изчезла, но бинарник по прежнему не работает и после переброса питания перестает работать. Руководство лопатил несколько дней, но понят в чем проблема так и не смог.

Сообщение отредактировал rezident - Jan 8 2010, 21:33
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jan 8 2010, 23:33
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Arkasha @ Jan 9 2010, 00:08) *
ошибка при запуске флеш дебага изчезла, но бинарник по прежнему не работает

Т.е. расклад, видимо, такой:
1) В IAR-е жмете Download and Debug, затем запускаете под отладчиком программу (Go - F5) и все работает (светодиод мигает). Закрываете отладчик.
2) Отключаете питание, отцепляете JTAG от платы, включаете питание - ничего не работает, программа не запускается.
3) Пробуете зашить полученный в IAR-е bin-файл. Для этого запускаете очистку флэш-памяти (с помощью пина ERASE), затем прошиваете самбой . Зашиваете, но ничего не работает.
Так?
Может про пин ERASE забываете? Или может с ним косяк в плате, и каждый раз после передергивания питания флэш очищается?
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 9 2010, 07:00
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Цитата(Student Pupkin @ Jan 9 2010, 02:33) *
Т.е. расклад, видимо, такой:
...
Так?
Может про пин ERASE забываете?

Все так, только JTAG не отцепляю и пин ERASE не использую. Прошиваю либо флешером (там есть ERASE) либо самбой. И то и другое не работает. Причем только на моем проекте, примеры работают при любом способе прошивки,а также и после Download and Debug.
Более того, пытался даже "сдергивать" образ памяти прямо из окна memory в дебаггере, сохранять в hex файл, перегонять в бинарник hex2bin_ом и прошивать. Так вот, опять же, примеры после такой операции работают, а мой проект нет. Видимо что-то неверно в проекте изначально, может быть стартап (в атмейловском примере свой, а у меня стандартный) или что-то еще. Странно только, почему в дебаггере работает.

Сообщение отредактировал rezident - Jan 9 2010, 10:58
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jan 9 2010, 08:32
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Arkasha @ Jan 9 2010, 10:00) *
Странно только, почему в дебаггере работает.

В принципе отличие тут одно - при запуске под отладчиком предварительно выполняется mac-файл. Хотя я с атмеловскими контроллерами не знаком вообще, однако в файле at91sam7s-ek-flash.mac имеется строчка _InitPLL()
Код
* Function description
*   Initializes the PMC.
*   1. Enable the Main Oscillator
*   2. Configure PLL to 96MHz
*   3. Switch Master Clock (MCK) on PLL/2 = 48MHz

Так что возможно все дело в тактовой частоте - при запуске под отладчиком генератор запускается по командам из mac-файла. У вас же в main нигде явно генератор не запускается. Не знаю, от чего камень тактируется при старте (см. даташит), но явно это не 48 МГц. Возможно, что просто Delay(8000000) превращается в ого-го задержку smile.gif.
В примере, кстати, светодиод должен сразу загореться или после задержки?
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 9 2010, 12:38
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Цитата(Student Pupkin @ Jan 9 2010, 11:32) *
В принципе отличие тут одно - при запуске под отладчиком предварительно выполняется mac-файл.

Похоже вы правы - если отключить мак файл, то отладчик зависает в функции wait, в то время как getting started работает и с отключенным маком. Спасибо большое, буду разбираться с клоками. А для чего вообще тогда этот мак, если и без него работает?
Что то поторопился с выводами, не в этом дело похоже.. Запускается все и без маков. Попробовал в обоих проектах отключить маки, оба прекрасно работают в отладчике и без них. Если даже ставлю задержку в один такт или вообще отключаю все равно бинарник не работает.
Макро файл похоже, подхватывается системный по умолчанию. Но на проблему с частотой все равно не похоже при задержке в один такт светодиоды хоть раз бы мигнули.

Сообщение отредактировал Arkasha - Jan 9 2010, 13:28
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 9 2010, 20:12
Сообщение #8


Гуру
******

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



Цитата(Arkasha @ Jan 9 2010, 14:38) *
при задержке в один такт светодиоды хоть раз бы мигнули.
И вы верите, что успели бы увидеть вспышку длительностью пусть даже 10 тактов пусть даже внутреннего 32 КГц генератора? Я не верю. Предлагаю простое решение - включайте/выключайте диод в бесконечном цикле. Если увидете свечение - уже хорошо. А определить - горит он или очень часто мигает при отсутствии осцилографа можно вольтметром - вольтметр покажет усредненное напряжение на ножке. Если светодиод мигает, то на выводе контроллера усредненное напряжение будет меньше напряжения питания.


--------------------
На любой вопрос даю любой ответ
"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
Student Pupkin
сообщение Jan 9 2010, 20:18
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Arkasha @ Jan 9 2010, 15:38) *
А для чего вообще тогда этот мак, если и без него работает?

Откройте его и посмотрите, там все не сложно и с комментариями.
Цитата(Arkasha @ Jan 9 2010, 15:38) *
поторопился с выводами, не в этом дело похоже.. Запускается все и без маков. Попробовал в обоих проектах отключить маки, оба прекрасно работают в отладчике и без них.

Поторопились. Я же не сказал, что mac-файлы виноваты. Я сказал, что в mac-файлах выполняется предварительная настройка клоков. В примерах в коде настройка клоков тоже есть.
У вас в main.c описана вот такая функция:
Код
// Инициализация главного тактового генератора
void InitFrec(void)
{
  // Disable watchwog
  AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;
  //Enabling the Main Oscillator:
и т.д.

В функции main InitFrec не вызывается.
Код
int main()
{
   p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA; //Peripheral Clock Enable
   p_pPio->PIO_PER |= 0x0000000F;  //PIO Enable Register  
   p_pPio->PIO_OER |= 0x0000000F;  //Output Enable Register  
  
   while(1)
   {
     p_pPio->PIO_SODR |= 0x0000000F; //Установка порта в 1
     Delay(8000000);
     p_pPio->PIO_CODR |= 0x0000000F; //Установка порта в 0
     Delay(8000000);
   }
}

Без функции InitFrec (надеюсь вы ее со знанием дела писали smile.gif ):
1) Не установлена нужная тактовая частота - ЦПУ и периферия продолжают тактироваться от внутренненго RC-генератора (как и после ресета).
2) Не выключен сторожевой таймер (WatchDog), который по истечении определенного времени сбрасывает микроконтроллер.
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 10 2010, 09:16
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Цитата(Сергей Борщ @ Jan 9 2010, 23:12) *
И вы верите, что успели бы увидеть вспышку длительностью пусть даже 10 тактов пусть даже внутреннего 32 КГц генератора?

Извините, я неправильно выразился конечно. Там как раз и есть бесконечный цикл, в отладчике там как раз и получается непрерывное свечение меньшей яркости, а в бинарнике тишина.
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 10 2010, 12:07
Сообщение #11





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Ничего не понимаю - сейчас взял другой проект с сайта olimex для их платы (Blinking LED), тоже для мигания светодиодами. Проект изначально под четвертый IAR, запустил в IAR 4.4 Kickstart. Переделал под свою плату (поменял номера ножек и процессор) - все прекрасно работает, как в отладчике, так и в бинарнике, никакой разницы. Стал переделывать проект под IAR 5.4 - опять та же история - в дебаггере все работает, в бинарнике тишина. Видимо я не учитываю что-то, что влияет на создание бинарника в IAR 5.4, а что не могу понять. sad.gif

Я правильно понимаю, что в IAR 5.4 бинарник получается путем конвертации из файла *.out и настраивается это на закладке output converter? В IAR kickstart бинарник как то более очевидно настраивается.
Go to the top of the page
 
+Quote Post
ADA007
сообщение Jan 10 2010, 16:42
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266



Цитата(Arkasha @ Jan 10 2010, 16:07) *
Я правильно понимаю, что в IAR 5.4 бинарник получается путем конвертации из файла *.out и настраивается это на закладке output converter? В IAR kickstart бинарник как то более очевидно настраивается.


Да...вы все правильно понимаете! Может у вас что с настройками Линкера не так. Я пользуюсь связкой IAR5.4 -> Wiggler -> AT91SAM7S64 прошивается и Hex и BIN на ура, причем проект отличается только настройками в output converter-e. Хотя прошивалкой IAR-овской не пользуюсь...H-JTAG намного лутше работает, как по мне...
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 10 2010, 19:31
Сообщение #13





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Я в основном флешером прошиваю, который из H-JTAGа, так удобнее чем самбой. Проекты примеров проишиваются и работают без проблем, а вот мой. Настройки линкера уже много раз проверял, все из рабочего проекта getting started, так же как и файлы конфигурации (icf и mac) не пойму что там нет так. Может там еще какие то более тонкие вещи есть, до которых я не добрался? До этого у меня еще были подозрения что дело в исходниках, а поскольку в четвертом яре заработало, то я вообще перестал понимать, в чем дело. В getting started стартап другой, может в этом дело? Сам проект getting started сложноват для моего понимания, поэтому у меня пока не получается досконально сравнить все содержимое. Подключешь его стартап, он начинает на кучу других файлов ссылаться, они еще на следующие и т.п., конца края не видать. Наверное простое что-то, но пока не могу нащупать. Исследование бинарников hex редакторе показало, что у "правильных" бинарников есть некий заголовок что ли, или не знаю как его назвать, а сам код начинается с сотого адреса. Тупое добавление этого "заголовка" в мой бинарник не дало результата.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jan 10 2010, 22:02
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Arkasha @ Jan 10 2010, 22:31) *
Сам проект getting started сложноват для моего понимания, поэтому у меня пока не получается досконально сравнить все содержимое. Подключешь его стартап, он начинает на кучу других файлов ссылаться, они еще на следующие и т.п., конца края не видать. Наверное простое что-то, но пока не могу нащупать.

А что за getting started? В какой папке лежит? И о каком стартапе говорите?
И почему бы вам не взять рабочий проект из иаровских примеров, выкинуть оттуда все исходники и добавить свои, никакие настройки проекта не менять, скомпилить, загрузить и убедиться, что все работает (ну или не что работает smile.gif )?
Go to the top of the page
 
+Quote Post
Arkasha
сообщение Jan 14 2010, 10:28
Сообщение #15





Группа: Участник
Сообщений: 11
Регистрация: 6-01-10
Пользователь №: 54 650



Getting started это атмейловский пример из поставки IAR. По умолчанию лежит по следующему пути: c:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\examples\Atmel\at91sam7s-ek\getting-started-project\. С одной стороны удобно - там есть, все, что нужно для начала работы - мигание лампочками и базовая работа с COM портом, но с другой стороны там такое количество файлов, связанных в тугой клубок, что я никак не могу в нем разобраться. Олимексовские проекты не в пример понятнее - ничего лишнего, четко и понятно, минимум файлов. Да и вообще, хочется научиться самому проекты создавать, а не только в примеры пару строчек добавлять. Когда сам все создал с нуля, как то увереннее себя чувствуешь. :-)
Go to the top of the page
 
+Quote Post

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

 


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


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