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

Прерывание от USB в STM32F: косяк KEIL vs. GCC

3 минуты назад, Forger сказал:

Повторюсь - изучайте инструмент. Подсказка: короткие asm-вставки ВНУТРИ c/cpp файла.

Инлайн-ассемблер - это не "без асма". Если что. Передёргиваете.

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


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

2 minutes ago, jcxz said:

Как на Cortex-M не используя асм эффективно реализовать вытесняющее переключение задач например.

Речь шла про startup код, который кстати вызывается всего один после сброса. Не будем отклоняться от темы )

1 minute ago, jcxz said:

Инлайн-ассемблер - это не "без асма". Если что. Передёргиваете.

У меня startup файл реализован на c/cpp БЕЗ asm вставок. Код примитивный.

Так кто из нас тут передергивает с переключалкой оси, о которой речи изначально не шло? ))

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


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

8 минут назад, Forger сказал:

У меня startup файл реализован на c/cpp БЕЗ asm вставок. Код примитивный.

Так кто из нас тут передергивает с переключалкой оси, о которой речи изначально не шло? ))

Видимо всё-таки Вы, ибо изначально речь шла не о стартапе, а об ISR. Который кстати может вызываться неоднократно. А вы уже плавно перевели стрелки на стартап.  :sarcastic:

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


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

Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции:


	class CriticalSection // No nested, but very fast - 3 CPU cycles !!!
	{
	public:
		inline CriticalSection() __attribute__((always_inline)) { __asm volatile ("CPSID i"); }
		inline ~CriticalSection() __attribute__((always_inline)) { __asm volatile ("CPSIE i"); }
	};

 

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


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

4 минуты назад, Forger сказал:

Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции:

И как же в ней всё-таки реализовано переключение контекста?

Да причём так эффективно, что это уложилось в одну команду???  :shok:

4 минуты назад, Forger сказал:

самая большая asm вставка - запрет и разрешение прерываний в критической секции:

 

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


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

Just now, jcxz said:

Видимо всё-таки Вы, ибо изначально речь шла не о стартапе, а об ISR. Который кстати может вызываться неоднократно.  :sarcastic:

А зачем ISR писать на asm? Разве что для особого случая, когда уже больше ничего не помогает. У меня таких случаев не было.

Повторюсь: ось в расчет не беру, использую библиотечную версию, что там внутри меня мало волнует. Она работает как надо, меня это полностью устраивает.

 

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


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

2 минуты назад, Forger сказал:

использую библиотечную версию, что там внутри меня мало волнует. Она работает как надо, меня это полностью устраивает.

Ну тогда не надо писать что:

6 минут назад, Forger сказал:

Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции:

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

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


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

1 minute ago, jcxz said:

И как же в ней всё-таки реализовано переключение контекста?

Да причём так эффективно, что это уложилось в одну команду???  :shok:

Идея такого класса честно слита с scmRtos, итоговый код с такой критической секцией действительно выглядит как задумано. Компилятор не идиот, понимает что от него хотят.

Just now, jcxz said:

Ну тогда не надо писать что:

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

Ясно, есть желание придраться и все тут. Вот - царь горы прям, не сдамся до последнего. 

Повторюсь, меня волнует МОЙ код, в нем НЕТ asm файлов и asm-вставок. Работает отлично. Как там написана ось - мне лично до фонаря.

Но если ось не использовать, то можно ВЕСЬ код написать также БЕЗ asmа, вообще. И будет отлично работать.

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


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

16 minutes ago, Forger said:

Повторюсь - изучайте инструмент. Подсказка: короткие asm-вставки ВНУТРИ c/cpp файла.

Городить для этого именно asm-файл вовсе необязательно.

Во-первых, асм-вставки -- вещь нестандартная по определению, а во-вторых, компилятор может нагенерить код ДО вставок (пролог функции, скажем, где сохранит в стеке регистры).

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


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

Just now, SII said:

Во-первых, асм-вставки -- вещь нестандартная по определению, а во-вторых, компилятор может нагенерить код ДО вставок (пролог функции, скажем, где сохранит в стеке регистры).

Может, конечно. Вот честно, мне было бы очень интересно узнать, где еще asm так критически полезен, кроме как в переключалке контекста.

Почему-то мне ни разу не приходилось применять asm вставки, кроме как критические секции (выше один из вариантов).

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


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

2 hours ago, Forger said:

Может, конечно. Вот честно, мне было бы очень интересно узнать, где еще asm так критически полезен, кроме как в переключалке контекста.

Почему-то мне ни разу не приходилось применять asm вставки, кроме как критические секции (выше один из вариантов).

В переключалке контекста (и ещё паре подобных случаев) он не критически полезен -- он абсолютно необходим. Во всяких атомарных и околоатомарных операциях, барьерах и т.п. может потребоваться -- хотя последние стандарты це++ уже содержат определённые вещи из этой области. Ну и ручная оптимизация особо критичных мест, само собой -- бывает, и возникает такая нужда.

1 hour ago, Forger said:

Алилуйя! Ну наконец-то хоть в чем-то у нас совпадающее мнение ))

Вот я и предпочитаю им по минимуму -- а посему, если есть возможность, использую отдельный асмофайл, а не встроенный ассемблер.

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


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

18 minutes ago, SII said:

Вот я и предпочитаю им по минимуму -- а посему, если есть возможность, использую отдельный асмофайл, а не встроенный ассемблер.

Ребят, вы не в тренде. 
В Azure RTOS, а это сейчас одна из самых популярных осей в мире, которая засертифицирована по надежности по самое немогу применяются исключительно ассемблерные вставки! 
Ни одного чистого файла на ассемблере.
Более того, именно когда требуются супернадежные функции для соблюдения требований MISRA применяются ассемблерные вставки, а не файлы.
Просто факт. 

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


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

Не пофиг ли, на какой джумбе написан исходник, если на выхлопе интересно лишь качество дизасма? И то, качество - понятие субъективное.
Если то самое качество не устраивает, стороним джумбу и расчехляем скилл в ассемблере. Как писать на том ассемблере - дело десятое. Кому как.

P.S. Фееричное появление Александра с азурами я прямо-таки предчувствовал:mosking:

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


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

Куда-то вас занесло. У ТС проблема в том что в стартапах от разных тулчейнов разные имена процедур обработки прерываний. В одном из стартапов накосячено, ибо в заголовочном файле от производителя все эти имена есть, надо их использовать. Кто конкретно делал этот косячный стартап дело десятое. Я же предлагаю использовать один стартап для разных тулчейнов, чтобы подобные несоответствия не вылазили. Причём тут RTOS-ы вообще?

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


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

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

Куда-то вас занесло.

Тут некоторые персонажи начали утверждать, что "ассемблер - это мировое зло и я никогда и за что его не использую, а все кто это делает - нехорошие люди". И что мол "в современном мире можно вообще без него обойтись". Религия у них такая - отрицание ассемблера и ассемблеро-фобия.  :unknw:

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


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

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

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

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

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

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

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

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

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

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