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

 
 
> LPC1549 в ISP режиме, не корректно выходит
kolisnichenko_r
сообщение Feb 12 2016, 14:26
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Изучаю МК LPC1549 на демо плате LPCXpresso V2 Boards, IDE LPCXpresso. Разбираюсь с режимом работы в ISP, связь МК с ПК по CAN. Переход в ISP осуществляется из функции main() с помощью IAP команды:
Код
Chip_IAP_ReinvokeISP(BOOT_CAN);//invoke ISP CAN Param0: ISP mode. 3 = C_CAN ISP

Счытываю тип прибора, идентификационный номер (не записываю ни во Flash ни в RAM). Обмен виден утилитой USB-CAN моста. Потом выхожу из ISP в приложение командой «Go». Команда отрабатывается, но МК куда то улетает, а нужно в начало пользовательського приложения. Что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Feb 12 2016, 17:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (kolisnichenko_r @ Feb 12 2016, 16:26) *
Изучаю МК LPC1549 на демо плате LPCXpresso V2 Boards, IDE LPCXpresso. Разбираюсь с режимом работы в ISP, связь МК с ПК по CAN. Переход в ISP осуществляется из функции main() с помощью IAP команды:
CODE
Chip_IAP_ReinvokeISP(BOOT_CAN);//invoke ISP CAN Param0: ISP mode. 3 = C_CAN ISP

Счытываю тип прибора, идентификационный номер (не записываю ни во Flash ни в RAM). Обмен виден утилитой USB-CAN моста. Потом выхожу из ISP в приложение командой «Go». Команда отрабатывается, но МК куда то улетает, а нужно в начало пользовательського приложения. Что я делаю не так?

А что Вы считаете "началом приложения"? Ну а в общем случае Вы по "Go" кортекс M3 не запустите sad.gif. Попытка сляпать "никакой" startup увенчалась "успехом' в результате которого
в стартапе нет, например, явной установки стека. Если в начале Вашего приложения лично Вы не добавили инициализацию, то по Go улетите. Про младший бит адреса помните?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 12 2016, 19:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(zltigo @ Feb 12 2016, 23:22) *
А что Вы считаете "началом приложения"? Ну а в общем случае Вы по "Go" кортекс M3 не запустите sad.gif. Попытка сляпать "никакой" startup увенчалась "успехом' в результате которого
в стартапе нет, например, явной установки стека. Если в начале Вашего приложения лично Вы не добавили инициализацию, то по Go улетите. Про младший бит адреса помните?

У Вас видно старая версия FlashMagic-а. Последние умеют переходить по содержимому начала таблицы векторов (есть там чекбокс соответствующий).
А сама идея конечно бредовая, можно наверное трусы и через голову надевать, но есть более традиционные методы.
И товарищ, с большой долей вероятности, не задумался в каком состоянии находится периферия в момент сего перехода, и как написан его код инициализации периферии, переварит-ли он недефолтные значения в её регистрах.
Но если всё-таки хочется трусы через голову, то можно например посоветовать ему написать функцию, дёргающую аппаратный сброс (например через WDT), слинковать её на фиксированный адрес и передавать сей адрес команде Go. Так есть шанс не застрять ушами в трусах. sm.gif
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Feb 12 2016, 20:50
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Цитата(jcxz @ Feb 12 2016, 22:50) *
У Вас видно старая версия FlashMagic-а. Последние умеют переходить по содержимому начала таблицы векторов (есть там чекбокс соответствующий).
А сама идея конечно бредовая, можно наверное трусы и через голову надевать, но есть более традиционные методы.
И товарищ, с большой долей вероятности, не задумался в каком состоянии находится периферия в момент сего перехода, и как написан его код инициализации периферии, переварит-ли он недефолтные значения в её регистрах.
Но если всё-таки хочется трусы через голову, то можно например посоветовать ему написать функцию, дёргающую аппаратный сброс (например через WDT), слинковать её на фиксированный адрес и передавать сей адрес команде Go. Так есть шанс не застрять ушами в трусах. sm.gif

На счет идеи, если больше нету связи кроме как CAN и дергать питанием тоже нельзя. Использовать ISP как раз когда можно в него перейти с работающей программы переписать код и потом в новую вернуться.
Но на даном этапе не получилось просто войти и вернуться.
Как оно не просто...

Цитата(zltigo @ Feb 12 2016, 23:43) *
Вы это что спросить хотели?

Детский сад какой-то. Вы слово стек когда-нибудь слышали? Вы прервали программу и потом НЕ возвратились, а послали (ну в Вашем варианте вообще на 3 веселых буквы) в другое место. Про то, зарезервировали-ли Вы память в своей программе для работы ISP, спрашивать, видимо, вообще не имеет смысла?
Для того что бы задать вопрос надо знать хотя бы часть ответа. Вот этим и надо заняться.

А с чего начать?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 12 2016, 21:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (kolisnichenko_r @ Feb 12 2016, 22:50) *
А с чего начать?

В Вашем случае с самого начала:
1) Архитектура контроллера и как он стартует.
2) Какие ресурсы использует ISP и как с ним сосуществовать.




--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:13
Рейтинг@Mail.ru


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