[Buildroot] CHIP Pro OS?

Arnout Vandecappelle arnout at mind.be
Mon Feb 20 22:32:00 UTC 2017


 Hi Josh,

On 19-02-17 06:40, Baruch Siach wrote:
> Hi Josh,
> 
> On Sat, Feb 18, 2017 at 09:03:30PM -0700, jjman04 at icloud.com wrote:
>> Hi guys, I'm Josh. I wasn't sure which email to sent to, so I sent to both 
>> of the email addresses that I found.
> 
> Please use the buildroot@ address only.
> 
>> Here's my question:
>>
>> How hard would it be for me to program a (very lean) OS for CHIP Pro 
>> (https://getchip.com/pages/chippro) using Buildroot?
> 
> Buildroot is not about programming new OSes. It builds existing OS kernels 
> (only the Linux kernel is currently supported) and some other software 
> packages to something you can run on various boards. If you are into OS 
> development check http://wiki.osdev.org/Main_Page.

 If you want to program an OS from scratch, you're probably better off targeting
a much simpler CPU than the CHIP Pro. The Arduino is a classic example. The CPU
of the CHIP Pro is pretty complicated to program, with an MMU and supervisor
mode etc.


 That said, if you're rather looking for a cool project on the CHIP Pro, maybe
you want to develop a lean, basic Linux distro for the CHIP Pro. That's
something where Buildroot can help. We don't have support for the CHIP Pro at
the moment, but the Next Thing Co people seem to have a fork with support for
it: https://github.com/NextThingCo/CHIP-buildroot

 If you're going to experiment with Buildroot and you need help, you can also
join on IRC, #buildroot.


>> Keep in mind that I'm only 12, so I don't know many programming languages. I 
>> know a bit of Python and HTML5. I'm also learning C++ as soon as I find an 
>> online course. Would knowing those languages be enough?
> 
> Python, HTML and C++ are not so good for OS development since their 
> implementations depend on OS provided services. You need something like C,
> Rust, or assembly.

 Indeed, Python and HTML5 are interpreted languages, so you already need
something running on your system (the interpreter) to be able to use these
languages.

 Rust and C are compiled into machine code so can be executed directly by the
CPU, without an interpreter. However, even those need a bit of setup. A C
program needs, for example, a stack [1], and in an OS you need interrupt
handlers [2]. For these, you have to program in assembly.


 Come to think, however, there is one option. You can start from an existing
bootloader (e.g. U-Boot), and write a stand-alone program from there [3]. U-Boot
will already have set up a stack etc. when it calls the program. But the program
can do anything, so it can indeed implement a full OS. And it should be possible
to write a stand-alone program in Rust or C++. The nice thing about this
approach is that you can start out using some of the U-Boot functionality, for
example to have some output. So you can get something up and running pretty
quickly, and make it more complicated and advanced over time.


 By the way, if you still have to learn a low-level programming language, I
think Rust is a really good option. Even if Rust never becomes popular, I think
it's a great experience. I hope I'll get the chance to learn it myself some time :-)


> You also need a very good understanding of your target hardware. This kind of 
> information is unfortunately not so easy to come by when dealing with 
> Allwinner based products like the CHIP Pro.

 True, Allwinner and documentation are not best friends :-)


 Regards,
 Arnout


[1] https://en.wikipedia.org/wiki/Call_stack
[2] https://en.wikipedia.org/wiki/Interrupt
[3] http://www.denx.de/wiki/view/DULG/UBootStandalone

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF



More information about the buildroot mailing list