Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1102 и SWD
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Сергей Борщ
С кортексами дела не имел, закладываю в схему LPC1102 (габариты жмут). Курю описание. Там сказано, что нет специальной ноги для принудительного запуска загрузчика. Рекомендуют запуск ISP предусматривать в программе. Но поскольку проект первый, то вполне вероятно записать в проц программу, которая не то что ISP не запустит - вообще камень на лопатки положтит. А ног и так мало, ноги SWD естественно будут заняты под SPI и нога SWCLK превратится в SPI CLK. В инструкции сказано, что в этом случае SWD отключается. Также будет занята и нога P0.0/~RESET. Изучив описание еще раз, возник такой вопрос: при подаче питания нога P0.0 работает как ~RESET. Зажав его, я не даю запуститься моей программе и не допускаю перепрограммирования функций ног ~RESET и SWCLK. Вопрос - пока я держу RESET зажатым, я смогу достучаться до камня по SWD и стереть неправильную программу (CRP не стоит, само собой)? Или же ~RESET блокирует SWD и камень в помойку? В таком случае надо будет отрабатывать программу на чем-то более многоногом и безопасном, например LPC1114, подпаивая его к полю из 4х4 площадок с шагом 0.5мм пучком проводов, чего не хотелось бы.
HARMHARM
Цитата(Сергей Борщ @ Aug 27 2011, 18:46) *
Вопрос - пока я держу RESET зажатым, я смогу достучаться до камня по SWD и стереть неправильную программу (CRP не стоит, само собой)? Или же ~RESET блокирует SWD и камень в помойку?

Судя по разным обсуждениям на форумах и некоторым данным из даташитов, SWD не будет работать в состоянии сброса. Но это так, ИМХО.
LPC1114 у меня есть, но работать через SWD нечем.
DpInRock
Перед назначением SPI сделать полсекундную задержку.
HARMHARM
Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять.
Сергей Борщ
QUOTE (HARMHARM @ Aug 29 2011, 10:41) *
Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять.
Можно. Но во время отладки этого кода можно запросто "убить" камень.
GetSmart
Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек.
Сергей Борщ
QUOTE (GetSmart @ Aug 29 2011, 11:47) *
Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек.
Да, пожалуй так и сделаю.
Ya. Kolmakov
Цитата(Сергей Борщ @ Aug 29 2011, 13:23) *


Сергей,
А вы прошивать через UART пробовали? Я несколько раз прочел в документацию и так не понял - проц сам переходит в режим программирования по UART или для этого что то надо сделать?
Сергей Борщ
QUOTE (Ya. Kolmakov @ Aug 29 2011, 22:13) *
проц сам переходит в режим программирования по UART или для этого что то надо сделать?
Существует три входа в заводской загрузчик (ISP):
1) В проце нет пользовательской программы. В этом случае после сброса безусловно запускается загрузчик.
2) Во время сброса нога P0.1 прижата к земле
3) Из пользовательской программы осуществлен переход на точку входа в процедуру ISP.

Поскольку у LPC1102 на ногу P0.1 места не хватило, то остаются первый и третий способы. Первый доступен в чистом кристалле с завода, третий нужно (можно) предусматривать в вашей программе.
esaulenka
Сергей, если интересно.
Проверял на LPC1111.
Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю.

Connecting ...
- Connecting via USB to J-Link device 0
- J-Link firmware: V1.20 (J-Link ARM V8 compiled Apr 27 2011 20:42:35)
- JTAG speed: 5 kHz (Fixed)
- Initializing CPU core (Init sequence) ...
- Initialized successfully
- JTAG speed: 4000 kHz (Fixed)
- CPU clock frequency: 11992 kHz (Auto detected)
- Connected successfully
WARNING: Supply voltage too low, disconnecting target!
Disconnecting ...
- Disconnected
Connecting ...
- Connecting via USB to J-Link device 0
- J-Link firmware: V1.20 (J-Link ARM V8 compiled Apr 27 2011 20:42:35)
- JTAG speed: 5 kHz (Fixed)
- Initializing CPU core (Init sequence) ...
- Initialized successfully
- JTAG speed: 4000 kHz (Fixed)
- ERROR: Failed to download RAMCode for CPU clock frequency detection!
- ERROR: Failed to measure CPU clock frequency
- ERROR: Failed to connect
RA3WUM
Цитата(esaulenka @ Sep 8 2011, 16:50) *
Проверял на LPC1111.
Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю.
...
WARNING: Supply voltage too low, disconnecting target!

По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания.
У меня плата на LPC1114, все сигналы для SWD идут напрямую без подтяжек. В том числе reset.
МК стабильно шьётся.
Сергей Борщ
QUOTE (RA3WUM @ Sep 13 2011, 08:01) *
МК стабильно шьётся.
Даже когда нога сброса в программе используется на порт?
esaulenka
Цитата(RA3WUM @ Sep 13 2011, 09:01) *
По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания.

Упс, забыл написать, что вместо того, чтобы по-человечески сделать disconnect, я просто щелкнул кнопкой питания.

Вот между этими строками я выключал питание и паял соплю между резетом и землёй:

Код
WARNING: Supply voltage too low, disconnecting target!
Disconnecting ...
- Disconnected
Connecting ...
Andrei0686
Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с AVR под компиляторо IAR все работало, попробывал под LPC1114 контроллер уходит в аварийное прерывание как под iar так и под KEIL-ом.
Суть следующая:
пусть у нас есть массив с данными типа unsigned char mas[10]{0,1,2,3,4,5,6,7,8,9};
и есть переменная unsigned short LenData=0x0302;
Мне необходимо 2 и 3 байт массива сравнить с переменной LenData,
под AVR я делал так
if (LenData == *(unsigned short*)&mas[2])
{} и все работало, а как только я подставил данную конструкцию под LPC1114 То он сразу ушел в прерывание по сбою работы программы.
Причем при использовании эмулятора от KEIL все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так?
toweroff
Цитата(Andrei0686 @ Sep 21 2011, 20:43) *
Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с AVR под компиляторо IAR все работало, попробывал под LPC1114 контроллер уходит в аварийное прерывание как под iar так и под KEIL-ом.
Суть следующая:
пусть у нас есть массив с данными типа unsigned char mas[10]{0,1,2,3,4,5,6,7,8,9};
и есть переменная unsigned short LenData=0x0302;
Мне необходимо 2 и 3 байт массива сравнить с переменной LenData,
под AVR я делал так
if (LenData == *(unsigned short*)&mas[2])
{} и все работало, а как только я подставил данную конструкцию под LPC1114 То он сразу ушел в прерывание по сбою работы программы.
Причем при использовании эмулятора от KEIL все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так?

уверены, что в правильную ветку запостили?
Andrei0686
ну я тока начинаю работать с ARM 7. LPC1114 это ARM 7 32 -bit . и мне нужна помощь.
поэтому я и выбрал "В помощь начинающему > ARM, 32bit"

Цитата(Andrei0686 @ Sep 22 2011, 06:29) *
ну я тока начинаю работать с ARM 7. LPC1114 это ARM 7 32 -bit . и мне нужна помощь.
поэтому я и выбрал "В помощь начинающему > ARM, 32bit"

пардон! че то ступил!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.