Здравствуйте!
Хотел открыть новую тему по методам работы с RTOS, в которой можно было бы делиться опытом реализации тех или иных функций с привязкой к конкретной оси.
И первый вопрос будет такой:
как грамотно работать с интенсивно используемыми разделяемыми ресурсами?
Сам я только осваиваю это направление, поэтому и хотел бы начать с конкретной задачи, над которой сейчас работаю.
Исходные данные:
1. ОС – tnkernel
2. Процессор stm32f103z
Задача следующая:
1. процессор выводит информацию на графический дисплей(со встроенным контроллером) 640х480, также читает из памяти аудиоданные, которые потом отсылает на микросхему аудио усилителя по i2s.
2. И память и жки висят на одной параллельной шине, и работа с ними ведется посредством fsmc блока stm32f103z. Т.е. и там и там нужно работать с большими массивами. Как сделать так, чтобы работа с жки не сказывалась на аудио и наоборот.
3. Кроме этого оказалось, что fsmc мешает блоку i2c(не i2s !), через который идут команды на аудио усилитель. Это такая аппаратная проблема stm32 и всплыла она уже после разводки платы. Для нормальной работы i2c требуется отключать тактирование fsmc блока.
Как видно, разделяемый ресурс здесь блок работы с параллельной шиной fsmc.
Интересно мнение как приверженцев tnkernel, так и приверженцев других rtos.