cstdint, arm-none-eabi- та Ubuntu

Міняв диск, заразом поміняв і Убунту 16.04 на 18.10. Як і минулого разу на шістнадцятій, поставив «рідний» для системи пакет arm-none-eabi-. Мабуть, пора закінчувати з такою практикою, всістися на якусь іншу збірку компілятора, ту ж linaro. Бо проекти перестали збиратися. І на чому, на рівному місці! Компілятор не знаходить файл cstdint.

Короткий пошук показав, що версія компілятора 6.3.1, include-файли лежать в /usr/lib/gcc/arm-none-eabi/6.3.1/include та в /usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/include, який, зрештою, вказує на /usr/include/newlib.

А от заголовочні файли C++ лежать в /usr/include/newlib/с++/7.3.1. Звідки взялася сімка — важко сказати. Може це одрук, може дійсно поклали іншу версію, але жодного файлу від C++ cpp не знаходить. Назву 7.3.1 вирішив не чіпати, просто поруч додав лінк 6.3.1->7.3.1. Після цього cpp по -v показав додаткові шляхи до файлів і все стало збиратися.

scmRTOS for STM8, IAR port

Влітку зовсім не було часу на продовження розробки scmRTOS, лише зараз до цього повернувся.

Порт STM8/IAR додано в репозиторій, в гілку scmRTOS pre-v4.00. Звідти можна витягти архів прикладів scmRTOS для порта STM8/IAR. Каталоги scmRTOS/Common, scmRTOS/Extensions та scmRTOS/STM8 в архіві прикладів порожні, необхідно завантажити архіви ядра scmRTOS pre-v4.00, розширень ядра та порта STM8/IAR і розпакувати їх у відповідні каталоги.

»»» Детальніше про порт scmRTOS для мікроконтролерів STM8

scmRTOS for STM8

Викладаю першу чорнову версію порта scmRTOS для мікроконтролерів STM8 та компілятора IAR.
Порт основано на scmRTOS гілки pre-v400.

Обмеження цієї версії порта:

  • Не підтримується LARGE модель даних.
  • Не реалізовано перемикання контексту програмно ініційованим прериванням.
  • Не реалізовано перемикання преривань на окремий стек.

В комплекті йдуть приклади 1-EventFlag та 4-Debug.
Приклади збиралися компілятором IAR версії 1.30, перевірялися на платі STM8S-DISCOVERY (STM8S105C6).

Файли iostm*.h від IAR конфліктують з файлом stm8s.h від STMicroelectronics. Зараз приклади зроблено під IAR-івські include-файли.
Порт scmRTOS (вміст каталогу scmRTOS/STM8) не залежить від цих файлів, все необхідне йому передається у вигляді макросів у файлі scmRTOS_TARGET_CFG.h.
Схоже, пізніше в окремому #include-файлі буде дописано те, чого не вистачає для використання stm8s.h, приклади буде переписано під стандартну бібліотеку від STMicro.

Приклад 1-EventFlag зроблено на основі прикладу для AVR/GCC порта, можна користуватися описом цього прикладу використання scmRTOS.
При оптимізації максимального рівня на швидкість приклад 4-Debug працює неправильно. Тобто все наче працює, на терміналку стан стеків процесів та завантаженість системи видається, але величини завантаженості не відповідають дійсності. При максимальній оптимізації на розмір або збалансованій приклад працює. В чому причина неправильної роботи — ще не розбирався.

В офіційний репозиторій scmRTOS порт поки-що не включено — щоб не затримувати вихід релізу scmRTOS v4.00.


Доповнення від 8 листопада 2011 року: порт STM8/IAR додано в репозиторій scmRTOS.

Attached Files:

Нарешті!

Нарешті я знайшов час для перекладу опису прикладу «1-EventFlag» scmRTOS англійською мовою. Пояснення базується на avr-gcc (WinAVR) порті системи для мікроконтролерів AVR, але може бути корисним для розуміння будь-якого порта системи.

Заразом трохи почистив сам текст, додав врізки з призначенням виводів, позначки на осцилограми та розфарбовку синтаксису. Не знаю, чи не надто пістряве воно від всього цього вийшло, та сподіваюся, що стало краще.

[flagcounter image]