Rash 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба Совершенно ага! Если в параметрах будет const (разрулить возможные обращения по записи) - то на выходе получим минимум миниморум. Посмотрите на lib_at91samxxxxxxx.h не понятно почему так не сделана либа STM, и к чему тогда возникающие периодические споры про корявую либу СТМ или какие то хитрые дефайны с регистрами, если всего то надо разок потратить время и перебить функции на инлайн. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HHIMERA 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба если всего то надо разок потратить время и перебить функции на инлайн. И некоторые из них просто станут неработоспособными... если не ошибаюсь... SPI, например... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба не понятно почему так не сделана либа STM Это вроде как логическое продолжение CMSIS. Потом, там MISRA2004 проехалась, потом - операции с битовыми полями априори неизвестно как себя ведут на разных компилерах, иначе все было бы попроще. Всему есть причины. Либой для АТ91 тоже не очень приятно пользоваться, я имею ввиду длинные префиксы в именах. -- Как альтернатива - Coocox"овые либы... Но там другая сторона медали: в STшных - инициализация через структуру, зато функции с 2-мя параметрами и повторное использование, в кокосовых - функции с большим числом параметров. Хрен редьки, как говорится. И некоторые из них просто станут неработоспособными... если не ошибаюсь... SPI, например... Ухты! Где? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HHIMERA 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба Ухты! Где? Точно уже не припомню... Зато точно помню... что желание инлайнить весь этот колхоз, почему-то, не возникает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба ну да стандарты, есть стандарты. Но для себя решил, надо выделить время и по той периферии которая используется заинлайних их функции. Что удобно, что там объявлены большинство регистров, иногда даташит даже открывать не приходится, просто надо как и всё под себя с оптимизировать минимальными ресурсами. Даже имена им менять не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба Что удобно, что там объявлены большинство регистров, иногда даташит даже открывать не приходится, просто надо как и всё под себя с оптимизировать минимальными ресурсами. Даже имена им менять не нужно. Вот только есть одна неприятность. Учитывая, как у ST оъявлены биты, использовать bitband не получится. Остается уповать на компилер, но тот же IAR не торопится задействовать bitband регион. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 (изменено) · Жалоба Смотрю я на этот битбанд и что-то выигрыш не особо просматривается... кроме атомарности. Изменено 8 февраля, 2013 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба выигрыш не особо просматривается... кроме атомарности. А прочего от него особо и не требуется. Ну и, как обычно, смотреть надо на проблему в целом, а не на стоимость отдельных частей. Использование bitband позволит избавиться от ENTER_CRITICAL()/EXIT_CRITICAL(). Ну и как теперь, выигрыш "просмотрелся"(с) ? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба А, вроде, в новеньких F3 вход-вывод не попадает в bit-band?... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба А, вроде, в новеньких F3 вход-вывод не попадает в bit-band?... Bitband, это фича ядра, не контроллера. Производители ядра говорят что такая фича есть, хоть и опционально. ST тоже говорит, что есть. См. STM32F3xxx and STM32F4xxx Cortex-M4 programming manual, "2.2.5 Bit-banding". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба Про фичу ядра согласен. Но в приведенном Вами документе для периферии выделяется Peripheral bit-band region 0x40000000-0x400FFFFF (см. стр. 31). Легко убедится (см. RM для stm32f3xx), что GPIOx туда не попадает, т.к. начинается с 0x48000000. (( Сам с данной неприятностью столкнулся при использовании "универсальных дефайнов для работы с GPIO"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2013 Опубликовано 8 февраля, 2013 · Жалоба А смысл работы GPIO в означенном регионе? Если и так чтобы установить/сбросить атомарно - все есть. А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 9 февраля, 2013 Опубликовано 9 февраля, 2013 · Жалоба А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу Б-г с ней, с атомарностью. "Ситуевину представить"(с) - "легко, смеясь"(с) : как я налетел с ремапом. А именно: А в библиотеках от ST просто в наглую подставляется константа. И совсем не факт, что она совпадет с тем, как ранее настроил программер. А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 9 февраля, 2013 Опубликовано 9 февраля, 2013 · Жалоба А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. А в RMW-операциях можно налететь на грабли и по другому - просто записав битик туда, куда не нужно, - помечено как reserved биты, а каким образом оно себя проявить может - хз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 февраля, 2013 Опубликовано 9 февраля, 2013 · Жалоба А смысл работы GPIO в означенном регионе? Если и так чтобы установить/сбросить атомарно - все есть. А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу Написал библиотеку для работы с UART. При инициализации передаем адрес бита ножки GPIO, отвечающую за передачу в RS-485. Как быть теперь? Применить свою виртуальную адресацию битов портов? По библиотеке для этих целей могу "протащить" лишь одну 32-битную переменную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться