Hi everybody out there,
I’m going to write something about my BA thesis in electronics, in order to have a log/trace of what I’m doing, also as an attempt to revert the relation one (me) to many (the developers world) that makes me crazy every day, looking for someone that did something related to my task, giving me tips (or solutions) to my issues. Nevertheless some good chats about the subjects, from a broader point of view, will be much appreciated.
The aim of this and coming posts is to get visitors interested in Embedded Linux running on an ARM device like Freescale i.MX21 with final task to get me phone throught it by a VoIP application. This is pretty much my thesis.
So… let’s go a little bit further.
Some months ago I had the opportunity to get in touch with a professor at the University of Padua (Padova) that offered me an unexpected opportunity as my final BA thesis in electronics: programming an application on ARM. Pretty simple by the way, but it was an idea to develop.
Surprised by the fact that after months (I should say years…) of theories and formulas with absolute no “hands on” on what electronics is (and… I KNOW electronics is not only a matter of soldering stuff… but it’s clearly true too that a supposed electronic engineer should know how a board comes out the production factory, anyway…), I had in front of me a box with inside a Freescale i.MX21 ADS board.
The next part of the discussion with prof. Vangelista was about which kind of application develop, giving it greasy and interesting details. What came out was a VoIP application running under emebedded linux, which is the operating system this board uses.
So the concept of “application” expanded in something wider like analizing the value of embedded linux over ARM processors (this means: expanding the inner knowledge of linux and its kernel, entering the fabulous world of cross compiling on ARM, getting more in touch with the hardware), studying ARM processors, write down (or looking for) a suitable VoIP application as final sum of all the concepts previously described.
It turns out that this task is as exciting as painful.
First of all cross compiling (ie from a host x86 machine different from target ARM machine) is not like compiling (for the same machine). This unveils the dirty monster called toolchain. Funny as this could sound similar the chain-whipping concept.
Then, a linux application executes, well, in linux. This means a mid-level full of meanings and things to know if you get errors like “library is missing” or you have makefiles that compile the 99% of your application and left you a 1% of sufferings while looking for on internet if someone else had your same issue.
I won’t mention the fact that if you don’t have a broadband connection and no root rights on the machine, it’s way better for you to do anything else, because it would be impossible obtain results.
Now, before going back to compile, I would leave you, for now, with my last problems I’m trying to get them work:
- I did experimets on various Qtopia (phone and core edition) versions: the x86 through QVFB was ok, but not clear signs of VoIP working properly; crappy results on ARM excutables (no icons, no audio, no keyboard access). Then my help request: how I can get Qtopia access by the i.MX21 keyboard, which configuration parameters (or anything else) do you suggests me.
- My board is running the 2.4.20-celf kernel, the Freescale deafult one. Chumby is running the very same hardware and then I tried (hard) to get the 2.6.16 kernel running on by board, in order to get proper access to the sd/mmc card (and eventually to wireless networking). I solved some tricky glitches about tftp-ing kernel on the board, it decompresses and starts booting, but then, void. Any guess? I used in the kernel boot string the console parameter with ttyS0, 115200n8, but nothing. But at one point I got network activity…
- Does someone have hints to give me about i.MX21 possible traps like those things you should know, but if you don’t know let you waste thousands of hours watching a black screen and vivid green characters flowing?
- Accessing the external NAND flash of the board, it’s only a matter of changing the bootload NAND support or I can do it afterwards on linux run time?
Thanks a lot for the attention, see you in the next post. If you want to contact me, leave a comment here and I mail you back (of course, if you provide me a usable e-mail that I won’t publish and I’ll protect against spams, viruses and so on).
PS: never enough “Thank you soooooo much” to Dan Kegel and his crosstool.