zigzag109 0 Posted August 20, 2014 · Report post Проблему с отваливающимся JTAG А и Б решал с помощью переключения на внешнию флеш. Стирается и записывается без проблем. Если на плате не выведены другие интерфейсы и нет возможности менять вариант загрузки применяю на стадии отладки перед инициализацией портов пустой цикл секунды на две. Когда по недосмотру в программе валим JTAG, можно будет успеть стереть чип. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AVR 0 Posted September 4, 2014 · Report post Проверено на LDM-K1986BE92QI. Спасибо за подсказку. Купил эту плату, действительно шьется по UART :) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AVR 0 Posted September 7, 2014 · Report post Проверено на LDM-K1986BE92QI. Кстати про уарт забыли как только поняли причину отваливания JTAG (писал об этом выше). У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rus61 0 Posted September 8, 2014 · Report post У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают. По видимому Вы после прошивки по UART не перевели МК в режим работы с Flesh (M0/M1/M2 = 0/0/0). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
uriy 0 Posted February 21 · Report post Рассматриваем переход на К1986ВЕ92QI с STM32L151. Хотелось бы услышать комментарии бывалых с этим процом 1. Защита флеш от чтения так и не появилась? 2. Чем принято программировать при массовом производстве? Вижу что есть встроенный UART загрузчик. А через SWD средствами JFlash, например, можно? 3. Нет ли проблем для использования собственного загрузчика с возможностью обновления основной программы через UART? Сейчас у меня было сделано так на STM: В основной программе через UART приходит команда на перезагрузку, в RTC_BACKUP регистр пишу мэджик байт и перезагружаю проц. Попадаю в бут, он в свою очередь видит мэджик байт и не переходит в основную программу. Обновляем основную программу и снова на перезагрузку. Это будет работать в К1986ВЕ92QI? 4. В STM32L151 хранил параметры во встроенной EEPOM. В К1986ВЕ92QI ее нет, что насчет эмуляция EEPROM во флеш? Насколько понял размер страницы в конце флеш по 4 КБ, вроде проблем нет Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Darth Vader 0 Posted February 21 (edited) · Report post 6 часов назад, uriy сказал: 1. Защита флеш от чтения так и не появилась? Не появилась 6 часов назад, uriy сказал: 2. Чем принято программировать при массовом производстве? Вижу что есть встроенный UART загрузчик. А через SWD средствами JFlash, например, можно? Можно и через UART, и через JFlash 6 часов назад, uriy сказал: 3. Нет ли проблем для использования собственного загрузчика с возможностью обновления основной программы через UART? Нет проблем 6 часов назад, uriy сказал: 4. В STM32L151 хранил параметры во встроенной EEPOM. В К1986ВЕ92QI ее нет, что насчет эмуляция EEPROM во флеш? Эмулировать можно, проблем нет. Особенности программирования флеш-памяти рассмотрены тут. Ответы почти на все ваши вопросы можно найти здесь. Edited February 21 by Darth Vader Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
V_G 0 Posted February 21 · Report post 6 часов назад, uriy сказал: Насколько понял размер страницы в конце флеш по 4 КБ, вроде проблем нет Проблем нет. Cледить, чтобы за данными в EEPROM не было кода. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
adnega 2 Posted February 21 · Report post 21 минуту назад, V_G сказал: Проблем нет. Cледить, чтобы за данными в EEPROM не было кода. Проблем нет, есть особенности. Например, стирание страницы за четыре прохода (ЕМНИП). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
V_G 0 Posted February 22 · Report post 8 часов назад, adnega сказал: Например, стирание страницы за четыре прохода (ЕМНИП) Не было у меня такого. Использую последнюю страницу флэша в качестве EEPROM практически везде. Код, стирающий и пишущий во флэш, должен располагаться в ОЗУ: это вроде общеизвестно. Запретить прерывания на время стирания и записи - тоже общеизвестно. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
uriy 0 Posted February 22 · Report post Quote Ответы почти на все ваши вопросы можно найти здесь. Спасибо за полезные ссылки! Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
adnega 2 Posted February 22 · Report post 7 часов назад, V_G сказал: Не было у меня такого. Посмотрите по-внимательнее - должно быть: Цитата 9.2.2 Стирание банка памяти одной страницы размером 4 Кбайт Стирание одной страницы выполняется в 4 этапа: 1 этап - стирание Sector_A для одной страницы; 2 этап - стирание Sector_B для одной страницы; 3 этап - стирание Sector_C для одной страницы; 4 этап - стирание Sector_D для одной страницы. Стирание одного сектора страницы памяти возможно только в режиме программирования. Для стирания страницы памяти надо установить необходимое значение в бит IFREN (1 - для информационной памяти и 0 - для основной памяти), затем установить адрес стираемой страницы в регистре EEPROM_ADR[16:12] и номер сектора EEPROM_ADR[3:2] (00 – Sector_A, 01 – Sector_B, 10 – Sector_C и 11 – Sector_D) На картинке видно, что стираются группами по 4 байта - решето какое-то. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
V_G 0 Posted February 22 · Report post 1 час назад, adnega сказал: Посмотрите по-внимательнее - должно быть Честно говоря, просто вызывал библиотечную функцию (в Кейле) EEPROM_ErasePage (Address, EEPROM_Main_Bank_Select) и даже не влезал внутрь. Функция медленная и редко вызываемая. Зачем тут что-то оптимизировать? Другое дело - что-то оптимизировать в обработках DMA прерываний: я делал это в hal для STM32F410 и добился впечатляющих результатов по быстродействию. А в функции EEPROM чего лезть? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Edit2007 0 Posted February 22 · Report post 1 час назад, adnega сказал: стираются группами по 4 байта - решето какое-то. Скорее "столбцами" в пределах страницы, но в целом да решето Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
adnega 2 Posted February 22 · Report post 1 час назад, V_G сказал: Честно говоря, просто вызывал библиотечную функцию А я пользовался на уровне регистров. После STM32 многое было удивительно, но в целом все заставил работать. Я не считаю, что они как-то с STM32 похожи, хотя, на уровне библиотек - может быть. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mantech 1 Posted February 22 · Report post 15 часов назад, V_G сказал: Использую последнюю страницу флэша в качестве EEPROM практически везде. Так вроде у флеша небольшое кол-во перезаписей по сравнению с EEPROM, вы это учитываете? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...