Development Resources

Talking about OS and emulation core development
Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

crashoverride wrote:
Tue Jun 02, 2020 7:39 am
Slaminger wrote:
Tue Jun 02, 2020 12:30 am
What would the easiest way to backport the kernel and uboot stuff from 20 to 19?
There are no dependencies that I am aware of. The kernel and uboot should be capable of running any modern Linux distribution (Ubuntu, Fedora, Arch, etc).
See also:
https://wiki.odroid.com/odroid_go_advance/build_uboot
https://wiki.odroid.com/odroid_go_advance/build_kernel

(Note that I do not package uboot/kernel/bootini. They are provided by HardKernel.)
Thanks. Remind me what the option to disable save States from command again? It was long ago and I cant recall. For retro run I mean

Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

meveric wrote:
Tue Jun 02, 2020 6:45 am
uboot and kernel should not have any dependencies.. you should be able to install the 20.04 uboot and kernel on 19.xx image without issues.
The question is can I do it in a way that's not on the hard kernel wiki. Meaning can I build and install the kernel on the device, or do I have to use my linux VM and cross compile then put it onto the SD? The wiki only shows cross compiling steps, and my VM hates my SD reader

User avatar
meveric
Posts: 12102
Joined: Mon Feb 25, 2013 2:41 pm
languages_spoken: german, english
ODROIDs: X2, U2, U3, XU-Lite, XU3, XU3-Lite, C1, XU4, C2, C1+, XU4Q, HC1, N1, Go, H2 (N4100), N2, H2 (J4105), GoA, C4, GoA v1.1, H2+, HC4, GoS
Has thanked: 89 times
Been thanked: 667 times
Contact:

Re: Development Resources

Post by meveric »

I always compile directly on the ODROIDs.
In fact it's much easier than cross compiling, but might be a little bit more time consuming, aside from that compiling natively should always be better.
But didn't you say, you just want to use the existing Kernel instead of compiling again?
Donate to support my work on the ODROID GameStation Turbo Image for U2/U3 XU3/XU4 X2 X C1 as well as many other releases.
Check out the Games and Emulators section to find some of my work or check the files in my repository to find the software i build for ODROIDs.
If you want to add my repository to your image read my HOWTO integrate my repo into your image.

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

Slaminger wrote:
Wed Jun 03, 2020 4:52 am
Remind me what the option to disable save States from command again?
The options are here:
https://github.com/OtherCrashOverride/r ... pp#L71-L80

Use "--restart" or "-r" on the command line.
These users thanked the author crashoverride for the post:
Slaminger (Sat Jun 06, 2020 11:01 pm)

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

Slaminger wrote:
Wed Jun 03, 2020 6:34 am
The question is can I do it in a way that's not on the hard kernel wiki.
In the past, I have encountered issues building uboot and needed to use the same version of GCC that is used in the wiki. The GCC version will also affect kernel compilation as newer versions may detect errors that prior versions did not.
These users thanked the author crashoverride for the post:
Slaminger (Sat Jun 06, 2020 11:01 pm)

Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

Well I got the kernel and uboot from the links above into Ubuntu 19 but it didn't get the on board WiFi working

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

Slaminger wrote:
Sat Jun 06, 2020 11:02 pm
it didn't get the on board WiFi working
Check the dmesg log for errors related to WIFI.

Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

are we sure that those links are to the new kernel? because it didn't seem to enable l2 r2 or the on board wifi, I feel like it might have been the ubuntu 19 one

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

Slaminger wrote:
Mon Jun 08, 2020 1:36 am
because it didn't seem to enable l2 r2 or the on board wifi,
This likely indicates you are using the device tree for rev1.0 instead of the one for rev1.1.
https://github.com/hardkernel/linux/blo ... ux-v11.dts

The boot.ini file in the reference image automatically selects the device tree based on hardware revision.

Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

crashoverride wrote:
Mon Jun 08, 2020 2:08 am
Slaminger wrote:
Mon Jun 08, 2020 1:36 am
because it didn't seem to enable l2 r2 or the on board wifi,
This likely indicates you are using the device tree for rev1.0 instead of the one for rev1.1.
https://github.com/hardkernel/linux/blo ... ux-v11.dts

