|
stm32 NVIC: сброс маскировки прерываний внутри обработчика |
|
|
|
 |
Ответов
|
Jul 14 2017, 15:37
|
Administrator
  
Группа: Свой
Сообщений: 400
Регистрация: 10-05-04
Пользователь №: 1

|
Цитата(AVI-crak @ Jul 14 2017, 02:05)  Править уровни прерываний и их очереди в теле пользовательских прерываний - это есть громадный костыль, означающий что программист накосячил в нескольких местах и не смог исправить. Никто уровни и очереди не правит. Еще раз - задача выполнить reset, но не всего и сразу, а выборочный. Включая сброс NVIC. Чтобы часть периферии и данных в RAM остались нетронутыми. Цитата Чтобы не ресетить девайс - нужно изначально закладывать архитектуру здоровой OS Вы эту ОС будете переустанавливать/обновлять без ресета? Действия при аварии электропитания тоже предполагаются без ресета?
|
|
|
|
|
Jul 24 2017, 09:50
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (jeka @ Jul 14 2017, 18:37)  Чтобы часть периферии и данных в RAM остались нетронутыми. Дык не трогайте данные в RAM - они и останутся нетронутыми. Ресет содержимое SRAM не затрагивает. Для пущей безопасности нужный кусок SRAM защитите CRC или еще каким образом.
|
|
|
|
|
Jul 25 2017, 12:30
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(jcxz @ Jul 25 2017, 15:02)  Да ладно?!! Они умудрились написать код чисто на регистрах и без использования стека??? Прямо чудеса чудесатые какие-то рассказываете.....  Вы ничего не путаете?  В STM32 есть два спец пина BOOT0 и BOOT1, оменно они определяют кто будет запускаться при старте проца: user-код (User Flash memory), boot-загручик (System memory), ОЗУ или еще что-то (например, в "толстых" камнях). Опрос этих пинов производится ядром (или узлом, который отвечает за выбор области загрузки) в течение нескольких тактов после сброса. Но даже в случае безусловного использования бут-загручика можно выяснить области ОЗУ, которые он использует. А используют они совсем небольшую часть ОЗУ. Это не секретная информация  Все есть в соотв. мануалах )) Еще раз: BOOT-загрузчик в STM32 НЕ стартует безусловно. Более того, в тотально залоченном состоянии бут вообще невозможно запустить (разве что прочитать его версию): When readout protection Level2 is activated, STM32 does not boot on system memory in any case and Bootloader can't be executed (unless jumping to it from Flash user code, all commands are not accessible except Get, GetID, and GetVersion).Может, вы путаете STM32 с другими камнями (которые без своей FLASH), где BOOT стартует ВСЕГДА после сброса?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jul 25 2017, 13:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(jcxz @ Jul 25 2017, 16:25)  boot / не-boot - вопрос не в том, Вопрос был как раз именно "в том": Цитата(jcxz) Да ладно?!! Они умудрились написать код чисто на регистрах и без использования стека??? Прямо чудеса чудесатые какие-то рассказываете..... Чудес не бывает, но бывает недостаточно внимательное чтение мануалов Цитата ...а в том - какая ОЗУ портится при старте. Дык, если сам user-код гадит под себя портит ОЗУ, то все вопросы к этому самому коду! Но это РЕШАЕМО (способов несколько).
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jul 25 2017, 13:33
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Forger @ Jul 25 2017, 16:29)  Дык, если сам user-код гадит под себя портит ОЗУ, то все вопросы к этому самому коду! Вопрос не про пользовательский код. А именно про boot-ROM. И в каких случаях и где он портит. Цитата(Forger @ Jul 25 2017, 16:31)  Вы не со мной спорите, а с мануалом от ST. Имхо, это бессмысленно  Я не спорю с мануалом. Выдержку из него я привёл выше. В которой указывается, что "8 Kbyte starting from address 0x20000000 are used by the bootloader firmware". Как там написано, так и читаю. К тому же там сказано про бутлоадер версии v7, а какой у меня - не знаю.
|
|
|
|
|
Aug 3 2017, 09:28
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (jcxz @ Jul 25 2017, 16:33)  Вопрос не про пользовательский код. А именно про boot-ROM. И в каких случаях и где он портит. Предположим, что бут-код стартует всегда и выбор режима дальнейшей работы осуществляется программно (тем более что у STM32F042 это именно так). что мешает осуществить эту проверку без стека и переменных? Это же буквально десяток асмовых команд (кстати, латч ножек Boot на 4 такт sysclk какбэ намекает). В общем не буду толочь воду в ступе - на всех виденных мной STM32 содержимое SRAM полностью сохраняется при сбросе, если ножками/фьюзами выбрана загрузка из флеша. QUOTE Т. е. этот тот самый случай, когда бутзагрузчик запускается безусловно не взирая на состояние BOOT0. Но все же одно условие для этого нужно выполнить - флэш должна быть полностью стерта  Достаточно стертого вектора reset
Сообщение отредактировал LightElf - Aug 3 2017, 09:31
|
|
|
|
|
Aug 3 2017, 09:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf @ Aug 3 2017, 12:28)  Предположим, что бут-код стартует всегда и выбор режима дальнейшей работы осуществляется программно (тем более что у STM32F042 это именно так). Предполагать бессмысленно, все факты описаны в даташитах - выбор места старта выбирается неким аппаратным узлом, который НЕ является частью заводского бутзагрузчика. Это по сути простейший автомат состояний, который размещен прямо на кристалле, он совсем крохотный, поэтому встроен в каждый STM, отключить его нельзя (а смысл?). Он лишь, так сказать, "корректирует" вектор сброса перед запуском ядра. Цитата В общем не буду толочь воду в ступе - на всех виденных мной STM32 содержимое SRAM полностью сохраняется при сбросе, если ножками/фьюзами выбрана загрузка из флеша. Именно! Более того, в SRAM судя по всему нет аппаратного сброса, поскольку, судя по даташитам, после подачи питания там "мусор". Цитата Достаточно стертого вектора reset Есть такое, вот тут нашел подтверждение: Цитата Empty check (category 1 devices only) On category 1 devices, an internal empty check flag is implemented to allow easy programming of virgin devices by the bootloader. This flag is used when BOOT0 pin is configured to select Flash program memory as target boot area. When this flag is set, the device is considered as unprogrammed and the system memory (bootloader) is selected as boot area instead of the Flash program memory to allow the application to program the Flash memory. The empty check flag is updated only when the option bytes are loaded: it is set when the content of address 0x8000 0000 is read as 0x0000 0000 and cleared otherwise. As a result, only a power-on reset or setting OBL_LAUNCH bit in FLASH_CR register can clear this flag after programming a virgin device to execute user code after system reset. Но этот флажок реализован не во всех STM32, в "старых" семействах, увы, он не реализован ((
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Aug 3 2017, 14:06
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Forger @ Aug 3 2017, 12:47)  Предполагать бессмысленно, все факты описаны в даташитах - выбор места старта выбирается неким аппаратным узлом, который НЕ является частью заводского бутзагрузчика. Действительно, бессмысленно предполагать. Надо тупо залезть дизасмом в бут и посмотреть
|
|
|
|
|
Aug 3 2017, 16:16
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(LightElf @ Aug 3 2017, 20:06)  Действительно, бессмысленно предполагать. Надо тупо залезть дизасмом в бут и посмотреть  КАК? Каким образом смотреть содержимое ядра и адресного пространства мк в режиме явного срабатывания загрузчика по usart??? Вопрос на миллион баксов!!!
|
|
|
|
|
Aug 5 2017, 13:26
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (jcxz @ Aug 4 2017, 09:59)  Очевидно: подключиться стандартно эмулятором и с помощью него запустить код UART-загрузчика из ROM? Или что имелось в виду? Имелось в виду слить дамп памяти встроенного бутлодера и дизассемблировать его. Дабы подтвердить/опровергнуть предположение о программном характере выбора пути загрузки. Посмотрел бут F030 - обращений к регистру конфигурации не увидел. Указатель стека сразу же указывает в RAM, но вначале достаточно долго RAM не портится - идет куча действий строго на регистрах.
|
|
|
|
|
Aug 5 2017, 16:10
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf @ Aug 5 2017, 16:26)  Дабы подтвердить/опровергнуть предположение о программном характере выбора пути загрузки. Встроенный загрузчик STM (размещен в System Memory) не участвует в принятии решения кто будет работать, т.к. он сам является частью выбора. Он запускается после принятия решения. Я лично в этом убедился, о чем выше написал и привел скриншот.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Aug 8 2017, 17:04
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Forger @ Aug 5 2017, 19:10)  Встроенный загрузчик STM (размещен в System Memory) не участвует в принятии решения кто будет работать, т.к. он сам является частью выбора. Он запускается после принятия решения. Я лично в этом убедился, о чем выше написал и привел скриншот. Знаете что самое смешное? Что вы скорее всего правы, но аргументация ваша никакой критики не выдерживает. Ну что за бред: "не участвует в принятии решения кто будет работать, т.к. он сам является частью выбора"? Какая логическая конструкция запрещает выбирать, в том числе, и из себя? Точка останова на первой команде, расположенной в масочном ПЗУ - тоже ничего особо не доказывает. Совсем не факт, что дебаговый модуль и используемые для отладки пины включены сразу. Микроконтроллеров, у которых пины JTAG настраиваются встроенным загрузчиком, чуть менее чем дофига.
|
|
|
|
|
Aug 8 2017, 17:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf @ Aug 8 2017, 20:04)  Знаете что самое смешное? Что вы скорее всего правы, Не вижу ничего смешного при работе с фактами, которые описаны в даташитах! Цитата но аргументация ваша никакой критики не выдерживает. Коли я прав, но моя аргументация вам не нравиться, так приведите свою, основанную на фактах, а не на домыслах и предположениях. Цитата Точка останова на первой команде, расположенной в масочном ПЗУ - тоже ничего особо не доказывает. Вы себе придумали некую "религию" и пытаетесь в ней убедить остальных. Подобные действия лишь доказывает, что "верующий" сомневается в своей "вере". Цитата Совсем не факт, что дебаговый модуль и используемые для отладки пины включены сразу. Факт - пины JTAG доступны лишь при разлоченном проце (Level 1 или Level 0). В режиме Level 2 отладка навсегда заблокирована, снять блокировку нельзя. Факт - на тотально залоченном проце (Level 2) бут-загрузчик при старте НИКОГДА НЕ запускается, о чем указано в датишите. Факт из даташита (цитирую еще раз): When readout protection Level2 is activated, STM32 does not boot on system memory in any case and Bootloader can't be executed (unless jumping to it from Flash user code, all commands are not accessible except Get, GetID, and GetVersion).Это говорит о том, что узел, определяющий кто может работать а кто нет - вначале ориентируется на Option Bytes и состояние пинов BOOT. Не так уж и сложно сделать железобетонный автомат на логике, который все это делает без всяких микропрограмм и скрытых бут-загручиков. Впрочем, как именно это сделано, нигде не описано. А причины просты - дабы не открыть секретную информацию по тому, как вскрыть залоченный проц. Факт: в даташите указано, что запускается ИЛИ system memory со своим бутзагрузчиком ИЛИ flash memory с вашей прошивкой. ИЛИ/ИЛИ. Никаких других вариантов не указано. Факт: загрузчик из System Memory запускается безусловно только в случае полностью стертого проца и то не в самых старых семействах ST. В всех остальных случаях перед запуском бут-загрузчика производится анализ состояния пинов BOOT и в некоторых STM определенных регистров из Option области. Обратите внимание, я привел факты. Цитата Микроконтроллеров, у которых пины JTAG настраиваются встроенным загрузчиком, чуть менее чем дофига. Мы говорим про конкретное семейство МК - STM32. Предлагаю не отвлекаться. Короче, если найдете хоть какую-то новую информацию по работе узла запуска/загрузки STM, выкладывайте сюда. Со ссылками.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Aug 15 2017, 14:53
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Forger @ Aug 8 2017, 20:48)  Не вижу ничего смешного при работе с фактами, которые описаны в даташитах! Ошибкой является принимать свою трактовку расплывчатых слова из даташита за факты. Ну и вообще, даташиты очень часто многое умалчивают. Например даташит на STM32F101 умалчивает о наличии в на кристалле USB Device контроллера и нескольких лишних десятков килобайт FLASH. QUOTE (Forger @ Aug 8 2017, 20:48)  Коли я прав, но моя аргументация вам не нравиться, так приведите свою, основанную на фактах, а не на домыслах и предположениях. Да, мне не нравится отсутствие логики на техническом форуме. В даташите описано конечное поведение микроконтроллера, а не способ реализации такого поведения. Наличие некой аппаратной схемы, которая там чего-то куда-то переключает в зависимости от состояния ножек и option bytes - это сугубо ваши домыслы, в даташите же ничего на эту тему не сказано. QUOTE (Forger @ Aug 8 2017, 20:48)  Вы себе придумали некую "религию" и пытаетесь в ней убедить остальных. Подобные действия лишь доказывает, что "верующий" сомневается в своей "вере". Религию себе придумали вы и как раз вы и пытаетесь распространять свою веру, причем довольно агрессивно и напористо. Я же, всего-лишь навсего, утверждаю что в даташите вообще нет никакой информации о том, как именно обсуждаемый функционал реализован. QUOTE (Forger @ Aug 8 2017, 20:48)  Факт - пины JTAG доступны лишь при разлоченном проце (Level 1 или Level 0). В режиме Level 2 отладка навсегда заблокирована, снять блокировку нельзя. Факт - на тотально залоченном проце (Level 2) бут-загрузчик при старте НИКОГДА НЕ запускается, о чем указано в датишите. В даташите указано, что к залоченному чипу нельзя достучаться снаружи через интерфейс загрузчика или отладочный порт. Все. Чего там внутри запускается или не запускается - не описано. QUOTE (Forger @ Aug 8 2017, 20:48)  Факт из даташита (цитирую еще раз): When readout protection Level2 is activated, STM32 does not boot on system memory in any case and Bootloader can't be executed (unless jumping to it from Flash user code, all commands are not accessible except Get, GetID, and GetVersion). Это говорит о том, что узел, определяющий кто может работать а кто нет - вначале ориентируется на Option Bytes и состояние пинов BOOT. Это не говорит абсолютно ни о чем. QUOTE (Forger @ Aug 8 2017, 20:48)  Не так уж и сложно сделать железобетонный автомат на логике, который все это делает без всяких микропрограмм и скрытых бут-загручиков. Не сложно, главное верить. QUOTE (Forger @ Aug 8 2017, 20:48)  Факт: в даташите указано, что запускается ИЛИ system memory со своим бутзагрузчиком ИЛИ flash memory с вашей прошивкой. ИЛИ/ИЛИ. Никаких других вариантов не указано. А что, возможен вариант И/И? Ну и зачем производителю расписывать свою внутреннюю кухню, если потребителю от этого не холодно и не жарко? QUOTE (Forger @ Aug 8 2017, 20:48)  Факт: загрузчик из System Memory запускается безусловно только в случае полностью стертого проца и то не в самых старых семействах ST. Неправда, причем в данном случае прямо противоречащая даташиту. Вполне определенно сказано, что проверяется адрес 0x08000000 на равенство 0xFFFFFFFF. QUOTE (Forger @ Aug 8 2017, 20:48)  Обратите внимание, я привел факты. Нет. Вы привели цитаты из даташита и придумали им свои трактовки. QUOTE (Forger @ Aug 8 2017, 20:48)  Короче, если найдете хоть какую-то новую информацию по работе узла запуска/загрузки STM, выкладывайте сюда. Со ссылками. Щаз, штаны подтяну и ломанусь искать опровержения вашим выдумкам.
|
|
|
|
|
Aug 16 2017, 06:50
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf) А что, возможен вариант И/И? В фантастических книжках, конечно, возможен, но в реальности (в т. ч. в даташитах) пока что только ИЛИ  Если вы утверждаете, что загрузчик из System Memory стартует всегда и безусловно, несмотря на то, что в даташитах указано обратное, то объясните эту цитату, которая есть в полном даташите на любой STM: Цитата The boot mode configuration is also re-sampled when exiting from Standby mode. Consequently they must be kept in the required Boot mode configuration in Standby mode. Или вы веруете считаете, что во всех STM существует некий "секретный бут-загрузчик", который нигде не описан и который не имеет никакого отношения к официальному загрузчику из System Memory? Я правильно понял?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Aug 22 2017, 17:54
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Forger @ Aug 16 2017, 09:50)  Если вы утверждаете, что загрузчик из System Memory стартует всегда и безусловно, несмотря на то, что в даташитах указано обратное, И где же там указано "обратное"? QUOTE (Forger @ Aug 16 2017, 09:50)  то объясните эту цитату, которая есть в полном даташите на любой STM: А что именно вызывает затруднения в понимании? При выходе из Standby фактически происходит полная реинициализация процессора (кроме Backup домена). Видимо при этом отрабатывается ровно та же процедура, что и при PowerOn. QUOTE (Forger @ Aug 16 2017, 09:50)  Или вы веруете считаете, что во всех STM существует некий "секретный бут-загрузчик", который нигде не описан и который не имеет никакого отношения к официальному загрузчику из System Memory? Я правильно понял? Конечно вы поняли неправильно, для чего вам потребовались значительные усилия. Повторяю в третий раз: в даташите абсолютно ничего не сказано про то, как именно реализован выбор варианта загрузки, описан только результат. Ваша святая вера в "секретную схему" ни на чем не основана. На закуску читаем RM0090: QUOTE To select boot from Flash memory bank 2, set the BFB2 bit in the user option bytes. When this bit is set and the boot pins are in the boot from main Flash memory configuration, the device boots from system memory, and the boot loader jumps to execute the user application programmed in Flash memory bank 2.
|
|
|
|
|
Aug 22 2017, 18:22
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf @ Aug 22 2017, 20:54)  И где же там указано "обратное"? Мля, да в любом полном даташите на ЛЮБОЙ STM32 в соотв. табличке указаны варианты исключительно ИЛИ:
Цитата в даташите абсолютно ничего не сказано про то, как именно реализован выбор варианта загрузки, описан только результат. Я лично убедился под внешним сторонним отладчиком, что при конфигурации старта из System Memory, запускается системный бут-загрузчик строго с того адреса, где он указан в даташите. Если же запускается некий "секретный загрузчик" до передачи управления в System Memory или Main Flash, то он не имеет никакого отношения к УСЛОВНО запускаемому загрузчику из System Memory. Цитата Ваша святая вера в "секретную схему" ни на чем не основана. Разумеется, можно верить в некий скрытый загрузчик, или как я - в более простое аппаратное решение, встроенное в камень. Но, в данном случае это уже не имеет значения - информация об этом скрыта от нас судя по всему намеренно. Оттуда и домыслы. Однако, как я понял, вы упорно верите в то, что загрузчик из System Memory стартует ВСЕГДА БЕЗУСЛОВНО несмотря на то, что в даташитах указан его УСЛОВНЫЙ старт . А коли так, то предлагаю на этом поставить точку, ибо иначе это все, просто, перерастет в некую фантастику, религию и т. п.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Aug 24 2017, 09:20
|
Частый гость
 
Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205

