Kernel/firmware Development Questions


flag

Still Fresh
Joined
Aug 3, 2010
Messages
11
Dear board,

first forgive me if it's a FAQ: i did quick search around but i couldn't find any clear answer.

As the subject says i'm interested in kernel/firmware development for the GP2X Wiz/Caanoo, and i was wondering
if the system is "open enough" to let me play with it.

Basically i would like to know if:

1) is the _entire_ source code for the firmware/kernel available?
2) is the _entire_ source code for the bootloader available?
3) does gp2x wiz/caanoo have any mechanism to recover it in case of bad flashing? (JTAG? or anything else)
4) do we get the toolchain used by gp2x to build the firmware? (and thus we can build or own addon/modules/whatever)
5) is there any doc/wiki/whatever about these topics?

Thanks in advance.
 
1) Kernel yes, somewhere, I don't have a link on hand. Firmware no, as far as I'm aware, ie utilities like the menu aren't open.
2) Same as kernel source.
3) Wiz can boot via UART. The UART and boot select pins are exposed via the ext port. GPH's breakout board allows interfacing them easily, but I don't think this board is safe for production Wizes. So you may have to rig your own RS232 (or whatever) transceiver and tie the boot pins to something. Recovery can be done via this interface and using MES tools that have been distributed here before. The interface is not publicly documented; the (leaked) Pollux datasheet is sparse on details. There's an app note somewhere addressing this but I haven't found it. There's JTAG too; I can't really give you more details (presumably standard for ARM9). I assume the Caanoo has the same ext interface and that all of this applies to it.
4) GPH released an SDK, I presume it's the same build of GCC and libraries and whatever they've used for building the firmware. It's nothing special, people have been getting by without anything released by GPH from day one - in fact, the toolchain for GP2X works fine. This probably doesn't apply to Caanoo since it's EABI, but a standard ARM-EABI toolchain like CodeSourcery should work.
5) I don't think there are very good ones but I could be totally wrong.
 
here's a firmware compile info

one problem is though, that GPH did not release the source to the latest firmware (1.2.1 as time of writing), the firmware in the git repos is 1.1 with some community fixes iirc.
 
Last edited by a moderator:
Exophase said:
4) GPH released an SDK, I presume it's the same build of GCC and libraries and whatever they've used for building the firmware.

Small note: the SDK comes with GCC 4.0.2 but libstdc++ in firmware 1.2.1 seems to be from 3.4.x. I had to compile with "-fno-exceptions" to get my program to run.
 
Last edited by a moderator:
hmn said:
Small note: the SDK comes with GCC 4.0.2 but libstdc++ in firmware 1.2.1 seems to be from 3.4.x. I had to compile with "-fno-exceptions" to get my program to run.

They should really update that :/
 
Last edited by a moderator:
Exophase said:
3) Wiz can boot via UART. The UART and boot select pins are exposed via the ext port. GPH's breakout board allows interfacing them easily, but I don't think this board is safe for production Wizes. So you may have to rig your own RS232 (or whatever) transceiver and tie the boot pins to something. Recovery can be done via this interface and using MES tools that have been distributed here before. The interface is not publicly documented; the (leaked) Pollux datasheet is sparse on details. There's an app note somewhere addressing this but I haven't found it. There's JTAG too; I can't really give you more details (presumably standard for ARM9). I assume the Caanoo has the same ext interface and that all of this applies to it.

uh... this breakout board sounds interesting... :)
do anyone have one and can share some thoughts?
 
Last edited by a moderator:
crow_riot said:
here's a firmware compile info

one problem is though, that GPH did not release the source to the latest firmware (1.2.1 as time of writing), the firmware in the git repos is 1.1 with some community fixes iirc.

that means you rebuilt the kernel and flashed your device? but since the firmware is not totally open source, what did you do?
picked gph's firmware, opened it, replaced their kernel with your own and flashed it?
didn't you fear to brick?


if i ever get to buy a caannoo/wiz, my first task would be to add support to this wifi dongle:

http://www.sitecom.com/Wireless-USB-Nano-Adapter-150N-X1/WL-353/p/755

there's a linux driver, but it's staging only and i don't think original gph kernel has it compiled.
 
Last edited by a moderator:
You can build your own break out box. Here is the Wiz/Caanoos pinout:

Link.

Here you can download an unbrick pack with some detailed information who to unbrick:

Link.

No, the Realtek chip of the posted Wifi dongle is not supported from the firmware out of the box.
 
Last edited by a moderator:
flag said:
that means you rebuilt the kernel and flashed your device? but since the firmware is not totally open source, what did you do?
picked gph's firmware, opened it, replaced their kernel with your own and flashed it?
didn't you fear to brick?

i didnt flash with my own kernel, i just wanted to compile some kernel modules. like you say, you want to compile a driver that doesn't ship by default. thats the way to go :)

and ... i shit my pants when it comes to (re)flashing, so i'd never dare to flash something self compiled :)
 
Last edited by a moderator:
crow_riot said:
i didnt flash with my own kernel, i just wanted to compile some kernel modules. like you say, you want to compile a driver that doesn't ship by default. thats the way to go :)

i see. but where do you put the new kernel module then? in the sd card? and how do you make the system load the module at boot time?

sorry for the n00b questions :)
 
Last edited by a moderator:
If you only need your module as part of an application, you can "ship" it along with your application on the SD card, and have the application load it at runtime (everything runs as root on the Wiz).
 
flag said:
crow_riot said:
i didnt flash with my own kernel, i just wanted to compile some kernel modules. like you say, you want to compile a driver that doesn't ship by default. thats the way to go :)

i see. but where do you put the new kernel module then? in the sd card? and how do you make the system load the module at boot time?

sorry for the n00b questions :)

as hmn said, you can put the compiled module onto your sd card and use the unix insmod command.
 
Last edited by a moderator:
Back
Top