The boot.ini file in the reference image automatically selects the device tree based on hardware revision.
I confirmed that by looking at the boot.ini, it seems the instructions HK provided are for model 1 ubuntu 19 kernel and have not been updated for oga v11 yet, I do see the dts you referenced in the git clone tho, im just going to try swapping the boot.ini and see what I get

Slaminger
Posts: 395
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 32 times
Been thanked: 187 times
Contact:

Re: Development Resources

Post by Slaminger »

I got it working, the button layout is messed up but I can fix that, l2 r2 and wifi now work in my ubuntu 19 image :)
These users thanked the author Slaminger for the post:
odroid (Tue Jun 09, 2020 9:16 am)

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

Hi CrashOverride,

I've just cloned your retrorun-go2, and changed it to use four function keys to control brightness and volume instead of F4 then the dpad; but when I looked to copy it into /usr/bin, there was "retrorun" and "retrorun32". The make file built me "retrorun", so what's "retrorun32" and how do I build it?

Thanks

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

pmprog wrote:
Thu Jun 18, 2020 4:48 am
The make file built me "retrorun", so what's "retrorun32" and how do I build it?
"retrorun32" is a 32bit (armhf) version of "retrorun". This is required since 64bit applications can not load 32bit shared libraries (libretro cores) and vice versa. It is build exactly the same as "retrorun" except in a 32bit environment instead of a 64bit one. The resulting binary is then renamed from "retrorun" to "retrorun32".

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

Thanks for the reply. I'm building directly on the OGA, and I think I read in one of your other posts that there was a chroot to 32bit. Sorry if this is a dumb question, I know some basic linux stuff (and I've heard of a chroot), but could you (or anyone else) walk me through building the 32bit version over SSH?

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

pmprog wrote:
Thu Jun 18, 2020 6:16 am
could you (or anyone else) walk me through building the 32bit version over SSH?
It is not a trivial task. It requires using debootstrap to generate the 32bit environment (its another copy of the OS compiled for 32bit). Then, required dependencies and headers (libgo2, librga, build-essential, git, libopenal, libevdev, libdrm) need to be installed or copied into the environment. Optionally, mount point remapping is established to provide access to hardware devices like GPU.

I really would like to get the process documented, but I currently do not have the time. As previously stated, it is non-trivial.

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

Yeah, it sounds it... Okay, I'll leave it for now, and see which cores i use don't use my new retrorun. If all the ones i use do, then i guess it's not really a problem
Thanks again

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

To create a quick chroot for odroid go adv, and enable qemu user emulation I am using this:

https://github.com/aplanas/chrootctl

You can now install the compiler and the headers commented by @crashoverride, still missing the part about remapping the hardware, does any one have a pointer about how to do this? I would like to complete this chrootctl script.
These users thanked the author apd for the post:
pmprog (Tue Jul 07, 2020 5:10 pm)

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

apd wrote:
Tue Jul 07, 2020 2:28 am
still missing the part about remapping the hardware, does any one have a pointer about how to do this?

Code: Select all

mount --rbind /dev YOUR_ROOT/dev
Where "YOUR_ROOT" is the top level of the chroot folder.

Note that the chroot needs the same user/group IDs that match those set in /dev. Normally the "root" user is sufficient.

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

