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

 
 
> Сброс при дебаге и сброс через вкл./откл. питания, в чем разница?
coolibin
сообщение Jun 5 2009, 09:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



IAR 4.41A, JLink, AT91sam7s256. Запускаю дебаг своей програмулины, прошивается флешка, все работает нормально, включаю девайс без IAR'а т. е. обычным передергиванием питания, нихотит работать((( В чем разница этих двух случаев?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
LessNik
сообщение Jun 5 2009, 09:42
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



А у Вас точно флеш прошивается? Может отладка в RAM происходит? С какого адреса стартует программа в отладчике?
Go to the top of the page
 
+Quote Post
HEX
сообщение Jun 5 2009, 09:52
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 25-11-04
Из: Тула
Пользователь №: 1 228



причиной можте быть что нет сигнала rst при включении питания, а при запуске в отладчике сигнал сброса формирует jlink
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jun 5 2009, 10:09
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



А как узнать с какого адреса запускается прога?

Флэшка шьется точно! Диодиками я моргаю и тат и так, т. е. прога стартапится, запускается, а вот с микрухой "пообщатся" не удается во втором случае. Я не правильно задал вопрос, должна ли вообще быть какая нить разница или это одно и тоже?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 5 2009, 10:11
Сообщение #5


Гуру
******

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



Цитата(coolibin @ Jun 5 2009, 12:15) *
В чем разница этих двух случаев?
Если в настройках дебагера прописан какой-то .mac, то разница в том, что под дебагером при некоторых действиях исполняются команды из этого файла. В частности, там могут быть какие-то команды, исполняемые при сбросе или сразу после загрузки. Эти команды могут как-то настраивать периферию.


--------------------
На любой вопрос даю любой ответ
"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
coolibin
сообщение Jun 5 2009, 10:41
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Да, .mac файл указан и там прописаны команды reset, watchdog disable и т. д., но я считал что при дебаге из флэш он не юзается


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
LessNik
сообщение Jun 5 2009, 10:55
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Посмотрите, может там есть команда Remap, например __writeMemory32(0x00000001,0xFFFFFF00,"Memory");
Если она присутствует, то память RAM отобразится на адрес 0x00 и программа будет выполняться из RAM, иначе Flash отобразится на адрес 0x00 и программа будет выполняться из Flash. При передергивании питания Remap не произойдет и программа запустится из Flash
Go to the top of the page
 
+Quote Post
coolibin
сообщение Jun 5 2009, 11:10
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Файлы .mac я брал стандартные атмеловские для RAM и отдельно для FLASH, хотя в файле для флеш есть такая функция:

CheckRemap()
{
//* Read the value at 0x0
__mac_i =__readMemory32(0x00000000,"Memory");
__mac_i =__mac_i+1;
__writeMemory32(__mac_i,0x00,"Memory");
__mac_pt =__readMemory32(0x00000000,"Memory");

if (__mac_i == __mac_pt)
{
__message "------------------------------- The Remap is done ----------------------------------------";
//* Toggel RESET The remap
__writeMemory32(0x00000001,0xFFFFFF00,"Memory");

} else {
__message "------------------------------- The Remap is NOT -----------------------------------------";
}

}


т. е. при определенном условии он сделает remap. Но, вопрос уже в другом. Моя программа должна вести себя одинаково в обоих вышеописанных случаях, например, время выполнения?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
LessNik
сообщение Jun 5 2009, 11:41
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Программа из RAM выпоняется быстрее, чем из Flash. Нужно настраить wait state(0-3) при выпонении программы из Flash.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:22
Рейтинг@Mail.ru


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