ytgf6785f86rf  
Главная
Продукция
Партнеры
Статьи
О нас

Контакты

Ссылки

Вопросы программирования микроконтроллеров LPC9хх фирмы Philips.



В статье рассмотрены различные способы программирования микроконтроллеров семейства LPC9хх, дается их сравнительный анализ. Представлены фрагменты программ для модификации памяти кодов для нужд прикладных программ. Приведена схема программатора, работающая в ICP и SPI режимах.
За последние годы в связи с использованием Flash-памяти для хранения исполняемых кодов команд стал заметно меняться подход к вопросу программирования микроконтроллеров. Теперь многие вновь разработанные семейства микроконтроллеров имеют в своем составе аппаратные средства для внутрисхемного программирования. Это новое качество представляется особенно важным на этапе разработки прибора, когда отлаживаемая программа прошивается в микроконтроллер десятки раз. Да и на этапе эксплуатации возможность обновления программного обеспечения представляется большим конкурентным преимуществом прибора, спроектированного на базе перепрограммируемого микроконтроллера.
Микроконтроллеры семейства P89LPC9xxфирмы Philips допускают пять различных способов программирования:
1. Внутрисистемное, последовательное программирование через UART порт (ISP).
2. Последовательное внутрисхемное программирование (ICP).
3. Традиционное параллельное программирование.
4. Программирование из пользовательской программы, с помощью встроенного аппаратно-программного загрузчика (IAP).
5. IAP-Lite программирование.
Каждый из этих способов имеет свои субъективные преимущества и недостатки, а максимальное удобство для пользователя принесет комбинированное использование этих способов, сосредоточенных в одном устройстве. Конкретные же обстоятельства продиктуют выбор того или иного способа.
Следует иметь в виду, что каждый конкретный микроконтроллер может поддерживать набор различных способов программирования, поэтому поспешный выбор в пользу какого либо одного из них лишит Вас возможности в дальнейшем пользоваться другими способами программирования. Например, в программаторе TRITON, используется только один способ программирования - ICP. При этом он затирает загрузчик режима ISP, который расположен в верхней области памяти программ микроконтроллера, что делает невозможным применение в дальнейшем ISP способа программирования. А так как микроконтроллер LPC932 не поддерживает ICP способ программирования, то и запрограммировать его на данном программаторе невозможно.
Любой программатор стоит денег, минимум 6000 рублей, в тоже время, предлагаемый нами программно-аппаратный комплекс построен исходя из тезиса минимума материальных затрат, при сохранении максимально возможной функциональности. Данный программно-аппаратный комплекс позволяет последовательно реализовать все возможные способы программирования, используя бесплатную, свободно распространяемую программу Flash Magic.
Далее по шагам начинаем рассматривать реализацию, указанных выше способов программирования.
Первый шаг.
Рассматриваем ISP способ программирования.
Для того чтобы микроконтроллер начал работать, в него необходимо записать какую либо программу. Для этого, во все микроконтроллеры, начиная с LPC920, фирмой изготовителем в верхние 512 байт памяти кодов помещена программа загрузчика.
Теперь, для организации записи в микроконтроллер пользовательской программы необходимо организовать его связь по RS232 порту с персональным компьютером. Для этого, рассмотрим алгоритм программирования описанный в AN10221.
Возможны три различных пути для входа в режим ISP:
1. По анализу состояния статус бита и загрузочного вектора.
2. Передачей по последовательному порту символа сброса.
3. Подачей трех импульсов на вывод Reset после подачи напряжения питания.
Алгоритм реализации возможных путей входа в режим ISP показан на рис.1.



Рис. 1


Программа Flash Magic поддерживает аппаратный вход в режим ISP (пункт 3). Вход в этот режим осуществляется независимо от пользовательской программы и состояния статус бита. Переход осуществляется по содержимому загрузочного вектора (Boot Vector), для микроконтроллера с объемом памяти программ 2кБ он равен 0600H, 4кБ – 0E00H, 8кБ – 1E00H. Как указано выше переход в ISP режим осуществляется подачей трех положительных импульсов на вывод Reset микроконтроллера после подачи напряжения питания.
Исходя из выше сказанного, схема программатора, использующего ISP способ, может быть следующей рис. 2.



