Программный код на внешней EEPROM | Интерпретируемый C
- Войдите на сайт для отправки комментариев
Чт, 01/09/2022 - 19:13
Доброго дня всем. Такой вопрос... В университете по одному из предметов проект на Ардуино. Нужно сделать мини-консоль с несколькими играми. По сути, не зубодробительно сложная задача, однако у Ардуино той всего толи 16, толи 32кб памяти. Маловато немного. Можно ли как-нибудь использовать внешний чип памяти для записи программного кода для последующего его выполнения?
Если нет, может кто подсказать что-то вроде библиотеки интерпретируемого языка для Ардуино? Я уже видел это: https://n.mtng.org/ele/arduino/iarduino.html , но iArduino немного ограничен в своих возможностях, а мне так или иначе, придётся ещё и внешние библиотеки использовать, и всего 26 переменных маловато будет...
Купи контроллер с выполнением кода из внешней памяти и все дела. (правда всё равно не осилишь с такими вопросами)
У Mega 256 мб флеш
Скорее всего мне перепадёт Arduino UNO, так что это богатство пройдёт мимо меня.
Можно конечно же написать свой загрузчик и из него прошивать UNO загружая образы с внешней памяти. Но сможет ли это осилить ТС - большой вопрос !!!
https://github.com/robinhedwards/ArduinoBASIC
Хмм.. Интересно..
может кто подсказать что-то вроде библиотеки интерпретируемого языка для Ардуино?
А то! Держите!
Или, вот ещё!
Можете не благодарить!
Можно конечно же написать свой загрузчик и из него прошивать UNO загружая образы с внешней памяти. Но сможет ли это осилить ТС - большой вопрос !!!
ТС не "сможет", ТС походу придётся делать это скрипя зубами любой ценой, либо писать собственный интерпретируемый язык.
Не бежать вперед телеги, и не считать байты, не зная на сколько их хватит, - не вариант, конечно же.
И чего на человека накинулись? Ну забанили его в гугле, может не ту порнуху качал, по сочувствовать надо, а вы сразу издеваться...
Вот ссылка на джава скрипт https://arduino.ru/projects/programmirovanie-arduino-sovmestimoi-platy-n...
Не бежать вперед телеги, и не считать байты, не зная на сколько их хватит, - не вариант, конечно же.
У меня уже есть некоторый опыт работы с Arduino, в прошлом году уже писал небольшой проект для превращения Ардуино в калькулятор с внешним вводом-выводом. Возможно, я недостаточно экспертен и не познал дзен, но моя не самая большая программа + библиотека для работы с дисплеем отжирали 8кб враз.
Учитывая, что в этом случае скорее всего придётся писать кода в разы больше, хотелось бы заранее узнать что как и куда можно делать, а не интересоваться этим в последний момент. Тем более, что уже на следующей неделе получать оборудование, и мне нужно точно знать что мне может пригодиться.
И чего на человека накинулись? Ну забанили его в гугле, может не ту порнуху качал, по сочувствовать надо, а вы сразу издеваться...
Вот ссылка на джава скрипт https://arduino.ru/projects/programmirovanie-arduino-sovmestimoi-platy-n...
Повторюсь, у меня будет Arduino UNO.
Учитывая, что в этом случае скорее всего придётся писать кода в разы больше, хотелось бы заранее узнать что как и куда можно делать
да ничего ты с памятью не сделаешь. Подгрузка кода с внешнего носителя - задача, которую ты точно не осилишь. Хотя бы потому, что готовых примеров в инете нет.
А знаешь почему нет? - потому что никто такой дуростью не занимается.
Так что если ты хочешь понять ситуацию заранее - вот заранее и приготовся к мысли. что у тебя только два пути - либо вжимать свое творчество в прокрустово ложе 32килобайтов, либо брать плату побольше.
Повторюсь, у меня будет Arduino UNO.
Т.е. Вам нужно сначала более четко осознать масштабы задачи и требуемые для ее решения ресурсы, и только потом выбирать контроллер.
Но ведь никто не говорит о играх типа GTA на Ардуино,может ТСу достаточно что то вроде Pong или змейки.и не обязательно же что бы вы все игры были записаны заранее.
До ТСа такое уже делали ,искать в Гугле arduboy
Повторюсь, у меня будет Arduino UNO.
Т.е. Вам нужно сначала более четко осознать масштабы задачи и требуемые для ее решения ресурсы, и только потом выбирать контроллер.
Что в университете дадут, с тем и буду работать. А дадут скорее всего Arduino UNO. Выбора особо нету.
А знаешь почему нет? - потому что никто такой дуростью не занимается.
на PIC контроллере есть девайс(контроллер полива на 32 программируемых канала но он никогда не выключается, работает как обычные часы) работающий годами с подгружаемыми по софтовому I2C программами, можно ли это сделать на avr не знаю. Как - понятия не имею, по моему представлению на PIC это невозможно, но контроллер есть и работает )))
Возможно я не прав, но на ассемблере эта задача вполне реализуема.
Есть основная программа, которая общается с внешней памятью и копирует из нее различные подпрограммы в указанную область памяти ардуинки. Туда же передает управление.
Брэйнфаки и Лиспы сложны для ТС, но Бейсиков то полно всяких. Даже для тини2313 есть. Код в ЕЕПРОМе и вперёд.
Во. Только сейчас прочёл название топика... Тогда вот. https://n.mtng.org/ele/arduino/iarduino.html
Ну тогда еще и сам топик прочти ))
Да. Ужос! Ухожу.(
скинемся и подарим TC нормальную ардуино мега?
Не бежать вперед телеги, и не считать байты, не зная на сколько их хватит, - не вариант, конечно же.
У меня уже есть некоторый опыт работы с Arduino, в прошлом году уже писал небольшой проект для превращения Ардуино в калькулятор с внешним вводом-выводом. Возможно, я недостаточно экспертен и не познал дзен, но моя не самая большая программа + библиотека для работы с дисплеем отжирали 8кб враз.
Учитывая, что в этом случае скорее всего придётся писать кода в разы больше, хотелось бы заранее узнать что как и куда можно делать, а не интересоваться этим в последний момент. Тем более, что уже на следующей неделе получать оборудование, и мне нужно точно знать что мне может пригодиться.
И ты собрался с каждой игрой копию библиотеки для дисплея тянуть? И ты думаешь, что интерпретатор отожрет меньше 8кб? И ты думаешь, что ардуина потянет серьезную задачу в интерпретаторе?
Я думаю, что вариантов у меня немного.
Я думаю, что вариантов у меня немного.
и оба они перечислены в сообшении 13
Я думаю, что вариантов у меня немного.
и оба они перечислены в сообшении 13
Ну, почему? Есть ещё третий вариант - бросить это дело и идти в армию. Выбор, на самом деле, есть всегда.
Т.е. Вам нужно сначала более четко осознать масштабы задачи и требуемые для ее решения ресурсы, и только потом выбирать контроллер.
Что в университете дадут, с тем и буду работать. А дадут скорее всего Arduino UNO. Выбора особо нету.
Возможно я не прав, но на ассемблере эта задача вполне реализуема.
Есть основная программа, которая общается с внешней памятью и копирует из нее различные подпрограммы в указанную область памяти ардуинки. Туда же передает управление.
Такое вполне возможно (и реально делается) в фон-Неймановской архитектуре. AVR же построена по Гарвардской архитектуре, у нее два раздельных адресных пространства для программы и для данных. Т.е. одному и тому же адресу соответствует две реальные ячейки памяти: одна во flash, другая в RAM. Мы можем загрузить что-то в RAM, но передать управление можно только на flash.
Т.е. читать что-то из flash вместо RAM можно с использованием PROGMEM, а вот выполнять из RAM вместо flash, мне кажется, возможности нет.
В Arduino Due такого ограничения нет - там адреса уникальны.
PS. Можно, конечно, сделать, чтобы прошивка сама себя перепрошивала, скажем, с SD-карты, но, думаю, это с одной стороны выходит за рамки предполагаемой квалификации исполнителя, а с другой - ставит вопрос о надежности из-за ограниченного ресурса flash.
PPS. Когда я слышу утверждения, что что-либо можно реализовать только на ассемблере, я вспоминаю картинку:
Возможно я не прав, но на ассемблере эта задача вполне реализуема.
Причём тут ассемблер? Загрузчики вполне себе на С пишутся.
Возможно я не прав, но на ассемблере эта задача вполне реализуема.
Есть основная программа, которая общается с внешней памятью и копирует из нее различные подпрограммы в указанную область памяти ардуинки. Туда же передает управление.
Такое вполне возможно (и реально делается) в фон-Неймановской архитектуре. AVR же построена по Гарвардской архитектуре, у нее два раздельных адресных пространства для программы и для данных. Т.е. одному и тому же адресу соответствует две реальные ячейки памяти: одна во flash, другая в RAM. Мы можем загрузить что-то в RAM, но передать управление можно только на flash.
Т.е. читать что-то из flash вместо RAM можно с использованием PROGMEM, а вот выполнять из RAM вместо flash, мне кажется, возможности нет.
В Arduino Due такого ограничения нет - там адреса уникальны.
PS. Можно, конечно, сделать, чтобы прошивка сама себя перепрошивала, скажем, с SD-карты, но, думаю, это с одной стороны выходит за рамки предполагаемой квалификации исполнителя, а с другой - ставит вопрос о надежности из-за ограниченного ресурса flash.
PPS. Когда я слышу утверждения, что что-либо можно реализовать только на ассемблере, я вспоминаю картинку:
Я думаю, я вполне смогу выпросить две Ардуино, так что не обязательно чтобы Ардуино перепрошивала саму себя. Сейчас подумал, можно сделать чтобы одна из Ардуин работала с образами для загрузки на внешней памяти, и перепрошивала при необходимости вторую, а вторая уже собственно действовала в виде консоли.
на Уно с внешней памятью неплохо эмулируют Z80, целый спектрум. Тут где-то была тема, на форуме в подвале. Так что нет пределов человеческой фантазии.
Нужно сделать мини-консоль с несколькими играми.
https://www.instructables.com/Arduino-VGA-Console-With-Five-Games/
:)
Сам игрался, целых 5 минут.
Esp8266 купите , оно копейки стоит. Там и память внешняя - места вагон. Портов правда маловато, но зато вайфай- можно онлайн игры писать. Файловая система опять же на борту. Софт перепрошивается по воздуху.
все что для счасья нужно
https://youtu.be/JSeLBJs21ek
Esp8266 купите , оно копейки стоит. Там и память внешняя - места вагон. Портов правда маловато, но зато вайфай- можно онлайн игры писать. Файловая система опять же на борту. Софт перепрошивается по воздуху.
все что для счасья нужно
тогда уж лучше RP2040 c 16 мегабайтами памяти
Всему своё время и каждой задаче свое железо.
нану я заполнил кодом, в меге исчерпал озу, сейчас мучаю есп8266. Как достигну ейных пределов, стану искать следующее железо с минимальной ценой перехода. Возможно esp32. RP еще не пробовал, но запомнил.
Всему своё время и каждой задаче свое железо.
нану я заполнил кодом, в меге исчерпал озу, сейчас мучаю есп8266. Как достигну ейных пределов, стану искать следующее железо с минимальной ценой перехода. Возможно esp32. RP еще не пробовал, но запомнил.
у меня восемь штук ESP32 трудятся, в стеке, надысь обновил ПО и в ESP8266, начало догонять двухядерник, сейчас отстаёт процентов на 30 всего, ESP32 c пинами свободными повеселее, как только китайцы начнут выпускать аналог Rasberry PI Pico W бери, там вайфай на борту
у меня восемь штук ESP32 трудятся, в стеке,
ферма?