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

 
 
> 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
Ответов
редактор
сообщение Nov 9 2012, 06:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Я работаю с кейлом, поэтому конкретно про ИАР не скажу.
Должен быть асемблерный файл в проекте. У меня он называется startup.a51. Среда сама предлагает добавлять его в проект при создании.
У вас должно быть нечто подобное. В этом файле несколько инструкций на ассемблере, которые проводят начальную инициализацию
Обычно это обнуление памяти, установка стека и предача управления сишным функциям.
Вот начало моего стандартного файла.
Код
                CSEG    AT      0 ; Директива ассемблера. Устанавливает АБСОЛЮТНЫЙ АДРЕС для секции кода.
                                     ; Линкер не может поменять этот адрес
                                                                     ; Именно здесь нужно откорректировать адрес для верхней программы.
                                                                     ; Тогда точкой входа в нее всегда будет именно этот адрес                                          
?C_STARTUP:     LJMP    STARTUP1 ; непосредственно переход с вектора сброса.
                                                        ; эту секцию линкер разместит в соответствии с установками
                RSEG    ?C_C51STARTUP; начало перемещаемой секции

STARTUP1:      
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1 ; здесь начинается обнуление памяти
                CLR     A
IDATALOOP:      MOV     @R0,A          
                DJNZ    R0,IDATALOOP ; ну и так далее


Сообщение отредактировал редактор - Nov 9 2012, 06:49


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
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
|- - Jhohn   Спасибо, редактор. Поверхностным взглядом подобно...   Nov 12 2012, 11:13
- - редактор   Если в самом проекте никакого стандартного ассембл...   Nov 13 2012, 08:13
- - DO_SL   Делал bootloader для SyLabs C8051F022 в Keil. Прое...   Feb 7 2013, 08:26


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

 


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


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