Рис. 2
В схеме в качестве разъема X1 используется стандартный соединитель DB9F, соединители X2 и X3 могут быть любыми.
Пока это лишь часть схемы программатора, однако, она вполне автономна и полностью выполняет функцию программирования всех микроконтроллеров LPC9хх семейства ISP методом, начиная с LPC920. Функции отдельных элементов схемы следующие. Микросхема ST3232 обеспечивает формирование уровней сигнала по RS232. Транзистор предназначен для обеспечения необходимой мощности (тока) на линии Vdd (питание программируемой микросхемы). Резистивные делители на входах микросхемы 74HC02 предназначены для согласования уровней сигналов в линиях RS232 с допустимыми входными сигналами микросхемы D2. Данная микросхема обеспечивает формирование стартовых сигналов для входа в ISP режим программирования (формирования трех импульсов по входу RESET).
Несколько слов о программной поддержке. Авторы рекомендуют воспользоваться фирменным программным обеспечением. Речь идет о программе Flash Magic (свободно распространяемой), которая доступна на сайте www.esacademy.com/software.
Остановимся здесь лишь на некоторых функциях этой программы. Заставка программы показана на рис. 3.



Рис. 3


Большими цифрами 1…5 показана последовательность шагов, которые необходимо выполнить для программирования микроконтроллера.
Остановимся на каждой из секций 1…5 основного окна программы.
Первая секция посвящена настройке-согласованию режимов работы компьютера и программируемого микроконтроллера. С помощью стрелок, расположенных с правой стороны окошек, выбираются:
1. Порт компьютера, к которому подключен программатор микроконтроллера с помощью модемного кабеля. В нашем случае COM1.
2. Скорость передачи последовательного порта в нашем случае 7200 бит/с. При использовании ISP способа программирования, скорость может быть задана любой, т.к. встроенный ISP загрузчик синхронизирует (а, вернее, подстраивает) частоту приема-передачи микроконтроллера с частотой компьютера. Так как эта операция выполняется с некоторой погрешностью, рекомендуется частоту передачи устанавливать не выше 9600 бит/с. Небольшая модификация этой программы, выполненная авторами, позволила устойчиво работать на частотах до 38400 бит/с. Если используется IСP способ программирования, то необходимо выбрать скорость 9600 бит/с, т.к. ISP-ICP мост в штатном режиме работает с заданной, фиксированной скоростью.
3. Выбор программируемого микроконтроллера. Здесь перечислены все микроконтроллеры семейства P89LPC9xx, поддерживаемые данной версией Flash Magic.
4. В этой строке предлагается установить частоту генератора микроконтроллера.
Во второй секции надо установить один из способов стирания Flash памяти программы. Возможны 3 варианта: стирается вся память; стирается только область, необходимая для записи нового HEX-файла; стираются указанные блоки.
В третьей секции предлагается выбрать HEX-файл, который будет прошит в микроконтроллер. Можно воспользоваться кнопкой Browse или вручную указать путь.
Секция четыре посвящена установке секретных битов. К тому моменту, когда уважаемым читателям потребуется воспользоваться предлагаемым здесь сервисом, мы думаем, они уже смогут разобраться в этом без нашей помощи. Сейчас лишь укажем, что следует проследить, чтобы ни в одном из окошек данной секции не стояло галочек.
Пятая секция состоит из одной единственной кнопки начала программирования, этапы которого индицируются в самой нижней строке основного окна Flash Magic.
В левом верхнем углу указаны четыре группы меню. Основной интерес для нас представляют две из них: ISP и Options.
В меню Options необходимо зайти только один раз после установки Flash Magic на Вашем компьютере. Выбирается подменю Advanced Options и далее:
1. В пункте Hardware Config устанавливается галочка в окошке Use DTR and RTS to enter ISP mode , а в окошке Hardware выбирается Keil MCB900.
2. В пункте Security устанавливаем галочку рядом со строчкой Protect ISP Code.
Меню ISP будет использоваться часто.
1. Для того чтобы убедиться в наличии связи с программируемым микроконтроллером можно использовать подменю Read Device Signature (чтение сигнатуры устройства). Таблицу сигнатур можно найти в приложении AN10258 на стр16, сам документ расположен на сайте Philips Semiconductors.
2. На рис. 4 показано подменю Cyclic Redundancy Check (вычисление контрольной суммы), использование которого позволяет вычислять поблочные контрольные суммы, прошитой в микроконтроллер информации и контрольную сумму прожигаемого HEX-файла. Естественно они должны совпадать. Вычисление контрольной суммы HEX-файла будет произведено после нажатия на кнопку Calculate CRC.



Рис. 4


