Перейти к содержанию

core5277 операционка на ассемблере для AVR


w5277c

Рекомендуемые сообщения

Здравствуйте.

Возможно этот проект будет кому-то интересен.
https://github.com/w5277c/core5277

Операционная система для микроконтроллеров Atmel серии ATmega и частично для ATtiny, разработана на ассемблере(AVRA).

На данный момент разрабатывается с поддержкой ATtiny85,ATmega8/88/16/168/328,AT90CAN32.
Также в проект включены ATtiny13A,ATtiny45 и прочие в будущем, но с сильно ограниченным функционалом, так как для среднестатистического функционала необходимо около 4-8КБ FLASH.

Благодаря унифицированной прослойки в виде процедур ядра и драйверов достигается независимость кода от конкретного железа(по большему счету, и да, что в свою очередь приводит к дополнительному потреблению ресурсов МК) и заметно уменьшает объем кода верхнего уровня.
Я переносил свои проекты в 7-12КБ FLASH между чипами ATmega8,88,16,328 буквально изменяя только несколько строк кода.

Ассемблер выбран не ради максимальной экономии ресурсов(хотя это свойство в проекте крайне полезно), а попросту по причине эстетического удовольствия.

Проект предлагает легкость разработки прошивок благодаря наработанному функционалу операционной системы.
Позволяет отказаться от ненужных высокоуровневых прослоек для МК типа Си и влияния компиляторов.

