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

jcxz

Свой
  • Постов

    13 104
  • Зарегистрирован

  • Посещение

  • Победитель дней

    29

jcxz стал победителем дня 28 марта

jcxz имел наиболее популярный контент!

Репутация

172 Очень хороший

4 Подписчика

Информация о jcxz

  • Звание
    Гуру
    Гуру
  • День рождения 01.12.1974

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

25 778 просмотров профиля
  1. Я вообще-то говорил о способе избавиться от необходимости volitile, а не о размещении.
  2. Достаточно передать указатель на этот массив в ассемблерную функцию (где-нибудь вызываемую естественно) и можно не беспокоиться, что оптимизатор создаст её копии и можно обойтись без volatile. Указатель на этот массив в си-шные функции лучше тоже передавать через ассемблерную прослойку. Костыль конечно, но не тяжёлый.
  3. Кстати: И на ОС уровня FreeRTOS на Cortex-M тоже можно существенно уменьшить время реакции на прерывание. Вплоть до времени выполнения одной непрерываемой операции CPU (команды или входа/выхода в ISR). Т.е. - убрать задержку, вызываемую запретом прерываний при классических критических секциях. Просто делать не запрет всех прерываний, а только маскирование их через регистры NVIC, оставляя незамаскированными критические прерывания. ~12 лет назад писал код для PRUSS в OMAP L137 - документация была. И была открытой. А если она тогда была, то значит и сейчас есть. Ведь Всемирный Разум ничего не забывает. Если что-то где-то когда-то было в открытом доступе, значит наверняка где-то сохранилось. Даже если сейчас на официальном ресурсе недоступно.
  4. Это с чего это "не даёт"? Раньше давал, а теперь почему перестал?
  5. Раз уж решили править стек и прочее, то может стоит сперва хотя-бы почитать как работает система прерываний в вашем CPU? Всё детально разжёвано в документации на ядро. И как происходит выход из прерывания, и какие есть режимы CPU, и переключение стеков (MSP/PSP) - всё там есть. Если нужно выйти из ISR в определённый адрес, то можно подменить в стеке адрес возврата и выйти штатным образом. Также можно отредактировать содержимое LR, чтобы изменить режим CPU и активный стек после выхода. Но совершенно непонятно - на кой это нужно? На кой вообще потребовалось править MSP при запущенной ОС? Складывается впечатление, что вы не понимаете как работает ОС в целом. Поэтому и такие странные хотелки. ЗЫ: "Объяснять на пальцах" всё это - невозможно. Раз уж решили заниматься системными вещами и вмешиваться в работу ОС, то нужно предварительно глубоко изучить функционирование CPU и научиться читать документацию. Также нужно знать и уметь писать на ассемблере. Иначе - лучше не заниматься не своим делом.
  6. Что мешает положить её например - в один из неиспользуемых векторов таблицы векторов прерываний? И забыть о проблеме.
  7. полноценный линукс на "мелких МК" (типа Cortex-M) не возможен по определению. Меньше всяких "блохеров" читайте.
  8. stm32f747 + Ethernet (LwIP)

    Или недобор? max ведь не указано. А значит и 0.5с может не хватить. И почему 0.5с, а не 5с или не 50с? ЗЫ: Вобщем, как уже сказали - решение с задержкой кривое. Сегодня работает, завтра - нет. Но ТСу лень читать документацию, чтобы сделать правильно.
  9. stm32f747 + Ethernet (LwIP)

    Наверняка есть. Но это же документацию читать надо.
  10. Всё а не всё. Всё-таки CPU с FIQ/IRQ гораздо шустрее реагируют на прерывания, чем Cortex-M с NVIC.
  11. Я вообще-то писал не про время входа в свой ISR, а про случай, когда ваше срочное прерывание возникло в тот момент когда уже только начался вход/выход в другой ISR. И писал это не про ARM-ы с переключением состояний FIQ/IRQ, а про Cortex-M с его NVIC (STM32). Никакой стабильности там быть не может по определению. А будет джиттер в десятки тактов (опять же - Cortex-M).
  12. Не верю! Сказки не надо рассказывать. Один вход или выход в ISR занимает уже десятки тактов (это если контекст FPU не сохраняется/восстанавливается; иначе будет ещё печальнее). Точно такие же сказки - максимальное время активации задачи во FreeRTOS == 900нс. По причине (как уже сказали выше) - что сервисы РТОС выполняются как правило при запрещённых прерываниях. ЗЫ: Сказочникам советую почитать описание CPU и посмотреть исходный код сервисов FreeRTOS. Для спуска с небес на землю... Кроме ПЛИС можно взять МК с богатой периферией, и реализовать нужный функционал силами этой периферии.
  13. Ну да Гладко было на бумаге, да забыли про овраги.... Один из моих прошлых заказчиков решил перенести наш проект (ранее реализованный на LPC17) на ESP32. "для удешевления" типа. Нашёл какого-то программиста, взявшегося за работу. И вот.... прошёл почти год. Насколько мне известно - до сих пор ещё результат не получен. Хотя в своё время, на LPC, первая версия девайса у нас заработала уже примерно через месяц. Периферии там немного. Да и в целом вроде девайс не особо сложный. Для обычного микроконтроллера по крайней мере. Хотя у меня с самого начала были большие сомнения насчёт реализуемости на ESP32. PS: И даже если заработает всё-таки, то боюсь заказчик будет неприятно удивлён временем его автономной работы (девайс имеет батарейное питание).
×
×
  • Создать...