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

LPC2368+ISP

Все началось с того, что где-то с неделю назад пришел прототип устройства, в котором решил применить LPC2368. Пару дней настраивал блок питания, потом решил взяться за контроллер.

Для начала решил использовать проверенное решение - простецкий преобразователь RS-232 <> UART на основе 74ACT14 - такой делал для BSL в MSP430. Решил сразу делать с гальваноразвязкой, ибо потенциал в устройстве может быть большой.

Оказалось, что больше 2 мА так просто из RS-232 не получить (а я-то надеялся). На ACT14 хватает - на ADUM нет. Пришлось подключать внешнее питание, и все заработало. Впрочем как-то не слишком здорово. Прошить на скорости больше 19200 не удавалось. К тому же в процессе игр сжег в LPC вход RESET. :)

В итоге мне надоело играться в игры и я пошел другим путем. По совету коллеги поставил FT232R, пару тех же ADUM. Сделал за день платку - запустилось с первого раза. Что имеем: гальванически развязанный ISP для LPC с управлением RESET и ISP (P2.10). Прошивает устойчиво на скорости 230400 (при условии хорошего USB кабеля).

Схему, PCB и перечень прилагаю - вдруг кому-нибудь пригодится. Распиновку ISP header взял отсюда, показалось разумным.

Хочу выразить большую благодарность Zltigo за его лоадер - удобная и мощная программа. Сразу фичреквест - было бы неплохо сделать отпускание ISP как во Flash Magic. То есть ISP(P2.10 или P0.14) устанавливается в 0, затем RESET. Я отлаживал обмен с помощью detect, слегка неудобно сбрасывать питание каждый раз (а может я к тому времени уже сжег RESET :) ). Кстати, Flash Magic еще позволяет удерживать RTS (ISP) во время всего цикла программирования, полезно если устройство питается от RS232 (как я в начале планировал). Хотя это все не важно - и так отлично работает.

Замечу, что окрытый сток/коллектор как в Aeolus использовать не стал. На EINT0# у меня ничего больше нет, а RESET мне удобнее иметь КМОП чтоб задавить внешнюю ресетницу на LPC. Ресетница - это такая плохая привычка со времен MSP430F149 :twak:

post-21999-1188324436_thumb.jpg

post-21999-1188324446_thumb.jpg

ARMISP.RAR

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


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

То есть ISP(P2.10 или P0.14) устанавливается в 0, затем RESET.

Или я чего-то не понимаю, или так оно и работает.

Дополнительно есть еще режим ( -main ), когда "ISP" опускается уже после сброса и пролета мимо загрузчика, он используется у меня для входа своеобразный отладочный режим, когда устройство инициализируется и запускает задачи по минимуму.

Собственно я работу со штатным загрузчиком использую обычно только один раз :), для зашивания собственного загрузчика. Дальше уже работаю с ним и без использования RTS и DTR для входа в загрузчик - все с консоли. Аварийный вход в свой загрузчик - по перемычке на JTAG, а уж из своего загрузчика можно и штатный запустить.

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


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

Хочу выразить большую благодарность Zltigo за его лоадер - удобная и мощная программа.

Хм, кажется что-то пропустил... Поискал по форуму - не нашел.

Этот лоадер выкладывался для всех или это коммерческий продукт? Если нет - можно ссылку или на почту? :)

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


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

Этот лоадер выкладывался для всех или это коммерческий продукт? Если нет - можно ссылку или на почту? :)

Для всех, только без исходников - там уже много "лишнего" :)

Выкладывался хаотично в разных ветках 'по случаю'. Можно поискать по AT200. Свежие буду выкладывать здесь:

http://electronix.ru/forum/index.php?showt...94&hl=at200

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


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

Или я чего-то не понимаю, или так оно и работает.

Я не совсем ясно выразился; в принципе, замечание касается только режима detect, выход из загрузчика после этого не происходит. Завтра попробую найти в мануале на FlashMagic подробное описание. В целом это все ерунда и не важно :)

Если не секрет, расскажите вкратце про свой загрузчик - вы переписываете в памяти загрузчик от NXP? А как вы предотвращаете запуск штатного загрузчика - краем уха слышал что бывают у NXP хмм... ошибки в загрузчике... А еще очень интересно какие функции вы заложили в Вашу отладочную консоль - чувствую, тоже придется писать что-то подобное...

 

P.S. про ключ -main тоже интересное решение, я думал о чем-то подобном... Инструкцию бы чуток подробней :biggrin:

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


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

Я не совсем ясно выразился; в принципе, замечание касается только режима detect, выход из загрузчика после этого не происходит.

Кажется понял - отресетить после получения информации? Кажется действительно не сделано. Посмотрю.

Если не секрет, расскажите вкратце про свой загрузчик.

Грузит AES шифрованные, а если не стоит защита, то и обычные HEX файлы. Командная стока - загрузка/запуск приложений/переход в штатный загрузчик. В нем-же обработчик exceptions c распечаткой ситуации. Если не стоит защита то с памятью и периферией можно покопаться.

А еще очень интересно какие функции вы заложили в Вашу отладочную консоль - чувствую, тоже придется писать что-то подобное...