Ah cool! That was already in place then (https://github.com/aplanas/chrootctl/bl ... ootctl#L68). At least I am able to see the same devices inside the chroot and outside.

Thanks!

escalade
Posts: 287
Joined: Thu Mar 14, 2019 8:34 pm
languages_spoken: english and norwegian
Has thanked: 16 times
Been thanked: 136 times
Contact:

Re: Development Resources

Post by escalade »

meveric wrote:
Wed Jun 03, 2020 7:08 am
I always compile directly on the ODROIDs.
In fact it's much easier than cross compiling, but might be a little bit more time consuming, aside from that compiling natively should always be better.
Actually, there's no difference at all. The same compiler version will output the same binaries if you are running it natively or using a cross compiler. I build the entire OS in about 3 hours on my NUC8, how long does it take you to compile the kernel? ;)
Maintainer of RetroELEC (XU4 / OGA / x86_64)

Christian_Haitian
Posts: 72
Joined: Sat Nov 10, 2018 10:40 pm
languages_spoken: english
ODROIDs: Go, Go Advance
Has thanked: 30 times
Been thanked: 60 times
Contact:

Re: Development Resources

Post by Christian_Haitian »

apd wrote:
Tue Jul 07, 2020 2:28 am
To create a quick chroot for odroid go adv, and enable qemu user emulation I am using this:

https://github.com/aplanas/chrootctl

You can now install the compiler and the headers commented by @crashoverride, still missing the part about remapping the hardware, does any one have a pointer about how to do this? I would like to complete this chrootctl script.
I tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.

Thanks
A jack of all trades is a master of none, but oftentimes better than a master of one

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

Christian_Haitian wrote:
Wed Jul 29, 2020 9:20 am
I tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.
My env is openSUSE Tumbleweed, but I do not see anything that depends on it. Should work on any Linux distribution. Try again with the Lubuntu and show me the error. Be sure that you installed this:

> apt-get install curl kpartx rsync qemu binfmt-support qemu-user-static

The process is very simple, download the official odroid go advance ubuntu image, extract the content via rsync, and register the qemu-static in a way that if an ARM (32 or 64) is detected, it will execute the command through qemu.

Christian_Haitian
Posts: 72
Joined: Sat Nov 10, 2018 10:40 pm
languages_spoken: english
ODROIDs: Go, Go Advance
Has thanked: 30 times
Been thanked: 60 times
Contact:

Re: Development Resources

Post by Christian_Haitian »

apd wrote:
Wed Jul 29, 2020 8:33 pm
Christian_Haitian wrote:
Wed Jul 29, 2020 9:20 am
I tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.
My env is openSUSE Tumbleweed, but I do not see anything that depends on it. Should work on any Linux distribution. Try again with the Lubuntu and show me the error. Be sure that you installed this:

> apt-get install curl kpartx rsync qemu binfmt-support qemu-user-static

The process is very simple, download the official odroid go advance ubuntu image, extract the content via rsync, and register the qemu-static in a way that if an ARM (32 or 64) is detected, it will execute the command through qemu.
I will try this thank you for sharing the required dependencies as well. How do I set it up so that this chroot is a 32bit only environment?
A jack of all trades is a master of none, but oftentimes better than a master of one

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

Christian_Haitian wrote:
Wed Jul 29, 2020 11:57 pm
How do I set it up so that this chroot is a 32bit only environment?
The official Ubuntu image for OGA mix 32 and 64 versions of libraries. Use apt-get to install the libraries of 32 bits that you require.

Enable the chroot env (see the chrootctl doc for more help)

> sudo chrootctl shell

You can see that already the official image is multiarch, nothing to do here.

# dpkg --print-architecture
arm64

# dpkg --print-foreign-architectures.
armhf

To learn more about multiarch in debian:
https://wiki.debian.org/Multiarch/HOWTO

Install the compiler;

# apt install build-essential

Now you need to pass to GCC the appropriate flags to generate 32 bits executable, for example:

https://github.com/OtherCrashOverride/m ... ild.sh#L36
These users thanked the author apd for the post:
Christian_Haitian (Thu Jul 30, 2020 5:43 am)

Christian_Haitian
Posts: 72
Joined: Sat Nov 10, 2018 10:40 pm
languages_spoken: english
ODROIDs: Go, Go Advance
Has thanked: 30 times
Been thanked: 60 times
Contact:

Re: Development Resources

Post by Christian_Haitian »

This is the error I get once I've verified I have installed all of the dependencies on Lubuntu 16.04.03 X64. This is when I attempt to do sudo ./chrootctl create
Attachments
Capture.PNG
Capture.PNG (7.56 KiB) Viewed 16421 times
A jack of all trades is a master of none, but oftentimes better than a master of one

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

IMAGE="ubuntu-20.04-4.4-es-odroid-goA-20200514.img"
# De-register the partitions, ignore the error
kpartx -vd "${IMAGE}"
# Register again the partitions
kpartx -va "${IMAGE}"

What is the output of the last command? Please, ignore the errors of the first one, is there to make sure that you start from scratch.

Christian_Haitian
Posts: 72
Joined: Sat Nov 10, 2018 10:40 pm
languages_spoken: english
ODROIDs: Go, Go Advance
Has thanked: 30 times
Been thanked: 60 times
Contact:

Re: Development Resources

Post by Christian_Haitian »

apd wrote:
Fri Jul 31, 2020 4:43 pm
IMAGE="ubuntu-20.04-4.4-es-odroid-goA-20200514.img"
# De-register the partitions, ignore the error
kpartx -vd "${IMAGE}"
# Register again the partitions
kpartx -va "${IMAGE}"

What is the output of the last command? Please, ignore the errors of the first one, is there to make sure that you start from scratch.
I get the following.
Capture.PNG
Capture.PNG (5.49 KiB) Viewed 16349 times
A jack of all trades is a master of none, but oftentimes better than a master of one

apd
Posts: 10
Joined: Wed Jul 11, 2018 3:36 am
languages_spoken: english spanish
ODROIDs: GO, GO ADV (1.1)
Has thanked: 23 times
Been thanked: 2 times
Contact:

Re: Development Resources

Post by apd »

Christian_Haitian wrote:
Sat Aug 01, 2020 7:21 pm
I get the following.Capture.PNG
This seems to be OK. Christian, I am not able to reproduce your issue. The post with the first error suggested that kpartx was to able to detect the partitions, but this output from this last post shows that is not the case.

I suggest to retry, or use set -x to have some insight of what is happening. I any case I recommend you to move the debugging session outside the forum. Maybe create an issue in the github project?

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

To use the hardware acceleration from libgo2, do you need to use the EGL context? At the minute I'm just using memory bitmaps and go2_presenter_post.

Would any kind soul be willing to do a small 3D rotating cube GLES example using libgo2 please?

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

pmprog wrote:
Thu Aug 27, 2020 9:31 pm
To use the hardware acceleration from libgo2, do you need to use the EGL context? At the minute I'm just using memory bitmaps and go2_presenter_post.
The "go2_presenter_post" function uses RGA2 (instead of GLES) for hardware acceleration of rotation and scaling.
pmprog wrote:
Thu Aug 27, 2020 9:31 pm
Would any kind soul be willing to do a small 3D rotating cube GLES example using libgo2 please?
To use GLES, a 3D "context" is created that provides surfaces to "go2_presenter_post".

1) Create a 3D context. Note the "major" and "minor" fields denote the version of GLES to use.
https://github.com/OtherCrashOverride/e ... p#L87-L100

