Gerard Braad

F/OSS & IT Consultant on Openness and Interoperability

You can follow more frequent updates via my Identi.ca profile (feed).

Sunday, November 23, 2008

Mono on ARM

At the moment I am 'experimenting' with Mono on ARM devices, like the Maemo (Nokia Internet Tablets), BeagleBoard, Linksys NSLU2, etc.




Banshee runs from within a Mojo installation (Ubuntu compiled for ARM) on the provided Mono. The screenshot shows a qemu session with XFCE4 and Banshee. Several other binaries do not work well yet... like IronPython, which aborts with an 'ERROR:inssel.c:3687):mono_burg_emit: code should not be reached'. Hmmm... still trying to find out why.


The Nokia Internet Tablets recently got a new release of Mono, version 2.0.1, from Everaldo. On the device this release runs IronPython 1.1.2. From within the Scratchbox environment it is @*s... it segfaults/aborts. This is related to the Nokia toolchain. At the moment I am trying to get qemu to emulate the Nokia N810 as described by Marcin. for now I only get to see a white Nokia bootloader screen... Marcin provided me his config.mtd to see if it results from a bad mtd.block, but I personally suspect it to be qemu. The build I made, also had issues with running the Mojo distribution :-/...


As you can see, the results are mixed. This is unrelated to Mono. Cross-compiling and emulation environments can always result in unexpected behaviour (as also on actual devices). Mono runs quite well on the N810. This can also be seen in the images posted by Everaldo.



More information will follow...

Links:
Mono:ARM,
Mojo Handhelds,
Qemu, processor emulator,
Mono on Maemo,
Maemo on qemu

3 comments:

gbraad said...

As Everaldo correctly pointed out in an email to me:


Could be useful to install devkit with this instructions:

http://www.mono-project.com/Maemo#Building_Mono_with_Scratchbox

basically you need to do this:

$ wget http://go-mono.com/maemo/scratchbox-devkit-mono-2.0.1-1-i386.tar.gz

$ tar xzf scratchbox-devkit-mono-2.0.1-1-i386.tar.gz -C /

[sbox-DIABLO_HOST: ~] > sb-conf setup DIABLO_ARMEL -f -d perl:debian-etch:maemo3-tools:cputransp:mono
[sbox-DIABLO_HOST: ~] > sb-conf setup DIABLO_X86 -f -d perl:debian-etch:maemo3-tools:mono


Then mono will be available in you ARMEL and x86 targets... dont need to install packages with apt and if you have installed packages with apt I recommend you to remove first.

On beginning of http://www.mono-project.com/Scratchbox you found an explanation why we need to use this devkit:

"Scratchbox uses QEMU (http://fabrice.bellard.free.fr/qemu/) for ARM emulation, the problem is that some ARM syscalls (242, 264, 299) are not yet implemented in QEMU. These missing syscalls can cause problems in MCS, making it impossible to compile assemblies for ARM."

Kedar Sovani said...

Hi, I am a maintainer of Fedora-ARM. http://fedora-arm.blogspot.com and http://arm.koji.fedoraproject.org/koji

Mono is one of the package subsystems that we haven't bootstrapped for ARM Yet. Part of the reason being that I have no technical know-how about mono. If you are interested, most of the development environment and packages are available with the latest Fedora-ARM 12 release. Feel free to take them for a ride...

Let me know if you have any questions...

Best,
Kedar.

gbraad said...

Seems this message gor reposted after the import from my other blog (it is a year old mesage). But nonetheless it is still relevant. I will certainly look into it.

Followers