ОС реального времени от любителя

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Решил я написать ос hard real time для avr atmega. Начальная цель была проста-научиться писать ос для мк. Но, как всегда хочеться чего-нибудь большего. Хотелось бы извлечь какую-нибудь материальную выгоду. На данном этапе написана минимальная часть ядра для управления вводом-выводом(клавиатура, символьный экран), но также будут: многозадачность на три процесса(один из которых-ядро), но с отсутствием приоритетности(ведь это же hard time). Итак, нужна ли миру очередная маленькая и быстрая НЕ переносимая ос для 8бит-avr? Я видел описание на некоторые stm32, они, конечно красавцы.Сильно ли падает ли сейчас спрос на avr? Насколько популярны atmega164pa/324pa/644pa относительно других atmega (именно с ними сейчас совместимо ядро)? В любом случае она будет дописана до какого-то логического конца и , возможно, портирована на другие 8-битные семейства. Я хотел бы пообщаться с опытным в этом деле собеседником. Если необходимо, могу привести фрагмент (но только фрагмент кода) (это чистый asm, но хорошим стилем). А также я нуждаюсь в помощнике (не самому же ос писать?!).
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Управление клавиатурой и экраном - это не ОС. ОС должна заниматься совершенно другим делом, а периферией - драйвера.
igor_muravyov писал(а):не самому же ос писать?!
Интересное заявление :) Вы же сами её предлагаете. Тем более, она, судя по Вашим словам, уже начата.
Или Вы ищите человека, который Вам её напишет, а Вы будете извлекать из этого какую-нибудь материальную выгоду ? :)
Реклама
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

igor_muravyov писал(а):не самому же ос писать?!
Я имел ввиду, что у меня еще нет в этом опыта и ведь одна голова-хорошо, а две - лучше. По поводу драйверов: я понимаю, что драйвера необходимы когда речь идет о куче разной периферии. Но разве не ядро осуществляет базовое управление вводом выводом в ОС? А в некоторых ОС ядро только этим и занимается(тогда это микроядро) в случае, когда есть какой-то стандартный набор периферии.Вообще, если я не ошибаюсь то в Linux, Windows драйвера считаются частью ядра. А я пишу очень миниатюрную штуку для МК с заранее известной внутренней и внешней периферией, целью которой будет упростить связь выполняемой пользовательской программы и самого пользователя и переключения между процессами(таймер, все дела). Я думаю, вы согласитесь: какие уже там драйвера, если имеется 16кб программной памяти. Тут нужно также учесть, что драйвер-это отдельный процесс, для него еще нужно добавить часть стека и вообще памяти данных из 512б имеющихся?!(речь идет об atmega164p).



Поэтому есть только два способа управления периферией: либо с помощью ядра, либо - пользовательской программой.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

igor_muravyov писал(а):Но разве не ядро осуществляет базовое управление вводом выводом в ОС?
Базовое - возможно, да. И то, ей (ОСи) нужно всего-лишь знать, что существует некое устройство, чтобы она могла взаимодействовать с ним. А всё управление устройством, интерфейс, протокол, ... реализуется драйвером, с понимающими ОСью функциями.
Представьте, если юзер захочет сменить дисплей на свой, а к Вашей ОСи уже привязан какой-то другой. Что ему делать ?
Или Вы хотите изобрести очередную ардуину с неизменяемой периферией (дисплей, клава, ...) и написать для неё совт, с плюшками (пользовательскими функциями, каллбеками, ...), облегчающими юзерам работу с ней ? Тогда непонятно, к чему тут ОСь. Ось должна заниматься распределением времени между задачами (потоками, программами, или как их там ещё можно назвать ...), и к обработке всякой подключенной к процу периферии никакого отношения не должна иметь. ИМХО, естественно.
В любом случае, если Вы собрались это всё делать, так сказать, в целях повышения образованности, то это не может не радовать. Всё, что Вы сделаете, будет во благо Вашему бесценному опыту :)

Кстати, к слову. Слово "драйвер" не несёт никакой информации о его объёме :)
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Ха, вы почти правильно меня поняли, но я вам гарантирую, это устройство, слишком отдаленно напоминающее ардуино, все же будет иметь ОС РВ, управляющую несколькими процессами и частично находящуюся в bootloader разделе, и будет представлять собой что-то типа миниатюрного компьютера, с одной стороны-игрушку, с другой- (возможно) очень надежную штуку, которую можно применять там, где требуются низкие стоимость и потребление, реальное время выполнения, опрос с клавы и вывод на примитивный экран. Но я вначале темы задал несколько вопросов, на которые все же хотел бы услышать ответ.
Реклама
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Сообщение Пока_без_кота »

