Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: команда GO загрузчика LPC111x/LPC11Cxx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Almaz1988
Использую мк lpc11C24. Пишу программу прошивки мк используя его аппаратный загрузчик.
Последовательность следующая:
1)Перевожу устройство в режим аппаратного загрузчика
2)Заливаю прошивку
3)Произвожу перезапуск устройства

Зарылся на третьем шаге)
Как я понял для перезапуска устройства используется команда GO.
Вот что написано об этом в мануале LPC111x/LPC11Cxx User manual:
Цитата
Input parameter - Address: Flash or RAM address from which the code execution is to be started.
This address should be on a word boundary.
This command is used to execute a program residing in RAM or flash memory. It
may not be possible to return to the ISP command handler once this command is
successfully executed. This command is blocked when code read protection is
enabled.


Два вопроса:
1) В качестве адреса для перехода использовать адрес обработчика Reset_handler?
2) Как быть, если адрес нечетный?
KRS
Цитата(Almaz1988 @ Oct 9 2012, 10:21) *
Два вопроса:
1) В качестве адреса для перехода использовать адрес обработчика Reset_handler?
2) Как быть, если адрес нечетный?

Нечетный адрес быть не может! (он используется только для флага в командах, например BX)
Бутлоадер сам ставит этот флаг ему нужен обычный адрес!
Вообще команда GO лучше не использовать для запуска полноценного приложения! Лучше дернуть ресет, а если он не выведен загрузить в ОЗУ программу и ресетнуть контроллер при помощи вотчдога.
Сергей Борщ
QUOTE (KRS @ Oct 9 2012, 12:20) *
загрузить в ОЗУ программу и ресетнуть контроллер при помощи вотчдога.
Т.е. выполнить команду GO для второй загруженной программы sm.gif


Almaz1988, младший бит адреса у ядер ARM не используется как собственно адрес - он служит признаком thumb-кода.
Almaz1988
Цитата(KRS @ Oct 9 2012, 12:20) *
Нечетный адрес быть не может! (он используется только для флага в командах, например BX)
Бутлоадер сам ставит этот флаг ему нужен обычный адрес!
Вообще команда GO лучше не использовать для запуска полноценного приложения! Лучше дернуть ресет, а если он не выведен загрузить в ОЗУ программу и ресетнуть контроллер при помощи вотчдога.


Располагаю функцию во флеше по адресу 0х2000. Гляжу в МАР-файл - она там расположена по адресу 0х2001.


В общем решил отказаться от использования аппаратного загрузчика (только из-за того, что команда GO не работает). Начал писать полностью софтовый загрузчик.

С использованием IAP-команд
Сергей Борщ
QUOTE (Almaz1988 @ Oct 10 2012, 10:01) *
Располагаю функцию во флеше по адресу 0х2000. Гляжу в МАР-файл - она там расположена по адресу 0х2001.
Читайте доки. Адрес 0x2000. Младший бит не является частью адреса.
UM10398, LPC111x/LPC11Cxx User manual:
QUOTE
23.3.1.3.4 Program Counter
The Program Counter(PC) is register R15. It contains the current program address. On
reset, the processor loads the PC with the value of the reset vector, which is at address
0x00000004. Bit[0] of the value is loaded into the EPSR T-bit at reset and must be 1

QUOTE
23.3.1.3.5 Program Status Register
...
Execution Program Status Register: The EPSR contains the Thumb state bit
The following can clear the T bit to 0:
• instructions BLX, BXand POP{ PC}
• restoration from the stacked xPSR value on an exception return
• bit[0] of the vector value on an exception entry.
Attempting to execute instructions when the T bit is 0 results in a HardFault or lockup. See
Section 23–23.3.4.1for more information.
Almaz1988
Написал полностью самодельный загрузчик на IAP-командах))
KRS
Цитата(Almaz1988 @ Oct 10 2012, 11:01) *
В общем решил отказаться от использования аппаратного загрузчика (только из-за того, что команда GO не работает).


как не работает?
у меня все первичные тесты ее используют (программа в ОЗУ грузиться и выдает результаты в тот же уарт) на всех LPC работает! Только для тумбы там адрес все равно надо четный ставить и приписывать букву T
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.