Wednesday, December 07, 2011

Beagle Board booting moving to another blog

It seems what I'm doing now mirrors the goings on back in July at this site this site, which is written in a much better style.

I'm intending to continue working on this until I have a complete OS on the BeagleBoard. I'll be talking about that on my Something Like Eiffel blog, since it's going to be designed around the same language features that I've been thinking about there.


Anonymous devzero said...

The open pandora is a device similar to the beagle board. The CPU is similar and the default system is ARM Linux. The current version of ROLF in SVN doesn't compile on the open pandora. The file magic.h seems to be missing. But my real plan is to use ROLF on the Playstation 2, because the PS2 has only 32 MByte memory. Other stuff like XFCE is nearly unusable. I want to avoid the X-Server and use directly the framebuffer instead.

12:43 am, January 19, 2012  
Blogger Simon said...

I have a 2351 byte magic.h file under my cross-compile sysroot directory in usr/include/linux/, it came from the kernel source: linux-

Are you cross-compiling, or using gcc on the Pandora?

I'd like to hear how you get on, especially on the PS2.

9:54 am, January 19, 2012  
Blogger Simon said...

... but that's not the one you need!

It's a header file from libmagic. I'll try to find the proper download for you later, but the text of the file is also at this page...

12:22 pm, January 19, 2012  
Blogger Simon said...

It comes from file-5.04.tar.gz, available here:

There is also a version 5.10, there, which will probably work just as well, if not better.

1:24 pm, January 19, 2012  
Anonymous Devzero said...

I am compiling native on all machines (pandora, ps2 and x86_64). I installed the libmagic stuff. FB_SERVER doesn't seem to be set by configure, I needed to add it to config.mak. When compiling the 64 bit x86 has the largest problem, because of the incompatible asm and the 64 bit pointer to integer conversions. On the pandora there is a problem in rolf_raw.c. The compiler tells that it is prohibited to convert argument to union type in the calls to bind() and connect(). There are also other C99 and ISO C related problems. I disabled the Compatibilty library on x86_64 and on ps2. I was able to compile the remaining stuff on the ps2, but I don't know how to start it. It seems that Wimp_fb needs to be started and the bin directory needs to be in the PATH variable, because it is starting Launcher. I also needed to set LD_LIBRARY_PATH. I have only a black screen, it doesn't seem to access the framebuffer, but it detects the correct screen resolution and color depth. When I try to start applications, the application crashs.

2:50 pm, January 20, 2012  
Blogger Simon said...


The Wimp runs a !Boot file on startup, and expects some resources to be available.

I've put a tarball of useful files on, if you unpack it in the directory with bin, lib and Apps in it, then run the "run_me_to_start_rolf" script, you might get somewhere. It will look for some free fonts on your machine to start with and then start an appropriate Wimp_... file. I just tried it out here and it worked in a virtual terminal but exiting got me stuck on that terminal, so be a bit careful!

I should say, if you're here to hack, that's great, but, if you're after something more polished, DirectFB is far better supported. (I looked at it early on but, at least back then, it allocated a huge chunk of memory for every window it opened.)

3:59 pm, January 20, 2012  
Anonymous Devzero said...

I was able to start ROLF on the PS2 with 640x480. The filer window has shown the files on the hard disc. Moving the filer window is slow when there are several files or directores in it. Nothing happens when I click on the apps folder in the icon bar. I copied an application to the home directory of the root user. When I open the filer window which includes the application, some part of ROLF seems to crash. The window and the icon bar is gone. So I wasn't abe to run any application. I hoped to be able to run at least some applications like !Edit.

9:49 pm, January 28, 2012  
Blogger Simon said...

Well done on getting it to run at all on a new processor! What resolutions does the PS2 support?

The filer hasn't exactly been optimised for speed, it redraws too much, and the Wimp should probably cache some screen redraws and send them to the framebuffer as a block.

!Edit won't be an option on the PS2 at the moment, because it is a RISC OS program and will need a working ARM emulator.

The Apps directory should open up, though; is the Apps directory where the !Boot file expects it to be?

Filer Icon `pwd`/Apps 50 romapps Apps

Means: Filer, create a disc icon for the directory `pwd`/Apps, priority (position on the LHS of the iconbar) 50, using the icon romapps (from the sprite pool).

If Apps isn't in the current working directory (when !Boot is read), it will just silently fail (0/10 on user friendliness).

You should be able to navigate to the Apps directory using the filer...?

If that fails, try one application at a time, in case one of them works!

What was the application you tried?

11:46 am, January 29, 2012  
Anonymous devzero said...

Thanks for the help.
OK, I thought that an !Edit is included in your code, but I didn't checked it. At least there is !Terminal and !Viewer for testing.
The first problem was that the installation directory is called "apps" and not "Apps".
The second problem was that the libraries, and are not build with position independent code. I fixed this by using libtool for linking. When the filer tried to load an icon, the code seg faulted.
I also forgot to copy the font default8x16.psf.gz which is used by !Terminal. The application is now working.
The PS2 supports a resolution up to 1920x1080 (DTV 1080i), but I didn't finished the driver for the framebuffer. Currently only the console driver supports this resolution without changing the code.
Even the working version has not yet the userfriendliness on the level of a real RISC OS. Opening text files with the program "view" is already a nice feature.
What is the purpose of the segv_action() in compatibility_switch.c? This is currently the last problem which I have when compiling Libs/Compatibility.

10:30 pm, January 31, 2012  
Blogger Simon said...

The segv_action is used to handle accesses to zero page, which can't be mmap'd in (x86) Linux. It decodes the offending instruction and loads or stores the value in a separate memory block.

I'm working on updating my patch for NetSurf (, so it works with a more up to date version of the browser.

User friendliness has been low on my list of priorities, on account of there being no users! I've been getting to the point where I know something can be done, and then moving on to something else.

11:16 am, February 01, 2012  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home