Выложите пожалуйста фрагмент Вашего кода. Желательно что-то из разряда "как разгребаются задачи в основном цикле".
Реклама
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Пока_без_кота писал(а):Выложите пожалуйста фрагмент Вашего кода. Желательно что-то из разряда "как разгребаются задачи в основном цикле".
Разгреб предназначен для трех задач:(пока этот фрагмент кода не отлажен как следует, я отлаживаю по частям) Фрагмент кода создает для каждой задачи отдельное стековое пространство, сохраняет все РОН задачи и SREG в ее же стеке, а затем, при переходе на другую задачу, извлекает ее регистры(надписи KERNEL/1program/2program говорят о том , какая задача запустится)
Спойлерtimer2_ovf: push r31;;KERNEL:_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
push r30
push r29
push r28
ldi r31,high(spl_compb)
ldi r30,low(spl_compb)
ldi r29,high(spl_kernel)
ldi r28,low(spl_kernel)
rjmp multitask
timer2_compa: push r31;;1;;program;;;;;;;;;;;;;;;;
push r30
push r29
push r28
ldi r31,high(spl_kernel)
ldi r30,low(spl_kernel)
ldi r29,high(spl_compa)
ldi r28,low(spl_compa)
rjmp multitask
timer2_compb: push r31;;;2;;;program;;;;;;;;;;;;;;;
push r30
push r29
push r28
ldi r31,high(spl_compa)
ldi r30,low(spl_compa)
ldi r29,high(spl_compb)
ldi r28,low(spl_compb)
multitask: push r27;-|
push r26; |
push r25; |===============> Save program registers data to program stack
push r24; |
push r23; |
push r22; |
push r21; |
push r20; |
push r19; |
push r18; |
push r17; |
push r16; |
push r15; |
push r14; |
push r13; |
push r12; |
push r11; |
push r10; |
push r9 ; |
push r8 ; |
push r7 ; |
push r6 ; |
push r5 ; |
push r4 ; |
push r3 ; |
push r2 ; |r31:r30:: store sp to
push r1 ; |r29:r28:: load sp from
push r0 ;_|r27: buffer
in r27,sreg
push r27
in r27,spl
st Z+,r27
in r27,sph
st Z,r27
ld r27,Y+
out spl,r27
ld r27,Y
out sph,r27
pop r27
out sreg,r27
pop r0
pop r1
pop r2
pop r3
pop r4
pop r5
pop r6
pop r7
pop r8
pop r9
pop r10
pop r11
pop r12
pop r13
pop r14
pop r15
pop r16
pop r17
pop r18
pop r19
pop r20
pop r21
pop r22
pop r23
pop r24
pop r25
pop r26
pop r27
pop r28
pop r29
pop r30
pop r31
reti
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

будет ли ваша ОС иметь преимущества перед OSA http://www.pic24.ru/doku.php/osa/ref/intro ? если да, то какие (жесткое "реальное время" пока не выглядит решающим аргументом).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Уххххх... ещё и на АСМе...
Был у меня как то такой же порыв. Помню, помню... :)))
Только для младших PIC'ов - http://forum.chipmk.ru/index.php/topic/ ... t__p__3717
Дня 3-4 я себе ломал мозг, потом забил на это всё и пошёл заниматься полезными делами :)))
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Сообщение Пока_без_кота »

Аlex писал(а):... Был у меня как то такой же порыв. Помню, помню... :)))
Только для младших PIC'ов...
Спасибо большое за ссылку. Уже написал простой диспетчер без приоритетов под MCS-51. Мигает одновременно 8 светодиодами, каждый со своей частотой и еще 80 % времени МК простаивает (хотя это смотря с какой частотой мигать :))) )
Сейчас вот взялся для 16 пиков такое-же соорудить, думаю что-то почерпнуть из Вашей наработки.
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

ARV писал(а):будет ли ваша ОС иметь преимущества перед OSA http://www.pic24.ru/doku.php/osa/ref/intro ? если да, то какие (жесткое "реальное время" пока не выглядит решающим аргументом).
Единственное преимущество, которое я сейчас вижу - это скорость. Пока я запускал только ядро уже со встроенным "драйвером" . На частоте ~10кгц вполне справляется с i/o , думаю , с учетом задач будет прекрасно себя чувствовать на знаменитом 32768гц. Глобальный недостаток же (спасибо асму и отсутствию хоть какого-то стандарта в машинных командах и регистрах i/o AVR)моей ОС кроется в полнейшем отсутствии кросплатформенности. Даже для atmega16a ее придется переделывать. Второй недостаток - совместимость только с определенным набором периферии (она уже вшита в ядро). Возможно будет и второе преимущество - надежность. Как вы думаете , будет ли кто-то покупать такую ОС даже меньше чем за 1$ ? Или может ее лучше сделать open-source? Все таки деньги нужны очень.
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Аlex писал(а): Дня 3-4 я себе ломал мозг, потом забил на это всё и пошёл заниматься полезными делами :)))
Я думаю, для меня это не закончится, если постараться, ведь разработчики ОС тоже нужны?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

igor_muravyov писал(а):Даже для atmega16a ее придется переделывать
igor_muravyov писал(а):может ее лучше сделать open-source?
имхо, не надо. вообще не надо.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Думаю, что не будет никто. Разве что ради прикола переведёт 1 бакс :)
Вряд ли Вы "переплюните" по функциональности уже имеющие ОСи. Ну выиграете Вы по скорости немного (дай бог 5-10%), зато гемору с ней будет выше крыши.
Скорость и объёмы памяти сейчас - фигня. Никто на них уже особо внимание не обращает, не хватает - впиндюрили камушек пожирнее и дальше писать...
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Аlex писал(а):Думаю, что не будет никто. Разве что ради прикола переведёт 1 бакс :)
Хорошо, тогда еще один вопрос: может ли человек без опыта работы(школьник с половиной высшего образования) зарабатывать программируя для любых МК на любом из asm/C/C++ языков работая удаленно теоретически?
Последний раз редактировалось igor_muravyov Пн июл 25, 2016 20:25:24, всего редактировалось 1 раз.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Конечно может.
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Аlex писал(а):Конечно может.
Вау , вы случайно не знаете имена компаний, которые меня могут допустить к работе?
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Нет, не знаю :)
Да я и Вас то не знаю, чтобы знать, допустят Вас к работе или нет :)
Родился
Сообщения: 12
Зарегистрирован: Ср янв 06, 2016 16:38:29
Откуда: Kharkov,Ukraine

Сообщение igor_muravyov »

Ладно, спасибо.
Ответить

Вернуться в «AVR»