<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ronetix.at/index.php?action=history&amp;feed=atom&amp;title=PM9G45-U-BOOT-LINUX-YOCTO</id>
	<title>PM9G45-U-BOOT-LINUX-YOCTO - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ronetix.at/index.php?action=history&amp;feed=atom&amp;title=PM9G45-U-BOOT-LINUX-YOCTO"/>
	<link rel="alternate" type="text/html" href="https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;action=history"/>
	<updated>2026-09-26T01:40:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=203&amp;oldid=prev</id>
		<title>Ilko at 06:48, 8 October 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=203&amp;oldid=prev"/>
		<updated>2021-10-08T06:48:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:48, 8 October 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#vardefine:HARDWARE_NAME|PM9G45}} &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!--&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#vardefine:HARDWARE_NAME|PM9G45}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/del&gt;{{#vardefine:URL_PM9G45|[https://ronetix.at/product/pm9g45-cpu-module-with-atmel-at91sam9g45/ PM9G45]}} &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &amp;lt;!--&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#vardefine:URL_PM9G45|[https://ronetix.at/product/pm9g45-cpu-module-with-atmel-at91sam9g45/ PM9G45]}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/del&gt;{{#vardefine:URL_PEEDI|[https://ronetix.at/product/peedi-jtag-swd-bdm-emulator-and-flash-programmer/ PEEDI]}} &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &amp;lt;!--&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{#vardefine:URL_PEEDI|[https://ronetix.at/product/peedi-jtag-swd-bdm-emulator-and-flash-programmer/ PEEDI]}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pm9g45_top&lt;/del&gt;.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PM9G45-top&lt;/ins&gt;.png|thumb]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= {{#var:URL_PM9G45}} User&amp;#039;s Manual and Schematics =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= {{#var:URL_PM9G45}} User&amp;#039;s Manual and Schematics =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilko</name></author>
	</entry>
	<entry>
		<id>https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=38&amp;oldid=prev</id>
		<title>Ilko: Ilko moved page PM9G45 to PM9G45-U-BOOT-LINUX-YOCTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=38&amp;oldid=prev"/>
		<updated>2020-08-18T10:11:03Z</updated>

		<summary type="html">&lt;p&gt;Ilko moved page &lt;a href=&quot;/index.php?title=PM9G45&quot; title=&quot;PM9G45&quot;&gt;PM9G45&lt;/a&gt; to &lt;a href=&quot;/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&quot; title=&quot;PM9G45-U-BOOT-LINUX-YOCTO&quot;&gt;PM9G45-U-BOOT-LINUX-YOCTO&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:11, 18 August 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Ilko</name></author>
	</entry>
	<entry>
		<id>https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=35&amp;oldid=prev</id>
		<title>Ilko: Fix Tips and Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=35&amp;oldid=prev"/>
		<updated>2020-08-16T20:11:30Z</updated>

		<summary type="html">&lt;p&gt;Fix Tips and Tricks&lt;/p&gt;
