Jump to content

    
Sign in to follow this  
repstosw

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

Recommended Posts

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

 

Есть плата 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

 

 

 

Share this post


Link to post
Share on other sites
1 час назад, repstosw сказал:

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

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

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

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

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

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

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

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

Edited by mantech

Share this post


Link to post
Share on other sites
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

 

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

Share this post


Link to post
Share on other sites
9 часов назад, repstosw сказал:

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
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.

 

 

Share this post


Link to post
Share on other sites
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, то их можно компильнуть на ПК.  Только вот вопрос - будут ли они работать на других архитектурах? 

 

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

 

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

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

Edited by repstosw

Share this post


Link to post
Share on other sites
15 часов назад, repstosw сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

 

 

 

Share this post


Link to post
Share on other sites
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 назад бы поразбирался, с целью добавления этой явы в свою ОС, но с другой стороны - ява это ООП, а оно мне не по душе совсем))

Share this post


Link to post
Share on other sites
On 10/1/2021 at 12:21 AM, mantech said:

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

 

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

Share this post


Link to post
Share on other sites
4 часа назад, repstosw сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this