extern “C”

Інформація, яку видає OpenOCD при звичайному завантаженні програми у flash-пам’ять мікроконтролера, деколи може допомогти так, як наче це був запущений зневаджувач.

Переписую на свій смак шматки, які вже працювали зі стандартною бібліотекою від NXP. При чергових змінах програми вона начисто перестає працювати. Знаходжу дрібну помилку (замість змінної часу повертається константа періоду), виправляю, перешиваю…

Знову висить.

»»» І тут помічаю, що OpenOCD сповістив мене…

Attached Files:

  • h lpc17xx_handlers

    lpc17xx handler prototypes for C/C++ programs (with extern "C" for C++)

scmRTOS 4.0 release

4 квітня (2012.04.04) нарешті вийшла «офіційна» версія 4.0 операційної системи scmRTOS.

Попередню версію по виправленні відомих помилок збережено в гілці scmrtos/tags/3.11.

Нова версія зафіксована в scmrtos/tags/4.00 та продовжує розвиватися в scmrtos/trunk.

»»» Дізнатися, що нового в з’явилося в scmRTOS 4.0

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, але може бути корисним для розуміння будь-якого порта системи.

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

scmRTOS

scmRTOS – це компактна проста ОСРЧ для мікроконтроллерів, створена Гарі Журовим (Harry Zhurov). Поточна версія — 4.00.
Існують порти scmRTOS для наступних серій мікроконтролерів:

  • ARM7 — GCC;
  • AVR (Atmel) — GCC, IAR;
  • Blackfin (Analog Devices) — VDSP;
  • Cortex-M3 — GCC, IAR;
  • Cortex-M0 — GCC (на даний момент розміщено в гілці pre-v400);
  • MSP430 (Texas Instruments) — GCC, IAR;
  • STM8 (ST Microelectronics) — IAR.

Використовуйте лінк Download GNU tarball в нижній частині сторінки для вибраного мікроконтролера або завантажуйте архів зі сторінки scmRTOS на sourceforge
Використовуйте сторінку trunk для отримання найсвіжіших версій.

З мікроконтролерів AVR підтримуютьcя «звичайні» megaAVR включно з ATmega256x.

Опис scmRTOS v4.00 російською та англійською мовами.
Сторінка проекту на sourceforge.net.
scmRTOS Wiki (англійською)
Група google для обговорння проекту (російською, краще підписатися на розсилку поштою, бо через web-інтерфейс половина листів не читається).
Розділ, присвячений scmRTOS, на форумі electronix.

scmRTOS може бути використано з Arduino, дивіться тему на форумі Arduino, сховище git та статтю про це російською мовою.

Тут я пропоную увазі детальне пояснення одного з поширюваних з системою прикладів 1-EventFlag.

Пояснення призначене для тих, хто ще не надто знайомий з роботою ОС з витісненням і «на ніжках» показує, що відбувається в системі. Для демонстрації процесів в приклад було внесено деякі зміни, в основному, додано індикацію стану системи на виводах мікроконтроллера для спостереження осцилографом/логічним аналізатором. Команди для індикації стану було додано також в процедуру перемикання контекстів (встановлення виводу першою командою макросу save_context та скидання останньою командою макросу restore_context в файлі OS_Target_asm.S). З розміщеного в репозиторії коду ці команди видалено.

[flagcounter image]