2015-04-09 12 views
1

Я делаю проект академии о портировании Autosar OS на микроконтроллер. После прочтения статьи и информации о AUTOSAR, Арктическом Ядре и Арктическом Studio, у меня есть несколько вопросов:Port Autosar OS to MCU

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

Вопросы 1 и 2 выглядят как наиболее подходящие ответы в [документации] (http://www.arccore.com/resources/user-documentation/). Однако ARCCORE требует, чтобы вы регистрировались, поэтому я не смотрел; вы должны, однако. Для вопроса 3 наличие функции main() 'не имеет ничего общего с чипом; это стандартное требование C и C++, что 'main()' является точкой входа в код; однако некоторые библиотеки фреймворков ядра и приложений включают в себя функцию 'main()' в библиотеке, которая, в свою очередь, вызывает некоторую альтернативную точку входа пользователя, которую вы должны указать в * своем * коде – Clifford

+1

Системы Autosar очень сильно основаны на генерации кода из UML & XML и преднамеренно применяет рабочий процесс, основанный на сверху вниз. Таким образом, это совершенно новая парадигма из того, с чем вы привыкли с FreeRTOS. Также типичная авансовая «стоимость запуска» абсолютно массивная по сравнению с традиционной RTOS, к такому моменту, что я был бы серьезно впечатлен, если бы вы могли сделать что-то вообще с ним в университетском проекте в течение семестра как одинокий разработчик. –

ответ

1

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

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

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

0

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

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

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

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

extern void EcuM_Init(void); 


int main(void) 
{ 
    EcuM_Init(); 
} 

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