Wednesday, May 6, 2009

Booboo answers some Linux questions and more

From the Spanish GP2x forums:

Originally Written by they chipan

This means that everything what has a direct access when framebuffer (See SDL, linux or what is) is but close no. I must suppose that linux already starts no?


It depends than you understand by “linux”. Linux is kernel plus all the set of applications that run under him. The process of starting of a typical system is the following one:

1 - BIOS (ROM in the case of the JZ4740). It loads bootloader of some site and it transfers the control to him.

2 - Bootloader is a minimum program whose unique intention is to load kernel of some massive storage device, for which it requires a minimum “understanding” of how to accede to such device and where, within this one, is kernel. 3 - Kernel: it takes the control from the system initializing all the devices, mounts a file system from some massive storage device.

4 - Kernel executes /sbin/init in the file system mounted.

5 - /sbin/init reads a file of configuration and is sending different feasible and scripts necessary to put everything in march. (For the purists: there is bootloaders that can load kernel through network, and is possible to do that kernel also mounts a file system through the network.

Also I have omitted the intermediate step of initrd not to complicate it more) Until now what I have arrives at step 4, but simply because:

1 - I have still not formed kernel to recognize the NAND flash nor miniSD. This is VERY simple (good, at least second) since (unlike the LCD) a320 does not have any special particularitity with respect to the reference design that provides Ingenic. If I have not done this it is because while tried to make work framebuffer was using kernel with almost all deshabilitado, with the purpose of to diminish the possibility some interference between devices.

2 - I have still not looked for a distribution MIPSEL, but the thing is as simple as to choose it and to place it in miniSD (although the one that managed to take linux in the wave says that it had problems with the simultaneous DMA of the LCD and of miniSD… already we will see… in any case I can examine the solution that he adopted if the same problem appears to me).

3 - The subject of the access is not resolute from the PC. I explain myself: a320 does not have keyboard, so how we accede to the console. The solution is to form device USB like “gadget” in way CDC, consequently it behaves, from the point of view of the PC, like a terminal series. For the access from the PC as external massive storage device is also used the way “gadget” but the corresponding variant. All this already is implemented in kernel of linux, but of the CDC and not to mount a console with login that way I have done it never, so still I must watch it. Once it has a system that starts and that allows to accede by console, it will already be all the necessary one so that genta is more making experiments and improving the hardware support (without needing disassembling and welding in the console to have a console series RS232 as I have).


By the way, the process of “real” starting right now in a320 is the following one:

1 - Reset of the console with pressed button “B”: the ROM enters way of update of firmware, that basically allows to raise code you and to execute it in the cache of instructions or the SDRAM (although this one is not initially accessible).

2 - Using usbtool (that is rewrite done by the ones of the wave of usb_boot for Windows that provides Ingenic) loads a small program in the cache of instructions (0x80000000-0x80003FFF) and it is executed. This program initializes the SDRAM. Now already it is possible to be loaded what is directly in SDRAM. 3 - Using usbtool again kernel (zImage… that porcierto does not compile in kernel that provides Ingenic… is necessary to make a pair of “fixes”) in the direction is loaded 0x80600000 and it is executed. Evidently all this requires to have the PC connected alongside, which since linux not yet is in a320 I do not believe that it is problem. It is obvious possible to put it everything in the NAND flash and that starts directly of there kernel, or more good still, to give a dual option of “boot” that takes firmware original or kernel of linux following the state of a button, but I believe that at the moment that is not high-priority, and in the case of the dual boot he is something more complicated because instead of to put in NAND to bootloader anyone it is necessary either “to patch” the one of firmware original or to find out how it loads firmware original and what parameters happen to him to emulate the same behavior. As you see, still there is much to rascar. My priority is to arrive the sooner to a point in which ANYONE can take kernel in its Dingoo and make experiments… from there the number of implied people would have to grow quickly.

< - > Originally Written by otto_xd Reason why I before read tanning bark where, but already it shows by screen, so galtaria all the adaptation to it to this machine, that is not turkey snot. East thread enchants to me, makes give me account me that I do not have npi don't mention it, but xD enchants to me