2) Perform any GLES operations for drawing.

3) Display the surface:
https://github.com/OtherCrashOverride/e ... #L280-L288
These users thanked the author crashoverride for the post:
pmprog (Thu Aug 27, 2020 11:54 pm)

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

Fantastic, thanks, I'll have a look at that

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

Sorry, another probably dumb question, but which GLES versions are supported?

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

pmprog wrote:
Mon Sep 14, 2020 5:26 am
which GLES versions are supported?
All of them!
1.0, 2.0, 3.0, 3.1, 3.2
These users thanked the author crashoverride for the post:
pmprog (Mon Sep 14, 2020 6:16 am)

pmprog
Posts: 102
Joined: Thu Oct 18, 2018 4:01 am
languages_spoken: english
ODROIDs: ODROID-GO
Has thanked: 27 times
Been thanked: 1 time
Contact:

Re: Development Resources

Post by pmprog »

I did say it was probably a dumb question. Thanks :)

Christian_Haitian
Posts: 72
Joined: Sat Nov 10, 2018 10:40 pm
languages_spoken: english
ODROIDs: Go, Go Advance
Has thanked: 30 times
Been thanked: 60 times
Contact:

Re: Development Resources

Post by Christian_Haitian »

Greetings,

I was able to setup a 64 bit and 32 bit chroot dev environment on a Lubuntu 16.04 Virtualbox VM. I decided to package it and make available for others in case others encounter similar initial struggles like I did.

Helpful tools already preinstalled in both chroot instances:

