Перейти к содержанию
    

J2ME (CLDC + MIDP 2.0) на ARM BareMetal - возможно ли?

Приветствую!

 

Есть плата LicheePi Zero на базе чипа Allwinner V3s (ARM Cortex-A7) и собственно-сделанный BareMetal SDK, поддерживающий работу с:

1) файловой системой

2) видео-системой

3) звуковой системой

4) ввод данных (кнопки)

в однозадачном режиме (цикл в main() + обработчик прерывания)

 

Насколько реально будет туда портировать (перенести, сбилдить, скомпилять)  J2ME виртуальную машину - для запуска MIDlet'ов ("Java"-игр) стареньких кнопочных телефонов с маленькими экранами (от 128x128 до 320x240) ?

 

На всякий случай уточню:  нужна не вся Java,  а только J2ME, более конкретнее - CLDC и MIDP не ниже 2.0..

 

Поиск в интернете ни к чему ясному не подтолкнул:

 

1)  все ссылки на java.net померли, вместо них Оракла - там чёрт ногу сломит где искать что надо

2) phoneME - кто его реально собирал?  у кого есть опыт сборке сего чуда?  Как у него дела с совместимостью игр?

3) какие ещё есть проекты?

 

Как я это вижу? :

1) попытаться собрать J2ME эмулятор под Linux в Linux (платформа ПК x86)

2) выкинуть всё ненужное (секьюрити, работа с сокетами, сетью и прочим хламом)

3) завести вывод звука, графики и ввод данных - на бэкэнд(драйвера) своего SDK для V3s

 

У кого-нибудь есть опыт сборки?

Чё-то смотрю, что там больше Java надо, чем C.   Его одним GCC реально собрать?  В чём подвох?  В сорцах куча Джавы...  Без JRE соберётся?

 

Велик соблазн запускать такие игрули:

 

2.gif.3b4fccf30a86e45d59443d04d199c4d1.gif1.gif.fc280b28c5203b4b69826485894f6022.gif

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

Насколько реально будет туда портировать (перенести, сбилдить, скомпилять)  J2ME виртуальную машину - для запуска MIDlet'ов ("Java"-игр) стареньких кнопочных телефонов с маленькими экранами (от 128x128 до 320x240) ?

Ну в старых телефонах же работает, там проц АРМ 7(9) на 240МГц, это почти, как СТМка 7я например, должно работать, но чувствую, гемора при портировании будет немало, это ж вроде, как коммерческая реализация...

1 час назад, repstosw сказал:

Чё-то смотрю, что там больше Java надо, чем C. 

Добро пожаловать в линух, там всегда для сборки какой-нить проги требуется куча либ, питонов, явы , баша и пр...

1 час назад, repstosw сказал:

в однозадачном режиме (цикл в main() + обработчик прерывания)

RTOS еще не прикрутили? Можно уже, штука хорошая))) Ну или хотя бы переключатель контекста...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

58 minutes ago, mantech said:

Добро пожаловать в линух, там всегда для сборки какой-нить проги требуется куча либ, питонов, явы , баша и пр...

 

Это зависит от степени упоротости тех, кто пишет софт.  Я видел обратное: кроме штатного GCC при сборке проекта в Линуксе(на ПК) больше ничего не нужно было.

 

1 hour ago, mantech said:

RTOS еще не прикрутили? Можно уже, штука хорошая))) Ну или хотя бы переключатель контекста...

 

Если очень сильно будет нужна псевдо-многозадачность (или многопоточность), то придётся прикрутить. Ничего тяжёлого в этом не вижу - существуют куча микро-осей под МК. В крайнем случае напишу самостоятельно.

 

Меня волнует сейчас три вопроса:

 

1) Нужен готовый билд этой phoneME под Windows ПК, чтобы потестировать его на играх - насколько он хорош...

 

2) Насколько сорцы phoneME независимы от других компиляторов? Проще говоря -  хватит ли одного тулчейна GCC под Линуксом, чтобы собрать  его?

 

3) Через make-файлы можно ли урезать сборку phoneME ?  Выкинуть сокеты, посылку СМС, выкинуть Open GL, 3D, которые мне не нужны?  Оставить только те JSR, которые работают с нужными вещами:  файлы, память, отрисов на экран, воспроизведение звука (MIDI и WAV достаточно), считывание клавиш?

 

Очень давно умельцы уже сделали порт под консоли GP2X Wiz,  Caanoo и другие J2ME:

 

https://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,73,400

 

