Thursday, May 28, 2009

Where we are with Dingoo Linux: WTF is a toolchain?

There have been many references to this word “toolchain” since Booboo posted his Dingoo Linux information on Google code.  But what is a toolchain? Wikipedia is your friend:

In software, a toolchain is the set of computer programs (tools) that are used to create a product (typically another computer program or system of programs). The tools may be used in a chain, so that the output of each tool becomes the input for the next, but the term is used widely to refer to any set of linked development tools.

A simple software development toolchain consists of a text editor for editing source code, a compiler and linker to transform the source code into an executable program, libraries to provide interfaces to the operating system, and a debugger. A complex product such as a video game needs tools for preparing sound effects, music, textures, 3-dimensional models, and animations, and further tools for combining these resources into the finished product.

Here’s a good representation of the toolchain concept:

image

To my untrained eye, it looks like we want to get to “Solvers” on the right – the diagram represents how the various programs/data interact to get us there.

Here’s another diagram illustrating the concept of a toolchain:

image

From the source site: “The figure depicts the complete XMLVM toolchain. Each of the boxes represent an artifact while the arrows denote the various transformations between those artifacts. The input to the XMLVM toolchain is either a Java class file or a .NET executable.  …. First, we describe how a .NET application can be translated to XMLVMJVM. Next, we discuss how XMLVMJVM can be cross-compiled to JavaScript to generate AJAX applications. Note that with the front-end it is possible to generate AJAX applications from Java or any of the .NET applications. The final use case we present here is a backend for Objective-C which effectively allows Java applications to be cross-compiled to native iPhone applications.”

So:

From the official Linux development thread, we can understand these posts from the A320 freeforums much better. As far as I can work out:

1. the toolchain is required for developers to run on their local Linux PC, to generate new … apps/other programs? … which can actually run on Booboo Linux;

2. at the moment, while ezelkow1 has done significant work on a common mobile toolchain which everyone can reliably use, we’re still not quite there yet.

No reliable toolchain = no common and simple tool to port apps. Ainu, for instance, has had many problems attempting to compile new programs using the existing toolchains.  I find it hard enough remembering how to find “My Documents” from the C:\ drive in Windows explorer sometimes, so Ainu, I very much think I can feel your pain!

Knowing what I don’t know, I suspect that more than a toolchain is needed as well before we really get deluged with good stuff, but the point is we don’t even have this essential tool(chain) now! A journey of a thousand steps, as they say … begins with a single kernel, and then a toolchain …. and then, probably other stuff, but one thing at a time, for now, it’s we need toolchain, toolchain, toolchain.

Fortunately, it does appear that ezelkow1’s work over the past week or so has really pushed things along, and hopefully a good mobile toolchain will emerge shortly. I believe this is the link to ezelkow1’s last posted toolchain: http://dl.openhandhelds.org/cgi-bin/dingoo.cgi (see ezelkow1’s comment)

Stay tuned for more!

5 comments :

  1. I actually took that toolchain down since it wasnt usable across machines, unless the developer had some knowledge of how to get it working with the messed up paths it was built with.

    You did a good job explaining though, toolchain is basically what you need to create and compile more apps specifically for a target machine. There does exist a current toolchain from the processor manufacturer, but it is for the generic version of linux using all of the very large libraries made for a home computer. The toolchain I am working on is uclibc, made for embedded and small devices. This strips out all of the unecessary stuff and makes much smaller and less memory intensive applications than you would get with the other libraries.

    I ran into a bit of trouble last night trying to make the portable toolchain but hopefully I will have something again in a few days that works.

    ReplyDelete
  2. You should explain what a kernel is next, for people to get a better idea of why Linux is such a big thing for this device.

    ReplyDelete
  3. wanna touch my toolchain? ;).

    im glad linux is looking so promising on the dingoo. Can't wait for dual boot.

    ReplyDelete
  4. Hi Friend,! Congratulations for this nice looking blog. In this post everything about Web Development. I am also interested in latest news, Great idea you know about company background. Increasing your web traffic and page views Add, add your website in www.directory.itsolusenz.com/

    ReplyDelete