scifi 1 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба Зачем там i+=8 ? Ну i+=4 я бы еще как то понял, т.к. запись далее идет по 32 бита. Но сектор же стирается целиком ? Зачем вызывать процедуру стирания sectorlen/8 раз ? Вы, похоже, не читали код и комментарии в нём. Там сказано, что эта функция стирает все секторы. То есть цикл перебирает эти секторы. Если посмотрите, что такое FLASH_Sector_0, FLASH_Sector_1 и т.д., то увидите, что это арифметическая прогрессия с разностью 8. Так что всё сходится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grv 0 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба Вы, похоже, не читали код и комментарии в нём. Там сказано, что эта функция стирает все секторы. То есть цикл перебирает эти секторы. Если посмотрите, что такое FLASH_Sector_0, FLASH_Sector_1 и т.д., то увидите, что это арифметическая прогрессия с разностью 8. Так что всё сходится. Пардон, вопрос снят, попутал FLASH_Sector_1 с #define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbyte */ #define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbyte */ #define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbyte */ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Karloson 0 14 июля, 2021 Опубликовано 14 июля, 2021 · Жалоба stm32G431. Печать развели так, что проц. всегда грузится в System memory (0x1FFF 0000) вместо флеш (0x0800 0000), т.к. BOOT0 (PB8) подвешен к питанию.. Решил изменить FLASH option bytes, чтоб не читал ногу PB8 при включение так (nSWBOOT0=0): const char OffBoot0[] __attribute__((at(0x1FFF7800))) = { 0xAA, 0xF8, 0xEF, 0xFB, 0x55, 0x07, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0x00, 0x3F, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0x00, 0x3F, 0x00, 0x80, 0xFF, 0xFE, 0xFF, 0x7F, 0x00, 0x10, 0x00 }; .hex файл заливается без ошибок (проверка проходит), но стоит перегрузить проц. все биты восстанавливаются.:( Есть идее как заставить грузиться на 0x0800 0000? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 июля, 2021 Опубликовано 14 июля, 2021 · Жалоба 1 час назад, Karloson сказал: Есть идее как заставить грузиться на 0x0800 0000? Подвесить BOOT туда, куда надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 14 июля, 2021 Опубликовано 14 июля, 2021 · Жалоба ИМХО, фигня какая-то в коде написана. Либо Flash Algorithm должен знать, как работать с областью Option Bytes. P.S. Программатором тупо в ST-Link Utility галочки нужные можно попробовать расставить, тыкнув на Option Bytes... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 17 июля, 2021 Опубликовано 17 июля, 2021 · Жалоба Согласно этой таблице нужно, чтобы кроме nSWBOOT0=0, еще и был nBOOT0=1. А еще радикально проблему решает BOOT_LOCK=1. Сейчас проверил на демоплатке G474. Переставил перемычку BOOT в режим системного загрузчика и поигрался с битами через ST-Link Utility. Оба способа работают - платка грузится с 0x08000000. Что касается вашего способа задания битов. Вы комплиментарные биты не забыли установить? Может поэтому не работает... On 7/14/2021 at 4:50 PM, ViKo said: Подвесить BOOT туда, куда надо. В этой серии эту ногу можно использовать для своих целей как PB8. Для этого нужны манипуляции с Option Bytes. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Karloson 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Мужики, спасибо за ответы! Эти варианты рассматривал как очевидные, но задача немного в другом: передать/переслать прошивку монтажникам на месте, у них из инструмента только J_Link, шить умеют, но что-то сложнее это уже напряг. Поэтому пытаюсь создать прошивку с областью Option Bytes (на крайняк два *.hex). Считал банк OPT 0x1FFF7800-0x1FFF 7830, заменил нужные биты (см.картинку) и зашил обратно, но биты... В общем вопрос как правильно шить область Flash OPT имея только хекс-файл? On 7/17/2021 at 11:04 AM, MDD said: А еще радикально проблему решает BOOT_LOCK=1. За BOOT_LOCK спасибо за наводку! On 7/17/2021 at 11:04 AM, MDD said: ... Вы комплиментарные биты не забыли установить? Может поэтому не работает... Обижаете ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 120 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 41 минуту назад, Karloson сказал: но задача немного в другом: передать/переслать прошивку монтажникам на месте, у них из инструмента только J_Link, шить умеют, но что-то сложнее это уже напряг. Поэтому пытаюсь создать прошивку с областью Option Bytes (на крайняк два *.hex). Эта область программируется по совершенно другому алгоритму, поэтому навряд ли их получится запрограммировать просто разместив в нужном месте константы. Вашим монтажникам обязательно нужна родная оболочка от J-Link с галочками, рюшечками и кружевными трусиками? openOCD позволяет с командной строки за один запуск и залить файл и запрограммировать option bytes в нужные значения. Командную строку ему можно написать в файле .bat/.cmd/.sh, который можно передавать монтажникам вместе с образом прошивки - от них потребуется только запустить этот файл. Может и оболочка J-Link так умеет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Для серийной прошивки своих плат с контроллерами более старых семейств STM32 использую ST-Link Utility в режиме командной строки. Там нужные Opion Bytes тоже задаются в командной строке. Т.е. запустил bat файл и всё нужное в контроллер прошилось. Сейчас на смену ST-Link Utility пришел Cube Programmer. Посмотрел на него мануал, он тоже умеет работать в режиме командной строки. Но эти программы вроде не умеют работать через J-Link, только через ST-Link. Может будет проще снабдить монтажников китайским ST-Link, чем с J-Link разбираться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 120 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 45 минут назад, MDD сказал: Но эти программы вроде не умеют работать через J-Link, только через ST-Link openOCD умеет, если вдруг родная от jlink не умеет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Karloson 0 20 июля, 2021 Опубликовано 20 июля, 2021 (изменено) · Жалоба 1 hour ago, Сергей Борщ said: openOCD умеет, если вдруг родная от jlink не умеет J-Link умеет. Придется писать командный файл. Всем спасибо! Изменено 20 июля, 2021 пользователем Karloson Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 1 hour ago, Сергей Борщ said: openOCD умеет, если вдруг родная от jlink не умеет А он уже умеет шить семейство G4? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 120 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 6 минут назад, MDD сказал: А он уже умеет шить семейство G4? -Умеете ли вы играть на рояле? - Не знаю, не пробовал В комплекте у него есть файлы stm32g0x.cfg и stm32g4x.cfg, насколько они рабочие - не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться