Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сброс при дебаге и сброс через вкл./откл. питания
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
coolibin
IAR 4.41A, JLink, AT91sam7s256. Запускаю дебаг своей програмулины, прошивается флешка, все работает нормально, включаю девайс без IAR'а т. е. обычным передергиванием питания, нихотит работать((( В чем разница этих двух случаев?
LessNik
А у Вас точно флеш прошивается? Может отладка в RAM происходит? С какого адреса стартует программа в отладчике?
HEX
причиной можте быть что нет сигнала rst при включении питания, а при запуске в отладчике сигнал сброса формирует jlink
coolibin
А как узнать с какого адреса запускается прога?

Флэшка шьется точно! Диодиками я моргаю и тат и так, т. е. прога стартапится, запускается, а вот с микрухой "пообщатся" не удается во втором случае. Я не правильно задал вопрос, должна ли вообще быть какая нить разница или это одно и тоже?
Сергей Борщ
Цитата(coolibin @ Jun 5 2009, 12:15) *
В чем разница этих двух случаев?
Если в настройках дебагера прописан какой-то .mac, то разница в том, что под дебагером при некоторых действиях исполняются команды из этого файла. В частности, там могут быть какие-то команды, исполняемые при сбросе или сразу после загрузки. Эти команды могут как-то настраивать периферию.
coolibin
Да, .mac файл указан и там прописаны команды reset, watchdog disable и т. д., но я считал что при дебаге из флэш он не юзается
LessNik
Посмотрите, может там есть команда Remap, например __writeMemory32(0x00000001,0xFFFFFF00,"Memory");
Если она присутствует, то память RAM отобразится на адрес 0x00 и программа будет выполняться из RAM, иначе Flash отобразится на адрес 0x00 и программа будет выполняться из Flash. При передергивании питания Remap не произойдет и программа запустится из Flash
coolibin
Файлы .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. Но, вопрос уже в другом. Моя программа должна вести себя одинаково в обоих вышеописанных случаях, например, время выполнения?
LessNik
Программа из RAM выпоняется быстрее, чем из Flash. Нужно настраить wait state(0-3) при выпонении программы из Flash.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.