Нужно подобие ОС для Ардуины

Тема в разделе "Микроконтроллеры AVR", создана пользователем Ariadna-on-Line, 9 ноя 2019.

  1. Igor68

    Igor68 Гуру

    Да 3 байта, когда дело касалось перехода.
     
  2. DetSimen

    DetSimen Guest

    в 1993 году, я с помощью i8051 отправил к праотцам керамический балластный резистор ростом с меня. :) Всего из-за одной точки с запятой в тексте. :)
     
  3. Igor68

    Igor68 Гуру

    Понял! Память инструкций 16 бит! Это одно обращение.
     
  4. DetSimen

    DetSimen Guest

    Да, точно. И не только переходы, а еще когда один операнд был непосредственным значением.
     
  5. Igor68

    Igor68 Гуру

    Спасибо! Да про память данных и память кода вроде и до этого многолога (диалога ) был в курсе.
     
  6. DetSimen

    DetSimen Guest

    я знаю. :)
    У 8080 машинный цикл был 4 такта ( и у 8051 тоже). Редко какая инструкция (мошт, только регистр с аккумулятором) выполнялась за 1 машинный цикл (не такт!)
     
  7. Igor68

    Igor68 Гуру

    Что значит байтами и словами... я спросил за сколько обращений извлекается инструкция? Аппаратно разумеется. Я про ARM и THUMB так просто сказал? Инструкция может извлекаться за два обращения (сначала один байт инструкции, потом другой) это когда организация однобайтная. Или одним обращением (сразу 2 байта инструкции). Как ещё спросить?
    Хотя если честно наверное это не важно и не нужно. Шум только один. Почитаю сам коли ни у кого не "на слуху". Интересовался потому как тут крутят такую тему. И было бы здорово как для 51 ядра одним уровнем на ножке (L или H) выбрать внешнюю память кода или внутреннюю. Тогда у ребят точно бы вышло подобие ОС на внешнем статическом ОЗУ, в которое можно было что-то подгружать. Может и виртуальную память смогли реализовать.
     
  8. DetSimen

    DetSimen Guest

    Инструкция, 2 байта, извлекается за 1 такт.
     
  9. DetSimen

    DetSimen Guest

    P.S. Не нерничай. :)
     
  10. NMi

    NMi Нерд

    Мошт и смагли, да толку то? Механизм "виртуализации" подразумевает не "тупое подсовывание" лишней\второй\пятой памяти а механизм её адресации и ЗАЩИТЫ!!! Херле толку от твоей памяти, если хоть на AVR и хоть на STM32 любой процесс (поток) сможет легко "насрать" хоть во флешь, хоть в еепром, не говоря уже об ОЗУ.
    Скажу больше - на некоторых AVR-ах даже фЪюзы можно писАть из кода!!! (ну может они китайские :) )

    Так-шо слушай Деда, он хоть уже хлубоко не пашетЪ, зато ничо нипортитЪ :)
     
  11. Igor68

    Igor68 Гуру

    Во хвост задрал! Ему ещё механизмы защиты подавай! Посмотрите сначала механизм записи во внутреннюю флеш для большинства Cortex м.к. Всё только через "периферийный" внутренний контроллер доступа к этой флешки. Да и ARM7 так же (на примере ADuc7024 давно было надо было калибровочные значения сохранять в старших адресах). И потом чтобы корректно записать хоть 1 байт (а там так же словами 16бит кстати) надо сначала прочитать этот блок (сектор) из флеш в ОЗУ, изменить что надо, стереть этот блок во флеш, и записать изменённое из ОЗУ во флеш. Хотя писать можно и побайтно в некоторых, но стирать надо целый блок(сектор). Впрочем если код будет запускаться в режиме USER то доступ куда не надо не получит... особенно это касается Cortex с его контролем памяти (только SWI/SVN вызовы). В AVR и не думайте на эту тему. Вы без внешней памяти ничего и не сделаете.
    Правда тут есть уважаемый человек который реализовал CP/M-80 в режиме эмуляции процессора I8080. Ну так вот в режиме эмуляции можно сделать практически всё... вопрос только в скорости выполнения. И вопрос с размером памяти кода сразу отпадает. Да и много чего. Кстати упомянутый Друг реализовал ОЗУ (исходя из его слов) на FRAM с последовательным интерфейсом. Только так и выйдет.
    А что касается Деда, то я не заметил разногласий в моих высказываниях.
    И вообще гонор поубавьте, и ведите себя культурно. А за себя прошу прощения, если вдруг что не так сказал... ну или что-то обидное!!!
    С уважением!
     
    DetSimen и ИгорьК нравится это.
  12. NMi

    NMi Нерд

    Начали с дурдуины а закончили СР\М. Ота оно как... :cool:
     
  13. DetSimen

    DetSimen Guest

    Нада в микрочип написать, пусть кольца защиты к 2 кБ памяти прилепют. Минимум, три, для СР/М, драйверов и пользователя.
     
    DIYMan и Igor68 нравится это.
  14. Igor68

    Igor68 Гуру

    Вообще-то CP/M это просто дисковая система и ни о каком разделении нет и вопросов. Хотя я знаю что Вы в курсе этого. А если честно и принципиально думаю ОС для ядра и реальна, но вот реализация на известных устройствах на его основе сомнительна, если конечно это не эмулятор как упомянутый ранее проект. Просто чтение файлов на SD реализовано уже без ос. Ну может кто-то и интерпретатор какой прикрутит... а он что-то будет делать имея доступ к файлам. И память данных на внешнем FRAM соответственно. Только вот чем интерпретатор выгоднее эмулятора чего бы то ни было. В одном случае эмуляция системы команд какого-то ядра при выполнении кода ну может ещё эмуляция и прерываний, в другом случае анализ содержимого каждой строки программы и вызова неких процедур из своих недр. Что там, что там далеко не быстро. Есть правда реализации RTX, а имеют они смысл когда ребята тут и сами всё на прерываниях делают. Да и ограничен этот AVR даже тем, что так просто к счётчику команд простого доступа не предусмотрено. А это напрочь убивает саму идею простого переключения контекста... конечно можно и через стек и по иному. А это удобно с точки зрения реализации? Проще взять иное ядро.
    Это конечно чисто моё мнение. Кто-то может думает иначе.

    Ну вот к примеру
    - по прерыванию таймера выходим в режим SUPERUSER и читаем состояние из стека, что оставлено ещё режимом USER и сохраняем в памяти нашего так сказать кернела
    - читаем данные от другого процеса (ранее было в исполнении) и восстанавливает для него стек и выходим из прерывания с переходом в режим USER
    Это конечно не механизм для реализации потому как в том же Cortex два набора регистров и для USER и для SUPERUSER и тут надо исходя из особенностей. Но вот по нормальному значение адреса возврата это уже со стеком надо работать.
    А выглядит так: ушли в прерывание из одной "функции", а вышли из него уже в другую "функцию". И так циклически. Это очень упрощённо... и чем-то похоже на работу в разных потоках. И стеки для каждого из потоков свои.
    ....
    ....
     
    Последнее редактирование: 25 дек 2019
    DetSimen нравится это.
  15. DetSimen

    DetSimen Guest

    Igor68, ну штош ты такой серьёзный то, я же шучу. :)
    У меня и подпись соотвецтвующая. И справка есть.
     
    Igor68 нравится это.
  16. Igor68

    Igor68 Гуру

    А кто про обиду и ли ещё что? Нет! Это вообще просто мысли вслух... и у меня башка после вчерашнего то же ой-ой!
    Даже наклонить больно.
     
  17. parovoZZ

    parovoZZ Гуру

    калибровочные - можно.
     
  18. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Любопытно, зачем Ардуинная тема пришла именно к многозадачной ОС. Для начала следовало бы "устандартить" подключение внешнего ОЗУ. Вряд ли SPI хорошая идея для оперативки. А без "широкого" ОЗУ нет смысла в теме.
     
    Последнее редактирование: 25 дек 2019
    Igor68 нравится это.
  19. NMi

    NMi Нерд

    ДаТыШо! :eek:
    БирёшЪ для началу,например, датаЩи от 128 меги... и... внимАточно рассматривашЪ порты РАх и РСх ... и... находишЪ там "странное" абазначение, типа AC/AD. Далее, обраЩаш вниманеи на порт PG. Никажеццо странным "второе" обозначение выводов порта? А чЁрточки сверху ничО не напоминаютЪ?
    А "широкое" ОЗУ этт как???
     
  20. ИгорьК

    ИгорьК Оракул Модератор

    На arduino.ru нечто подобное происходит?

    Ишь как вы неестественно, ИСТОВО, стараетесь коверкать речь.
    Предупреждение.
    Попытка поспорить - вылет с сайта.
    Проверять мои слова не советую.
     
    Последнее редактирование: 26 дек 2019
    Ariadna-on-Line, Igor68, DetSimen и 2 другим нравится это.