&lt;a href=&quot;https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;amp;diff=35&amp;amp;oldid=32&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ilko</name></author>
	</entry>
	<entry>
		<id>https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=32&amp;oldid=prev</id>
		<title>Ilko: Initial import</title>
		<link rel="alternate" type="text/html" href="https://wiki.ronetix.at/index.php?title=PM9G45-U-BOOT-LINUX-YOCTO&amp;diff=32&amp;oldid=prev"/>
		<updated>2020-08-16T17:48:42Z</updated>

		<summary type="html">&lt;p&gt;Initial import&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{#vardefine:HARDWARE_NAME|PM9G45}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#vardefine:URL_PM9G45|[https://ronetix.at/product/pm9g45-cpu-module-with-atmel-at91sam9g45/ PM9G45]}}  &amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#vardefine:URL_PEEDI|[https://ronetix.at/product/peedi-jtag-swd-bdm-emulator-and-flash-programmer/ PEEDI]}}  &amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
[[File:Pm9g45_top.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
= {{#var:URL_PM9G45}} User&amp;#039;s Manual and Schematics =&lt;br /&gt;
The User&amp;#039;s Manual and the schematics of PM9G45 can be found here:&lt;br /&gt;
* http://download.ronetix.at/boards/doc/PM9G45/&lt;br /&gt;
&lt;br /&gt;
= Before you start =&lt;br /&gt;
&lt;br /&gt;
The instructions in this document are meant to be done under GNU/Linux environment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Connecting to the board =&lt;br /&gt;
	A serial terminal connection through RS-232&lt;br /&gt;
	null modem cable is needed to control U-Boot and GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
	To set up U-Boot run time a serial terminal connection must be used,&lt;br /&gt;
	this is the only way you can get access to the U-Boot command line.&lt;br /&gt;
	The Linux boot messages are transmitted to the same serial connection.&lt;br /&gt;
&lt;br /&gt;
	The Serial Debug interface is set to 115200 bps with 8 data bits, one&lt;br /&gt;
	stop bit and no parity. Use the screen command like this&lt;br /&gt;
 &amp;quot;screen /dev/ttyS0 115200 cs8,-cstopb,-parenb&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
 minicom&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
	As tftp or ftp servers are needed call your system/network&lt;br /&gt;
	administrator to give you the settings. The IP address can be obtained&lt;br /&gt;
	using DHCP service or set static IP.&lt;br /&gt;
&lt;br /&gt;
	After the IP address is set and know, a link to the board running&lt;br /&gt;
	GNU/Linux can be made with telnet.&lt;br /&gt;
&lt;br /&gt;
= Toolchain =&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
The GNU Toolchain, is a combination of multiple projects:&lt;br /&gt;
&lt;br /&gt;
; GCC&lt;br /&gt;
: GCC stands for &amp;quot;GNU Compiler Collection&amp;quot;. GCC is an integrated distribution of compilers for several major programming languages. These languages currently include C, C++, Objective-C, Objective-C++, Java, Fortran, and Ada.&lt;br /&gt;
&lt;br /&gt;
; Binutils&lt;br /&gt;
: GNU Binutils are a collection of binary tools. The main ones are: the GNU linker (ld) and the GNU assembler (as).&lt;br /&gt;
&lt;br /&gt;
; Debugger&lt;br /&gt;
: GNU debugger, allows you to see what is going on `inside’ another program while it executes -- or what another program was doing at the moment it rashed.&lt;br /&gt;
&lt;br /&gt;
=== Ronetix provides several GNU toolchains ===&lt;br /&gt;
&lt;br /&gt;
The recommded one is &amp;quot;KaeilOS v2010.1 SDK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* KaeilOS v2010.1 SDK at kaeilos-2010.1/&lt;br /&gt;
* ronetix-arm-elf-4.4.1.tar.bz2			- gcc 4.4.1, newlib, ARM, Cortex&lt;br /&gt;
* ronetix-arm-linux-4.3.3.tar.bz2		- gcc 4.3.3, glibc&lt;br /&gt;
* ronetix-arm-linux-uclibc-4.1.2.tar.bz2	- gcc 4.1.2, uclibc&lt;br /&gt;
* ronetix-gnutools-arm-elf-4.1.1-linux.tar.bz2	- gcc 4.1.1, newlib&lt;br /&gt;
* ronetix-toolset-arm-elf-4.1.1-windows.exe	- gcc 4.1.1, newlib, for Windows&lt;br /&gt;
* openzaurus-arm-linux-glibc-3.4.4.tar.bz2	- gcc 3.4.4, glibc&lt;br /&gt;
* ronetix-gnutools-arm-elf-3.2.1-linux.tar.bz2	- gcc 3.2.1, newlib&lt;br /&gt;
&lt;br /&gt;
=== GNU toolchain notes ===&lt;br /&gt;
The pre-built GNU toolchains can be found http://download.ronetix.at/toolchains/arm/&lt;br /&gt;
&lt;br /&gt;
; Linux:&lt;br /&gt;
: The Linux kernel reqires a minimal GCC version in order to compile. To check that minimal version take a look at the README file in the Linux source directory.&lt;br /&gt;
&lt;br /&gt;
; U-Boot&lt;br /&gt;
: U-Boot can not be compiled with some toolchains because of (E)ABI conformation. The USE_PRIVATE_LIBGCC parameter allows the usage of different run-time support library(libgcc.a). More on using this parameter see README in U-Boot source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download and install the GNU toolchain ===&lt;br /&gt;
&lt;br /&gt;
==== Installation of &amp;quot;KaeilOS v2010.1 SDK&amp;quot; ====&lt;br /&gt;
This is SDK produced by OpenEmbedded recipes. It includes and package management system opkg. It includes development sources form the packages in KaeilOS. &lt;br /&gt;
Download the two files and extract them in the &amp;quot;/&amp;quot; directory. They could be extracted in any directory, and then the file &amp;quot;&amp;lt;work directory&amp;gt;/usr/local/kaeilos/arm/environment-setup&amp;quot; have to be edited and prefix the &amp;quot;SDK_PATH&amp;quot; value with the &amp;quot;work directory&amp;quot;.&lt;br /&gt;
And also remove the line which sets the CPATH environment.&lt;br /&gt;
&lt;br /&gt;
Before compiling execute:&lt;br /&gt;
 $ . &amp;lt;work directory&amp;gt;/usr/local/kaeilos/arm/environment-setup&lt;br /&gt;
	The toolchain prefix is &amp;quot;arm-oe-linux-gnueabi-&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.at/toolchains/arm/kaeilos-2010.1/kaeilos-2010.1-20110221-i686-linux-armv5te-linux-gnueabi-toolchain-extras.tar.bz2&lt;br /&gt;
 $ wget http://download.ronetix.at/toolchains/arm/kaeilos-2010.1/kaeilos-2010.1-20110221-i686-linux-armv5te-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
 $ su -&lt;br /&gt;
 $ tar -C / -xjf kaeilos-2010.1-20110221-i686-linux-armv5te-linux-gnueabi-toolchain-extras.tar.bz2 &lt;br /&gt;
 $ tar -C / -xjf kaeilos-2010.1-20110221-i686-linux-armv5te-linux-gnueabi-toolchain.tar.bz2&lt;br /&gt;
 $ exit&lt;br /&gt;
 $ . /usr/local/kaeilos/arm/environment-setup&lt;br /&gt;
 $ echo &amp;#039;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 int main(int argc, char** argv) {&lt;br /&gt;
    printf(&amp;quot;Hello World!\n&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
   }&lt;br /&gt;
  &amp;#039; &amp;gt; hello.c&lt;br /&gt;
&lt;br /&gt;
 $ arm-oe-linux-gnueabi-gcc hello.c -o hello&lt;br /&gt;
&lt;br /&gt;
==== The rest of the toolchains ====&lt;br /&gt;
The toolchains will be installed in the /usr/cross directory.&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.at/toolchains/arm/ronetix-arm-linux-4.3.3.tar.bz2&lt;br /&gt;
 $ su -&lt;br /&gt;
 $ cd /&lt;br /&gt;
 $ tar xvfj ronetix-arm-linux-4.3.3.tar.bz2&lt;br /&gt;
 $ exit&lt;br /&gt;
&lt;br /&gt;
Setup the path:&lt;br /&gt;
 $ export PATH=/usr/cross/arm-linux-4.3.3/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
= AT91BootStrap =&lt;br /&gt;
=== Download AT91BootStrap image file ===&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/bootstrap/nandflashboot/pm9g45-nandflashboot-2.13.bin&lt;br /&gt;
&lt;br /&gt;
==== Installing and building AT91BootStrap 2.13 ====&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/bootstrap/nandflashboot/at91bootstrap-2.13-src-pm9g45-svn-r370.tar.bz2&lt;br /&gt;
 $ tar xjvf at91bootstrap-2.13-src-pm9g45-svn-r370.tar.bz2&lt;br /&gt;
 $ cd at91bootstrap-2.13-pm9g45-svn-r370&lt;br /&gt;
 $ export ARCH=arm&lt;br /&gt;
 $ export CROSS_ARCH=arm-elf- # or put your ARM toolchain prefix&lt;br /&gt;
 $ make clean&lt;br /&gt;
 $ make pm9g45_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
	The file is binaries/pm9g45-nandflashboot-2.13.bin&lt;br /&gt;
&lt;br /&gt;
==== Installing and building AT91BootStrap 3.8.12 ====&lt;br /&gt;
 $ git clone git://github.com/linux4sam/at91bootstrap.git&lt;br /&gt;
 $ cd at91bootstrap&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/bootstrap/nandflashboot/AT91Bootstrap-3.8.12/patches/*&lt;br /&gt;
 $ git checkout -b v3.8.12 v3.8.12&lt;br /&gt;
 $ git am 0001-at91sam9m10g45eknf_uboot_defconfig-Modify-load-addre.patch&lt;br /&gt;
 $ git am 0001-Makefile-generate-build-date-always-in-english.patch&lt;br /&gt;
 $ git am 0003-main.c-add-target-memory-test.patch&lt;br /&gt;
 $ git am 0004-Do-not-configure-CPU-clock-if-it-is-already-done-by-.patch&lt;br /&gt;
 $ make at91sam9m10g45eknf_uboot_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
	&lt;br /&gt;
	The file is binaries/at91sam9m10g45ek-nandflashboot--3.8.12.bin&lt;br /&gt;
&lt;br /&gt;
=== Programming AT91BootStrap ===&lt;br /&gt;
&lt;br /&gt;
	Since the U-boot can not fit in the first NAND block, PM9G45 uses&lt;br /&gt;
	AT91BootStrap for initial startup. The file nandflash_pm9g45.bin must&lt;br /&gt;
	be programmed at address 0x0.&lt;br /&gt;
&lt;br /&gt;
==== Using PEEDI ====&lt;br /&gt;
&lt;br /&gt;
 peedi&amp;gt; flash select 1&lt;br /&gt;
 peedi&amp;gt; flash program pm9g45-nandflashboot-2.13.bin BIN 0x0 erase&lt;br /&gt;
&lt;br /&gt;
==== Using U-Boot ====&lt;br /&gt;
&lt;br /&gt;
 u-boot&amp;gt; tftp 0x70000000 pm9g45-nandflashboot-2.13.bin&lt;br /&gt;
 u-boot&amp;gt; nand erase 0x0 0x4000&lt;br /&gt;
 u-boot&amp;gt; nand write 0x70000000 0x0 0x4000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= U-BOOT =&lt;br /&gt;
=== Short introduction ===&lt;br /&gt;
&lt;br /&gt;
U-BOOT is used for basic initialization of the {{#var:URL_PM9263}} boards and for loading and starting an Operating system or an user application. &lt;br /&gt;
The loading can be done via the various FLASH devices or the Ethernet.&lt;br /&gt;
&lt;br /&gt;
U-BOOT supports the following devices on the {{#var:URL_PM9263}} board:&lt;br /&gt;
* NOR Flash&lt;br /&gt;
* Dataflash&lt;br /&gt;
* NAND flash&lt;br /&gt;
* Ethernet&lt;br /&gt;
* LCD&lt;br /&gt;
* USB&lt;br /&gt;
&lt;br /&gt;
=== Download and install the U-BOOT ===&lt;br /&gt;
&lt;br /&gt;
{{#var:URL_PM9G45}} is supported by the mainline U-BOOT.&lt;br /&gt;
&lt;br /&gt;
Alternatively, u-boot-2010.09 + patches can be used.&lt;br /&gt;
&lt;br /&gt;
==== Get U-Boot as tar.bz2 ====&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.at/boards/linux/bootloader/u-boot-2010.09/u-boot-2010.09.tar.bz2&lt;br /&gt;
 $ tar xjf u-boot-2010.09.tar.bz2&lt;br /&gt;
 $ mv u-boot-2010.09 u-boot&lt;br /&gt;
 $ cd u-boot&lt;br /&gt;
 $ git init&lt;br /&gt;
 $ git add *&lt;br /&gt;
 $ git add .gitignore&lt;br /&gt;
 $ git commit -m &amp;quot;U-Boot v2010.09&amp;quot;&lt;br /&gt;
 $ git checkout -b v2010.09-pm9g45&lt;br /&gt;
 $ cd ..&lt;br /&gt;
&lt;br /&gt;
==== Get U-Boot with git clone ====&lt;br /&gt;
&lt;br /&gt;
	For easy code management(trace and history of changes, patch submit and&lt;br /&gt;
	so) it is good to use revision control(in this case GIT). To get U-Boot&lt;br /&gt;
	using git, if you prefer tar.bz2 skip getting U-Boot using git.&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://git.denx.de/u-boot.git u-boot&lt;br /&gt;
 $ cd u-boot&lt;br /&gt;
 $ git checkout -b v2010.09-pm9g45 v2010.09&lt;br /&gt;
 $ cd ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Apply the provided patches ===&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/bootloader/u-boot-2010.09/patches/u-boot-2010.09-patches-ronetix-13012012.tar.bz2&lt;br /&gt;
 $ tar xjvf u-boot-2010.09-patches-ronetix-13012012.tar.bz2&lt;br /&gt;
 $ cd u-boot&lt;br /&gt;
 $ for N in ../u-boot-2010.09-ronetix-13012012/*.patch ;do git am $N ; done&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The U-Boot configuration files named as the respective Ronetix CPU modules are:&lt;br /&gt;
* include/configs/pm9g45.h&lt;br /&gt;
* include/configs/pm9263.h&lt;br /&gt;
* include/configs/pm9261.h&lt;br /&gt;
&lt;br /&gt;
The definitions in these header files are explained in the README file in the U-Boot source.&lt;br /&gt;
&lt;br /&gt;
If needed set the lines for the network interface as show. In the config files only the ETHADDR is set, the rest parameters can be obtained runtime in the U-Boot prompt by invoking the command &amp;quot;dhcp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 #define CONFIG_ETHADDR		02:00:00:FE:ED:01&lt;br /&gt;
 #define CONFIG_IPADDR		192.168.3.222&lt;br /&gt;
 #define CONFIG_NETMASK		255.255.255.0&lt;br /&gt;
 #define CONFIG_GATEWAYIP	192.168.3.1&lt;br /&gt;
 #define CONFIG_SERVERIP	192.168.3.1&lt;br /&gt;
 #define CONFIG_OVERWRITE_ETHADDR_ONCE /* Read Using it! */&lt;br /&gt;
&lt;br /&gt;
These parameters can be modified later and set to a environment variables, except &amp;quot;ethaddr&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you do not want LCD support, comment as shown:&lt;br /&gt;
&lt;br /&gt;
 /* No need of LCD&lt;br /&gt;
 * #define	CONFIG_LCD			1&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
You may leave the configs as they are, test and then change as needed.&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ===&lt;br /&gt;
&lt;br /&gt;
 $ make pm9g45_config&lt;br /&gt;
&lt;br /&gt;
The common part for all boards:&lt;br /&gt;
&lt;br /&gt;
 $ export USE_PRIVATE_LIBGCC=yes&lt;br /&gt;
 $ export CROSS_COMPILE=arm-oe-linux-gnueabi-&lt;br /&gt;
 $ export ARCH=arm&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
The binary file for programming is u-boot.bin, and the u-boot is the elf file.&lt;br /&gt;
&lt;br /&gt;
When building U-Boot, the mkimage is also build. This utility is needed to wrap zImage(Linux kernel) for booting by U-Boot, so put it in a place mentioned by PATH environment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programming U-Boot for PM9G45 ===&lt;br /&gt;
&lt;br /&gt;
The file u-boot.bin must be programmed in the NAND FLASH at address 0x20000. &lt;br /&gt;
&lt;br /&gt;
==== Using {{#var:URL_PEEDI}} ====&lt;br /&gt;
&lt;br /&gt;
 peedi&amp;gt; flash set 1&lt;br /&gt;
 peedi&amp;gt; fflash program pm9g45_bb9g45_u-boot.bin BIN 0x20000 erase&lt;br /&gt;
&lt;br /&gt;
==== Using U-Boot ====&lt;br /&gt;
&lt;br /&gt;
 u-boot&amp;gt; tftp 0x70000000 pm9g45_bb9g45_u-boot.bin&lt;br /&gt;
 u-boot&amp;gt; nand erase 0x20000 $filesize&lt;br /&gt;
 u-boot&amp;gt; nand write 0x70000000 0x20000 0x40000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux kernel =&lt;br /&gt;
=== Getting and unpacking the Linux kernel for {{#var:URL_PM9G45}} ===&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/kernel/2.6.30/linux-2.6.30.tar.bz2&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/kernel/2.6.30/patches/2.6.30-at91.patch.gz&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/kernel/2.6.30/patches/2.6.30-at91-exp.5.tar.gz&lt;br /&gt;
 $ wget http://download.ronetix.info/boards/linux/kernel/2.6.30/patches/2.6.30-at91-exp.5-patches-pm9g45-09122011.tar.bz2&lt;br /&gt;
 $ tar xjf linux-2.6.30.tar.bz2&lt;br /&gt;
 $ gunzip 2.6.30-at91.patch.gz&lt;br /&gt;
 $ tar xzf 2.6.30-at91-exp.5.tar.gz&lt;br /&gt;
 $ tar xjf 2.6.30-at91-exp.5-patches-pm9g45-09122011.tar.bz2&lt;br /&gt;
 $ cd linux-2.6.30&lt;br /&gt;
 $ git init&lt;br /&gt;
 $ git add *&lt;br /&gt;
 $ git add .gitignore .mailmap&lt;br /&gt;
 $ git commit -m &amp;quot;Initial commit after linux-2.6.30.tar.bz2 extraction&amp;quot;&lt;br /&gt;
 $ git checkout -b 2.6.30-at91.patch&lt;br /&gt;
 $ patch -p1 &amp;lt; ../2.6.30-at91.patch&lt;br /&gt;
 $ git add -u&lt;br /&gt;
 $ git add *&lt;br /&gt;
 $ git commit -m &amp;quot;patching with 2.6.30-at91.patch&amp;quot;&lt;br /&gt;
 $ git checkout -b 2.6.30-at91-exp.5&lt;br /&gt;
 $ for N in ../2.6.30-at91-exp.5/*.patch; do git am $N ; done&lt;br /&gt;
 $ git checkout -b pm9g45&lt;br /&gt;
 $ for P in ../2.6.30-at91-exp.5-patches-pm9g45-09122011/*.patch ;do git am $P ; done&lt;br /&gt;
&lt;br /&gt;
=== Kernel config ===&lt;br /&gt;
&lt;br /&gt;
 $ make pm9263_defconfig&lt;br /&gt;
&lt;br /&gt;
To carry into effect the default kernel configuration you have to do the following.&lt;br /&gt;
&lt;br /&gt;
Common for all boards:&lt;br /&gt;
&lt;br /&gt;
 $ export ARCH=arm&lt;br /&gt;
 $ make pm9g45_v1.3-bb9g45_v1.1_defconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kernel build ===&lt;br /&gt;
&lt;br /&gt;
	uImage is the Linux kernel packed(U-Boot wrapped zImage) in format&lt;br /&gt;
	for loading by U-Boot. The &amp;quot;mkimage&amp;quot; utility which is part of U-Boot&lt;br /&gt;
	is required to be in the executable search path(environment variable&lt;br /&gt;
	PATH).&lt;br /&gt;
&lt;br /&gt;
	The &amp;quot;mkimage&amp;quot; can be taken from&lt;br /&gt;
	http://download.ronetix.at/boards/tools/linux/mkimage or&lt;br /&gt;
	obtained after building U-Boot for an ARM board.&lt;br /&gt;
&lt;br /&gt;
 $ echo Make sure &amp;quot;mkimage&amp;quot; is in the executable search path!&lt;br /&gt;
 $ export CROSS_COMPILE=arm-oe-linux-gnueabi-&lt;br /&gt;
 $ make uImage&lt;br /&gt;
&lt;br /&gt;
	The binary file for programming is arch/arm/boot/uImage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programming of the Kernel for PM9G45 ===&lt;br /&gt;
&lt;br /&gt;
==== Using {{#var:URL_PEEDI}} ====&lt;br /&gt;
&lt;br /&gt;
 peedi&amp;gt; flash select 2&lt;br /&gt;
 peedi&amp;gt; flash program uImage bin 0x200000 erase&lt;br /&gt;
&lt;br /&gt;
==== Using U-BOOT ====&lt;br /&gt;
&lt;br /&gt;
 u-boot&amp;gt; tftp 0x70000000 uImage&lt;br /&gt;
 u-boot&amp;gt; nand erase clean 0x200000 0x200000&lt;br /&gt;
 u-boot&amp;gt; nand write.jffs2 0x70000000 0x200000 0x200000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OpenEmbedded =&lt;br /&gt;
&lt;br /&gt;
	The OpenEmbedded has been undergoing reorganizations since 2011.&lt;br /&gt;
	All the recipes were on one place, which has caused maintenance issues&lt;br /&gt;
	and fragility. Several clone of OE, like Poky and Yocto Project, were started&lt;br /&gt;
	to fix this. And now, to consolidate forces Yocto and OE are merging in the new&lt;br /&gt;
	OpenEmbedded with layers. The OE before changes is named OpenEmbedded-classic.&lt;br /&gt;
	It is still alive. Its recipes are transferring to the layer structure.&lt;br /&gt;
	The layer structure is still on intensive development process.&lt;br /&gt;
	This readme covers the OpenEmbedded-classic.&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
	First you need to prepare your host Linux distribution in order to&lt;br /&gt;
	be able to get and build KaeilOS. A list of required packages for&lt;br /&gt;
	variety of host distributions is described in:&lt;br /&gt;
&lt;br /&gt;
* http://wiki.openembedded.net/index.php/OEandYourDistro&lt;br /&gt;
* http://wiki.openembedded.net/index.php/Main_Page&lt;br /&gt;
* http://www.kaeilos.com/download in Required packages&lt;br /&gt;
&lt;br /&gt;
	Lets prepare directory structure. Login on your host as ordinary&lt;br /&gt;
	user not as root(root privileges are not needed and a good practice&lt;br /&gt;
	is to avoid being root if not needed). You can login as a user you&lt;br /&gt;
	like. Starting point is being in the home directory. You may choose&lt;br /&gt;
	working directory at your decision, but be aware of the paths.&lt;br /&gt;
&lt;br /&gt;
	Make directory for doing things and go to it:&lt;br /&gt;
&lt;br /&gt;
 $ cd&lt;br /&gt;
 $ mkdir -p usr/src/oe&lt;br /&gt;
 $ cd usr/src/oe&lt;br /&gt;
&lt;br /&gt;
	Now it is time to get bitbake - the building tool. All thing here&lt;br /&gt;
	are done with bitbake version 1.10.2. And don&amp;#039;t install bitbake&lt;br /&gt;
	globally, install it as a sibling directory of openembedded/&lt;br /&gt;
	and build/.&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://git.openembedded.org/bitbake.git&lt;br /&gt;
 $ cd bitbake&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ git checkout -b _tag_1.10.2 1.10.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Getting openembedded - meta data, packages, relations and more ===&lt;br /&gt;
&lt;br /&gt;
	Get it, go to directory openembedded/ and update.&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://git.openembedded.org/openembedded&lt;br /&gt;
 $ cd openembedded&lt;br /&gt;
 &lt;br /&gt;
Since KaelOS distribution will be used, check out a tested OE metadata.&lt;br /&gt;
&lt;br /&gt;
 $ git checkout -b kaeilos-2011 origin/mckoan/kaeilos-2011&lt;br /&gt;
&lt;br /&gt;
	As the OE is developing continuously sometimes the OE can not be build&lt;br /&gt;
	successfully so you can keep updating OE until it builds or use a&lt;br /&gt;
	build verified state(commit). The latest stable states can be found at&lt;br /&gt;
	http://www.kaeilos.com/latest-changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	Warning: even the tested OpenEmbedded/Bitbake metadata state after&lt;br /&gt;
	&amp;quot;some&amp;quot; time the build process can not produce the desired images and&lt;br /&gt;
	fail, due to URL sources are not available, most probably a new version&lt;br /&gt;
	of that resource, and the old one have been removed. Also there is&lt;br /&gt;
	recipes referring to a source in a svn, git or other repositories, which&lt;br /&gt;
	at the build time could be in broken state.	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Get KaeilOS settings and configuration files ===&lt;br /&gt;
&lt;br /&gt;
 $ wget ftp://ftp.koansoftware.com/public/kaeilos/kaeilos-4.11-config-files.tgz&lt;br /&gt;
 $ tar xzvf kaeilos-4.11-config-files.tgz&lt;br /&gt;
&lt;br /&gt;
Get custom-extra-image.bb recipe file and save it in $OEBASE/openembedded/recipes/images:&lt;br /&gt;
&lt;br /&gt;
 $ wget http://download.ronetix.at/boards/linux/rootfs/custom-extra-image.bb -O openembedded/recipes/images/custom-extra-image.bb&lt;br /&gt;
&lt;br /&gt;
Edit the files listed below so that they contains the correct paths.&lt;br /&gt;
Use the absolute path:&lt;br /&gt;
&lt;br /&gt;
* in file setup-kaeilos.sh adjust the paths&lt;br /&gt;
* in build/kaeilos/conf/auto.conf you can select the machine to&lt;br /&gt;
			build KaeilOS for. The default machine is&lt;br /&gt;
			&amp;quot;ronetix-pm9263&amp;quot;, to build for pm9g45 change the name&lt;br /&gt;
			&amp;quot;ronetix-pm9263&amp;quot; to &amp;quot;ronetix-pm9g45&amp;quot;, and if the case&lt;br /&gt;
			is pm9261 use &amp;quot;ronetix-pm9261&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* in build/kaeilos/conf/local.conf remove &amp;quot;ext2&amp;quot; parameter in&lt;br /&gt;
			IMAGE_FSTYPES. Change the SCREEN_TERMCMD to &amp;#039;xterm -e&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* in build/kaeilos/conf/site.conf adjust the paths, select&lt;br /&gt;
			a Debian mirror near you for higher download speed and&lt;br /&gt;
			in the Debian mirror remove the &amp;quot;pub/&amp;quot; part, also.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Initial building of the system ===&lt;br /&gt;
&lt;br /&gt;
You should be in $OEBASE directory. Running this command for the first time will take a some hours to finish:&lt;br /&gt;
&lt;br /&gt;
 $ source setup-kaeilos.sh /home/ivan/usr/src/oe/build/kaeilos&lt;br /&gt;
 $ bitbake custom-extra-image&lt;br /&gt;
&lt;br /&gt;
Warning: custom-extra-image.bb is recipe example, it is useful to&lt;br /&gt;
to demonstrate how to add stuff you like/want. It is build-able&lt;br /&gt;
with the OpenEmbedded/Bitbake latest metadata state mentioned at&lt;br /&gt;
&amp;quot;2. Getting openembedded - meta data, packages, relations and more&amp;quot;.&lt;br /&gt;
Doe to continuous change/improvement of OE there could be a time when&lt;br /&gt;
some packages included in the custom-extra-image.bb are not build-able,&lt;br /&gt;
and the items in the custom-extra-image.bb have to be adopted. The&lt;br /&gt;
&amp;quot;x11-image&amp;quot;, &amp;quot;console-image&amp;quot; and &amp;quot;console-base-image&amp;quot; are general for&lt;br /&gt;
OE.&lt;br /&gt;
&lt;br /&gt;
Warning: even the tested OpenEmbedded/Bitbake metadata state after&lt;br /&gt;
&amp;quot;some&amp;quot; time can not produce the desired images, due to URL sources&lt;br /&gt;
are not available, most probably a new version, and the old one is&lt;br /&gt;
removed. Example of this is missing live.2010.10.15.tar.gz from&lt;br /&gt;
recipe live555_20101015.bb. Also there is recipes referring to a&lt;br /&gt;
source in a svn, git or other repositories, which at the build time&lt;br /&gt;
could be with broken sources like mplayer.&lt;br /&gt;
&lt;br /&gt;
This initial system building is to let the OpenEmbedded build the&lt;br /&gt;
system as it is by default, and later you can customize it.&lt;br /&gt;
&lt;br /&gt;
Note that toolchains installation is not required as the OE makes it.&lt;br /&gt;
There is an option to tell OE to use external toolchains.&lt;br /&gt;
&lt;br /&gt;
=== AT91Bootstrap ===&lt;br /&gt;
&lt;br /&gt;
	AT91Bootstrap for PM9G45 is configured and build automatically.&lt;br /&gt;
	The image to program is in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
 ~/usr/src/oe/build/kaeilos/tmp/deploy/eglibc/images/ronetix-pm9g45/at91bootstrap.bin&lt;br /&gt;
&lt;br /&gt;
	For more details refer to AT91Bootstrap README.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== U-Boot ===&lt;br /&gt;
&lt;br /&gt;
	U-Boot for PM9G45 is configured and build automatically.&lt;br /&gt;
	The image to program is in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
 ~/usr/src/oe/build/kaeilos/tmp/deploy/eglibc/images/ronetix-pm9g45/u-boot-ronetix-pm9g45.bin&lt;br /&gt;
&lt;br /&gt;
	For more details refer to U-Boot README.&lt;br /&gt;
&lt;br /&gt;
=== Kernel configuring ===&lt;br /&gt;
&lt;br /&gt;
Go to $OEBASE/build/kaeilos to configure and build your linux kernel:&lt;br /&gt;
&lt;br /&gt;
 $ cd $OEBASE/build/kaeilos&lt;br /&gt;
 $ bitbake virtual/kernel -c menuconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kernel building ===&lt;br /&gt;
&lt;br /&gt;
	Next comes to compile, populate stage directory, install the kernel.&lt;br /&gt;
	Executing these task will compile kernel and modules, make head&lt;br /&gt;
	files to be in the stage directory and finally copy kernel and&lt;br /&gt;
	modules to $DEPLOY directory.&lt;br /&gt;
&lt;br /&gt;
 $ bitbake virtual/kernel -c compile -f&lt;br /&gt;
 $ bitbake virtual/kernel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RootFS building ===&lt;br /&gt;
&lt;br /&gt;
To create RootFS go to $OEBASE/build/kaeilos:&lt;br /&gt;
&lt;br /&gt;
 $ cd $OEBASE/build/kaeilos&lt;br /&gt;
 $ bitbake custom-extra-image&lt;br /&gt;
&lt;br /&gt;
The RootFS image is in the $DEPLOY directory.&lt;br /&gt;
This is the image you should program into the NAND Flash of PM9G45:&lt;br /&gt;
&lt;br /&gt;
 KaeilOS-custom-extra-image-glibc-ipk-2010.1-20110223-ronetix-pm9g45.rootfs.jffs2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Export SDK ===&lt;br /&gt;
&lt;br /&gt;
Creating a toolchain(SDK) is the same as creating a rootfs image.&lt;br /&gt;
From the $OEBASE directory:&lt;br /&gt;
&lt;br /&gt;
 $ source setup-kaeilos.sh /home/ivan/usr/src/oe/build/kaeilos&lt;br /&gt;
 $ bitbake meta-toolchain&lt;br /&gt;
&lt;br /&gt;
and the resulted SDK is in $DEPLOY directory.&lt;br /&gt;
&lt;br /&gt;
For reference:&lt;br /&gt;
* http://docs.openembedded.org/usermanual/html/commonuse_qte_sdk.html&lt;br /&gt;
* http://docs.openembedded.org/usermanual/html/ch05s08.html&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS programming into the NAND flash for PM9G45 ===&lt;br /&gt;
&lt;br /&gt;
==== Using {{#var:URL_PEEDI}} ====&lt;br /&gt;
&lt;br /&gt;
 peedi&amp;gt; flash set 3&lt;br /&gt;
 peedi&amp;gt; flash erase&lt;br /&gt;
 peedi&amp;gt; flash program rootfs.jffs2 bin 0x500000&lt;br /&gt;
&lt;br /&gt;
==== Using U-BOOT ====&lt;br /&gt;
&lt;br /&gt;
Caution: the RootFS image larger than 126MiB can&amp;#039;t be programmed by U-BOOT, because it doesn&amp;#039;t fit in the SDRAM.&lt;br /&gt;
&lt;br /&gt;
 u-boot&amp;gt; tftp 0x70000000 rootfs.jffs2&lt;br /&gt;
 u-boot&amp;gt; nand erase clean 0x500000 $filesize&lt;br /&gt;
 u-boot&amp;gt; nand write.jffs2 0x70000000 0x500000 $filesize&lt;br /&gt;
&lt;br /&gt;
Note: Here the variable $filesize can be used because the jffs2 image&lt;br /&gt;
	file is padded to the page size of the NAND, but the sizes of uImage,&lt;br /&gt;
	U-Boot and AT91Bootstrap are not write-page padded(but can be made&lt;br /&gt;
	to be write-page padded).&lt;br /&gt;
&lt;br /&gt;
=== Tips and tricks ===&lt;br /&gt;
&lt;br /&gt;
==== Rotate KaeilOS boot logo ====&lt;br /&gt;
&lt;br /&gt;
In /etc/defaul/psplash add &amp;quot;--angle 90&amp;quot; in psplash arguments variable, so that splash screen is rotated properly.&lt;br /&gt;
&lt;br /&gt;
==== Enable/Disable mouse pointer in X ====&lt;br /&gt;
&lt;br /&gt;
In /etc/matchbox/session find the line starting with&lt;br /&gt;
		&amp;quot;exec matchbox-window-manager&amp;quot; and change to&lt;br /&gt;
		&amp;quot;-use_cursor no&amp;quot; or to&lt;br /&gt;
		&amp;quot;-use_cursor yes&amp;quot;&lt;br /&gt;
		to hide or show mouse pointer.&lt;br /&gt;
&lt;br /&gt;
==== To rotate X display properly you can execute this from the command line ====&lt;br /&gt;
&lt;br /&gt;
Take a look at /etc/X11/xorg.conf in Section &amp;quot;Device&amp;quot;, and add or change the Option &amp;quot;Roatate&amp;quot;, like this:&lt;br /&gt;
 Option          &amp;quot;Rotate&amp;quot; &amp;quot;CCW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Adjusting touchscreen axes, in &amp;#039;Section &amp;quot;InputDevice&amp;quot;&amp;#039; modify or add:&lt;br /&gt;
&lt;br /&gt;
 Option          &amp;quot;SwapAxes&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
 Option          &amp;quot;InvertX&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
 Option          &amp;quot;InvertY&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Getting eth0 gateway parameter from dhcp ====&lt;br /&gt;
&lt;br /&gt;
	In /etc/network/interface add &amp;quot;iface eth0 inet dhcp&amp;quot; before&lt;br /&gt;
	&amp;quot;iface eth0 inet static&amp;quot; line.&lt;br /&gt;
&lt;br /&gt;
	Form the command line call &amp;quot;udhcpc&amp;quot; or &amp;quot;dhclient eth0&amp;quot; to set network&lt;br /&gt;
	through DHCP server.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the touchscren ====&lt;br /&gt;
&lt;br /&gt;
* From a terminal using keyboard on USB port, run &amp;quot;ts_calibrate&amp;quot;&lt;br /&gt;
* In GPE from Settings/Screen Setting press the &amp;quot;start&amp;quot; button in the calibration section.&lt;br /&gt;
&lt;br /&gt;
A text from &amp;quot;http://comments.gmane.org/gmane.comp.handhelds.openembedded/32629&amp;quot;&lt;br /&gt;
	with title &amp;quot;[oe] Handling different touchscreen calibration systems&amp;quot;&lt;br /&gt;
= Develop =&lt;br /&gt;
&lt;br /&gt;
=== Compiling a simple GNU/Linux application ===&lt;br /&gt;
&lt;br /&gt;
Create a text file example.c with contents:&lt;br /&gt;
&lt;br /&gt;
 --- example.c ---&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 int main(int argc, char** argv){&lt;br /&gt;
   printf(&amp;quot;Hello world\n&amp;quot;);&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
 --- example.c ---&lt;br /&gt;
&lt;br /&gt;
Compiling: Substitute &amp;quot;arm-oe-linux-gnueabi-gcc&amp;quot; with the toolchain used to build kernel and root file system utilities.&lt;br /&gt;
&lt;br /&gt;
 $ arm-oe-linux-gnueabi-gcc -o example example.c&lt;br /&gt;
&lt;br /&gt;
The result is the ELF file called &amp;quot;example&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Transferring the executable file from the PC to the target ===&lt;br /&gt;
&lt;br /&gt;
==== Using USB stick ====&lt;br /&gt;
	The simples way is to use a USB stick - just copy the file example to a&lt;br /&gt;
	USB stick inserted into your PC. Unmount the stick and put it into the&lt;br /&gt;
	target board. After few seconds the USB stick will be discovered(most&lt;br /&gt;
	probably). You should have support of the file system on the USB stick,&lt;br /&gt;
	most probably it will be VFAT(FAT32). Take a look at the kernel&lt;br /&gt;
	messages to see the device node of your USB stick.&lt;br /&gt;
&lt;br /&gt;
	Depending auto-mounter is enabled and installed on the rootfs, the USB&lt;br /&gt;
	stick could be automatically mounted. To see if it is automatically&lt;br /&gt;
	mounted:&lt;br /&gt;
&lt;br /&gt;
On target machine mount /dev/sda1 on /media/sda1&lt;br /&gt;
&lt;br /&gt;
In case it is not mounted automatically:&lt;br /&gt;
&lt;br /&gt;
On target machine:&lt;br /&gt;
 $ mkdir /mnt/sda1&lt;br /&gt;
 $ mount /dev/sda1 /mnt/sda1 -t vfat&lt;br /&gt;
&lt;br /&gt;
 $ cp /mnt/sda1/main .&lt;br /&gt;
 $ chmod +x main&lt;br /&gt;
 $./main&lt;br /&gt;
 Hello world&lt;br /&gt;
&lt;br /&gt;
==== Tftp over network ====&lt;br /&gt;
A tftp server should work on a host(or any development) computer.&lt;br /&gt;
&lt;br /&gt;
On host:&lt;br /&gt;
 $ cp hello tftp_boot_dir/&lt;br /&gt;
&lt;br /&gt;
On target machine:&lt;br /&gt;
 $ udhcpc&lt;br /&gt;
 $ tftp -g -r tftp_boot_dir/hello -l hello 192.168.3.1&lt;br /&gt;
 $ chmod u+x hello&lt;br /&gt;
 $ ./hello&lt;br /&gt;
 Hello world&lt;br /&gt;
&lt;br /&gt;
Alternatively to the &amp;quot;udhcpc&amp;quot; you can use &amp;quot;dhclient eth0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kernel debugging =&lt;br /&gt;
&lt;br /&gt;
The board should be programmed with the u-boot and the binary version of the kernel.&lt;br /&gt;
&lt;br /&gt;
Start gdb/insight:&lt;br /&gt;
 $ arm-oe-linux-gnueabi-gdb vmlinux&lt;br /&gt;
&lt;br /&gt;
In the console window:&lt;br /&gt;
&lt;br /&gt;
 (gdb) target remote peedi_ip:2000&lt;br /&gt;
 (gdb) set $pc = 0x10000040	; the u-boot is flashed at 0x10000000 (after remap)&lt;br /&gt;
 (gdb) c&lt;br /&gt;
&lt;br /&gt;
	The board is running: first starts the u-boot, then the Linux kernel.&lt;br /&gt;
	If you have a serial console you can see that the Linux is working.&lt;br /&gt;
	Now you can halt the kernel and set breakpoints where you want.&lt;br /&gt;
&lt;br /&gt;
	If you want to have a breakpoint before the kernel is running you have&lt;br /&gt;
	to do the following:&lt;br /&gt;
&lt;br /&gt;
 (gdb) target remote peedi_ip:2000&lt;br /&gt;
 (gdb) set $pc = 0x10000040	; assuming the u-boot is flashed at 0x10000000&lt;br /&gt;
 (gdb) hbreak start_kernel	; hardware breakpoint is used because the MMU is still not active&lt;br /&gt;
 (gdb) c&lt;br /&gt;
&lt;br /&gt;
The board is running (u-boot, then the kernel) and will stop at the start_kernel function.&lt;br /&gt;
&lt;br /&gt;
 (gdb) delete	; delete the hardware breakpoint.&lt;br /&gt;
&lt;br /&gt;
Now you can use the software breakpoints.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= {{#var:URL_PM9263}} pre-built images =&lt;br /&gt;
&lt;br /&gt;
;U-Boot&lt;br /&gt;
: http://download.ronetix.info/boards/linux/bootloader/u-boot-2010.09/pm9263_u-boot.bin&lt;br /&gt;
&lt;br /&gt;
; Linux Kernel&lt;br /&gt;
: http://download.ronetix.info/boards/linux/kernel/2.6.28/uImage-2.6.28-r12-ronetix-pm9263.bin&lt;br /&gt;
&lt;br /&gt;
; RootFS&lt;br /&gt;
: http://download.ronetix.info/boards/linux/rootfs/2.6.28-pm9263/KaeilOS-console-image-glibc-ipk-2009.1-test-20090909-ronetix-pm9263.rootfs.jffs2&lt;/div&gt;</summary>
		<author><name>Ilko</name></author>
	</entry>
</feed>