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

Сильно неточная частота

конечно

или запаздывание начала генерации

невероятно

или недостаточная аплитуда

маловероято, на то и задан рабочий уровень напряжения питания

иль это некая защита от фрикерских атак на систему тактирования

непонятно

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


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

От какого и до какого события время старта считаете?

От момента появления питания до выполнения первой инструкции.

Если МК сразу начинает работать на внешнем резонаторе, то стабилизация колебаний этого резонатора занимает миллисекунды.

Обычно не менее 10 мс. А надежнее всего подождать еще 50 мс уже после того, как установится аппаратный флаг готовности внешнего резонатора к работе.

Вот то уже интересно. Т.е. применение внешнего резонатора +10 мс к времени старта? Допустим, стабильность частоты в первые микросекунда не критична, лиши бы за 0,5-1 мс добраться до основной программы.

Так что, если устройству спешить некуда, так и гнаться за миллисекундами начала работы не следует, если не хотите проблем при эксплуатации.

да-да нужно именно гнаться за миллисекундами начала работы. А внтуренний RC генератор - панацея или нет?

Изменено пользователем Herz
Избыточное цитирование

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


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

а откуда такие запросы к времени старта? 1мсек или 2мсек- неужели настолько все критично, или просто хочется "побыстрее"?

плюс тут еще надо суммировать время нарастания напряжения на входе питания процессора.

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


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

От момента появления питания до выполнения первой инструкции.

В Вашей системе времяисчисления (единицы мс) включение питания - не момент, а длительный процесс. Или и питание у Вас от 0 до 3.3В нарастает за микросекунды? :laughing:

И что такое "выполнение первой инструкции"? Выполнение первой инструкции BOOT-ROM? А какая Вам от неё польза?

 

да-да нужно именно гнаться за миллисекундами начала работы. А внтуренний RC генератор - панацея или нет?

Как правило МК и стартуют на внутренних RC (выполнение кода BOOT-ROM). Желаемая Вами "первая инструкция" и так по-любому на RC выполняться будет.

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


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

Выполнение первой инструкции BOOT-ROM? А какая Вам от неё польза?

Вай, зачем boot-ROM? Сразу идет по адресу, что в startup файле задан после размера стека:

__Vectors       DCD     __initial_sp             ; Top of Stack
                DCD     Reset_Handler            ; Reset Handler

А по адресу этому - SystemInit

        LDR     R0, =SystemInit
                 BLX     R0

В котором частота PLL задается и др.

А потом - __main, где глобальные переменные создаются

                 LDR     R0, =__main
                 BX      R0

А потом - Main

Топикстартер запросто может что-то по-быстрому сделать еще в SystemInit на RC генераторе. Хотя задача некая вымышленная...

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


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

Вай, зачем boot-ROM? Сразу идет по адресу, что в startup файле задан после размера стека:

Cortex-M не знает никаких файлов. У него есть только память. Оттуда он и считывает стартовый адрес. Обычно из области ROM, в которой находится таблица прерываний для ROM-кода.

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


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

Обычно - из флэш, где находится таблица прерываний. Которую записали программатором. Которую создал компилятор. Которому задали startup файл.

 

В SystemInit есть ожидание "раскочегаривания" генератора HSE (готовности, по-научному). Затем есть ожидание готовности PLL. Эти ожидания можно заполнить чем-нибудь срочным, полезным.

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


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

Обычно - из флэш, где находится таблица прерываний. Которую записали программатором. Которую создал компилятор. Которому задали startup файл.

В LPC... - из ROM, где находится boot-код. Благодаря этому, с помощью некоторых пинов, сэмплируемых по завершению сигнала reset, можно задавать откуда стартовать - из Flash или ждать загрузку образа из какого-то интерфейса или... . В других МК тоже такое есть. В STM32 есть возможность переходить в boot-loader по некоторым пинам при старте? Если есть - значит там тоже код стартует из ROM.

Кстати - это легко проверяется установкой бряка на код в ROM.

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


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

