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

 
 
7 страниц V  « < 5 6 7  
Reply to this topicStart new topic
> bootloader в IARe 3,10, Помогите разобраться как сделать
Сергей Борщ
сообщение Jan 20 2008, 18:43
Сообщение #91


Гуру
******

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



Цитата(Breese @ Jan 20 2008, 20:02) *
дошел просто до пустой функции main(void) - он в функцию входит но из нее не выходит и висит - что это может быть?
Где-то ошибка. Попробуйте получившийса .hex пройти по шагам в симуляторе AVRStudio. Сразу увидите - куда код входит и куда выходит.


--------------------
На любой вопрос даю любой ответ
"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
Breese
сообщение Jan 20 2008, 19:27
Сообщение #92





Группа: Новичок
Сообщений: 9
Регистрация: 20-01-08
Пользователь №: 34 261



Эмм ошибка в пустой функции??? Кстати в АврСтудио все норм, как и должно быть а в железе чушь ((( Уже 5 ночей бьюсь ничего не помогает... Контроллер скажете вы, увы, пробовал на 3-х - один результат.
Я грешу на настройки компилятора или фьюзы. Может есть какой нить заковыйрестый фьюзик?
Вообще был бы благодарен если бы кто нить откомпили пустую функцию main в IAR 4 - тогда сразу бы нашел у себя ошибку.
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 20 2008, 19:52
Сообщение #93


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Breese @ Jan 20 2008, 22:27) *
Может есть какой нить заковыйрестый фьюзик?


А что там у вас с M103C ?

Анатолий.
Go to the top of the page
 
+Quote Post
Breese
сообщение Jan 20 2008, 20:08
Сообщение #94





Группа: Новичок
Сообщений: 9
Регистрация: 20-01-08
Пользователь №: 34 261



Цитата(aesok @ Jan 20 2008, 22:52) *
А что там у вас с M103C ?

Анатолий.


Был запрограммирован (PonyProg), щас распрограммировали и... ЗАРАБОТАЛО!!! Ребята вы боги!!! yeah.gif
Go to the top of the page
 
+Quote Post
arttab
сообщение Jan 22 2008, 01:29
Сообщение #95


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

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Breese
были приколы с "пустой функции main(void)". она была заоптимизирована. можно указать чтоб она не оптимизировалась или вставить в нее переход по метки, расположенной в main


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
YWAS
сообщение Aug 22 2009, 18:52
Сообщение #96


Участник
*

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



вот и у меня пришло время писать boot loader, начитавшись и натренировавшись столкнулся с такой проблемой... бут лоадер грузит программу с адреса 000000 и вроде запускает, первые команды проходят а дальше тишина, такое впечатление что не работают прерывания, может кто сталкивался с подобным - помогите - сижу уже битый час и все никак..
(компилятор IAR проц ATMega1280)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 22 2009, 21:01
Сообщение #97


Гуру
******

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



Цитата(YWAS @ Aug 22 2009, 21:52) *
такое впечатление что не работают прерывания,
Или вы переключили вектора на нулевые адреса, но забыли отключить какое-то из прерываний загрузчика. В результате оно стало попадать на пустой обработчик, а часть прерываний (TXE, UDR) не сбрасываются просто от самого факта входа в обработчик. Поставьте заглушки на все неиспользуемые вектора и дергайте в каждой заглушке своей ногой. Легко найдете, в каком прерывании вы зацикливаетесь. Если свободных ног мало, но есть осциллограф, можно наблюдать разные затычки на одной ноге так.


--------------------
На любой вопрос даю любой ответ
"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
YWAS
сообщение Aug 23 2009, 08:42
Сообщение #98


Участник
*

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



Сергей спасибо за подсказки...
Все оказалось тривиально просто, после возвращения из бут лоадера не переключился бит IVSEL, и вектора остались в бут области, переключив этот бит в 0 все заработало на ура....чего и всем желаю... smile.gif

------------------------------------------------------------------------------------------
__disable_interrupt();
char temp;
temp = MCUCR; // Get MCUCR
MCUCR = temp|(1<<IVCE); // Enable change of Interrupt Vectors
MCUCR = temp|(1<<IVSEL); // Move interrupts to Boot Flash section
-------------------------------------------------------------------------------------------
__disable_interrupt();
temp = MCUCR; // Get MCUCR
MCUCR = temp|(1<<IVCE); // Enable change of Interrupt Vectors
MCUCR = temp&(0<<IVSEL); // Move interrupts to 0x00000 Flash section
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 23 2009, 09:16
Сообщение #99


Гуру
******

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



Цитата(YWAS @ Aug 23 2009, 11:42) *
после возвращения из бут лоадера не переключился бит IVSEL
То есть как это? Вы его переключали, а он сопротивлялся? wink.gif


--------------------
На любой вопрос даю любой ответ
"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
YWAS
сообщение Aug 23 2009, 09:46
Сообщение #100


Участник
*

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



типа того,
ошибся немного, было так
MCUCR = temp|(0<<IVSEL); // Move interrupts to 0x00000 Flash section
Go to the top of the page
 
+Quote Post
МП41
сообщение Feb 17 2011, 13:30
Сообщение #101


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Имеется основная программа в ATmega16, которая по команде с UARTа стирает одну страницу, вызывая следующую подпрограмму:
Код
void erase_test(void) @ "BOOTSECTION"
{
_WAIT_FOR_SPM();        
_ENABLE_RWW_SECTION();
_PAGE_ERASE(0x2800);
}

Непосредственно перед вызовом прерывания запрещаю. Сама подпрограмма лежит в области загрузчика (в линкере секция BOOTSECTION прописана "куда надо"), страницу действительно стирает, но назад в основную программу не возвращается. Контроллер, кстати, продолжает генерировать ШИМ по одному из таймеров.
В чём может быть проблема?

Добавлю, что по адресу 0x2800..0x2880 (1 страница = 128 байт) нет кода программы, там лежат данные, так что сама себя программа стиранием этой области не портит.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 17 2011, 13:34
Сообщение #102


Гуру
******

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



QUOTE (МП41 @ Feb 17 2011, 15:30) *
но назад в основную программу не возвращается.
Там нужно еще что-то типа unlock делать, насколько помню - чтобы область приложения стала доступной на чтение. В avr-gcc это boot_rww_enable();



--------------------
На любой вопрос даю любой ответ
"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
МП41
сообщение Feb 17 2011, 14:02
Сообщение #103


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Сергей Борщ, спасибо.
Похоже, надо делать так:
Код
void erase_test(void) @ "BOOTSECTION"
{
_PAGE_ERASE(0x2800);//стираем страницу
_WAIT_FOR_SPM();//ждём выполнения команды SPM
_ENABLE_RWW_SECTION();//активируем RWW-секцию
_WAIT_FOR_SPM();//опять ждём выполнения команды SPM        
}


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
МП41
сообщение Feb 18 2011, 07:45
Сообщение #104


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Добавлено: теперь работает.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post

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

 


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


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