build-essential git wget libdrm-dev python3 python3-pip python3-setuptools python3-wheel ninja-build libopenal-dev premake4 autoconf libevdev-dev ffmpeg libsnappy-dev libboost-tools-dev magics++ libboost-thread-dev libboost-all-dev

File Manager: PCManFM version 1.2.4 with Open as Root configured

User: osboxes.org
Pass: password

From terminal session like lxterminal:

sudo chroot /mnt/data/armhf/ #for 32 bit Arm environment
sudo chroot /mnt/data/arm64/ #for 64 bit Arm environment

It can be downloaded from the Mega or Google Drive links below

11/1/2020 Update -- I was able to create an updated virtual box vm development environment using a variant of Debian Dog called Buster Dog. It's a much smaller distro, it's based on the newer Debian Buster release, has PCManFM version 1.3.1, boots directly into root and has both 32 bit and 64 bit Arm environments included. This download is only a little over 2.7GBs and expands to a little under 8GBs but is configured to grow up to 50GBs to allow space for various development needs. Virtualbox guest additions have already be preinstalled as well for Virtual Box version 6.1.12. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is also included.

01/05/2021 Update -- I've received a couple of reports that internet from within the chroots may not work out of the box. What has fixed this is to connect to the internet outside of the chroot (like ping google.com from a regular terminal session in the VM) then move the resolv.conf from /etc to the chroot /etc folders (/mnt/data/arm64/etc) and (/mnt/data/armhf/etc) then internet will work within them.

04/26/2021 Update -- I've created a newer virtual box VM development environment using Ubuntu Mate 20.04. It's not as small as the previous VM that was based on Debian Dog but should be more stable (especially with dragging and dropping of files between the host and the VM) and the internet in the chroots should work out of the box for most as I've forced the DNS servers to use Google's upstream (8.8.8.8). The image is 3.71GBs and expands to about 16GBs when imported into VB. It's set to allow dynamic expansion up to 60GBs. Virtualbox guest additions have already be preinstalled. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is not installed by default but can be easily installed from the software center. Username: dev Password: dev

