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

Проблему с отваливающимся JTAG А и Б решал с помощью переключения на внешнию флеш. Стирается и записывается без проблем.

Если на плате не выведены другие интерфейсы и нет возможности менять вариант загрузки применяю на стадии отладки перед инициализацией портов пустой

цикл секунды на две. Когда по недосмотру в программе валим JTAG, можно будет успеть стереть чип.

 

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


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

Проверено на LDM-K1986BE92QI.

Спасибо за подсказку. Купил эту плату, действительно шьется по UART :)

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


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

Проверено на LDM-K1986BE92QI.

Кстати про уарт забыли как только поняли причину отваливания JTAG (писал об этом выше).

У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают.

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


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

У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают.

 

По видимому Вы после прошивки по UART не перевели МК в режим работы с Flesh (M0/M1/M2 = 0/0/0).

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


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

Рассматриваем переход на К1986ВЕ92QI с STM32L151.

Хотелось бы услышать комментарии бывалых с этим процом

1. Защита флеш от чтения так и не появилась?

2. Чем принято программировать при массовом производстве? Вижу что есть встроенный UART загрузчик. А через SWD средствами JFlash, например, можно?

3. Нет ли проблем для использования собственного загрузчика с возможностью обновления основной программы через UART? Сейчас у меня было сделано так на STM:

В основной программе через UART приходит команда на перезагрузку, в RTC_BACKUP регистр пишу мэджик байт и перезагружаю проц. Попадаю в бут, он в свою очередь видит мэджик байт и не переходит в основную программу. Обновляем основную программу и снова на перезагрузку. Это будет работать в К1986ВЕ92QI?

4. В STM32L151 хранил параметры во встроенной EEPOM. В К1986ВЕ92QI ее нет, что насчет эмуляция EEPROM во флеш?

Насколько понял размер страницы в конце флеш по 4 КБ, вроде проблем нет

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


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

6 часов назад, uriy сказал:

1. Защита флеш от чтения так и не появилась?

Не появилась

6 часов назад, uriy сказал:

2. Чем принято программировать при массовом производстве? Вижу что есть встроенный UART загрузчик. А через SWD средствами JFlash, например, можно?

Можно и через UART, и через JFlash

6 часов назад, uriy сказал:

3. Нет ли проблем для использования собственного загрузчика с возможностью обновления основной программы через UART?

Нет проблем

6 часов назад, uriy сказал:

4. В STM32L151 хранил параметры во встроенной EEPOM. В К1986ВЕ92QI ее нет, что насчет эмуляция EEPROM во флеш?

Эмулировать можно, проблем нет. Особенности программирования флеш-памяти рассмотрены тут.

Ответы почти на все ваши вопросы можно найти здесь.

Изменено пользователем Darth Vader

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


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

6 часов назад, uriy сказал:

Насколько понял размер страницы в конце флеш по 4 КБ, вроде проблем нет

Проблем нет. Cледить, чтобы за данными в EEPROM не было кода.

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


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

21 минуту назад, V_G сказал:

Проблем нет. Cледить, чтобы за данными в EEPROM не было кода.

Проблем нет, есть особенности. Например, стирание страницы за четыре прохода (ЕМНИП).

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


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

8 часов назад, adnega сказал:

Например, стирание страницы за четыре прохода (ЕМНИП)

Не было у меня такого. Использую последнюю страницу флэша в качестве EEPROM практически везде. 

Код, стирающий и пишущий во флэш, должен располагаться в ОЗУ: это вроде общеизвестно. Запретить прерывания на время стирания и записи - тоже общеизвестно.

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


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

Quote

Ответы почти на все ваши вопросы можно найти здесь.

Спасибо за полезные ссылки!

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


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

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 байта - решето какое-то.

1885527723_.thumb.png.234a718b4610059b886148913dca08e7.png

 

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


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

1 час назад, adnega сказал:

Посмотрите по-внимательнее - должно быть

Честно говоря, просто вызывал библиотечную функцию (в Кейле) EEPROM_ErasePage  (Address, EEPROM_Main_Bank_Select) и даже не влезал внутрь. Функция медленная и редко вызываемая. Зачем тут что-то оптимизировать?

Другое дело - что-то оптимизировать в обработках DMA прерываний: я делал это в hal для STM32F410 и добился впечатляющих результатов по быстродействию. А в функции EEPROM чего лезть?

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


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

1 час назад, adnega сказал:

стираются группами по 4 байта - решето какое-то.

 

Скорее "столбцами" в пределах страницы, но в целом  да решето

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


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

1 час назад, V_G сказал:

Честно говоря, просто вызывал библиотечную функцию

А я пользовался на уровне регистров. После STM32 многое было удивительно, но в целом все заставил работать.

Я не считаю, что они как-то с STM32 похожи, хотя, на уровне библиотек - может быть.

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


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

15 часов назад, V_G сказал:

Использую последнюю страницу флэша в качестве EEPROM практически везде. 

Так вроде у флеша небольшое кол-во перезаписей по сравнению с EEPROM, вы это учитываете?

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


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

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

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

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

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

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

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

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

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

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