Easyelectronics.ru

Электроника для всех
Текущее время: 17 май 2022, 19:40

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 18:32 
Только пришел

Зарегистрирован: 27 окт 2021, 17:59
Сообщения: 26
Добрый день, коллеги.

Во встроенных системах не новичок, после довольно большого перерыва решил восстановить навыки, выбор пал на STM32.
Если уже было или вопрос не в той ветке, дайте знать.

Простые задачи типа "лампочки-кнопочки" и "Hello Word!" через printf в отладку в Keil освоил.
Прочел Carmine Noviello - Mastering STM32 - 2018, периферии и прерываний конечно в STM32 богато, но ничего страшного и необычного там не увидел, поэтому решил попробовать собрать "лампочки-кнопочки" с FreeRTOS под Keil, но вот незадача, не получается.

Если пытаюсь добавить FreeRTOS тестовому проекту, то вылетает на этапе линковки с сообщением об ошибке FIRST/LAST.
Лезть в дебри и разбираться, "как оно линкуется" пока выходит за рамки задачи и моих знаний.

К проекту, созданному с нуля средствами Keil с пустым main.c вида:
int main (void){
while(1);
}
FreeRTOS средствами Keil добавляется и компилируется, но очевидно, что без HAL и корректной инициализации периферии работать не будет.

Посему вопрос, существует где-то описание step-by-step, как под Keil создать и собрать проект типа "лампочки-кнопочки" под FreeRTOS с использованием HAL?
Варианты копировать файлы FreeRTOS "руками" или под Eclipse/CubeIDE/Atollic не интересны, с Keil знаком уже более 25 лет, привычки менять не хотелось бы, тем более, что пакет хуже точно не стал!
Понимаю, что где-то в последовательности моих действий есть ошибка, но где?

Судя по тому, что в нескольких примерах встретил предложение "а скопируйте FreeRTOS руками и при этом выкиньте не нужное" и "в случае FreeRTOS мы Keil не будем использовать", есть какой-то секрет. :)

Для экспериментов использую Nucleo на STM32F411RE, думаю, это не принципиально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 20:29 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2021, 21:02
Сообщения: 1174
Для FreeRTOS не нужен HAL. Операционная система не использует никаких ресурсов из периферии МК, а её аппаратно-зависимый уровень написан на ассемблере.
Зайдите на https://www.freertos.org/FreeRTOS-quick ... guide.html, почитайте материалы. Оттудава же скачайте дистрибутив FreeRTOS.
Создайте проект в Кейле с выбранным МК. Скомпилируйте. Получилось? Тогда в папку FreeRTOS в проекте скопируйте из дистрибутива содержимое папок \Source\include и \Source\portable\RVDS\ARM_CM4F, а так же из папки \Source\portable\MemMang скопируйте один из файлов в соответствии с моделью памяти. Создайте файл FreeRTOSConfig.h в папке FreeRTOS и скопируйте в него то, что написано на https://www.freertos.org/a00110.html
Теперь пропишите в Кейле пути до этих папок, в которых находятся .h-файлы. Попробуйте скомпилировать. Если всё сделали верно, то скомпилируется.

Цитата:
FreeRTOS средствами Keil добавляется и компилируется,

Тогда вероятно проблема в использовании непосредственно самой FreeRTOS. Почитайте мануал по ней по вышеприведенным ссылкам. Так же найдите книжку автор Курниц, FreeRTOS

_________________
СМЕРТЬ БАЙДЕНУ!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 21:06 
Только пришел

Зарегистрирован: 27 окт 2021, 17:59
Сообщения: 26
Спасибо, но я не сторонник "дурной работы" в рукопашную.
Нашел вот такое видео, возможно еще кому-то поможет: https://www.youtube.com/watch?v=Ds1xcyn-vEU
Завтра проверю, вроде так все понятно.

То есть вы хотите сказать, что SysTick или другой базовый таймер FreeRTOS сама инициализирует на Асме в аппаратно-зависимой части,
и созданные задачи будут "тикать" без всякого HAL, если я даже тактирование ядра не настрою?

Начинал читать подборку статей Курница, но без возможности "пощупать" это не то.
Теория, конечно хорошо, но практику ничто не заменит, учитывая, что "затыки" случатся обычно на простых вещах, как эта моя тема.
Да и двигаться лучше постепенно, от простого к сложному.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 21:35 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2021, 21:02
Сообщения: 1174
Да, SysTick ядра Cortex запускает сама FreeRTOS. Функция vPortSetupTimerInterrupt() в аппаратно-зависимом файле port.c, вызывается при запуске планировщика vTaskStartScheduler(). Адреса регистров систика определены напрямую в числовом виде, не используя исходники третьих лиц.
Тактирование МК настраивать даже не обязательно - если ничего там не менять, МК будет запущен на частоте осциллятора HSI, которая для F411 составляет 16 МГц. Для RTOS этого достаточно.
И надо понимать, что FreeRTOS - операционка, портируемая на микроконтроллеры разных производителей, поэтому у нее нет никакой привязки к ST HAL.

_________________
СМЕРТЬ БАЙДЕНУ!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 22:26 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2325
1. Пример посмотреть
2. Взять CubeMX и за 2 минуты сделать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать простой проект Keil+FreeRTOS+HAL
СообщениеДобавлено: 27 окт 2021, 22:49 
Только пришел

Зарегистрирован: 27 окт 2021, 17:59
Сообщения: 26
x893 писал(а):
1. Пример посмотреть
2. Взять CubeMX и за 2 минуты сделать.


Да собственно, уже сделал, решил не откладывать на завтра.
Диод мыргает, printf счетчик повторов выводит.

Справедливости ради, ссылку на пример я и прислал. :)

Всем спасибо, для меня вопрос исчерпан.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB