В первую очередь микросхема 1986ВЕ8Т выделяется из всей линейки наличием вместо Flash памяти – однократно программируемой памяти (OTP). Чтобы запрограммировать данную память, необходимо выполнить определенную последовательность действий. По информации, полученной от службы технической поддержки, последовательность программирования OTP следующая:
Прошивка происходит в 3 этапа и для каждого необходим свой алгоритм FLM:
(Алгоритмы FLM можно запросить через support@milandr.ru.)
Для использования данных файлов необходимо обеспечить тактирование процессора от внешнего генератора HSE0 с частотой 48 МГц. Внутри эта частота делится на 2, что дает 24МГц. Т.е. частоту близкую к максимальной частоте работы ОТР - 25МГц, период 40нс. Это частота на которой необходимо проводить верификацию ОТР, хотя в рабочем режима память на такой частоте работать не будет благодаря задержкам WaitCycle.
На отладочной плате на HSE0 подключен резонатор, его необходимо выпаять, а на расположенное рядом посадочное место припаять генератор на 48МГц. Вид с обратной стороны платы адаптера:
Для того чтобы "прожечь" биты требуется дополнительный источник напряжения на 7,2В. На демоплате для этого есть отдельный разъем.
В итоге последовательность действий должна быть такой:
1 - Подача основного питания 3,3В.
2 - Подача напряжения программирования 7,2В.
3 - В Keil выбрать алгоритм 1.flm - нажать Download - "Программирование"
4 - В Keil выбрать алгоритм 2.flm - нажать Download - "Допрограммирование"
5 - В Keil выбрать алгоритм 3.flm - нажать Download - "Верификация".
В настройках программатора FlashDownload, там, где выбирается алгоритм flm, необходимо выставить "Do not Erase" для всех flm. При запуске 1.flm и 2.flm должна быть выставлена опция Programm. При запуске 3.flm (этап верификации) ее стоять не должно.
6 - Если верификация не прошла успешно, то повторить операции "Допрограммирование" и "Верификация" еще один раз. Если после повторного "Допрограммирования" "Верификация" все-равно проходит не успешно, то микросхема бракуется.
7 - Снять напряжение 7,2В.
8 - Снять основное напряжение.
Рекомендации, полученные от тех. поддержки:
Для того чтобы не "убить" сразу весь кристалл, отработать прошивку или версию ПО рекомендуется записывать в старшие адреса OTP памяти. Например, выбрать небольшой диапазон и осуществить туда прошивку. Запуск прошивки с такого адреса возможен через отладчик, для которого необходимо подключить setup.ini файл. Данная операция описана в мануале для запуска программы из ОЗУ, здесь подход аналогичный. Адрес памяти необходимо выбирать с учетом требований к значениям VTOR - указателю начала таблицы векторов.
Когда тестовая прошивка пройдет успешно, можно зашить финальный релиз программы в стартовые адреса, по которым программа запускается при ресете.
Кроме прошивки с помощью flm, на форуме представлен вариант прошивки через UART от одного из пользователей. У него есть интересное решение с возможностью отработки нескольких прошивок - архив PRG_OTP_UART.rar.
- Можно ли вторично прожигать уже прожженые 1-цы при повторном программировании?
Нет, разработчик ОТР памяти делать так не рекомендует.
- При вторичном программировании, но без подачи HV, при 5-кратном считывании проскакивают ошибки. Нормально ли это?
Высокое напряжение необходимо только при программировании. Наличие этого напряжения при считывании никакого влияния не оказывает. Жесткие реплики - это в своем роде стойкость (сопротивление) ячейки памяти к считыванию. На этапе программирования используются наиболее жествие реплики, чтобы убедиться что ячейка "прожжена" и читается правильно. При верификации используются менее жесткие реплики. В реальной эксплуатации используются наиболее мягкие реплики.
Верификация при более жестких репликах гарантирует, что в эксплуатации чтение будет успешно при различных внешних факторах, таких как температура и прочее. На этапе верификации возникновение ошибок при чтении недопустимо. На этапе программирования при чтении могут проскакивать ошибки, поскольку реплики доступа к памяти максимально жесткие.