Перенос ОС Autosar на MCU

Я занимаюсь академическим проектом по переносу Autosar OS на микроконтроллер. После прочтения статей и информации об Autosar, Arctic Core и Arctic Studio у меня возникли вопросы:

  1. Раньше я переносил FreeRTOS на микроконтроллер, и это очень просто, я просто включил некоторые файлы * .h и * .c FreeRTOS, а затем использовал функции FreeRTOS для создания своего приложения на чипе. Могу ли я сделать то же самое с Автосаром? Если возможно, какие файлы я должен включить в свой main.c
  2. Второй вопрос: в FreeRTOS мне нужно использовать только функцию xcreatetask () (это функция FreeRTOS) для установки приоритета задачи, а затем я применил функцию vstarttaskschedule () для запуска задачи в очереди, однако я не вижу таких функций в Автосар ОС. Может ли кто-нибудь сказать мне, какие функции в автосарке имеют такую ​​же функциональность, что и функции, которые я сказал.
  3. Когда я программирую микросхемы Texas Instrument, всегда есть основная функция, которая включает основную программу, которую мы создадим для микросхемы. Однако я не вижу основных функций в примере arctic Core. Как чипы могут запускать программу без основной функции? Пожалуйста, помогите мне ответить на эти вопросы!

person JackABC    schedule 09.04.2015    source источник
comment
Вопросы 1 и 2 выглядят так, как если бы на них лучше всего ответили в документации. Однако ARCCORE требует от вас регистрации, поэтому я не смотрел; вы должны, однако. Что касается вопроса 3, наличие функции main() не имеет ничего общего с микросхемой; это стандартное требование C и C ++, что main() является точкой входа в код; однако некоторые библиотеки ядра и инфраструктуры приложений включают в себя функцию main(), которая, в свою очередь, вызывает альтернативную точку входа пользователя, которую вы должны указать в своем коде.   -  person Clifford    schedule 09.04.2015
comment
Системы Autosar в значительной степени основаны на генерации кода из UML и XML и намеренно навязывают рабочий процесс, основанный на нисходящем проектировании. Так что это очень парадигма, отличная от той, к которой вы привыкли с FreeRTOS. Кроме того, типичные первоначальные затраты на запуск абсолютно огромны по сравнению с традиционной ОСРВ, до такой степени, что я был бы серьезно впечатлен, если бы вы вообще могли что-то сделать с ней в семестровом университетском проекте в качестве разработчика-одиночки.   -  person Brian McFarland    schedule 10.04.2015


Ответы (3)


3, вы не можете видеть основную функцию в ядре ARTIC: AUTOSAR не определяет код запуска. Ожидается, что вы сами напишете основную функцию. Ядро в ОС AUTOSAR инициализируется из модуля ECUM. Если вы хотите загрузить свою ОС, у вас должен быть модуль ECUM. Также у вас должен быть модуль BSWM для запуска таблиц расписания. Вы должны создать правило в BSWM для запуска RTE, и оно запустит вашу таблицу расписания. Вы должны вручную ввести код запуска (инициализация RAM / Register / etc), из которого вы должны вызвать основную функцию, основная функция будет закодирована вручную. Вызов EcuM_init из основной функции. Таким образом ваша ОС загрузится. 2, вы не можете найти функцию для установки приоритета задачи и активации: AUTOSAR не поддерживает динамический приоритет задачи. Вы должны установить все приоритеты в конфигурации. Для запуска задачи вы можете использовать ActivateTask (). Один быстрый трюк для запуска задачи при запуске - установить параметр OsTaskAutostart для одной задачи. Задача, для которой вы установили параметр OsTaskAutostart, будет вызываться сразу после инициализации ядра.

person Omkar    schedule 23.04.2015

  1. Ваш стартовый код будет ориентирован на конкретную цель.
  2. ECUM выполняет часть инициализации для всех модулей программного обеспечения в ECU.
  3. Не забудьте позвонить в ECUM со своего Main.c
  4. ECUM выполняет инициализацию BSWM, драйверов и модулей ПО.
  5. После инициализации RTE в RTE есть часть SchM, которая планирует основные функции каждого модуля.
  6. Основные функции каждого модуля SW известны RTE по файлам BSWMD и SWCD.

Прочтите RTE SWS, ECUM SWS, SYSTEMTemplate SWS для получения дополнительной информации

person DarkKnight    schedule 24.07.2015

Думаю, ваш академический проект уже завершился, однако перенос ОС AUTOSAR на конкретный микроконтроллер не подходит для академического проекта.

Во-первых, из вашего вопроса я не могу сказать, является ли ОС ARCCORE или другой. Во-вторых, исходя из моего опыта работы с FreeRTOS, существует лишь ограниченный объем знаний, применимых к ОС AUTOSAR, а создание задач (2.) - это уровень приложения, а не перенос. В-третьих, большая часть ОС AUTOSAR полагается на специализированные встроенные компиляторы, например GHS или DIAB, за пределами академических кругов.

Я сам не портировал AUTOSAR OS, но предлагаю взглянуть на портированную версию, архитектуру и файловую структуру, систему, а затем процедуры запуска, векторные таблицы, периферийный код и т. Д. Сложность может быть уменьшена при портировании в пределах та же архитектура MCU, скажем, машины Renesas или ARM.

Чтобы ответить на ваш вопрос 3., вы не найдете main () в примерах ARCCORE. main () находится в os_init.c и выглядит так:

extern void EcuM_Init(void);


int main( void )
{
    EcuM_Init();
}

Затем EcuM_Init () [EcuM.c] вызывает InitOS ();

person Stack The User    schedule 13.07.2017