04/26/2021 Update -- I noticed when I compiled retroarch for with the --enable-odroidgo2 option, I would get no display output. The issue was related to using the newer rga headers available from here (https://github.com/rockchip-linux/linux-rga) as rockchip changed their master. Correct rga headers should be from here (https://github.com/rockchip-linux/linux-rga/tree/master). They just need to be copied to the /usr/local/include/rga folder for both chroots. I've include a .zip file with the proper header files included to this message for convenience in case rockchip makes other changes to that repo.

More info about Ubuntu Mate is available here: https://ubuntu-mate.org/about/

Download links:

Mega: https://mega.nz/file/3dIkHTRZ#s2DOkT8nr ... litLt8Ta8c
Google Drive: https://drive.google.com/file/d/1_6SLtN ... sp=sharing

Hopefully this is helpful for others.
Attachments
rga.zip
Correct rga.zip added on 8-16-2021
(14.56 KiB) Downloaded 144 times
Last edited by Christian_Haitian on Mon Aug 16, 2021 1:31 pm, edited 2 times in total.
These users thanked the author Christian_Haitian for the post (total 6):
notime2d8 (Tue Sep 15, 2020 11:19 am) • apd (Tue Sep 15, 2020 4:20 pm) • sm_1 (Thu Feb 04, 2021 8:54 am) • southoz (Sat Apr 03, 2021 11:41 am) • Baco (Sat Oct 16, 2021 4:30 pm) • FergusL (Mon May 01, 2023 8:17 am)
A jack of all trades is a master of none, but oftentimes better than a master of one

shanti
Posts: 352
Joined: Fri Feb 15, 2019 3:12 am
languages_spoken: english, spanish
ODROIDs: Odroid N2
Has thanked: 115 times
Been thanked: 142 times
Contact:

Re: Development Resources

Post by shanti »


Hello Crash;

I am trying to compile retrorun from source but I keep failing, this is the first (of many errors)

Code: Select all

make[1]: *** [Makefile:146: obj/Release/input.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
                 from ../../src/video.cpp:38:
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected identifier before 'false'
  false = 0,
  ^~~~~
It seems to me that the headers that retrorun is looking for are different from the ones I have (which are the ones from the HK linux repo) is there anything else I am missing? or do you have any idea how to fix those errors?

this is the complete build log: https://pastebin.com/HYES6qx2

Thank you!

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

shanti wrote:
Fri May 14, 2021 1:39 am
this is the complete build log
Taking the first error as an example

Code: Select all

../../src/input.cpp: In function 'void input_gamepad_read()':
../../src/input.cpp:56:45: error: 'Go2InputFeatureFlags_RightAnalog' was not declared in this scope
         if (go2_input_features_get(input) & Go2InputFeatureFlags_RightAnalog)
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The corresponding source code is here:
https://github.com/OtherCrashOverride/r ... ut.cpp#L56

Code: Select all

        if (go2_input_features_get(input) & Go2InputFeatureFlags_RightAnalog)
And the declaration is here:
https://github.com/OtherCrashOverride/l ... nput.h#L98

Code: Select all

    Go2InputFeatureFlags_RightAnalog = (1 << 2),
This indicates the error is in the build system or environment being used. Ensure you are using the current commit level of libgo2:
bc992566bb86f2fe0c8d981d4db46e2e2beb5b0e

shanti
Posts: 352
Joined: Fri Feb 15, 2019 3:12 am
languages_spoken: english, spanish
ODROIDs: Odroid N2
Has thanked: 115 times
Been thanked: 142 times
Contact:

Re: Development Resources

Post by shanti »

Thanks! I updated libgo2 and now that error is gone, but still the compilation fails with a ton of other errors first one being:

if it helps I am using GCC 8.3 ( I know its old )

Code: Select all

input.cpp
../../src/audio.cpp: In function 'size_t core_audio_sample_batch(const int16_t*, size_t)':
../../src/audio.cpp:92:34: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
     if (audioFrameCount + frames > audioFrameLimit)
         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
                 from ../../src/video.cpp:38:
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected identifier before 'false'
  false = 0,
  ^~~~~
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected '}' before 'false'
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:9:6: note: to match this '{'
 enum {
      ^
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected unqualified-id before 'false'
  false = 0,
  ^~~~~
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:12:1: error: expected declaration before '}' token
 };
 ^
make[1]: *** [Makefile:134: obj/Release/video.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Could it be that I am using the wrong headers?

EDIT: Btw I am cross compiling

crashoverride
Posts: 5840
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 635 times
Contact:

Re: Development Resources

Post by crashoverride »

The error is occurring here:

Code: Select all

In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
                 from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
                 from ../../src/video.cpp:38:
That line is a simple #include:
https://github.com/OtherCrashOverride/r ... eo.cpp#L38

Code: Select all

#include <drm/drm_fourcc.h>
This above is a reference to an OS provided kernel header. The entire error message indicates that OS provided kernel headers can not be compiled (not RetroRun). There is nothing architecture specific in RetroRun, and it should be compilable on any architecture (x86, arm, arm64, etc).

The build environment I use is stock Ubuntu 18.04 "rootfs". It reports its GCC version as follows:

Code: Select all

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 
TL;DR - The issue appears to be related to the build environment. There is not anything I can do on my side to resolve it. The only suggestion I have is to try wrapping the #include in a C specific block:

Code: Select all

extern "C" {
#include <drm/drm_fourcc.h>
}
These users thanked the author crashoverride for the post (total 2):
shanti (Fri May 14, 2021 7:04 am) • odroid (Fri May 14, 2021 9:43 am)

shanti
Posts: 352
Joined: Fri Feb 15, 2019 3:12 am
languages_spoken: english, spanish
ODROIDs: Odroid N2
Has thanked: 115 times
Been thanked: 142 times
Contact:

Re: Development Resources

Post by shanti »

crashoverride wrote:
Fri May 14, 2021 6:28 am
TL;DR - The issue appears to be related to the build environment.
Thanks, as we both suspected, the headers were wrong, I searched for alternatives and found some that do work and got it to compile!

Post Reply

Return to “Platform development”

Who is online

Users browsing this forum: No registered users and 0 guests