|
|
  |
IAR настройка проекта |
|
|
|
Jul 18 2012, 19:52
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901

|
привет. Такая ситуация: поменял ноут , поставил винду, новый иар 6,30,1,3142, создал проект для at91sam7s256. отладка работает через jetlink5 все нормально. Но проблема в том что прога в проце работает только через отладку, то есть надо загрузить и нажать "Run", если не нажмем не работает. Если загрузили и нажали ран потом вышли с отладки - все нормально работает, потом сбрасываем по питанию прога не стартует. Заходим в дебаг бес загрузки нажимаем ран прога начинает выполнятся. Вчем может быть проблема? в какую сторону копать ? какие файлы вам дать посмотреть?
после перегруза вроде как и что то делает проц но непонятно что (вроде как замедлено выполняет программу а вроде как куски программы). а если с дебагера нажать ран то все нормально.
Сообщение отредактировал D!m@ - Jul 18 2012, 20:08
|
|
|
|
|
Jul 19 2012, 06:08
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901

|
Цитата(Lotor @ Jul 19 2012, 07:57)  Проверьте в настройках проекта шьете ли Вы флеш (Debugger->Download галка Use flash loader(s)).
|
|
|
|
|
Jul 19 2012, 07:36
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901

|
Цитата(Lotor @ Jul 19 2012, 09:57)  Вариантов много, например, неправильно составлено скрипт линкера или делаете ремап на неинициализируемую область рам. Проверьте, что происходит при сбросе питания. На какие адреса попадаете. И что по ним живет.
PS: Для начала возьмите готовый пример от иара для Вашего камня. Там будут несколько конфигураций - для отладки из озу, и боевой шьющийся во флеш. Сравните со своим и найдите отличия. стартап использую иаровский. проблему нашол. в стандартной либе для адс от иар при инициализации есть вот такой код Код if( adcClock != (mckClock/((prescal+1)*2)) ) { TRACE_WARNING("User and calculated adcClocks are different : user=%d calc=%d\n\r", adcClock, (mckClock/((prescal+1)*2))); } так вот пот дебагером проходит нормально. Без дебага проц на нем вешается. поменял TRACE_LEVEL на 0 стало все на свое место. Можете объяснить почему printf вешает проца и почему пот дебагом все нормально
|
|
|
|
|
Jul 19 2012, 08:19
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(D!m@ @ Jul 19 2012, 11:36)  стартап использую иаровский. Можете объяснить почему printf вешает проца и почему пот дебагом все нормально Так Вы сами можете раскрутить, что происходит при вызове printf. Загляните в файл trace.c, там будет функция fputc в которой вызывается через макрос TRACE_PutChar функция DBGU_PutChar. Ну а в ней вечные циклы ожидания: Код //------------------------------------------------------------------------------ /// Outputs a character on the DBGU line. /// \note This function is synchronous (i.e. uses polling). /// \param c Character to send. //------------------------------------------------------------------------------ void DBGU_PutChar(unsigned char c) { // Wait for the transmitter to be ready while ((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXEMPTY) == 0); // Send character AT91C_BASE_DBGU->DBGU_THR = c; // Wait for the transfer to complete while ((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXEMPTY) == 0); } Вероятно в этом и проблема. Если нет - то имхо понятно, куда копать. Тем более есть отладчик.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jul 19 2012, 08:58
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901

|
Цитата(Lotor @ Jul 19 2012, 11:19)  Вероятно в этом и проблема. Если нет - то имхо понятно, куда копать. Тем более есть отладчик. Ну это да. Так почему пот дебагом проходило?
Сообщение отредактировал IgorKossak - Jul 19 2012, 13:47
Причина редактирования: бездумное цитирование
|
|
|
|
|
Jul 19 2012, 09:21
|

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

|
QUOTE (D!m@ @ Jul 19 2012, 10:36)  поменял TRACE_LEVEL на 0 стало все на свое место. То есть вместо того, чтобы исправить потенциально неправильный код, из-за которого выдавалось предупреждение, вы отключили предупреждение. Радикально. Главное, что "заработало". QUOTE (D!m@ @ Jul 19 2012, 11:58)  Ну это да. Так почему под дебагом проходило? Не знаю как в новом, а в старом ИАРе в настройках линкера можно было указать "линковать with debug i/o modules", при этом вместо putchar подлинковывались функция, представлявшая из себя пустой цикл. В этот цикл отладчик ставил свою скрытую точку останова, при попадании в нее считывал из регистра параметра выводимый символ, печатал его в окно "I/O console" или подобное и прегружал в PC адрес следующей за циклом инструкции. Возможно у вас та же ситуация и ваш проц просто ждет, пока отладчик заберет у него выводимый символ. P.S. А исходное предупреждение все же победите. Неспроста оно.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 19 2012, 15:16
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901

|
Цитата(Сергей Борщ @ Jul 19 2012, 12:21)  Не знаю как в новом, а в старом ИАРе в настройках линкера можно было указать "линковать with debug i/o modules", при этом вместо putchar подлинковывались функция, представлявшая из себя пустой цикл. В этот цикл отладчик ставил свою скрытую точку останова, при попадании в нее считывал из регистра параметра выводимый символ, печатал его в окно "I/O console" или подобное и прегружал в PC адрес следующей за циклом инструкции. Возможно у вас та же ситуация и ваш проц просто ждет, пока отладчик заберет у него выводимый символ. а точнее где указывалось? скриншот моно? и в "I/O console" мне ничего не писало Цитата(Сергей Борщ @ Jul 19 2012, 12:21)  P.S. А исходное предупреждение все же победите. Неспроста оно. посмотрел зразу же. означает что точно с заданной частотой частоту АЦП настроить не удалось. но это не критично
Сообщение отредактировал D!m@ - Jul 19 2012, 15:18
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|