|
QUOTE (Forger @ Aug 22 2017, 21:22)  Мля, да в любом полном даташите на ЛЮБОЙ STM32 в соотв. табличке указаны варианты исключительно ИЛИ:
Я из этой таблички делаю вывод, что управление будет, в конце концов, передано в системный загрузчик или в пользовательскую прошивку - что мы собственно и наблюдаем вживую. Передано ли туда сразу (первой исполняемой командой процессора) или по результату исполнения некоего первоначального кода - из таблички никак не следует и уверенно сказать об этом нельзя. QUOTE (Forger @ Aug 22 2017, 21:22)  Я лично убедился под внешним сторонним отладчиком, что при конфигурации старта из System Memory, запускается системный бут-загрузчик строго с того адреса, где он указан в даташите. Если же запускается некий "секретный загрузчик" до передачи управления в System Memory или Main Flash, то он не имеет никакого отношения к УСЛОВНО запускаемому загрузчику из System Memory. Я убедился путем дизассемблирования, что в STM32F030 в системной памяти нет команд, определяющих вариант загрузки. Но: 1) "секретный загрузчик" может быть и в другом месте 2) В других камнях STM32 может быть по-другому. Как минимум у STM32F042 отличия должны быть. QUOTE (Forger @ Aug 22 2017, 21:22)  Разумеется, можно верить в некий скрытый загрузчик, или как я - в более простое аппаратное решение, встроенное в камень. Но, в данном случае это уже не имеет значения - информация об этом скрыта от нас судя по всему намеренно. Оттуда и домыслы. Это не вопрос веры, это вопрос неверия. У нас нет достоверной информации о том как это реализовано. Может быть так, может быть эдак, может быть еще каким-то третим способом. Но вы упорно настаиваете на одном конкретном варианте, непонятно на каком основании. Аппаратное решение совсем не проще в реализации и уж явно не гибче. Ежели какая-нибудь бага обнаруживается, то проще изменить заливаемый на конвейере код загрузчика, чем вносить изменения в маски. QUOTE (Forger @ Aug 22 2017, 21:22)  Однако, как я понял, вы упорно верите в то, что загрузчик из System Memory стартует ВСЕГДА БЕЗУСЛОВНО несмотря на то, что в даташитах указан его УСЛОВНЫЙ старт . А коли так, то предлагаю на этом поставить точку, ибо иначе это все, просто, перерастет в некую фантастику, религию и т. п. Я уверен (и Reference Manual на STM32F4xx это подтверждает), что как минимум у ряда контроллеров из семейства STM32 код системной области (не буду называть его загрузчиком дабы избежать путаницы) принимает участие в выборе режима старта.
|
|
|
|
|
Aug 24 2017, 10:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(LightElf @ Aug 24 2017, 12:20)  что мы собственно и наблюдаем вживую. Алилуйя! Наконец-то мои слова услышаны! Камень ведет себя именно так, как описано в даташите. Встроенный загрузчик запускается точно также условно, равно как и пользовательский код. А вы пытались с этим спорить... Смысл? Цитата Я убедился путем дизассемблирования, что в STM32F030 в системной памяти нет команд, определяющих вариант загрузки. Ура! Цитата 1) "секретный загрузчик" может быть и в другом месте Точно также он может быть лишь в фантазиях того, кто его выдумал  Цитата У нас нет достоверной информации о том как это реализовано. Может быть так, может быть эдак, может быть еще каким-то третим способом. Вот, вы меня уже цитируете  Цитата Но вы упорно настаиваете на одном конкретном варианте, непонятно на каком основании. Читайте внимательнее: Я настаиваю совсем на другом - чтобы вы не путали встроенный штатный бутзагрузчик с неким своим вымышленным "секретным" загрузчиком. Цитата Аппаратное решение совсем не проще в реализации и уж явно не гибче. Ежели какая-нибудь бага обнаруживается, то проще изменить заливаемый на конвейере код загрузчика, чем вносить изменения в маски. Весьма спорное утверждение - камни на заводе не прошивают, как вам это может показаться. Тестируют кристаллы прямо на пластине, причем, наверняка выборочно. Бут-загрузчик у STM находится не во FLASH, а в некой ROM, она обходится дешевле FLASH. Эта ROM не прошивается, а формируется сразу на этапе производства масок для процессов литографии и т. п. Т.е. для смены версии загрузчика меняется целиком весь кристалл заодно с исправлениями ядра/периферии, а отдельно перешивать уже изготовленные камни никто не будет - это абсолютно невыгодно. Для примера - если в печатной плате есть некритичный косяк, то такие косяки "накапливают" с другими и выпускают новую версию платы, где эти косяки исправлены ВСЕ ВМЕСТЕ. Никто не будет по-настоящему серийные платы вручную дорабатывать, т. к. их намного выгоднее списать и сделать новые правильные. А в случае микросхем зачастую выгоднее выпустить еррату и "собирать косяки" на новую версию камню. Чем толще еррата, тем более скупой производитель процов  Не стоит путать реально мега-массовое про-во со штучными "гаражными" поделками! Цитата Я уверен (и Reference Manual на STM32F4xx это подтверждает), что как минимум у ряда контроллеров из семейства STM32 код системной области (не буду называть его загрузчиком дабы избежать путаницы) принимает участие в выборе режима старта. Дык, если это указано в даташите на этот камень, то так одно и должно быть. Уверен, что под отладчиком это будет полностью подтверждено. Я с этим не спорил и не спорю )) Речь-то совсем о другом - о том, что не описано ни в одном официальном даташите и никак не выясняется под отладчиком. Этот "аппаратный узел" / "секретный загручик" не имеет никакого отношения к штатному загрузчику из System memory, он не является его частью, что подтверждают даташиты и отладчик. С самого начала именно это я и пытался донести. Теперь-то, надеюсь, все прояснилось?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
jeka stm32 NVIC: сброс маскировки прерываний внутри обработчика Jul 12 2017, 16:58 Forger Цитата(jeka @ Jul 12 2017, 19:58) Назрела... Jul 12 2017, 17:29 jeka Собственно в мягком ресете есть необходимость имен... Jul 12 2017, 17:55 Forger Цитата(jeka @ Jul 12 2017, 20:55) Единств... Jul 12 2017, 18:02  jeka Цитата(Forger @ Jul 12 2017, 21:02) Я бы ... Jul 12 2017, 18:14   Forger Цитата(jeka @ Jul 12 2017, 21:14) как вар... Jul 12 2017, 18:18 jeka п.с. irq вызывается, поскольку авария может прилет... Jul 12 2017, 18:06 Forger Цитата(jeka @ Jul 12 2017, 21:06) п.с. ir... Jul 12 2017, 18:14  jeka Цитата(Forger @ Jul 12 2017, 21:14) Так в... Jul 12 2017, 18:25   Forger Цитата(jeka @ Jul 12 2017, 21:25) Ей нужн... Jul 12 2017, 18:32    jeka Цитата(Forger @ Jul 12 2017, 21:32) Я сов... Jul 12 2017, 18:45     Forger Цитата(jeka @ Jul 12 2017, 21:45) После п... Jul 12 2017, 18:56 jeka Сейчас я в одном из девайсов делаю примерно так. Т... Jul 12 2017, 18:34 Forger Цитата(jeka @ Jul 12 2017, 21:34) Вполне ... Jul 12 2017, 18:36 jeka Специфика такая. Не хочется протокол обмена обрыва... Jul 12 2017, 19:17 Forger Цитата(jeka @ Jul 12 2017, 22:17) Специфи... Jul 12 2017, 19:19 jeka годится, но больно сложно получается. Плюс дополни... Jul 12 2017, 19:29 Forger Цитата(jeka @ Jul 12 2017, 22:29) годится... Jul 12 2017, 19:36 jeka Ну не хочется городить огород с записью во флеш, п... Jul 12 2017, 20:01 Forger Цитата(jeka @ Jul 12 2017, 23:01) ... ког... Jul 12 2017, 20:08 jeka Цель - понять, можно ли на arm сбросить маскировку... Jul 12 2017, 23:47 KSN По поводу непрерывного протокола обмена.
Делаю та... Jul 13 2017, 02:24 Forger Цитата(KSN @ Jul 13 2017, 05:24) По повод... Jul 13 2017, 06:04  KSN Цитата(Forger @ Jul 13 2017, 13:04) Скаже... Jul 13 2017, 07:18 jcxz Цитата(jeka @ Jul 12 2017, 19:58) Назрела... Jul 13 2017, 06:03 jcxz Цитата(jeka @ Jul 12 2017, 19:58) в докум... Jul 13 2017, 06:20 Obam ЦитатаНазрела необходимость (уже давно), разрешить... Jul 13 2017, 07:58 jeka Прошу прощения, не указал один важный момент, из-з... Jul 13 2017, 09:59 Obam Тогда вообще ни о чём: сброс и всё. Jul 13 2017, 10:58 jeka Сброс не желателен, т.к. состояние части периферии... Jul 13 2017, 12:27 Forger Цитата(jeka @ Jul 13 2017, 15:27) сброс н... Jul 13 2017, 12:34 jeka Мешает то что если из обработчика прерывания прост... Jul 13 2017, 12:48 Forger Цитата(jeka @ Jul 13 2017, 15:48) Мешает ... Jul 13 2017, 12:54 jcxz Цитата(jeka @ Jul 13 2017, 15:48) Мешает ... Jul 13 2017, 15:02 Obam "сброс текущего приоритета прерываний без шам... Jul 13 2017, 13:09 AVI-crak Цитата(jeka @ Jul 12 2017, 22:58) Собстве... Jul 13 2017, 15:12 jeka jcxz, спасибо за ответ. В целом как и предполагал.... Jul 13 2017, 16:11 jcxz Цитата(jeka @ Jul 13 2017, 19:11) jcxz, с... Jul 13 2017, 16:30  Forger Вот читаю, вижу интересные мудрёные решения, но во... Jul 13 2017, 17:14   AVI-crak Цитата(Forger @ Jul 13 2017, 23:14) Имхо,... Jul 13 2017, 23:05    Forger Цитата(AVI-crak @ Jul 14 2017, 02:05... Jul 14 2017, 08:16 Forger Цитата(jeka @ Jul 14 2017, 18:37) Включая... Jul 14 2017, 16:15  Forger Цитата(LightElf @ Jul 24 2017, 12:50) Дык... Jul 24 2017, 10:10      jcxz Цитата(Forger @ Jul 25 2017, 15:30) Вы ни... Jul 25 2017, 13:15       Forger Цитата(jcxz @ Jul 25 2017, 16:15) В AN260... Jul 25 2017, 13:20        jcxz Цитата(Forger @ Jul 25 2017, 16:20) Это у... Jul 25 2017, 13:30         Forger Цитата(jcxz @ Jul 25 2017, 16:30) Содержи... Jul 25 2017, 13:31         Forger Цитата(jcxz @ Jul 25 2017, 16:32) Вопрос ... Jul 25 2017, 13:48           AVI-crak Режим отладки в памяти.
Программа в флеш выполняет... Aug 3 2017, 13:25            Forger Цитата(LightElf @ Aug 3 2017, 17:06) Надо... Aug 3 2017, 14:21             Forger Цитата(AVI-crak @ Aug 3 2017, 19:16)... Aug 4 2017, 06:56              AVI-crak Цитата(jcxz @ Aug 4 2017, 12:59) Или что ... Aug 4 2017, 08:29               jcxz Цитата(AVI-crak @ Aug 4 2017, 11:29)... Aug 4 2017, 10:43                Forger Цитата(jcxz @ Aug 4 2017, 13:43) Может бы... Aug 4 2017, 11:04                 jcxz Цитата(Forger @ Aug 4 2017, 14:04) Встрое... Aug 4 2017, 12:19                 AVI-crak Цитата(Forger @ Aug 4 2017, 17:04) зы Рад... Aug 4 2017, 12:38                  Forger Цитата(AVI-crak @ Aug 4 2017, 15:38)... Aug 4 2017, 13:12                        LightElf QUOTE (Forger @ Aug 24 2017, 13:54) Камен... Aug 30 2017, 08:38                         Forger Цитата(LightElf @ Aug 30 2017, 11:38) Вы ... Aug 30 2017, 09:07                          LightElf QUOTE (Forger @ Aug 30 2017, 12:07) Поско... Aug 30 2017, 15:50                           Forger Цитата(LightElf @ Aug 30 2017, 18:50) И в... Aug 30 2017, 16:17             LightElf QUOTE (AVI-crak @ Aug 3 2017, 19:16)... Aug 4 2017, 10:23              Forger Цитата(LightElf @ Aug 4 2017, 13:23) В да... Aug 4 2017, 10:33               LightElf QUOTE (Forger @ Aug 4 2017, 13:33) Это ещ... Aug 5 2017, 10:06                Forger Цитата(LightElf @ Aug 5 2017, 13:06) Горо... Aug 5 2017, 10:29                jcxz Цитата(LightElf @ Aug 5 2017, 13:06) Горо... Aug 5 2017, 10:37                 Forger Цитата(jcxz @ Aug 5 2017, 13:37) Вот имен... Aug 5 2017, 10:49                  jcxz Цитата(Forger @ Aug 5 2017, 13:49) Т.е. я... Aug 5 2017, 11:03                   Forger Цитата(jcxz @ Aug 5 2017, 14:03) Ядро/так... Aug 5 2017, 12:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|