Rockbox

Tasklist

FS#12496 - RaaA WebOS

Attached to Project: Rockbox
Opened by Jason Yu (captainkewl) - Friday, 30 December 2011, 05:20 GMT
Task Type Patches
Category Operating System/Drivers
Status Unconfirmed
Assigned To No-one
Operating System Generic RaaA
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No

Details

Rockbox WebOS app.

Built on r31467, 32/64-bit Ubuntu 11.10, running on a 32GB Touchpad

Directions (only tested on the above):

* Install WebOS PDK: https://developer.palm.com/content/resources/develop/sdk_pdk_download.html

* Install platform-native libsdl-dev if you haven't already. Only needed to pass configuration check as the PDK doesn't properly install staging sdl-config for some reason.

* Apply patch (patch -p0 < filename.patch)

* cd webos

* ../tools/configure, select WebOS target (206)

* make && make install && sh ./buildpkg.sh

Notes:

* This is one big hack -- I fudged just about everything in /firmware (how the target system works is still not altogether clear to me) and piggybacked a lot of this off of the SDL target. Mostly in the interest of getting it to run without adding ifdefs all over the place. Obviously we'll want to be more methodical and thorough about exactly which changes need to go where moving forward.

* The Touchpad's SDL video implementation appears to adjust orientation and scale output to fit within 1024x768 as best as possible. This means that a 800x480 build will appear in landscape mode, letterboxed, while a 320x480 will appear in portrait mode, pillarboxed. The device itself automatically orients to landscape -- meaning, if you're in a portrait resolution and then you exit, everything will initially be sideways -- but that doesn't affect input. Scaling routines are noticeably slow.

* I tried building this as a hybrid Enyo/PDK (window mgr friendly) app but had some problems with the native part failing to execute at SDL_Init. So for now no backgrounding or notification bar.

* Make scripts use the ARM compilers installed with the PDK. I'm wondering though if this is superfluous given that the Rockbox toolchain also supports ARM7. I did try exposing some of the ARM-specific assembly but the compilation failed with the PDK compiler.

800x480 build: http://www.jasonyu.net/webos/org.rockbox.raap_0.0.1_all.ipk
This task depends upon

Comment by Jason Yu (captainkewl) - Friday, 30 December 2011, 05:48 GMT
Also: database writing and/or reading seems to be broken somehow. Only happens when run at the user level through the GUI. Only usable database categories are Ratings and Year -- the rest are all empty.

Works fine when the app is launched through the console though. Permissions???
Comment by Thomas Martitz (kugel.) - Friday, 30 December 2011, 07:43 GMT
Cool, will try as soon as my touchpad arrives!

However, I don't think we want to have the WebOS port using sdl. You can use the SDL port instead. Your work isn't much different from running the SDL port as is, the differences boil down to packaging.

For the toolchain: You can try the new "arm-app" toolchain that rockboxdev.sh can build. Perhaps that one works.
Comment by Jason Yu (captainkewl) - Friday, 30 December 2011, 15:53 GMT
Agreed... next step is to get it working as a hybrid app. With only maybe 3 lines of new code -- the rest is just environment and packaging -- I'm not sure if there's much point to this existing as a separate target as is.
Comment by Thomas Martitz (kugel.) - Friday, 30 December 2011, 16:09 GMT
You can put this port under firmware/target/hosted/sdl/webos, e.g. the button map. And I don't think a new PLATFORM_WEBOS is qualified at this point.
Comment by Jason Yu (captainkewl) - Sunday, 22 January 2012, 18:05 GMT
r31646 (last svn, haven't switched to git yet). Still proof of concepting so I haven't really reorganized this yet -- just wanted to post this to so others could see where I'm going with this.

Changed to Hybrid app, new app ID. Beginning work on integration with WebOS, particularly notification dashboard. Still need to figure out backgrounding.
Dimensions in Hyrbid mode are defined in app.js -- by default they're 320x480. You'll want to modify this if you build at a different res as this scales video only.
Uses OpenGL ES to render surface to texture on plane -- I believe hardware rendering in 3d is faster than software 2d.
Comment by Thomas Martitz (kugel.) - Sunday, 22 January 2012, 21:23 GMT
(short recap from irc) FPS is far to below with both patches to be useful.

FWIW, the it reaches 60fps (as expected) in the android port.
Comment by PurlingNayuki (yzflcyq) - Saturday, 11 February 2012, 19:18 GMT
Can't build with today's latest source. I'll try again later.
Comment by PurlingNayuki (yzflcyq) - Sunday, 12 February 2012, 16:16 GMT
It says:

CC firmware/asm/arm/memset16.S
/home/yzflcyq/PMP-Firmware-s-Rockbox-X/firmware/asm/arm/memset16.S: Assembler messages:
/home/yzflcyq/PMP-Firmware-s-Rockbox-X/firmware/asm/arm/memset16.S:62: Error: bad instruction `ldrpc cond=eq'
make: *** [/home/yzflcyq/PMP-Firmware-s-Rockbox-X/webos/firmware/asm/arm/memset16.o] 错误 1
Comment by Robert Menes (RMenes379) - Thursday, 03 January 2013, 15:02 GMT
Has anyone tried again in recent days to build this on the current Git master? I'd like to take this patch and see if maybe
we can make this an official port.
Comment by PurlingNayuki (yzflcyq) - Friday, 04 January 2013, 01:19 GMT
Yep I've been trying to fix it but failed. I've tried to build gigabeats target as a simulator using arm-none-linux-gcc, the compiler for WebOS APPs but get errors.

Loading...