Многопоточность на AVR, это возможно?

Тема в разделе "Микроконтроллеры AVR", создана пользователем Алексей132, 11 июл 2019.

  1. parovoZZ

    parovoZZ Гуру

    Не поняла: ARM7 сюда как налип? Вроде же спич про AVR/
     
  2. SergeiL

    SergeiL Гуру

    Да реализация, может быть любой.
    Тут можно по разному.
    Я в свое время попал работать в коллектив (из 5 человек), разрабатывающий Многозадачную Операционную Систему Реального Времени для x86 процессора.
    В то время не было никаких защищенных режимов, все было поверх MS-DOS и 8086.
    Нужна была многозадачность, приоритеты, семафоры, обменники, очереди сообщений, мьютексы и прочее, что нужно для многозадачки.
    Потом, в конце 90-ых писали софт для управления производственными процессами.
    Писали под Windows NT 3.51.
    Тут появились и защищенный режим, и разграничение доступа к памяти.
    А RTX дал все прелести RTOS.
    Все прекрасно работало!
     
  3. Igor68

    Igor68 Гуру

    А и понимать не надо. Если берёте ядро, то исходите и его возможностей. Я как-то говорил про AVR32, так оно альтенатива ARM. Вот только ARM был "зачат" сразу 32 бита... и не CORTEX вовсе. А CORTEX был рождён вместе с THUMB2 а не THUMB/ARM. А то что сейчас в малине он 64 бита это дань времени и моды.
    https://ru.wikipedia.org/wiki/ARM_(архитектура)
     
  4. Igor68

    Igor68 Гуру

    про x86 не скажу, но в процессоре ли организовано ограничение к доступе к чужому адресу. В cortex это сделано на уровне "ядра" не туда доступ и сразу abort - прерывание, конечно из режима user. В нём-то и ограничение, т.е. после запуска настройка режима user с диапазоном доступа к адресам. А всё внешнее через SWI для ARM7/9 для CORTEX то же самое, но название другое.
    А вот как в x86 плохо представляю... надо почитать x486, которая в наличии...
     
  5. SergeiL

    SergeiL Гуру

    В линейке x86 первый защищенный режим появился на 286.
    Но реально защищенный режим появился на 386 :)
    Я под cortex не писал, деталей не знаю.
     
  6. SergeiL

    SergeiL Гуру

    Да не было там разграничения доступа, причем никакого. :)
    Там были сегмент и смещение...
     
  7. Igor68

    Igor68 Гуру

    Не думаю, что будете удивлены новым. "Внешний" доступ Вы всё равно делаете через INT из USER, так же как SWI в ARM. Идея едина. Только значимо различие регистра сегментов кода и данных... Ну и делили по пресловутой разрядности в 0xFFFF. Ну это наверное удобно. В ARM пространство линейно-непрерывное. Зато нет сегментных регистров, но интегрировано устройство особых ситуаций доступа к пространству, так что для каждого "процесса" USER надо кроме контекста производить настройку диапазона доступа к адресному пространству. Не думаю, что это более громоздко, чем оперировать сегментами. Но... но упрощено обращение к виртуальной памяти типа swap. Размеры сегментов фиксированы - наверное удобно. Честно сказать в своей практике я не испытывал такой надобности, дабы кернела не делал. И обработку таких ситуаций не применял. Хотя... адрес аборт и коде аборт делал, но не тщательно, а только с целью воссановления.
     
  8. Igor68

    Igor68 Гуру

    Прошу прощения!
    Не думаю, что я про x86 достаточно знаю - ну и не спорю. Потому простите, я с КР580/Z80 пересел потом на PIC16xxx и x86 занимался только почти теоретически, потому тонкостей не знаю. Если не считать простые недолгие опыты на ASM. И потом сразу ARM- понравился он. А вот AVR как-то пропустил, хотя 51-е ядро "щупал" на ASM немного. Си тогда вообще недоступен был. Был только ASM. И взбесило то, что одни и те же инструкции на каждое ядро имели разную мнемонику. Уж и не говорю, что внутренняя организация разная. Вот так вот как-то.
     
  9. DetSimen

    DetSimen Гуру

    Нуууу. Из-за двух даччиков развели демо-гогию.
     
  10. Коллеги все, спасибо, за советы, реализовал через FreeRTOS на atmega2560, все работает (сделал и как советовали, через прерывания, но работать так стал медленее).

    Но в продолжение темы, есть заминка, так как мне, чем быстрее тем лучше, то перешел на 32-битный чип - at91sam3x8e, это уже не совсем AVR, конечно. Но проблема, пару дней гуглю уже, где для него взять файлы FreeRTOS???
    в самой библиотеки нет такого чипа, на гитхабе нету, нигде нет, это значит FreeRTOS не может работать с данным чипом??
     
  11. Igor68

    Igor68 Гуру

    Батенька! Давно бы так! Тут уже у Вас ARM Cortex-M3... со всеми вытекающими. Уверяю будете довольны! Особенно с контрллером прерываний. Всё в шИколаде:)
     
  12. а как быть с FreeRTOS, это возможно?
     
  13. parovoZZ

    parovoZZ Гуру

  14. Igor68

    Igor68 Гуру

    Ну может и AVR32, MIPS, ну или ARM/Cortex. Это выход как-никак. Ведь если на запорожец поставить колёса от мерседеса он оным не станет.
     
  15. я в итогде запустил файл CreateProjectDirectoryStructure (как и описано в ссылке, которую ты скинул), потмо запустил main.c из папки demo для CORTEX_ATSAM3X_Atmel_Studio, но куча ошибок по библиотке freeRTOS, в чем не прав, подскажите пожалуйста