Вроде как работает, но лично проверить не смогу, так как у меня нет этих консолей.  А вот под ПК я бы хотел проверить... Странно, что под ПК никто это чудо не собирал и публично не выкладывал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, repstosw сказал:

Я видел обратное:

А вот я, к сожалению, нет((

9 часов назад, repstosw сказал:

Странно, что под ПК никто это чудо не собирал и публично не выкладывал...

Видать нужды большой не было, ушла на покой эта фон_ява, и видать все это приняли без сожаления...

9 часов назад, repstosw сказал:

Выкинуть сокеты, посылку СМС, выкинуть Open GL, 3D, которые мне не нужны?

Может это вы так думаете, а разработчик приложения что-то да задействовал, в результате будет пшик))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, makc сказал:

А где Сишные исходники-то там?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, mantech сказал:

А где Сишные исходники-то там?

https://github.com/SquirrelJME/SquirrelJME/tree/trunk/ratufacoat

Например здесь:

Цитата

RatufaCoat (SquirrelJME)

RatufaCoat is a Java ME Virtual Machine which is capable of running the SquirrelJME run-time. It is written in C and is intended to be used as an included library into other programs such as RetroArch. A SummerCoat Register Format ROM is required for this to operate, to which the SquirrelJME project must be referred to accordingly.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/15/2021 at 3:27 AM, makc said:

https://github.com/SquirrelJME/SquirrelJME рассматривали?

 

Присмотрюсь.

С другого форума ещё рекомендовали глянуть вот такую VM: https://en.wikipedia.org/wiki/Mika_VM.

На гитхабе есть исходники.

 

Или распарсить JAVA-код в LLVM, прикрутив бэкэнд типа:

https://www.cs.cornell.edu/projects/polyglot/

https://www.graalvm.org/reference-manual/native-image/

 

Куча низведанного :wacko2:

 

Если часть исходников написаны на JAVA, то их можно компильнуть на ПК.  Только вот вопрос - будут ли они работать на других архитектурах? 

 

Ведь байткод везде одинаков, или есть подводные камни?

 

На хосте я могу пользоваться чем угодно - любой компилятор.

Главное, чтобы на таргете - была только архитектура целевого процессора.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, repstosw сказал:

Ведь байткод везде одинаков, или есть подводные камни?

Заявляли разработчики кроссплатформенность - главная фишка, но в некоторых процах есть т.н. ява рантайм акселератор, что это - х.з., но тут могут быть и подводные камни...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно,  будут полезно.

"Java на одноплатниках: легко и просто"

https://habr.com/ru/post/580368/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пока временно отложил этот вопрос. Не по зубам пока мне эта задача.

Более подробно мои страдания изложены здесь: https://gamedev.ru/code/forum/?id=263750

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29.09.2021 в 07:02, bingo сказал:

Возможно,  будут полезно.

  • библиотека работает на любом Linux, любого одноплатника (при наличии там драйверов)

  • Это совсем не baremetal :biggrin:

14.09.2021 в 21:41, makc сказал:
14.09.2021 в 21:36, mantech сказал:

А где Сишные исходники-то там?

https://github.com/SquirrelJME/SquirrelJME/tree/trunk/ratufacoat

Например здесь:

Ну кстати, вполне портабельное дело, поглядел в первом приближении. Лет 7 назад бы поразбирался, с целью добавления этой явы в свою ОС, но с другой стороны - ява это ООП, а оно мне не по душе совсем))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/1/2021 at 12:21 AM, mantech said:

Ну кстати, вполне портабельное дело, поглядел в первом приближении. Лет 7 назад бы поразбирался, с целью добавления этой явы в свою ОС, но с другой стороны - ява это ООП, а оно мне не по душе совсем))

 

Мне тоже ООП не по душе.  Но ведь есть же эмуляторы NES, SEGA и им подобные. Они портируются спокойно со знанием С/C++ и без знаний ассемблеров 6502 и 68K (процессоры сеги и неса).  Так почему же при портировании Java я обязан знать Java? В идеале, кроме крестов ничего знать не обязан.  Ну или как минимум компильнуть классы Java и забыть их как страшный сон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, repstosw сказал:

Так почему же при портировании Java я обязан знать Java? В идеале, кроме крестов ничего знать не обязан.

Это к линуксописателям, они пишут группами, кто-то в яве разбирается, кто-то в сях, кто в питоне, вот и слепят кашу-малашу, а одному в ней разбираться совсем не айс((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...