Перейти к содержанию
    

С кортексами дела не имел, закладываю в схему 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мм пучком проводов, чего не хотелось бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос - пока я держу RESET зажатым, я смогу достучаться до камня по SWD и стереть неправильную программу (CRP не стоит, само собой)? Или же ~RESET блокирует SWD и камень в помойку?

Судя по разным обсуждениям на форумах и некоторым данным из даташитов, SWD не будет работать в состоянии сброса. Но это так, ИМХО.

LPC1114 у меня есть, но работать через SWD нечем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм. Разве нельзя сделать эмуляцию ISP? При выходе из ресет проверять ножку, и в случае подключения программатора делать паузу перед запуском основной программы, скажем, секунд пять.
Можно. Но во время отладки этого кода можно запросто "убить" камень.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала, во время отладки, можно первой строкой в main() ставить цикл на 2-5 сек.
Да, пожалуй так и сделаю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Сергей,

А вы прошивать через UART пробовали? Я несколько раз прочел в документацию и так не понял - проц сам переходит в режим программирования по UART или для этого что то надо сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проц сам переходит в режим программирования по UART или для этого что то надо сделать?
Существует три входа в заводской загрузчик (ISP):

1) В проце нет пользовательской программы. В этом случае после сброса безусловно запускается загрузчик.

2) Во время сброса нога P0.1 прижата к земле

3) Из пользовательской программы осуществлен переход на точку входа в процедуру ISP.

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей, если интересно.

Проверял на 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверял на LPC1111.

Первая попытка - нога rst выведена на разъем отладки. Вторая попытка - добавил перемычку на землю.

...

WARNING: Supply voltage too low, disconnecting target!

По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания.

У меня плата на LPC1114, все сигналы для SWD идут напрямую без подтяжек. В том числе reset.

МК стабильно шьётся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

МК стабильно шьётся.
Даже когда нога сброса в программе используется на порт?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По-видимому сигнал Vref не выведен на разъём отладки или по каким-то ещё причинам отладчик не может измерить напряжение питания.

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

 

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

 

WARNING: Supply voltage too low, disconnecting target!
Disconnecting ...
- Disconnected
Connecting ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с 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 все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем! Столкнулся с небольшой проблемой использовал такие же конструкции с 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 все работает как надо но в реальном микроконтроллере не работает. Подскажите что я делаю не так?

уверены, что в правильную ветку запостили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...