-
Chaosorg
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 312
-
Спасибо получено: 18
-
-
-
|
Для тех случаев, когда CPU с программой в ОЗУ (или ПЗУ) эффективнее, чем реализация алгоритма в логических элементах и нет нужды в высокой скорости обработки потока данных и/или маленьком времени отклика, а свободное место в ПЛИС Марсохода 2 еще есть, то какое микроконтроллерное ядро можете порекомендовать?
Хочется, чтобы под него было С/С++. Ну, а с учетом общего "хоббисткого" :) и образовательного стиля проекта марсоход, идеалом была бы реализация Arduino Uno или Nano внутри Марсохода с bootloader-ом и загрузкой скетчей из родной для Arduino среды. Библиотек написано там тьма. Симбиоз с ПЛИС был бы очень интересен. Соединять проводками реальную Arduino с Марсоходом очень не хочется.
Если такого проекта все-таки нет (я нашел максимум AVR ядро на opencores), то какое готовое ядро самое маленькое? Вдруг это не AVR, а что-то еще меньше?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Chaosorg
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 312
-
Спасибо получено: 18
-
-
-
|
Это подошло бы, если бы существовал способ сообщить высокоуровневому компилятору о подмножестве реализованных в железе команд, чтобы он не пользовался всей системой команд AVR, т.е. если была бы какая-то официально поддерживаемая архитектура. Типа simpleAVR :) А так все это работает благодаря дисциплине программиста, который сознательно избегает неподдерживаемых команд. Ведь там все на ассемблере и библиотек на Си не подключить :(
Пока мне удалось найти
papilio.cc
где-то в глубине использующий
opencores.org/project,avr_core
Это, по сути, как раз то, чего мне хотелось в отношении Arduino, но смущает то, что они модифицируют родную среду. Я пока не разобрался насколько сильно они вмешиваются.
вот если бы посмотреть какую-то сводную таблицу размеров разных процессоров в LE.
А так пока только руки чешутся сделать в ПЛИС свой Forth процессор. Этот гибрид языка программирования, операционной системы и иногда даже аппаратной платформы является абсолютным чемпионом по скорости развертывания до полноценной системы и по эффективности во многих смыслах. Там есть словарь и программа не может отличить какие команды реализованы в железе, а какие эмулируются программно.
По аналогии с этим у меня даже появилась идея создать компактное процессорное ядро, похожее на ядро AVR с этого сайта, но вырабатывающее немаскируемое прерывание при встрече незнакомой команды и исполняющее за счет этого программную эмуляцию недостающих команд.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от nckm.
|
-
Chaosorg
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 312
-
Спасибо получено: 18
-
-
-
|
... еще я обнаружил для себя нормальное название понятия, имеющего отношение к последней идее - про эмуляцию аппаратно нереализованных команд через эмулирующие микропрограммы - автор языка Forth (изобретаю велосипед в том же направлении, видимо :) ) сформулировал понятие MISC (minimal instruction set computer - компьютер с минимальным набором команд).
это действительно может родить процессор, пригодный для ситуаций, когда вся память ПЛИС проектом не используется, зато логические элементы в дефиците.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Самое громоздкое в совместимом с чем-либо софт-процессоре - не ядро, а точная эмуляция периферии, без этого нельзя будет использовать готовые библиотеки и тп.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
А если делать полностью свое ядро, то на простое 32х-разрядное хватит 300..400 ЛЕ (~10 ЛЕ/разряд).
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Chaosorg
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 312
-
Спасибо получено: 18
-
-
-
|
Leka пишет: Самое громоздкое в совместимом с чем-либо софт-процессоре - не ядро, а точная эмуляция периферии, без этого нельзя будет использовать готовые библиотеки и тп.
Да Вы правы и наверное из-за того, что у Ардуино назначение выводов настраиваемое, ведь оно не микропроцессор, а микроконтроллер. Хорошо, конечно, что есть проекты повторившие даже это, но ведь можно и не повторять всю периферию - получится процессор, ценный сам по себе, а периферию можно подсоединять только ту, что нужно. Для цифровых проектов нужны обычные порты. PWM и аналоговые входы сложнее, согласен. Но ведь если процессорное ядро живет внутри проекта для ПЛИС, то логично предположить, что на периферию Вы уже LE потратили, так как ее выгоднее реализовывать аппаратно. Т.е. Ваши аналоговые узлы УЖЕ реализованы и наверняка представлены каким-то регистром, который может быть портом для процессорного ядра. Лишний функционал можно игнорировать, библиотеки этого не заметят. Из ардуиновских проектов можно просто убрать участок инициализации выводов и задать их соответствие портам жестко.
Возможно я вообще зря отвлекся на Arduinо, позарившись на их библиотеки. Первоначальный вопрос был про минимальное ядро, для которого есть Си.
Leka пишет: А если делать полностью свое ядро, то на простое 32х-разрядное хватит 300..400 ЛЕ (~10 ЛЕ/разряд).
А как можно оценивать размер ядра не ставя его в зависимость от размера системы команд?
Если окажется, что ядра с хорошими toolchain-ами громоздки и про Си приходится забыть, то я подумал, что можно все-таки сделать стековый процессор простой и сделать так, чтобы коды его команд совпали с кодами букв или знаков напоминающих смысл команд. Тогда получится, что процессор будет аппаратно интерпретировать читаемый человеком код и программы можно будет писать прямо в квартусе, редактируя текстовый файл инициализации памяти. Как brainfuck только с человеческим направлением чтения построчно "слева направо сверху вниз" и операцией перехода на заданный порядковым номером символ. Но это, конечно, крайний вариант.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.141 секунд