В заключение этого краткого описания Flash Magic хотим предостеречь пользователей относительно кнопки Erase all Flash в секции 2 (в фирменном руководстве по PAB90x V1.1 её рекомендуют включать). Так как ISP загрузчик расположен в верхних 512 байтах Flash памяти микроконтроллера, то он будет уничтожен во время первой же прошивки, если эта кнопка окажется включенной.
Второй шаг.
Для реализации ICP способа программирования потребуются дополнительные программные и аппаратные средства. К программным средствам относится программа мост (Bridge), транслирующая коды, поступающие из программы Flash Magic через последовательный порт RS232, в программируемый микроконтроллер. К аппаратным относится дополнительный микроконтроллер (в нашем случае LPC921) с прошитой в него программой Bridge. И схема ключа, обеспечивающая переход в режим ICP программируемого микроконтроллера. В качестве программы моста авторы предлагают воспользоваться фирменной программой Bridge, доступной на сайте  www.esacademy.com. Если применять эту программу без изменений, то необходимо использовать микроконтроллер LPC932 с 28 ножками, так как в качестве управляющего используется вывод порта Р2.3. Однако и здесь можно сэкономить без ущерба для качества, если применить микроконтроллер LPC921. При этом потребуется изменение кода программы Bridge. Модифицированная программа Bridge_ISP_ICP (hex-файл) доступна на сайте. Управляющим теперь будет вывод P1.7.
Полная схема программатора для ISP программирования приведена на рис. 5.



Рис. 5


На рис. 6 показан режим ICP программирования.


Рис. 6

 


После проверки правильности монтажа, последовательность действий по подготовке программатора к работе будет следующей:
1. Записать программу Bridge_ISP_ICP в микроконтроллер LPC921 (рис. 5).
1.1 Запустить программу Flash Magic.
1.2 Убедиться в наличии связи, прочитав сигнатуру для LPC921 – 15h DD 0Bh.
1.3 Записать hex файл программы Bridge_ISP_ICP в микроконтроллер LPC921.
1.4 Считать контрольную сумму, записанную в микроконтроллер, и сравнить ее с контрольной суммой исходной программы.
Итак, как показано на рис. 5 и 6, в зависимости от положения переключателя SB1, предложенный программатор может работать в режиме ISP или ICP.
Остановимся на отличиях этих режимов с точки зрения пользователя. Для микроконтроллеров LPC901…908 выбор режима программирования отсутствует. Эти микроконтроллеры программируются только ICP способом. Для остальных микроконтроллеров этого семейства возможен выбор. Главным фактором здесь выступает предполагаемая схемная реализация проектируемого устройства, наличие возможности программирования (перепрограммирования) микроконтроллера. Для уверенного программирования необходим автономный доступ к выводам P0.4, P0.5, P1.5 (RESET), Vdd в случае ICP режима и к выводам P1.0 (TxD), P1.1 (RxD), P1.5 (RESET) и Vdd в случае ISP режима. Где удобно ввести необходимые переключатели разработчик будет решать по-разному в каждом конкретном случае. Надо отметить при использовании ISP способа программируемый микроконтроллер синхронизирует частоту передачи и приема с RS232 (в загрузчике имеется соответствующая подпрограмма) и благодаря этому (отмечено авторами) программирование менее подвержено воздействию внешних факторов в виде помех (сеть, сотовые телефоны и так далее).
Замечания по конструктивному оформлению программатора. Для минимизации воздействия помех на работу программатора его желательно экранировать. Идеальным представляется поместить схему программатора в контейнер из луженой жести и заземлить его. Подключение заземления показано в виде пунктирной линии.
Третий шаг.
Для реализации параллельного программирования потребуются дополнительные программные и аппаратные средства. Программа Bridge_ISP_PP, разработанная авторами, совместно с описанной выше программой Flash Magic, позволяет осуществить данный режим программирования. К аппаратным относится дополнительный микроконтроллер (в нашем случае LPC935) с прошитой в него программой Bridge_ISP_PP. Изложение этого материала выходит за рамки данной статьи.
Четвертый и пятый шаг.
Два последних способа программирования IAP и IAP-Lite, требуют лишь написания программ для микроконтроллера. Их основное назначение – работа с памятью программ, возможность стирания и записи кодов программы. Способ программирования IAP-Lite подробно описано в статье авторов «LPC семейство «маленьких» микроконтроллеров фирмы Philips». Способ программирования IAP имеет ряд дополнительных, функциональных возможностей относительно IAP-Lite.


Авторы:
Андрей Сошкин
Андрей Мамонтов