haker_fox 61 23 марта, 2020 Опубликовано 23 марта, 2020 · Жалоба Добрый день, коллеги! Тут) Пока смог протестировать только для Cortex-M0. Конкретно: stm32f051. Остальные архитектуры возможно на днях. Пробуйте) Пишите о результатах. Если что, буду править) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 25 марта, 2020 Опубликовано 25 марта, 2020 · Жалоба Проверил на Cortex-M3 (LPC1768). Были внесены некоторые правки, в основном синтаксические. Проверил на Cortex-M4(F) (LPC4337, включая/выключая в опциях компилятора FPU). Задачки были 2 шт, очень простые: мигание светодиодиками. Версия IAR: 8.40.1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 26 марта, 2020 Опубликовано 26 марта, 2020 · Жалоба Отлично! Теперь бы ещё пару примерчиков вот сюда, и всем пользователям IAR+scmRTOS было бы счастье :-) Думаю, тогда @dxp точно согласится сделать новый релиз Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 марта, 2020 Опубликовано 26 марта, 2020 · Жалоба 10 minutes ago, AHTOXA said: Теперь бы ещё пару примерчиков вот сюда, и всем пользователям IAR+scmRTOS было бы счастье :-) На следующей неделе у меня отпуск (спасибо папе), думаю, что сделаю) Есть плата с Cortex-M7, можно её ещё проверить, хотя технически это тот же Cortex-M4, но FPU двойной точности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexG 1 1 мая, 2020 Опубликовано 1 мая, 2020 · Жалоба On 3/23/2020 at 7:01 AM, haker_fox said: Пробуйте) Пишите о результатах. Если что, буду править) Спасибо! Весьма вероятно что скоро пригодится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 1 мая, 2020 Опубликовано 1 мая, 2020 · Жалоба 2 hours ago, AlexG said: Спасибо! Весьма вероятно что скоро пригодится. Да пожалуйста))) Если всё-таки пригодится, отпишитесь о тестировании) Если не сложно, конечно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 9 мая, 2020 Опубликовано 9 мая, 2020 · Жалоба В 01.05.2020 в 17:59, haker_fox сказал: Да пожалуйста))) Если всё-таки пригодится, отпишитесь о тестировании) Если не сложно, конечно Мне предстоит повозиться с ядром М3 и отпишу с удовольствием. Одна просьба -не могли бы вы выложить хоть один тестовый пример. Он же наверняка у вам есть, вы же не на боевом проекте порт отлаживали. З.Ы. И если не сложно поправьте в шапке фалов порта оставшееся TOOLKIT: ARM GCC на ARM IAR. Спасибо и с праздником. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 мая, 2020 Опубликовано 9 мая, 2020 · Жалоба 1 hour ago, WHILE said: Одна просьба -не могли бы вы выложить хоть один тестовый пример. Тестовые примеры остались на работе. А сам я нахожусь дома. Я бы сделал их и тут, но у меня нет платы с CM3((( Возможно, на днях я появлюсь на работе, заберу их... Да, был большой азарт портировать ОСь, т.к. намечался проект. Но вот с примерами поступил как-то небрежно, не думал, что они так важны 1 hour ago, WHILE said: TOOLKIT: ARM GCC на ARM IAR. Поправлю! Но, думаю, со всеми остальными проблемами, если таковые вылезут) 1 hour ago, WHILE said: Мне предстоит повозиться с ядром М3 и отпишу с удовольствием. Желаю успехов!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба Добавлен пример для stm32f0discovery. Тут. Естественно его можно запустить и на другом микроконтроллере с микроархитектурой Cortex-M0 (пример для stm32f091rbt6), поправив скрипт линкера, стартап-файл, при необходимости регистры ввода-вывода и настройки среды IAR. Пример не завязан на CMSIS. Несколько регистров ввода-вывода, необходимых для примера, "вбиты" прямо в файле main.cpp. ИМХО, это несколько упрощает разбор примера, не заставляя отвлекаться на другие библиотеки. Также в примере использован "стартап" на Си++ из одного из моих рабочих проектов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 4 августа, 2020 Опубликовано 4 августа, 2020 · Жалоба 1. Пример для stm32f334r8 (плата nucleo-f334r8) добавлен. Тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 5 августа, 2020 Опубликовано 5 августа, 2020 · Жалоба 2. Пример для lpc1768 добавлен (плата от стартеркита). Тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба Спасибо за ваш труд по портированию scmRTOS на IAR. Проверил на отладке под STM-ский Cortex M0. Работает! Но одно но - в ваших примерах у вас выключены варнинги(Project -> Options -> C/C++ compiler -> Diagnostics у вас не стоит галка"Enable remarks". При ее включении даже на вашем маленьком тестовом проекте появляется под 50 варнингов, что по - моему многовато. З.Ы. Авторы оси сидят на GCC - он получается, менее строгий компилятор, чем ЯР? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 29 июля, 2021 Опубликовано 29 июля, 2021 · Жалоба Remarks - это разве Warnings? Это просто замечания, иногда по делу, но чаще на всякий случай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 29 июля, 2021 Опубликовано 29 июля, 2021 · Жалоба 18 hours ago, WHILE said: Спасибо за ваш труд по портированию scmRTOS на IAR. Благодарю!)) 18 hours ago, WHILE said: Но одно но - в ваших примерах у вас выключены варнинги Предупреждения (Warnings) компилятора и ошибки (Errors) нельзя просто так взять и выключить. Предупреждения ещё можно подавить с помощью "прагмы". Но я этого не делаю никогда, наоборот в настройках компилятора добавлен ключ --warnings_are_errors, который превращает все предупреждения в ошибки, чтобы программист даже чуть-чуть не накосячил в проекте) А вот "замечания" (ремарки, remarks) я действительно не использую. Т.к. они вылетают в огромного количестве, и все устранить их трудоёмко. Да я пока и не решил, честно говоря, надо ли) 18 hours ago, WHILE said: З.Ы. Авторы оси сидят на GCC - он получается, менее строгий компилятор, чем ЯР? Насколько помню не менее строгий, а даже наоборот за счёт разных ключей может работать чуть ли ни как анализатор кода. Могу ошибаться, давненько это было) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 27 августа, 2021 Опубликовано 27 августа, 2021 · Жалоба Добавлено расширение watchdog по мотивам данной статьи. Есть примеры для STM32F091, LPC1768 и nucleo-f334. Расширение протестировано пока только на примерах, т.к. реальное приложение, нуждающееся в этом расширении пока просто не готово. Расширение снабжено комментариями на "правильном" английском. Буду рад, если кто-либо испытает неудержимое желание внедрить расширение в свой проект и подскажет, что в нём ещё можно поправить Кратко: задачи, по желанию пользователя, добавляются методом register_process в менеджер собаки. При этом методу указывается ссылка на процесс и максимально-допустимое время таймаута процесса. Оно может быть и больше, чем реальный таймаут железного сторожевика. Процессы можно добавлять не все, а только те, которые хочется. Хотя, я не сторонник такого решения, и в своём реальном проекте я добавлю всё, включая процесс idle. Тем не менее, возможно добавлять только по желанию есть. Задача каждого процесса в течение отведённого для него таймаута, который задаётся в системных тиках таймера ОСРВ, вызвыать метод alive(). Можно это делать так часто, как захочется. Т.е. оконного режима нет (возможно, это задел на перспективу). Если необходимо уснуть надолго, например, в ожидании некого события, которое наступает раз в 1000 лет, то вызывается метод asleep(). После этого менеджер собаки перестаёт учитывать данный процесс (тот, из которого вызыван asleep()) до тех пор, пока процесс не дождётся события и не вызовет метод alive(). Тем не менее, такой вызов alive() только покажет менджеру, что процесс чего-то там должался, и отсчёт таймаута продолжился с того места, на котором остановился перед вывзовом asleep(). Из этого следует, что нужно повторно вызывать alive() уже для сброса таймаута. В расширении предусмотрена некая безопасность: 1. При вызове alive() из незарегистрированного метода будет мгновенная перезагрузка системы. 2. При неких повреждениях управляющих структур мендежера, например, значение таймаута процесса больше, чем значение инициализирующего его, тоже будет перезагрузка. Всё общение с реальным железным псом ведётся через три хука: void wdg_init_user_hook(); // this hook setup needed hardware, internal watchdog, for example void wdg_force_reboot_user_hook( const TPriority pr ); // this hook forces to reboot the system immideately void wdg_feed_user_hook(); // this hook feeds the watchdog Первый хук настраивает собаку, или пины, управляющие ей. Это, если собака внешняя (самая лучшая, кстати). Второй хук позволяет сбросить систему немедленно любым способом: через собаку или через NVIC. Это по желанию пользователя. Одновременно, в качестве аргумента мы получаем приоритет процесса, который не успел вовремя сбросить свой виртуальный сторожевик. Т.к. в scmRTOS все приоритеты уникальные, т.е. нет возможности задать два процесса с одинаковыми приоритетами, то этот аргумент позволит однозначно выявить виновника торжества) Третий хук кормит собаку тем способом, который она предоставляет в конкретном приложении пользователя. Уф, вроде бы всё написал. Если будут вопросы, буду рад этому, т.к. расширение для меня сложноватое, раньше так сам не делал с собакой. Но его большой плюс в том, что оно позволяет контролировать каждую! задачу. З.Ы. Забыл. Для того, чтобы менджер собаки работал, в хуке системного таймера нужно вызывать метод run() самого менджера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться