Going low level, very low level…

So, I started with qemu to simulate an ARM board, connect to qemu with GNU Debugger, load some code into the qemu v-board…

So far, so good, I used to run this

qemu-system-arm -M versatilepb -m 256 -kernel /dev/null -s -nographic

This allowed me to skip qemu complaint about no kernel exists, and redirect to the output to the console, and the –s is to allow GDB to connect to it via port 1234…

The problem with this, when I leave it too long, the CPU automatically keeps incrementing the program counter (PC) and keeps looking through out the entire memory space looking for some code to execute, until it runs out of valid addresses, and an exception is raised, and qemu terminates with this error:

qemu: fatal: Trying to execute code outside RAM or ROM at 0x10000000 R00=00000000 R01=00000183 R02=00000100 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=10000000
PSR=400001d3 -Z– A svc32
Aborted

If I’m fast enough to connect GDB to qemu, then I’m OK, if not, qemu will terminate before I’m able to connect to it…

So I had that crazy thought while having a shower…

Continue reading

Advertisements

Another step ahead… RTOS…

Yesterday I finished a training course that was about RTOS, the instructor was Amr Ali, and Wasiem Hashim, the course covered some topics about RTOS, concepts, scheduling, threading, synchronization, and best of all, concepts of porting…

It turned out that I know much already to get me started, and already have the foundations I need to do good work, Cross-Compiling, solid C/C++ programming skills (threading, synchronization, TCP/IP), good OOP knowledge (thanks to Mostafa Hashem), what I really need now is build my skills in device driver development, that shouldn’t be too hard, right??

Yesterday night, I had a sleepless night, dreaming about RTOS, uC-OS II, Velos, and the best of all; ARM assembly code 😀 …

As I used to collect and try all kind of UNIX OSs, (Linux “all the flavors I could get my hands on”, FreeBSD, Solaris, HP-UX, Mac OSX), I’ believe I’ll start collecting RTOSs to my library of software, and try them out -mainly- on QEMU, and any hardware I could put my hands on, like the Linksys WRT-160N, and La-Fonera 2200, or even boot it with grub on a VM (why not?!); that would be my next step…

Wish me luck…

One Step Ahead…

Knowing the path is something, but walking the path, is a totally different thing…

A few weeks back, I’ve applied for the Intel® Embedded Pre-Release Seed Board Program, I’ve provided my proposal, along with a small description of what I have in mind to design in the field of Embedded System, and vuala, I’m accepted…

So, yesterday the FedEx guy showed up with a big box for me, and there it was, right in front of me; the bleeding edge of technology…

Continue reading

Android on Palm Treo 680

I’ve always wished I can penetrate the embedded systems technology and market, I’ve been successful running Linux OS on embedded boards such as linksys routers, d-link routers, don’t tell me, I know this is no big deal, OpenWRT and DD-WRT got that running ages ago, but there’s always a 1st step for everything…

As part of this effort, I’ve been trying to port Google’s Android on my Palm Treo 680, and these images are the closest I could get, I’ve tried to discuss this with other guys trying to do the same effort, but they all seem to have lost interest in this, I did…

This is the linux kernel booting, and you can see (A N D R O I D _) and the very below of the screen…

And this is the ANDROID splash screen, the little guy keeps flashing endlessly, and that’s it…

These have been discussed on these two URLs on Android’s Porting mailing lists…

My post and another discussion