Greetings I have already explained where and why they cracks. This is what lacking to do, not necessarily in sequence of importance, and with an estimation of the difficulty:

1 - Support miniSD: necessary to be able to mount root filesystem. This would have to be trivial: kernel of Ingenic already must driver for this, and the unique particularitities of the Dingoo are the pins GPIO that are used to detect the inserted card and to activate/to deactivate the feeding of the card. First I know already it, and the second although I do not know what is, yes that I know the state pins GPIO when firmware original is using miniSD, so I can avoid it at the outset and soon once the access works to be changing the state of the pins until it stops working. However, I have founded suspicions that in a320 miniSD always is fed. It would not be a good practice of design, but it would not be strange to me because already I have seen a shoddy work in the form in which the LCD is connected.

2 - Support NAND flash: necessary if possibly it is desired to have a direct starting of linux in the console. The support of the NAND flash would have to be trivial by reasons similar to the previous ones, nevertheless how to record initially what must go in the NAND flash he is something more complicated. In any case, like already I have commented, this is almost the latest that would be to do.

3 - Support keys: also trivial. Kernel of Ingenic has or it and only it is necessary to form the pins GPIO that or I have identified in its totality (those of the bellboys, I mean).

4 - Ignited support/extinguished: It seems to me that kernel of Ingenic also has this but I do not finish knowing clearly how works (as much in kernel as own hardware). Average difficulty.

5 - Support loads battery: I am almost safe that of this a specific chip is in charge. All it will indicate more if it is loading the battery, and perhaps the load (to only activate/to deactivate) with a pin GPIO can be controlled. In kernel there is no support of this because he is trivial and in any case must be in charge an application of user. Average difficulty.

6 - Reading level battery: if, as I imagine, converter ADC of the micro ones is used, would have to be trivial. There is support of the ADC in kernel of Ingenic, and an application of user would read the level.

7 - Sound: upper middle difficulty. Kernel has support alsa/oss, but I do not know both clearly why (if alsa works, is a layer that emulates oss on alsa, would not have sense to have both). In addition there are some auxiliary organizational elements here that I do not have nor idea at the moment of how they go: gain control, microphone, selection of earpieces/internal loudspeakers, entrance of the audio one of the radio, etc.

8 - Radio FM: average difficulty. It does not have to driver specific in kernel for this chip, but I have the documentation and the chip communicates by the bus I2C for which yes that is support in kernel. It is possible to be chosen between writing to driver of kernel that works on I2C (I have examples… I create to remember that in uCOS-II Ingenic it has some to driver for another model of chip) or directly that the application of user who becomes for “hearing the radio” communicates directly by bus I2C with the radio chip. I have datasheet of the radio chip, but I have not watched if to part of bus I2C there is some other involved pin GPIO. He is almost certainly since minimum will be a dedicated pin to control the feeding, and I will discover again it when it at least manages to communicate with the chip by bus I2C and then it begins to change states of exit pins whose function not yet I have identified (to pains 4 or 5) until it lets be able to communicate with the radio chip. In addition this part “connects” with the sound, since the radio chip outside removes to the sound as if codec from audio (format I2S), reason why this one enters dingoo and soon “it leaves” by the audio grey hair out, that is to say, is as if the sound of the radio entered directly by micro and rutara when coming out of audio., or in other words, “to record” and “to reproduce simultaneously”.

9 - Exit TV: high difficulty. This I believe that it is going to have much fabric. I have all the information of the chip that is used, but not of the auxiliary pins GPIO that surely are used (to control the feeding and some thing more). In addition, when a320 passes to way TV controller LCD changes of way SLCD (“smart LCD”) to the normal way, and both drivers are not compatible. I have the advantage which I know the state of all the registries of controller LCD and others when dingoo is in way TV out (I made .app with the SDK to find out this). The simplest solution would be to both have drivers (normal SLCD and LCD) like modules and to unload one and to load another one when out is wanted to change to way TV, but is that driver SLCD by force it must be put in kernel, cannot be like module because then nothing in the starting would be seen because framebuffer it would not exist. We go… that this part is (after the one of framebuffer that she is already resolute) most complicated and on that maś information is still necessary to find out.