Ну это уже в приложении и абсолютно подчинено конкретной задаче.

 

 

 

P.S. про ключ -main тоже интересное решение, я думал о чем-то подобном... Инструкцию бы чуток подробней :biggrin:

Все просто. Запускается собственно программа и после минимальной инициализации железа и, естественно, консоли опрашивает в течении некоторого времени состояние DTR, если активировано, то дальнейшая инициализация и запуск задач прекращается.

 

 

 

 

вы переписываете в памяти загрузчик от NXP?

Нет. Свои 8K.

А как вы предотвращаете запуск штатного загрузчика - краем уха слышал что бывают у NXP хмм... ошибки в загрузчике...

Никак. Не вижу смысла. Ну а слухи и байки ходят всегда. Иногда имеют основу, иногда нет. По любому

халявной инстукции 'сделай сам' в свободном доступе не видел. Те дырки о которых ходили слухи - залатаны, обновления загрузчиков переодически появляются. Ну а лучшая защита, это развитие продукта.

 

 

Добавил импульс сброса, после исполнения -detect теперь не остается в загрузчике, если, конечно есть что-то кроме загрузчика :). Еще руки как-то не доходили раньше, сделал повтор ввода командной строки.

Какие еще мелкие пожелания будут?

Может у кого есть ID для отсуствующих чипов?

То, что сейчас знает AT200:

  { 0x0004FF11, 2103,  32,  8,  8, 4096, SectorTable_213x },
  { 0xFFF0FF12, 2104, 128, 16, 15, 8192, SectorTable_210x },
  { 0xFFF0FF22, 2105, 128, 32, 15, 8192, SectorTable_210x },
  { 0xFFF0FF32, 2106, 128, 64, 15, 8192, SectorTable_210x },
  { 0x0101FF12, 2114, 128, 16, 15, 8192, SectorTable_211x },
  { 0x0201FF12, 2119, 128, 16, 15, 8192, SectorTable_211x },
  { 0x0101FF13, 2124, 256, 16, 17, 8192, SectorTable_212x },
  { 0x0201FF13, 2129, 256, 16, 17, 8192, SectorTable_212x },
  { 0x0002FF01, 2131,  32,  8,  8, 4096, SectorTable_213x },
  { 0x0002FF11, 2132,  64, 16,  9, 4096, SectorTable_213x },
  { 0x0002FF12, 2134, 128, 16, 11, 4096, SectorTable_213x },
  { 0x0002FF23, 2136, 256, 32, 15, 4096, SectorTable_213x },
  { 0x0002FF25, 2138, 512, 32, 27, 4096, SectorTable_213x },
  { 0x0402FF01, 2141,  32,  8,  8, 4096, SectorTable_213x },
  { 0x0402FF11, 2142,  64, 16,  9, 4096, SectorTable_213x },
  { 0x0402FF12, 2144, 128, 16, 11, 4096, SectorTable_213x },
  { 0x0402FF23, 2146, 256, 40, 15, 4096, SectorTable_213x },
  { 0x0402FF25, 2148, 512, 40, 27, 4096, SectorTable_213x },
  { 0x0301FF13, 2194, 256, 16, 17, 8192, SectorTable_212x },
  { 0x0301FF12, 2210,   0, 16,  0, 8192, SectorTable_211x },     
  { 0x0401FF12, 2212, 128, 16, 15, 8192, SectorTable_211x },
  { 0x0601FF13, 2214, 256, 16, 17, 8192, SectorTable_212x },
  { 0x0401FF13, 2292, 256, 16, 17, 8192, SectorTable_212x },
  { 0x0501FF13, 2294, 256, 16, 17, 8192, SectorTable_212x },
// V0.23.1 added
  { 0x0603FB02, 2364, 128, 8 , 11, 4096, SectorTable_213x },
  { 0x0603FB23, 2366, 256, 32, 15, 4096, SectorTable_213x },
  { 0x0603FB25, 2368, 512, 32, 27, 4096, SectorTable_213x },
  { 0x0703FF25, 2378, 512, 32, 27, 4096, SectorTable_213x },
  { 0x0503FF35, 2458, 512, 64, 27, 4096, SectorTable_213x },
  { 0x0603FF35, 2468, 512, 64, 27, 4096, SectorTable_213x },

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


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

Zltigo, спасибо за подробный ответ! Ждем новых версий AT200 :)

 

Почитал новый даташит 1.05 для LPC23xxx. Вычитал - добавили строчку:

The VBAT pin must be powered with 3.3 V for the RESET pin to detect external signal

existence and/or activity.

Ну, изобретатели! Опять кто-то напутал :twak:

У меня VBAT поключен к GND - как рекомендовали там же в даташите, и естественно под контроллером :) Может и RESET жив.

If the RTC is used, VBAT must be connected to either pin VDD(3V3) or an independent

power supply (external battery). Otherwise, VBAT should be tied to the ground (VSS).

Я использую внешний PCF8563 как часы/календарь - ест меньше току и есть бит PowerGood...

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


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

Перепаял VBAT, подключил к 3V3 - RESET заработал. Противно.

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


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

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

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

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

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

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

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

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

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

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