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