10 - Management of energy: to suspend/to resume. In theory kernel supports already it, but this usually poses problems.

11 - Management of the clock: management of the frequency of work of the CPU: it is already supported in kernel. Not if I leave some function of dingoo… like for example the RTC (clock in real time)… if to somebody it is happened to him it says that it. I am not safe either 100% that the microphone is connected to codec of audio like so… is possible that is connected to the ADC or something thus.

< - > Originally Written by Rivroner I do not have a Dingoo nor me fodder to buy but, Booboo, ole your webos uncle ! Then so it entertains the price it is of coña.


Obvious I much more “am entertained” with kernel of linux that with the emulators… but good. As a personal opinion, a320 seems to me, like portable average to player: 1 - The LCD is a model thought for vertical direction, which causes that since already has pointed somebody, it loses visibility quickly if is watched from the left. he does not bother to me absolutely, but I believe that the election of display has been a design error since there is displays to similar prices that do not present/display this “problem” I put (it in inverted commas because I insist on which it does not bother to me, and I am VERY maniático for these things). 2 - What yes that bothers to me it is that my LCD has totally white “a dead” pixel. It is not seen almost but since I have said I am very maniático. I am using as it to develop does not concern too much to me. 3 - The quality of the sound leaves something to wish and I (that I have VERY good ear) while I listen to music with the volume the minimum (when going me to the bed, for example) I can surely listen to “interference” originating of the digital communication with miniSD. I insist: I have very good ear and it only is with the volume to the minimum in a very particular situation (absolute silence).

< - > Originally Written by SinMan Good the Kernel panic! of the last line it says that to start it does not start, but also seems that the problem comes from which it cannot mount the system of files, not that some unknown internal of hardware.


Since already there am saying, in that kernel directly was deshabilitado support NAND flash and miniSD, apart from which there was no miniSD inserted and filesystem had been although it did not have root. As soon as I obtained that posteé worked framebuffer the photo and I went away to sleep.

< - > By the way booboo, although I have neither idea of electronics nor of movable dispostivos. I take beating with Linux from the 98, when you had recompilarte kernel and configurarte everything by hand whenever you installed, when tapeworm Internet and painfully does not find out to me that if you do not compile the support of battery TCP you do not have servant X , so if you now pass the files to me that the LCD works, because I do not have console series like your, I can stick with the configuration


You do not worry because that already I have done it and I like the back of her hand know practically all (and they are a barbarism) the options configuration of kernel. Support TCP surely is going to be deshabilitado because it does not have sense that is not thus to not having any device of network (and in addition it occupies an egg). Linux that does not put in the maquinita will take the Xs either, since he is overhead brutal for a single application that there is to possibly run (that would make the functions of firmware original, with another one “look”). Simplest it is than this application directly programs on a version of the SDL compiled with support video-out to only framebuffer.

 < - > Originally Written by Ruxy I have seen in an interview of a spokesman of that they do dingoo, and says that with this it is possible to be programmed games for dingoo, so I suppose that they are podran to make other things. Hechar to him a look “hews with an axe you EP”: //


That is the SDK with which, indeed, program for the Dingoo under firmware original. I have used that to make a programita simple that shows the content of all the registries of the peripheral ones of the processor to know what is “the functional” configuration which I must obtain (type of SDRAM, NAND flash, LCD, etc).


  1. While we all appreciate your work bringing us detailed information like this, a 2700-word dialog is a bit much for a front-page blog post. It's six pages tall on a 1920x1200 monitor!

    In the future, please consider posting an excerpt with a read link to the full post. Better yet, you could post long pieces like this (and the other long Linux post) with div overflow parameters to keep the footprint of the post manageable. See here for details:

  2. I agree. Ever see articles on Joystiq? Articles are summarized or shortened until you click on it, then you view the whole thing.

  3. If there were a summary, I would've missed this gem "Reason why I before read tanning bark where, but already it shows by screen, so galtaria all the adaptation to it to this machine, that is not turkey snot."

  4. Not to forget HTTP being translated to "hews with an axe you EP"

    HA HA!