Конечно, есть и в STM32 boot-ноги. Но почему, обязательно, переход программный, а не аппаратный?

Повторю цитату:

The reset temporization is measured from the power-on (POR reset or wakeup from VBAT) to the instant when first instruction is read by the user application code.

Если там и есть некие тайные программные манипуляции, то они проходят до окончания Trsttempo. Не интересуют, в принципе. А первая же команда после него - аппликация юзера. :rolleyes:

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


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

Обычно - из флэш, где находится таблица прерываний. Которую записали программатором. Которую создал компилятор. Которому задали startup файл.

 

В SystemInit есть ожидание "раскочегаривания" генератора HSE (готовности, по-научному). Затем есть ожидание готовности PLL. Эти ожидания можно заполнить чем-нибудь срочным, полезным.

 

Согласен, камень стартует на внутреннем RC генераторе и он вроде сразу начинает работать без каких-либо задержек. Потом уже запуск внешнего, ожидание и прочее. Но внутренний всего 8 МГц/ Пошустрей хочется.

 

а откуда такие запросы к времени старта? 1мсек или 2мсек- неужели настолько все критично, или просто хочется "побыстрее"?

плюс тут еще надо суммировать время нарастания напряжения на входе питания процессора.

Именно критично. Само собой напряжение нарастает не мгновенно, нужно некоторое время. Не думаю, что 10 мс, но 1 мс может занять. Т.е. уже +1 мс к старту минимум. быть может запуститься от RC и не париться?

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


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

Конечно, есть и в STM32 boot-ноги. Но почему, обязательно, переход программный, а не аппаратный?

Потому, что гораздо проще написать несколько команд в boot-коде, чем вносить измененения в ядро Cortex-M.

 

Если там и есть некие тайные программные манипуляции, то они проходят до окончания Trsttempo. Не интересуют, в принципе. А первая же команда после него - аппликация юзера. :rolleyes:

Вас не интересуют, а автора интересуют. Он же написал:

От момента появления питания до выполнения первой инструкции.

Как написано, так и читаю.

 

Именно критично. Само собой напряжение нарастает не мгновенно, нужно некоторое время. Не думаю, что 10 мс, но 1 мс может занять. Т.е. уже +1 мс к старту минимум. быть может запуститься от RC и не париться?

Т.е. - Вы даже не знаете сколько времени у Вас длится нарастание напряжения??? Даже не померяли хотя-бы?

А уже от фонаря решили, что нужно чтобы код стартовал за 1мсек. А наверняка напряжение нарастает сотни мсек. Впрочем сразу так и думал...... :smile3046:

А ведь есть ещё супервизоры питания, которые выдерживают импульс сброса до 200мсек после нарастания напряжения до необходимого уровня. Поищите у себя на плате :biggrin:

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


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

Кстати - это легко проверяется установкой бряка на код в ROM.

Докажите. :biggrin:

 

Мы обсуждаем возможный десяток команд, которые устанавливают стек и программный счетчик? Которые выполняются хрен знает откуда, хрен знает как появившись в программном счетчике? Что установило программный счетчик на Boot-ROM?

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


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

Поищите у себя на плате

Ещё нет никакой платы, тема о выборе годного МК.

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


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

...

Т.е. - Вы даже не знаете сколько времени у Вас длится нарастание напряжения??? Даже не померяли хотя-бы?

...

Ну вот ТС и проговорился... Про данный момент и не в курсе даже, а зато МК должен как можно быстрее стартануть. Интересно, что этот МК должен делать такого сверхсрочного по включении питания? Выключать сразу включающийся зачем-то привод многотонного пресса? Отключать ненужный запуск ножа для нарезки колбасных изделий? Или еще что-то такое жизненное важное, но запускающееся почему-то сразу? Лучше такие вещи МК не доверять!

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


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

Если МК должен заработать быстро, а питание уже есть (заранее включено), можно работать от внешнего генератора HSE в режиме Bypass, не дожидаясь его запуска. А если еще и PLL не включать, тоже можно время сэкономить.

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


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

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

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

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

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

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

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

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

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

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