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

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

  1. NMi

    NMi Нерд

    Лучше будет ЗАУЧИТЬ секцию RWW из датащей наизусть! Прям чтоб как отче наш, хоть днём, хоть ночью спросил-ответил!
    Примеры там есть хоть на С , хоть на Asm. И комментарии к ним то-же присутствуют.
    Не сочти за сарказм или усмешку с моей стороны, но, вангую, что вскоре могут возникнуть проблемы с WDT!!!
    Советую заранее всё предусмотреть, примеры в датащах то-же есть. Удачи.
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Всем спасибо. Выяснил важные вещи -
    1. Протеус не правильно адресует бутлоадер процессора ATmega328. Адресует так, как будто там только 16Кб памяти, а не 32Кб.
    2. Протеус аварийно завершает симуляцию, если указатель адреса попадает на незапрограммированный участок памяти.
    3. Попытки отлаживать в Протеусе бутлоадер ATmega328 (Arduino UNO) - не получатся из-за названных причин.
    4. Нашел именно то что хотел - бутлоадер с возможностью выбора источника загрузки - USB / SD. Разберусь досканально - отпишусь.
     
    Последнее редактирование: 3 дек 2019
    Daniil нравится это.
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Господа. Вопрос ширпотребно-дизайнерский. Предположим - у вас есть Ардуина. В бутлоадере её заложена возможность самопрошивки, с SD карты например (че-то другого не придумывается). У вас есть SD карта с "компилом" очередной программы (*.bin / *.hex / *.dat и тд.), может не одним, а целой кучей. Естественно на Ардуине должен стоять SD - слот (гнездо). Каким вы видите процесс выбора "компила", какое железо должно непременно стоять, как дать Ардуине "понять", что ее просят программиться и тд. Может смешно, но хотелось бы узнать "мнение народа". Важен минимум. Избыточное будет мешать "самодельщицкой" направленности Ардуин.
    ПС. ...фантастический сюжет - ардуина с механической лапой, приставляет такую же механическую лапу соседке, вытягивает SD из своего слота, вставляет в чужой - и ИХ УЖЕ ДВЕЕЕ. УЖЖЖАААССС.
     
    Последнее редактирование: 4 дек 2019
  4. parovoZZ

    parovoZZ Гуру

    Если и грузить что с SD карты, то это что-то должно быть весьма интересным. Пока не понимаю, чтобы это могло быть.
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Да что угодно. Проги для саморазмножения Ардуин >)))))
     
    Последнее редактирование: 4 дек 2019
  6. asam

    asam Гик

    Понять что надо программировать с SD это если карточка вставлена и на ней есть "метка", что она с прошивками.
    Выбор, если по минимуму, можно записав в файл с заданным именем имя того файла который надо прошивать. Он же может служить меткой.
    Если надо выбирать "вручную", то в минималистичиском варианте, в тот же файл заносится список файлов с прошивками и вибирать с помощью кнопки и 7 разрядного индикатора на TM1637 по номеру в списке.
     
    Последнее редактирование: 5 дек 2019
  7. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Спасибо. Вариант запомнен.
     
  8. Unixon

    Unixon Оракул Модератор

    Если уж заниматься подобным извращением с AVR, то нужна система из двух процессоров, чтобы один был программатором, второй выполнял приложения.
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Это не "наш" метод. "Наш" метод - заставить одного пахать за двоих (за полставки).
     
    parovoZZ нравится это.
  10. NMi

    NMi Нерд

    1. Там и есть 16 к памяти, тока не байт а слов !!!
    2. Всему виной опять непонимание процесса. В качестве примера возьми бут от тиньки 8 или 85 , будет весело.
    3. Причина одна - криворукость. Протеус нИпрИчОм, АДНАЗНАЧНА!
    4. Рад буду для почитать , обязательно.
    :))
     
  11. Igor68

    Igor68 Гуру

    каков размер слова (в байтах) у 8-ми битного ATmega328 ??? Неужели более 1 байта ??? И "выравнивание" адреса потребно... ну кратно размеру слова ???
     
    Последнее редактирование: 22 дек 2019
  12. NMi

    NMi Нерд

    Размер адресного пространства 328-й равен 7fffh, что равно 32768 байт или 16384 слов или 8192 двойных слов :)
    Дальше писАть???
     
  13. Igor68

    Igor68 Гуру

    Простите... похоже я не знал, что память у него 16 битная ну и регистры такие же? И соответственно в один регистр можно уместить адрес перехода (не в регистровую пару, а именно в один регистр). Понимаю что надо применять регистровую пару... и счётчик команд и др. Поделить конечно на слова (кратно 8) можно всё. Но деление на слова имеет ли определение для 8-ми битных систем. Конечно согласен что RISC по определению имеет фиксированный размер, но актуально это сегодня? И в ARM (32 бита) словом считается 4 байта, а двойным словом 8 байт. Хотя в режиме THUMB слово имеет размер 16 бит. Почему так? Каково Ваше мнение? В смысле не принципа работы, а понятий.
    Кстати прошу прощения - счётчик команд не доступен в "чистом" виде, скорее можно сказать про указатель стека (у ARM можно, и даже режим работы сменить)
     
    Последнее редактирование: 23 дек 2019
  14. parovoZZ

    parovoZZ Гуру

    Хватит спорить. Сам Atmel пишет для своих восьмибиток:
     
  15. DetSimen

    DetSimen Guest

    Хватит спорить. Адресация кода - словами (2 байта), адресация ОЗУ - байтами. Чем RISC процессоры и хороши, что у их команда имеет одинаковую длину всегда, без всяких префиксов и дополнений, поэтому они и работают шустрее Интела, даже без конвейера. В моём децтве RISC процессоры назывались "числодробилками".
     
  16. Igor68

    Igor68 Гуру

    Лично я сам и не собирался спорить. Интересно только "словесное" понятие определений. По мне так вообще по барабану потому как не в принципе работы разногласия... потому как "хоть чайником назови но только в печку не ставь". Кстати вопрос, потому как не осведомлён и ранее не интересовался и привык уже к ARM... собственно хочу уточнить про выравнивание: требуется оно в AVR? По примеру: если адрес инструкции (счётчик команд) не кратен размеру слова (как ранее говорил для ARM = 4) будет ли уходить по ошибке в прерывание. Для режима THUMB = 2 и так же уйдёт в прерывание. Для восмибитных (КР580ВМ80А и позже Z80) когда на ASM делал было не важно и длина инструкции имела переменное значение (пример JMP F800 => C3 00 F8) это CISC, тут вроде как RISC по описанию так же важно выравнивание кратно слову или по барабану? Проверить нечем этот самый AVR. Нет под рукой такого симулятора-ассемблера-отладчика... потому как ранее пробовал 18ххВЕ48 там было всё наглядно (а он родственник 51-го ядра). Можно ли инструкцию помещать по нечётному адресу в памяти(когда кратно 1 но не 2)? Не будет уход по ошибке адреса?
    Спасибо!
     
  17. DetSimen

    DetSimen Guest

    у AVR такова не бывает.
     
    Igor68 нравится это.
  18. DetSimen

    DetSimen Guest

    51 ядро (на самом деле i8035) это не настоящий RISC, а обрезаный 8080. там были команды и 1 и 2 байта длиной.
     
    Igor68 нравится это.
  19. Igor68

    Igor68 Гуру

    Вот это и хотел услышать! Только Вы сказали раньше. Потому как 8-ми битными RISC и не осведомлялся и просил уточнения. Значит инструкции 16 бит... может ещё и память 16 бит... ну что бы следующую инструкцию извлекать за одно обращение. А то в устройстве с ARM устроили память 16 бит а регистры 32 бита. Оно нормально когда режим THUMB там и инструкции 16 бит, но вот стервец когда уходит в любое прерывание переходит в режим ARM уже с 32 битными инструкциями которые извлекаются за два обращения к 16 битной памяти. Ох и надо его заменить на такой же чип но не с ядром ARM7TDMI а Cortex, но с такой же периферией.
     
  20. DetSimen

    DetSimen Guest

    Еще раз. ОЗУ адресуется байтами, выборка инструкций - словами.