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

 
 
> IAR (контроллер aduc845) как в программе сделать прыжок на другой адрес?, переход из App в Bootloader
Jhohn
сообщение Oct 24 2012, 14:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Необходимо на контроллере ADuC845 в среде IAR, с которой работал раньше, перейти по заданному адресу, где находится выполняемая функция.
Никак не удается перейти с одной программы в другую.
Располагаю для теста две программы незивисымые, с разной частотой мигания светодиода. По заданным для перехода адресам находится то что нужно, проверял вычитыванием памяти flash.

Пробовал переход и так
Код
asm ("LJMP 0x0400");

и так
Код
((void (*)())0x0000)();


Почитал хорошую темку ПО для перепрошивки 8051, Дайте мудрый совет, но там не про IAR. Может пересесть с любимого?

Как перейти с программы начальной адрес которой 0x100 на другую прогу с начальным адресом 0x400?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DO_SL
сообщение Feb 7 2013, 08:26
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 1-11-10
Из: Беларусь, Минск
Пользователь №: 60 563



Делал bootloader для SyLabs C8051F022 в Keil. Проект организовывал так:
1) Проект для самого загрузчика.
2) Проект с полезным кодом.
В загрузчике указал располагать код в области памяти начиная с 0xF000 такой директивой линковщику:
CODE(0F000h, ?PR?MAIN?UPDATER_F02x(0F000h)).
В проекте с полезным кодом вызов загрузчика:

void (*update_firmware)(); // pointer to bootloader memory
.....

update_firmware = (void code*)0xF000;
IE = 0;
update_firmware(); // go to bootloader menu

При такой организации перекрытие быть может, только если размер полезного кода достигнет адреса 0xF000. Весь же startup code располагается по адресам 0х0000 и 0xF000 для программы и загрузчика соответственно. Правда прерываниями в загрузчике пожертвовал, чтобы не заморачиваться с переопределением векторов. Пример брал из аппнота для силаба. Вдруг поможет.

UPD. Да, а зачем Вы объединяете hex-файлы bootloader'a и программы? Я в чистый контроллер заливаю bootloader, переход на него после сброса добавляет сама среда, из bootload'a загружаю саму прошивку (2-й hex-файл). Можно загрузить 2-й hex отладчиком/программатором, но тогда нужно выключить очистку flash перед программирование.

Сообщение отредактировал DO_SL - Feb 7 2013, 08:53
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jhohn   IAR (контроллер aduc845) как в программе сделать прыжок на другой адрес?   Oct 24 2012, 14:09
- - _Артём_   Цитата(Jhohn @ Oct 24 2012, 17:09) Код...   Oct 24 2012, 15:28
|- - Jhohn   Цитата(_Артём_ @ Oct 24 2012, 19:28) Поче...   Oct 24 2012, 17:48
|- - Jhohn   Цитата(_Артём_ @ Oct 24 2012, 19:28) Поче...   Oct 25 2012, 05:56
|- - Палыч   Цитата(Jhohn @ Oct 25 2012, 09:56) Что уп...   Oct 25 2012, 06:18
|- - Jhohn   Цитата(Палыч @ Oct 25 2012, 10:18) Верятн...   Oct 25 2012, 07:47
|- - Палыч   Цитата(Jhohn @ Oct 25 2012, 10:56) Объеди...   Oct 25 2012, 07:54
|- - Jhohn   Похоже, что точка входа, далее вычитанный hex Код0...   Oct 25 2012, 07:58
- - редактор   Не скажу за IAR, но в KEIL помимо указания адреса ...   Oct 25 2012, 08:08
|- - Kolia   Если бутлодер находится вначале то необходимо в не...   Oct 25 2012, 20:36
- - Lagman   Палыч все правильно сказал. Осталось дождаться отв...   Nov 3 2012, 18:31
|- - Jhohn   Цитата(Lagman @ Nov 3 2012, 22:31) Палыч ...   Nov 7 2012, 12:52
- - редактор   некрасиво, при пересборке проекта адрес 0x427 може...   Nov 8 2012, 06:26
|- - Jhohn   Цитата(редактор @ Nov 8 2012, 10:26) некр...   Nov 8 2012, 08:01
- - редактор   Я работаю с кейлом, поэтому конкретно про ИАР не с...   Nov 9 2012, 06:45
|- - Jhohn   Спасибо, редактор. Поверхностным взглядом подобно...   Nov 12 2012, 11:13
- - редактор   Если в самом проекте никакого стандартного ассембл...   Nov 13 2012, 08:13


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

 


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


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