Данный проект я использую в своих наработках - прошивки конечного железа и шлюзов для автоматизации(проект http://5277.ru)

Операционная система может быть запущена в нескольких режимах:

TS_MODE_NO - простое переключение, механизмы ядра для переключения задач отсутствуют
TS_MODE_EVENT - кооперативная
TS_MODE_TIME - вытесняющая многозадачность

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

Поддержка программных таймеров, высокочастотного таймера отсчета пауз и отдельного быстрого таймера, что позволяет обеспечить независимость от конкретного железа.
Несколько реализаций UART, аппаратная, программная, программная быстрая, и два типа логирования.
Реализация BEEP'ера, датчиков температуры и влажности, SD карты и прочее.
Динамическое выделение памяти, программное переопределение векторов прерываний, механизмы ввода/вывода c буферизацией на базе UART 230400 8N1(для 16Mhz), наличие различных процедур математики, конвертирования, работы со строками и прочее.

Планы на поддержку символьных и LED дисплеев с учетом унифицированной графической прослойки, своя легковесная файловая система, эмулятор, поддержка контроллеров VGA и MIDI/MP3/lossless и прочее.

Проект находится в ранней стадии разработки, но позволяет автору создавать сложные по функционалу прошивки для своих устройств.

 

По поводу таймингов при переключении задачи:

Использовал ATmega328p на 16MHz, созданы 2 задачи с бесконечным циклом(т.е. в стеке только регистры).
При вытесняющей и кооперативной многозадачности расходуется  80 микросекунд
Разница есть, в тактах, но при 10-20 задач может быть в 3-5 микросекунд в вытесняющем больше.
Замер выполнен между началом работы диспетчера и переходом на код задачи.
*Во время работы диспетчера прерывания разрешены.

Более заметная разница в используемом FLASH'е
Целиком проект: вытесняющий - 2302 байта, кооперативный - 2054 байта.

 

 

Хочу показать пример реальной задачи-таймера(периодическое выполнение с заданным интервалом времени) из моего проекта по автоматизации:
 

;-----------------------------------------------------------------------------------------------------------------------
;Владельцем данного исходного кода является Удовиченко Константин Александрович, емайл:w5277c@gmail.com,
;по всем правовым вопросам обращайтесь на email.
;-----------------------------------------------------------------------------------------------------------------------
;02.06.2021  w5277c@gmail.com         Начало
;17.08.2021  w5277c@gmail.com         Багфикс
;-----------------------------------------------------------------------------------------------------------------------
   .include "./math/sdnf_sub.inc"
   .include "./math/sdnf_cp.inc"

;--------------------------------------------------------
TH_TASK_INIT:
   MCALL C5_READY
;--------------------------------------------------------
TH_TASK_LOOP:

   LDI ACCUM,ACT_LED_PORT
   MCALL PORT_SET_HI
   LDI TEMP,PID_DHT_DRV
   MCALL C5_EXEC
   LDI ACCUM,ACT_LED_PORT
   MCALL PORT_SET_LO

   CPI TEMP,DRV_DHT_RESULT_OK
   BRNE TH_TASK__ERROR

   MCALL C5_DISPATCHER_LOCK
   STS C5_BUFFER+DATA_OFFSET+DATA_TEMP,TEMP_H
   STS C5_BUFFER+DATA_OFFSET+DATA_TEMP_F,TEMP_L
   STS C5_BUFFER+DATA_OFFSET+DATA_HUM,TEMP_EH
   STS C5_BUFFER+DATA_OFFSET+DATA_HUM_F,TEMP_EL
   MCALL C5_DISPATCHER_UNLOCK

   LDI FLAGS,0x00
   ;Если dT >= 1
   LDS XH,C5_BUFFER+VARS_OFFSET+VAR_LAST_TEMP
   LDS XL,C5_BUFFER+VARS_OFFSET+VAR_LAST_TEMP_F
   CPI XL,0xff
   BREQ TH_TASK__SET_LAST_VALUES
   MOV ZH,TEMP_H
   MOV ZL,TEMP_L
   MCALL SDNF_SUB
   ANDI XL,0x7f
   LDI_Z 0x0100
   MCALL SDNF_CP
   BRCS PC+0x02
   LDI FLAGS,0x01
   ;Если dH >= 3
   LDS XH,C5_BUFFER+VARS_OFFSET+VAR_LAST_HUM
   LDS XL,C5_BUFFER+VARS_OFFSET+VAR_LAST_HUM_F
   CPI XL,0xff
   BREQ TH_TASK__SET_LAST_VALUES
   MOV ZH,TEMP_EH
   MOV ZL,TEMP_EL
   MCALL SDNF_SUB
   ANDI XL,0x7f
   LDI_Z 0x0300
   MCALL SDNF_CP
   BRCS PC+0x02
   LDI FLAGS,0x01

   CPI FLAGS,0x00
   BREQ TH_TASK_END
TH_TASK__SET_LAST_VALUES:
   STS C5_BUFFER+VARS_OFFSET+VAR_LAST_TEMP,TEMP_H
   STS C5_BUFFER+VARS_OFFSET+VAR_LAST_TEMP_F,TEMP_L
   STS C5_BUFFER+VARS_OFFSET+VAR_LAST_HUM,TEMP_EH
   STS C5_BUFFER+VARS_OFFSET+VAR_LAST_HUM_F,TEMP_EL
   LDI ACCUM,HISTORY_TYPE_EVENT|0x40
   LDI_X C5_BUFFER+DATA_OFFSET+DATA_TEMP
   MCALL HISTORY_ADD_RECORD
   RJMP TH_TASK_END
TH_TASK__ERROR:
TH_TASK_END:
   MCALL C5_SUSPEND
   RJMP TH_TASK_LOOP
;--------------------------------------------------------

 

flowchart.svg

Ссылка на комментарий
Поделиться на другие сайты

Таки да . пока компораторы  в продаже есть и  феячить программно компоратор  пока смысла не вижу  :umnik2:

У меня есть мысль , и я её думаю ...  

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

24 минуты назад, BARS_ сказал:

ОС для камня с мизером ПЗУ и ОЗУ, да еще и с дорогущим комплектом для отладки? А зачем? 

Ничего не понятно, о чем Вы?

О каком компараторе речь?  И о каком 'дорогущим комплектом для отладки'?

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

О том, что нафиг для такого слабого по ресурсам камня целая ОС? Две задачи крутить? А что непонятного с комплектом для отладки? Или JTAG программеры для AVR резко подешевели?

 

P.S.

Про компаратор сам ничего не понял.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

15 минут назад, BARS_ сказал:

О том, что нафиг для такого слабого по ресурсам камня целая ОС? Две задачи крутить? А что непонятного с комплектом для отладки? Или JTAG программеры для AVR резко подешевели?

 

P.S.

Про компаратор сам ничего не понял.

Основное - это хобби.

В этом и удовольствие сделать ОС для слабого МК.

Можно больше задачек крутить - была бы необходимость.

RTOS ведь существует на AVR, для кого-то ведь нужна.

Отладка да, согласен, но именно для этого делаю расширенное логирование, чтобы можно было работать без отладчика.

 

Ну и вообще, мысль не только в ядре, а в утилитах, т.е. в наборе полезных процедур и различных драйверов.

Т.е .по сути сделать окружение для разработки прошивки на асме для AVR.

 

28 минут назад, Нэцкэ сказал:

Таки да . пока компораторы  в продаже есть и  феячить программно компоратор  пока смысла не вижу  :umnik2:

Компаратор? Не понимаю.

Изменено пользователем w5277c
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...