<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=YounesC</id>
	<title>ArmadeusWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=YounesC"/>
	<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Special:Contributions/YounesC"/>
	<updated>2026-04-28T01:57:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=BootLoader&amp;diff=11856</id>
		<title>BootLoader</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=BootLoader&amp;diff=11856"/>
		<updated>2013-06-12T14:37:10Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Modify your environment variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This page describe the U-Boot usage/installation in the Armadeus context.&lt;br /&gt;
&lt;br /&gt;
==Some (informational) commands==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; printenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; bdinfo&lt;br /&gt;
arch_number = 0x000006A2&lt;br /&gt;
env_t       = 0x00000000&lt;br /&gt;
boot_params = 0xA0000100&lt;br /&gt;
DRAM bank   = 0x00000000&lt;br /&gt;
-&amp;gt; start    = 0xA0000000&lt;br /&gt;
-&amp;gt; size     = 0x04000000&lt;br /&gt;
DRAM bank   = 0x00000001&lt;br /&gt;
-&amp;gt; start    = 0xB0000000&lt;br /&gt;
-&amp;gt; size     = 0x04000000&lt;br /&gt;
ethaddr     = 00:1E:AC:00:10:54&lt;br /&gt;
ip_addr     = 192.168.1.10&lt;br /&gt;
baudrate    = 115200 bps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; nand info&lt;br /&gt;
&lt;br /&gt;
Device 0: NAND 256MiB 1,8V 16-bit, sector size 128 KiB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modify your environment variables==&lt;br /&gt;
* There is a set of variables you can customize to your needs. The command &#039;&#039;&#039;printenv&#039;&#039;&#039; show you most of them and their current state. Use the command &#039;&#039;&#039;setenv&#039;&#039;&#039; to change one of these variable. For instance:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv ipaddr 192.168.0.10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use the command &#039;&#039;&#039;saveenv&#039;&#039;&#039; to save the state of your environment variables in flash memory.&lt;br /&gt;
* In order to use network features with U-Boot you have to set the network environment variables:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 setenv netmask 255.255.255.0                (default value should be fine in most situations)&lt;br /&gt;
 setenv ipaddr 192.168.0.10&lt;br /&gt;
 setenv serverip 192.168.0.2                 (the IP address of your TFTP Host server to download image files)&lt;br /&gt;
 setenv rootpath &amp;quot;/tftpboot/apfXX-root&amp;quot;    (to boot Linux over NFS)&lt;br /&gt;
 setenv consoledev ttymxc0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can use the &#039;&#039;&#039;dhcp&#039;&#039;&#039; command to configure these variable from your DHCP server. Probably you will have to adjust the &#039;&#039;&#039;serverip&#039;&#039;&#039; variable manually.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; dhcp&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46&lt;br /&gt;
 MAC: 00:0e:32:00:00:01&lt;br /&gt;
 operating at 100M full duplex mode&lt;br /&gt;
 BOOTP broadcast 1&lt;br /&gt;
 DHCP client bound to address 192.168.0.10&lt;br /&gt;
 BIOS&amp;gt;setenv serverip 192.168.0.2&lt;br /&gt;
 BIOS&amp;gt;saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Do not forget to save your changes in flash with &#039;&#039;&#039;saveenv&#039;&#039;&#039; to have them available at power up !&lt;br /&gt;
&lt;br /&gt;
==Build U-Boot==&lt;br /&gt;
Build process is now part of the Armadeus automated build (see [[Toolchain | Install Armadeus software]]). To only build U-Boot you can launch:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make uboot-rebuild&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Binaries===&lt;br /&gt;
Compiled binary files will be put in the &#039;&#039;buildroot/output/images/&#039;&#039; subdirectory:&lt;br /&gt;
* &#039;&#039;&#039;apf9328-u-boot.bin&#039;&#039;&#039; is a binary image file for the apf9328that can be downloaded and flashed from U-Boot itself (see below)&lt;br /&gt;
* (Armadeus 5.0) image filenames are respectively for each board &#039;&#039;&#039;apf27-u-boot-nand.bin&#039;&#039;&#039; &#039;&#039;&#039;apf51-u-boot-nand.bin&#039;&#039;&#039; &#039;&#039;&#039;apf28-u-boot.sb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Customizing===&lt;br /&gt;
*U-Boot build is done by the following Makefiles:&lt;br /&gt;
** &#039;&#039;buildroot/target/u-boot/Makefile.in&#039;&#039;                  (generic part)&lt;br /&gt;
** &#039;&#039;buildroot/target/device/armadeus/u-boot/u-boot.mk&#039;&#039;    (target specific part)&lt;br /&gt;
&lt;br /&gt;
*Configuration file (target specific) used to customize the build is:&lt;br /&gt;
** &#039;&#039;buildroot/target/device/armadeus/apfxx/apfxx-u-boot-&amp;lt;version&amp;gt;.h&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Install or restore from scratch (board bricked)==&lt;br /&gt;
&lt;br /&gt;
If your Armadeus board doesn&#039;t boot anymore (flash content erased or dammaged), you will have to use the [[BootStrap | bootstrap mode]] of the i.MX. &amp;lt;br&amp;gt;&lt;br /&gt;
In that case the &#039;&#039;uboot_recover&#039;&#039; python script is used to flash a new U-Boot version; this tool is located in the &#039;&#039;armadeus/software/uboot_recover/&#039;&#039; folder of the Armadeus project tree.&amp;lt;br&amp;gt;&lt;br /&gt;
Take a look a the &#039;&#039;INSTALL&#039;&#039; file the first time you want to use the recover tool.&amp;lt;br&amp;gt;&lt;br /&gt;
Remark: the serial port must support a baud rate of 57600 bps per second.&lt;br /&gt;
&lt;br /&gt;
==Update U-Boot==&lt;br /&gt;
&lt;br /&gt;
There are 2 steps to update U-Boot:&lt;br /&gt;
*1] Load the new U-Boot code in RAM (You can use the following commands to download U-boot):&lt;br /&gt;
**With ethernet and a [[Connection_with_U-Boot_on_Linux#TFTP_server |TFTP server]]: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;BIOS&amp;gt;run download_uboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
**With ethernet and a [[Network_Configuration | NFS server]]: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;BIOS&amp;gt; nfs ${loadaddr} ${serverip}:/tftpboot/apfxx-u-boot.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
**With the kermit and a serial line: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; loadb ${loadaddr}&lt;br /&gt;
    &amp;lt;CTRL&amp;gt; &amp;lt;ALT GR&amp;gt; \ then c&lt;br /&gt;
    send /path_to_tftpboot/apfxx-u-boot.bin&lt;br /&gt;
    ...&amp;gt;&amp;gt;&amp;gt; LOADING IN PROGRESS &amp;lt;&amp;lt;&amp;lt;...&lt;br /&gt;
    c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*2] Transfer code from RAM to FLASH memory (there is a simple U-Boot command/script to do that):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run flash_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Advanced Linux boot==&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;boot&amp;quot; is the common way to run Linux from flash memory.&lt;br /&gt;
This command is equivalent to the macro:&lt;br /&gt;
- on the APF9328 board&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run jffsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- on the other APF board&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run ubifsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the default command stored in the U-Boot variable: &#039;&#039;bootcmd&#039;&#039;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; printenv bootcmd&lt;br /&gt;
bootcmd=run jffsboot&lt;br /&gt;
or&lt;br /&gt;
bootcmd=run ubifsboot &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
U-Boot also supports the commands to boot from the network or a SD/MMC card.&lt;br /&gt;
&lt;br /&gt;
* NFS boot&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run nfsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This command boots Linux rootfs from a NFS server. Change the U-Boot variables &#039;&#039;serverip&#039;&#039; and &#039;&#039;rootpath&#039;&#039; to fit with your host PC.&lt;br /&gt;
    serverip=192.168.0.2&lt;br /&gt;
    rootpath=&amp;quot;/tftpboot/apfXX-root&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* MMC/SD boot&lt;br /&gt;
Your SD should contain a rootfs and a kernel Linux in the /boot directory. see [[MultiMediaCard#Put_your_rootfs_and_Linux_kernel_on_the_MMC.2FSD| Put your rootfs and Linux kernel on the MMC/SD]] for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run mmcboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing Target software from U-Boot ==&lt;br /&gt;
&lt;br /&gt;
[[Target Software Installation]]&lt;br /&gt;
&lt;br /&gt;
==Booting Linux==&lt;br /&gt;
&lt;br /&gt;
The Install Armadeus software on target provide some information to install linux on Armadeus board&lt;br /&gt;
&lt;br /&gt;
==Customize Linux boot mode==&lt;br /&gt;
&lt;br /&gt;
==Typical Kermit (.kermrc) config file==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set line /dev/ttyS0&lt;br /&gt;
set speed 115200&lt;br /&gt;
set carrier-watch off&lt;br /&gt;
set handshake none&lt;br /&gt;
set flow-control none&lt;br /&gt;
robust&lt;br /&gt;
set file type bin&lt;br /&gt;
set file name lit&lt;br /&gt;
set rec pack 1000&lt;br /&gt;
set send pack 1000&lt;br /&gt;
set window 5&lt;br /&gt;
set transmit linefeed on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.denx.de/wiki/DULG/Manual&lt;br /&gt;
* http://git.denx.de/?p=u-boot.git;a=blob_plain;f=tools/scripts/dot.kermrc&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Target_Software_Installation&amp;diff=11855</id>
		<title>Target Software Installation</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Target_Software_Installation&amp;diff=11855"/>
		<updated>2013-06-12T14:35:09Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Network configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page you will learn how to update (from U-Boot) the Flash&#039;s partitions of your APF module storing the Linux, rootfs and U-Boot software images.&lt;br /&gt;
&lt;br /&gt;
==Configure U-Boot==&lt;br /&gt;
&lt;br /&gt;
===Environment variables===&lt;br /&gt;
U-Boot can be customized in a flexible way with the use of &amp;quot;environment variables/scripts&amp;quot;.&lt;br /&gt;
The command &#039;&#039;&#039;printenv&#039;&#039;&#039; shows you most of them and their current value:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; printenv&lt;br /&gt;
 bootcmd=run jffsboot&lt;br /&gt;
 bootdelay=20&lt;br /&gt;
 baudrate=115200&lt;br /&gt;
 ethaddr=&lt;br /&gt;
 autoload=no&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The command &#039;&#039;&#039;setenv&#039;&#039;&#039; is used to change these variables. For example, to set the IP address (don&#039;t do it yet):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv ipaddr 192.168.0.10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The command &#039;&#039;&#039;saveenv&#039;&#039;&#039; is used to save the state of your environment variables in FLASH memory; that way they will be available at next boot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
 Saving Environment to Flash...&lt;br /&gt;
 . done&lt;br /&gt;
 Un-Protected 1 sectors&lt;br /&gt;
 Erasing Flash...&lt;br /&gt;
 . done&lt;br /&gt;
 Erased 1 sectors&lt;br /&gt;
 Writing to Flash... done&lt;br /&gt;
 . done&lt;br /&gt;
 Protected 1 sectors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Network configuration===&lt;br /&gt;
In order to use the U-Boot&#039;s network features, you have to set the network environment variables:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv netmask 255.255.255.0                (this default value should be fine in most situations)&lt;br /&gt;
 BIOS&amp;gt; setenv ipaddr 192.168.0.10 &lt;br /&gt;
 BIOS&amp;gt; setenv serverip 192.168.0.2                 (the IP address of your tftp server/PC hosting the files to download)&lt;br /&gt;
 BIOS&amp;gt; setenv rootpath &amp;quot;/tftpboot/apf9328-root&amp;quot;    (to boot Linux over NFS)&lt;br /&gt;
 BIOS&amp;gt; setenv consoledev ttymxc0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can use the &#039;&#039;&#039;dhcp&#039;&#039;&#039; command to configure these variables from your DHCP server. You probably will have to adjust the &#039;&#039;&#039;serverip&#039;&#039;&#039; variable manually.&lt;br /&gt;
If you use VirtualBox make sure you have selected Bridge Mode for the network adaptor, otherwise the U-Boot cannot talk to your host.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; dhcp&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46&lt;br /&gt;
 MAC: 00:0e:32:00:00:01&lt;br /&gt;
 operating at 100M full duplex mode&lt;br /&gt;
 BOOTP broadcast 1&lt;br /&gt;
 DHCP client bound to address 192.168.0.10&lt;br /&gt;
 BIOS&amp;gt; setenv serverip 192.168.0.2&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not forget to save your changes in FLASH, to have them available at next power up:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In case of troubles you can use the following U-Boot script to reset the variables to the &amp;quot;factory&amp;quot;/default settings:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run flash_reset_env&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux kernel installation==&lt;br /&gt;
XX, in the following chapters, has to be replaced by your board name&lt;br /&gt;
&lt;br /&gt;
* Check that your Armadeus kernel image size is smaller than the U-Boot partition (see [[#Flash_memory_partitions|Flash Memory Partitions]] for size allowances):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus]$ ls -al buildroot/output/images/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If yes, copy it to your TFTP server directory (here &#039;&#039;/tftpboot/&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus]$ cp buildroot/output/images/* /tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Linux kernel update script===&lt;br /&gt;
* This is the recommended method and the easiest one. The automatic &#039;update_kernel&#039; scripts downloads the image and flash it in the same go:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run update_kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To know what &#039;&#039;update_kernel&#039;&#039; script is doing you can display its content:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; printenv update_kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Warning|If the loaded kernel image is too large, the following operation can destroy data that are stored after the partition limits (e.g. RootFS) - Check that transfered size value is less than the ones specified here [[#Flash_memory_partitions|Flash Memory Partitions]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Other Linux kernel update method===&lt;br /&gt;
* Load kernel image with U-Boot through network:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run download_kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or with the serial line:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; loadb ${loadaddr}&lt;br /&gt;
     &#039;&#039;Ctrl+Altgr+\+c to access kermit command line then:&#039;&#039;&lt;br /&gt;
 (/home/.../) C-Kermit&amp;gt;send /tftpboot/XX-linux.bin&lt;br /&gt;
     &#039;&#039;After download is completed, you can type the c command to reconnect to the terminal:&#039;&#039;&lt;br /&gt;
 (/home/.../) C-Kermit&amp;gt;c&lt;br /&gt;
 Connecting to /dev/ttyUSB0, speed 115200&lt;br /&gt;
  Escape character: Ctrl-\ (ASCII 28, FS): enabled&lt;br /&gt;
 Type the escape character followed by C to get back,&lt;br /&gt;
 or followed by ? to see other options.&lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
 ## Total Size      = 0x&amp;lt;size of XX-linux.bin&amp;gt; = .... Bytes&lt;br /&gt;
 ## Start Addr      = 0x08000000&lt;br /&gt;
 BIOS&amp;gt; setenv filesize &amp;lt;size of XX-linux.bin&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Check that transfered size value is less than the ones specified here [[#Flash_memory_partitions|Flash Memory Partitions]]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 Bytes transferred = 1313216 (1409c0 hex)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* You can test your new kernel image without flashing it with; if so you will have to reload it again after test:&lt;br /&gt;
** &#039;&#039;&#039;Please note&#039;&#039;&#039;: The &#039;&#039;bootm&#039;&#039; command is not supported by [[APF51]] boards yet; directly flash the kernel with the below commands instead&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; bootm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* a U-Boot script exists to ease kernel image loading through Ethernet:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run download_kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* After kernel image has been downloaded into RAM memory, you can flash it with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run flash_kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you only want to try a new kernel without flashing the kernel image you can launch it directly from RAM (U-Boot 2011.12):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv bootargs console=${consoledev},${baudrate} ${mtdparts};run addubifsargs addipargs; bootm&lt;br /&gt;
(the kernel image you want to try must have been loaded at ${loadaddr})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Please note&#039;&#039;&#039;: The &#039;&#039;bootm&#039;&#039; command is not supported by [[APF51]] boards yet; directly flash the kernel with the below commands&lt;br /&gt;
&lt;br /&gt;
==rootfs installation==&lt;br /&gt;
&lt;br /&gt;
* Check that your Armadeus rootfs image size is smaller than the rootfs partition (see [[#Flash_memory_partitions|Flash Memory Partitions]] for size allowances):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus]$ ls -al buildroot/output/images/&lt;br /&gt;
 ...&lt;br /&gt;
 [armadeus]$ cp buildroot/output/images/* /tftpboot/ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Load rootfs image with U-Boot through network:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run update_rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For large rootfs (bigger than the available RAM on your system) please use this method (&#039;&#039;&#039;not&#039;&#039;&#039; supported on the [[APF9328]]):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; nand erase.part rootfs&lt;br /&gt;
 BIOS&amp;gt; tftpboot ${rootfs_addr} ${board_name}-rootfs.ubi nand&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or serial line:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; loadb ${loadaddr}&lt;br /&gt;
    &#039;&#039;Ctrl+Altgr+\+c to access kermit command line then...&#039;&#039;&lt;br /&gt;
(/home/.../) C-Kermit&amp;gt;send path_to_your_host_buildroot_dir/XX-rootfs.ubi&lt;br /&gt;
    &#039;&#039;After download is completed, you can type the c command to reconnect to the terminal:&#039;&#039;&lt;br /&gt;
(/home/.../) C-Kermit&amp;gt;c&lt;br /&gt;
Connecting to /dev/ttyUSB0, speed 115200&lt;br /&gt;
 Escape character: Ctrl-\ (ASCII 28, FS): enabled&lt;br /&gt;
Type the escape character followed by C to get back,&lt;br /&gt;
or followed by ? to see other options.&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
## Total Size      = 0x&amp;lt;size of rootfs&amp;gt;&lt;br /&gt;
## Start Addr      = 0x........&lt;br /&gt;
BIOS&amp;gt; setenv filesize &amp;lt;size of rootfs&amp;gt;&lt;br /&gt;
BIOS&amp;gt; run flash_rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Now you should be ready to test Linux:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FPGA firmware test==&lt;br /&gt;
&lt;br /&gt;
The FPGA firmwares are all located in the &#039;&#039;firmware/&#039;&#039; directory of your Armadeus view:&lt;br /&gt;
 [armadeus]$ ls firmware/&lt;br /&gt;
 apf_pkg  BRAMTest  bus_led  led  PS2  PS2_Opencore  servo  sram_test  wishbone_example  Xtools&lt;br /&gt;
You can make some trials with the &#039;&#039;firmware/PS2/ps2_top.bin&#039;&#039; file.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning| for the APF9328, Check that your bitfile size is smaller than the firmware partition size (256KB) before trying the following commands or you may corrupt your Linux kernel FLASH partition !!!}}&lt;br /&gt;
{{Note | For the APF51 only binary file format work (&#039;&#039;&#039;.bin&#039;&#039;&#039;). Do not use &#039;&#039;&#039;.bit&#039;&#039;&#039; format}}&lt;br /&gt;
&lt;br /&gt;
* Load FPGA firmware image file with U-Boot through:&amp;lt;br&amp;gt;&lt;br /&gt;
Ethernet:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; tftpboot ${loadaddr} fpgafirmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;fpgafirmware.bin&#039;&#039; is of course the name of your bitfile stored in your TFTP shared directory (&#039;&#039;/tftpboot/&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
then you can type the c command to reconnect to the terminal&lt;br /&gt;
&lt;br /&gt;
* Test your new FPGA firmware&#039;s downloading:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; fpga load 0 ${loadaddr} ${filesize}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FPGA firmware installation==&lt;br /&gt;
&lt;br /&gt;
* Flash your firmware image with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run flash_firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When you are &#039;&#039;&#039;satisfied with your firmware&#039;&#039;&#039;, you can make it &amp;quot;autoloaded&amp;quot; at power up:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv firmware_autoload 1&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note | (U-Boot 2011.12) you can manually cancel the firmware autoload using the following procedure: keeping &amp;lt;CTRL-C&amp;gt; pressed on the console and power up the board will start the board without downloading the FPGA firmware - This procedure can be helpfull if you have programmed a broken firmware  }}&lt;br /&gt;
&lt;br /&gt;
==Update U-Boot==&lt;br /&gt;
* Check that your Armadeus U-Boot image size is smaller than the u-boot partition (see [[#Flash_memory_partitions|Flash Memory Partitions]] for size allowances) and copy all the binary images to your TFTP server directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus]$ ls -al buildroot/output/images/&lt;br /&gt;
 ...&lt;br /&gt;
 [armadeus]$ cp buildroot/output/images/* /tftpboot/ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot update script===&lt;br /&gt;
* This is the recommended method and the easiest one. The automatic &#039;update_uboot&#039; scripts downloads the image and flash it in the same go:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run update_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset your board and check if you need to update your environment variables:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; reset&lt;br /&gt;
 U-Boot 2011.12 ..&lt;br /&gt;
 ...&lt;br /&gt;
 *** Warning - Environment version change suggests: run flash_reset_env; reset&lt;br /&gt;
 BIOS&amp;gt; run flash_reset_env; reset&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In such a case you may have to update your network environment variables (see [[#Configure_U-Boot|Configure U-Boot]]) &lt;br /&gt;
===Other U-Boot update method===&lt;br /&gt;
You can use the following commands to download U-boot in RAM:&amp;lt;br&amp;gt;&lt;br /&gt;
*With Ethernet and a TFTP server:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run download_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*With Ethernet and a NFS server:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; nfs ${loadaddr} host_ip_addr:/nfs_path_to_buildroot/apfXX-u-boot{.bin|-nand.bin|.sb}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*With kermit and the serial/RS232 line&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; loadb ${loadaddr}&lt;br /&gt;
    &amp;lt;CTRL&amp;gt;&amp;lt;ALT GR&amp;gt;\&lt;br /&gt;
    c&lt;br /&gt;
    send path_to_buildroot/apfXX-u-boot{.bin|-nand.bin|.sb}&lt;br /&gt;
    c&amp;lt;ENTER&amp;gt;&lt;br /&gt;
 Connecting to /dev/ttyUSB0, speed 115200&lt;br /&gt;
  Escape character: Ctrl-\ (ASCII 28, FS): enabled&lt;br /&gt;
 Type the escape character followed by C to get back,&lt;br /&gt;
 or followed by ? to see other options.&lt;br /&gt;
 ----------------------------------------------------&lt;br /&gt;
 ## Total Size      = 0x&amp;lt;size of U-Boot&amp;gt; = .... Bytes&lt;br /&gt;
 ## Start Addr      = 0x08000000&lt;br /&gt;
 BIOS&amp;gt; setenv filesize &amp;lt;size of U-Boot&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can use the U-Boot command/script &#039;flash_uboot&#039; to tranfert the new U-Boot from RAM to Flash memory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run flash_uboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced informations can be found at the [[BootLoader]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Update U-Boot, kernel and rootfs images all at once==&lt;br /&gt;
* Copy all the binary images to your TFTP server directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus]$ cp buildroot/output/images/* /tftpboot/ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The automatic &#039;update_all&#039; scripts downloads each image and flash it in the same go:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run update_all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reset your board to check that wour board is correctly updated.&lt;br /&gt;
&lt;br /&gt;
{{Note |When updating your board from a legacy version of Armadeus BSP you should update U-Boot first to update the environment variables before any other partition update ( see [[#Update_U-Boot|Update U-Boot]]) }}&lt;br /&gt;
&lt;br /&gt;
==Flash memory partitions==&lt;br /&gt;
===APF9328 / U-Boot 1.3.4 Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF9328 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!width=&amp;quot;60%&amp;quot; |Address range (index from FLASH physical @ 0x10000000) (up to Armadeus 4.x)!!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x000000 - 0x03FFFF ( 256KB )&lt;br /&gt;
|U-Boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x040000 - 0x5FFFF ( 128KB )&lt;br /&gt;
|U-Boot environment variables&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x060000 - 0x9FFFF ( 256KB )&lt;br /&gt;
|FPGA bitfile&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x0A0000 - 0x29FFFF ( 2MB )&lt;br /&gt;
|Linux kernel image&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x2A0000 - End of FLASH ( ~5.5 MB or ~13.5MB  )&lt;br /&gt;
|Root filesystem&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF9328 / U-Boot 2011.12 and newer release - Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF9328 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! width=&amp;quot;60%&amp;quot; |Address range (index from FLASH physical @ 0x10000000) !!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x000000 - 0x03FFFF ( 256KB )&lt;br /&gt;
|u-boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x040000 - 0x5FFFF ( 128KB )&lt;br /&gt;
|U-Boot environment variables (primary partition: env)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x060000 - 0x7FFFF ( 128KB )&lt;br /&gt;
|U-Boot environment variables (redundant partition: env2)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x080000 - 0xBFFFF ( 256KB )&lt;br /&gt;
|FPGA bitfile (firmware)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x0C0000 - 0x2BFFFF ( 2MB )&lt;br /&gt;
|Linux kernel image (kernel)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x2C0000 - End of FLASH ( ~5.5 MB or ~13.5 MB  )&lt;br /&gt;
|Root filesystem (rootfs)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF27 / U-Boot 1.3.4 Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF27 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!width=&amp;quot;60%&amp;quot; |NAND flash address range (up to Armadeus 4.x)!!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00000000 - 0x0009FFFF (640KB, including NAND SPL and spare memory for bad blocks)&lt;br /&gt;
|U-Boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x000A0000 - 0x000FFFFF (384KB)&lt;br /&gt;
|U-Boot environment variables&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00100000 - 0x0017FFFF (512KB)&lt;br /&gt;
|FPGA bitfile&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00180000 - 0x0067FFFF (5MB)&lt;br /&gt;
|Linux kernel image&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00680000 - End of FLASH (&amp;gt;~250MB)&lt;br /&gt;
|Root filesystem&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF27 / U-Boot 2011.12 and newer release - Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF27 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! width=&amp;quot;60%&amp;quot; |NAND flash address range !!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00000000 - 0x000FFFFF (1MiB, including NAND SPL and spare memory for bad blocks)&lt;br /&gt;
|u-boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00100000 - 0x0017FFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (primary partition: env)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00180000 - 0x001FFFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (redundant partition: env2)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00200000 - 0x0027FFFF (512KB)&lt;br /&gt;
|FPGA bitfile (firmware)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00280000 - 0x002FFFFF (512kB)&lt;br /&gt;
|DeviceTree Block partition (dtb)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00300000 - 0x007FFFFF (5MB)&lt;br /&gt;
|Linux kernel image (kernel)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00800000 - End of FLASH (&amp;gt;~248MB)&lt;br /&gt;
|Root filesystem (rootfs)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF28 / U-Boot 2011.12 and newer release - Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF28 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!  width=&amp;quot;60%&amp;quot; |NAND flash address range !!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00000000 - 0x002FFFFF (3MB, including NAND SPL and spare memory for bad blocks)&lt;br /&gt;
|u-boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00300000 - 0x0037FFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (primary partition: env)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00380000 - 0x003FFFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (redundant partition: env2)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00400000 - 0x0047FFFF (512kB)&lt;br /&gt;
|DeviceTree Block partition (dtb)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00480000 - 0x004FFFFF (512kB)&lt;br /&gt;
|Reserved for a futur splash screen (splash)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00500000 - 0x00CFFFFF (8MB)&lt;br /&gt;
|Linux kernel image (kernel)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00D00000 - End of FLASH (&amp;gt;~243MB)&lt;br /&gt;
|Root filesystem (rootfs)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF51 / U-Boot 2010.03 Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF51 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!  width=&amp;quot;60%&amp;quot; |NAND flash address range (up to Armadeus 4.x)!!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00000000 - 0x000FFFFF (1MB, including NAND SPL and spare memory for bad blocks)&lt;br /&gt;
|U-Boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00100000 - 0x001FFFFF (1MB)&lt;br /&gt;
|U-Boot environment variables&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00200000 - 0x002FFFFF (1MB)&lt;br /&gt;
|FPGA bitfile&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00300000 - 0x00AFFFFF (8MB)&lt;br /&gt;
|Linux kernel image&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00B00000 - End of FLASH (&amp;gt;~500MB)&lt;br /&gt;
|Root filesystem&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===APF51 / U-Boot 2011.12 and newer release - Flash memory partitions===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;APF51 Flash memory partitions&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!  width=&amp;quot;60%&amp;quot; |NAND flash address range !!Type&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00000000 - 0x000FFFFF (1MB, including NAND SPL and spare memory for bad blocks)&lt;br /&gt;
| u-boot&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00100000 - 0x0017FFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (primary partition: env)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00180000 - 0x001FFFFF (512kB)&lt;br /&gt;
|U-Boot environment variables (redundant partition: env2)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00200000 - 0x002FFFFF (1MB)&lt;br /&gt;
|FPGA bitfile&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00300000 - 0x0037FFFF (512kB)&lt;br /&gt;
|DeviceTree Block partition (dtb)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00380000 - 0x003FFFFF (512kB)&lt;br /&gt;
|Reserved for a futur splash screen (splash)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00400000 - 0x00BFFFFF (8MB)&lt;br /&gt;
|Linux kernel image (kernel)&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0x00C00000 - End of FLASH (&amp;gt;~500MB)&lt;br /&gt;
|Root filesystem (rootfs)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:System Update]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11854</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11854"/>
		<updated>2013-06-12T14:33:47Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* kernel-2.6.38 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If the script prepare-kernel.sh is missing, you can resolve this issue by:&lt;br /&gt;
 $ make xenomai&lt;br /&gt;
Then resume the compilation:&lt;br /&gt;
 $ make&lt;br /&gt;
&#039;&#039;&#039;kernel-2.6.38&#039;&#039;&#039;&lt;br /&gt;
*If the compilation stops, which is probabely the case for the first time, apply the following patches in : buildroot/output/build/linux-2.6.38.8 &lt;br /&gt;
http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B5e19GT6g%3Dx1zdTan7maz28qsJNRoNYpDz7w-BNWAgR5WO4w%40mail.gmail.com&amp;amp;forum_name=armadeus-forum&lt;br /&gt;
** adeos-00-avoid_kernel_panic.patch :&lt;br /&gt;
 --- a/arch/arm/plat-mxc/time.c	2012-09-01 16:06:04.000000000 +0200&lt;br /&gt;
 +++ b/arch/arm/plat-mxc/time.c	2012-09-01 16:01:17.000000000 +0200&lt;br /&gt;
 @@ -405,7 +405,8 @@&lt;br /&gt;
 &lt;br /&gt;
 	if (timer_is_v1()) {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + MX1_2_TCN;&lt;br /&gt;
 -		tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		//tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		tsc_info.counter_vaddr =(unsigned long)(timer_base + MX1_2_TCN);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + V2_TCN;&lt;br /&gt;
 		tsc_info.counter_vaddr = (unsigned long)(timer_base + V2_TCN);&lt;br /&gt;
** xenomai-00-move-irq_to_desc-export.patch :&lt;br /&gt;
 diff -ru &#039;--exclude-from=linux-2.6.38.8/Documentation/dontdiff&#039; linux-2.6.38.8/kernel/irq/irqdesc.c linux-2.6.38.8.new/kernel/irq/irqdesc.c&lt;br /&gt;
 --- a/kernel/irq/irqdesc.c	2012-08-25 14:44:30.000000000 +0200&lt;br /&gt;
 +++ b/kernel/irq/irqdesc.c	2012-08-25 12:17:44.000000000 +0200&lt;br /&gt;
 @@ -268,13 +268,13 @@&lt;br /&gt;
 	}&lt;br /&gt;
 	return arch_early_irq_init();&lt;br /&gt;
 }&lt;br /&gt;
 -EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 &lt;br /&gt;
 #ifndef CONFIG_IPIPE&lt;br /&gt;
 struct irq_desc *irq_to_desc(unsigned int irq)&lt;br /&gt;
 {&lt;br /&gt;
 	return (irq &amp;lt; NR_IRQS) ? irq_desc + irq : NULL;&lt;br /&gt;
 }&lt;br /&gt;
 +EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 #endif /* CONFIG_IPIPE */&lt;br /&gt;
 &lt;br /&gt;
 struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11853</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11853"/>
		<updated>2013-06-12T14:31:17Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* kernel-2.6.38 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If the script prepare-kernel.sh is missing, you can resolve this issue by:&lt;br /&gt;
 $ make xenomai&lt;br /&gt;
Then resume the compilation:&lt;br /&gt;
 $ make&lt;br /&gt;
==== kernel-2.6.38 ====&lt;br /&gt;
*If the compilation stops, which is probabely the case for the first time, apply the following patches in : buildroot/output/build/linux-2.6.38.8 &lt;br /&gt;
http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B5e19GT6g%3Dx1zdTan7maz28qsJNRoNYpDz7w-BNWAgR5WO4w%40mail.gmail.com&amp;amp;forum_name=armadeus-forum&lt;br /&gt;
** adeos-00-avoid_kernel_panic.patch :&lt;br /&gt;
 --- a/arch/arm/plat-mxc/time.c	2012-09-01 16:06:04.000000000 +0200&lt;br /&gt;
 +++ b/arch/arm/plat-mxc/time.c	2012-09-01 16:01:17.000000000 +0200&lt;br /&gt;
 @@ -405,7 +405,8 @@&lt;br /&gt;
 &lt;br /&gt;
 	if (timer_is_v1()) {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + MX1_2_TCN;&lt;br /&gt;
 -		tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		//tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		tsc_info.counter_vaddr =(unsigned long)(timer_base + MX1_2_TCN);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + V2_TCN;&lt;br /&gt;
 		tsc_info.counter_vaddr = (unsigned long)(timer_base + V2_TCN);&lt;br /&gt;
** xenomai-00-move-irq_to_desc-export.patch :&lt;br /&gt;
 diff -ru &#039;--exclude-from=linux-2.6.38.8/Documentation/dontdiff&#039; linux-2.6.38.8/kernel/irq/irqdesc.c linux-2.6.38.8.new/kernel/irq/irqdesc.c&lt;br /&gt;
 --- a/kernel/irq/irqdesc.c	2012-08-25 14:44:30.000000000 +0200&lt;br /&gt;
 +++ b/kernel/irq/irqdesc.c	2012-08-25 12:17:44.000000000 +0200&lt;br /&gt;
 @@ -268,13 +268,13 @@&lt;br /&gt;
 	}&lt;br /&gt;
 	return arch_early_irq_init();&lt;br /&gt;
 }&lt;br /&gt;
 -EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 &lt;br /&gt;
 #ifndef CONFIG_IPIPE&lt;br /&gt;
 struct irq_desc *irq_to_desc(unsigned int irq)&lt;br /&gt;
 {&lt;br /&gt;
 	return (irq &amp;lt; NR_IRQS) ? irq_desc + irq : NULL;&lt;br /&gt;
 }&lt;br /&gt;
 +EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 #endif /* CONFIG_IPIPE */&lt;br /&gt;
 &lt;br /&gt;
 struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11852</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11852"/>
		<updated>2013-06-12T14:29:41Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Selecting Xenomai package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If the script prepare-kernel.sh is missing, you can resolve this issue by:&lt;br /&gt;
 $ make xenomai&lt;br /&gt;
Then resume the compilation:&lt;br /&gt;
 $ make&lt;br /&gt;
==== kernel-2.6.38 ====&lt;br /&gt;
*If the compilation stops, which is probabely the case for the first time, apply the following patches in : buildroot/output/build/linux-2.6.38.8 from :&lt;br /&gt;
http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B5e19GT6g%3Dx1zdTan7maz28qsJNRoNYpDz7w-BNWAgR5WO4w%40mail.gmail.com&amp;amp;forum_name=armadeus-forum&lt;br /&gt;
** adeos-00-avoid_kernel_panic.patch :&lt;br /&gt;
 --- a/arch/arm/plat-mxc/time.c	2012-09-01 16:06:04.000000000 +0200&lt;br /&gt;
 +++ b/arch/arm/plat-mxc/time.c	2012-09-01 16:01:17.000000000 +0200&lt;br /&gt;
 @@ -405,7 +405,8 @@&lt;br /&gt;
 &lt;br /&gt;
 	if (timer_is_v1()) {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + MX1_2_TCN;&lt;br /&gt;
 -		tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		//tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		tsc_info.counter_vaddr =(unsigned long)(timer_base + MX1_2_TCN);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + V2_TCN;&lt;br /&gt;
 		tsc_info.counter_vaddr = (unsigned long)(timer_base + V2_TCN);&lt;br /&gt;
** xenomai-00-move-irq_to_desc-export.patch :&lt;br /&gt;
 diff -ru &#039;--exclude-from=linux-2.6.38.8/Documentation/dontdiff&#039; linux-2.6.38.8/kernel/irq/irqdesc.c linux-2.6.38.8.new/kernel/irq/irqdesc.c&lt;br /&gt;
 --- a/kernel/irq/irqdesc.c	2012-08-25 14:44:30.000000000 +0200&lt;br /&gt;
 +++ b/kernel/irq/irqdesc.c	2012-08-25 12:17:44.000000000 +0200&lt;br /&gt;
 @@ -268,13 +268,13 @@&lt;br /&gt;
 	}&lt;br /&gt;
 	return arch_early_irq_init();&lt;br /&gt;
 }&lt;br /&gt;
 -EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 &lt;br /&gt;
 #ifndef CONFIG_IPIPE&lt;br /&gt;
 struct irq_desc *irq_to_desc(unsigned int irq)&lt;br /&gt;
 {&lt;br /&gt;
 	return (irq &amp;lt; NR_IRQS) ? irq_desc + irq : NULL;&lt;br /&gt;
 }&lt;br /&gt;
 +EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 #endif /* CONFIG_IPIPE */&lt;br /&gt;
 &lt;br /&gt;
 struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11851</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11851"/>
		<updated>2013-06-12T14:28:10Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Xenomai kernel space support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
        [*] Install testsuite&lt;br /&gt;
        [*] Native skin library&lt;br /&gt;
        [*] POSIX skin library&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If the script prepare-kernel.sh is missing, you can resolve this issue by:&lt;br /&gt;
 $ make xenomai&lt;br /&gt;
Then resume the compilation:&lt;br /&gt;
 $ make&lt;br /&gt;
==== kernel-2.6.38 ====&lt;br /&gt;
*If the compilation stops, which is probabely the case for the first time, apply the following patches in : buildroot/output/build/linux-2.6.38.8 from :&lt;br /&gt;
http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B5e19GT6g%3Dx1zdTan7maz28qsJNRoNYpDz7w-BNWAgR5WO4w%40mail.gmail.com&amp;amp;forum_name=armadeus-forum&lt;br /&gt;
** adeos-00-avoid_kernel_panic.patch :&lt;br /&gt;
 --- a/arch/arm/plat-mxc/time.c	2012-09-01 16:06:04.000000000 +0200&lt;br /&gt;
 +++ b/arch/arm/plat-mxc/time.c	2012-09-01 16:01:17.000000000 +0200&lt;br /&gt;
 @@ -405,7 +405,8 @@&lt;br /&gt;
 &lt;br /&gt;
 	if (timer_is_v1()) {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + MX1_2_TCN;&lt;br /&gt;
 -		tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		//tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		tsc_info.counter_vaddr =(unsigned long)(timer_base + MX1_2_TCN);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + V2_TCN;&lt;br /&gt;
 		tsc_info.counter_vaddr = (unsigned long)(timer_base + V2_TCN);&lt;br /&gt;
** xenomai-00-move-irq_to_desc-export.patch :&lt;br /&gt;
 diff -ru &#039;--exclude-from=linux-2.6.38.8/Documentation/dontdiff&#039; linux-2.6.38.8/kernel/irq/irqdesc.c linux-2.6.38.8.new/kernel/irq/irqdesc.c&lt;br /&gt;
 --- a/kernel/irq/irqdesc.c	2012-08-25 14:44:30.000000000 +0200&lt;br /&gt;
 +++ b/kernel/irq/irqdesc.c	2012-08-25 12:17:44.000000000 +0200&lt;br /&gt;
 @@ -268,13 +268,13 @@&lt;br /&gt;
 	}&lt;br /&gt;
 	return arch_early_irq_init();&lt;br /&gt;
 }&lt;br /&gt;
 -EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 &lt;br /&gt;
 #ifndef CONFIG_IPIPE&lt;br /&gt;
 struct irq_desc *irq_to_desc(unsigned int irq)&lt;br /&gt;
 {&lt;br /&gt;
 	return (irq &amp;lt; NR_IRQS) ? irq_desc + irq : NULL;&lt;br /&gt;
 }&lt;br /&gt;
 +EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 #endif /* CONFIG_IPIPE */&lt;br /&gt;
 &lt;br /&gt;
 struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11850</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11850"/>
		<updated>2013-06-12T14:23:23Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Xenomai kernel space support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
        [*] Install testsuite&lt;br /&gt;
        [*] Native skin library&lt;br /&gt;
        [*] POSIX skin library&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If the script prepare-kernel.sh is missing, you can resolve this issue by:&lt;br /&gt;
 $ make xenomai&lt;br /&gt;
Then resume the compilation:&lt;br /&gt;
 $ make&lt;br /&gt;
*If the compilation stops, which is probabely the case for the first time, apply the two following patches from :&lt;br /&gt;
http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B5e19GT6g%3Dx1zdTan7maz28qsJNRoNYpDz7w-BNWAgR5WO4w%40mail.gmail.com&amp;amp;forum_name=armadeus-forum&lt;br /&gt;
** adeos-00-avoid_kernel_panic.patch :&lt;br /&gt;
 --- a/arch/arm/plat-mxc/time.c	2012-09-01 16:06:04.000000000 +0200&lt;br /&gt;
 +++ b/arch/arm/plat-mxc/time.c	2012-09-01 16:01:17.000000000 +0200&lt;br /&gt;
 @@ -405,7 +405,8 @@&lt;br /&gt;
 &lt;br /&gt;
 	if (timer_is_v1()) {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + MX1_2_TCN;&lt;br /&gt;
 -		tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		//tsc_info.counter_vaddr =(unsigned long)(phys + MX1_2_TCN);&lt;br /&gt;
 +		tsc_info.counter_vaddr =(unsigned long)(timer_base + MX1_2_TCN);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		tsc_info.u.counter_paddr = phys + V2_TCN;&lt;br /&gt;
 		tsc_info.counter_vaddr = (unsigned long)(timer_base + V2_TCN);&lt;br /&gt;
** xenomai-00-move-irq_to_desc-export.patch :&lt;br /&gt;
 diff -ru &#039;--exclude-from=linux-2.6.38.8/Documentation/dontdiff&#039; linux-2.6.38.8/kernel/irq/irqdesc.c linux-2.6.38.8.new/kernel/irq/irqdesc.c&lt;br /&gt;
 --- a/kernel/irq/irqdesc.c	2012-08-25 14:44:30.000000000 +0200&lt;br /&gt;
 +++ b/kernel/irq/irqdesc.c	2012-08-25 12:17:44.000000000 +0200&lt;br /&gt;
 @@ -268,13 +268,13 @@&lt;br /&gt;
 	}&lt;br /&gt;
 	return arch_early_irq_init();&lt;br /&gt;
 }&lt;br /&gt;
 -EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 &lt;br /&gt;
 #ifndef CONFIG_IPIPE&lt;br /&gt;
 struct irq_desc *irq_to_desc(unsigned int irq)&lt;br /&gt;
 {&lt;br /&gt;
 	return (irq &amp;lt; NR_IRQS) ? irq_desc + irq : NULL;&lt;br /&gt;
 }&lt;br /&gt;
 +EXPORT_SYMBOL_GPL(irq_to_desc);&lt;br /&gt;
 #endif /* CONFIG_IPIPE */&lt;br /&gt;
 &lt;br /&gt;
 struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)&lt;br /&gt;
&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11849</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11849"/>
		<updated>2013-06-12T14:09:23Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* 2.6.38 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
        [*] Install testsuite&lt;br /&gt;
        [*] Native skin library&lt;br /&gt;
        [*] POSIX skin library&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you plan to use a 2.6.38 kernel you have to delete the following patches :&lt;br /&gt;
 $ cd buildroot/package/xenomai&lt;br /&gt;
 $ rm adeos-00-compatibility_with_armadeus.patch&lt;br /&gt;
 $ rm adeos-01-adeos-prevent_system_freeze_on_mxc_with_gpio_generated_interrupts.patch&lt;br /&gt;
 $ cd patches/linux/2.6.38.8&lt;br /&gt;
 $ rm 401-armadeus-fix_clock_tree.patch&lt;br /&gt;
 $ rm 419-armadeus-mx5fb-add_ipu_clock_polarity_support.patch&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11848</id>
		<title>Xenomai</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Xenomai&amp;diff=11848"/>
		<updated>2013-06-12T14:06:13Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Selecting Xenomai package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What is Xenomai ?==&lt;br /&gt;
&lt;br /&gt;
Xenomai is a real time co-kernel which cooperates with Linux via Adeos. With its help, hard real time applications can be developed and run on the Armadeus boards.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moreover, Xenomai provides a set of APIs (called &amp;quot;skins&amp;quot;) that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.&lt;br /&gt;
&lt;br /&gt;
==Explanation of the process used to install Xenomai==&lt;br /&gt;
&lt;br /&gt;
{{Note|Xenomai has only be really tested on [[APF9328]] and [[APF27]] with 2.6.29 kernel.}}&lt;br /&gt;
&lt;br /&gt;
The main steps are:&lt;br /&gt;
* selection of Xenomai package on the Buildroot menuconfig,&lt;br /&gt;
* selection of Xenomai features in Kernel menuconfig,&lt;br /&gt;
* compilation of the new version,&lt;br /&gt;
* validation of the Xenomai behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Note|These steps must be done with a fresh view or, at least, after having suppressed &#039;&#039;buildroot/output/built/linux-x.y.z&#039;&#039; directory.}}&lt;br /&gt;
&lt;br /&gt;
===Selecting Xenomai package===&lt;br /&gt;
&lt;br /&gt;
* First of all, you need to select Xenomai package and Adeos patch in Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt;&lt;br /&gt;
    Real-Time ---&amp;gt;&lt;br /&gt;
        [*] Xenomai Userspace&lt;br /&gt;
        [*] Install testsuite&lt;br /&gt;
        [*] Native skin library&lt;br /&gt;
        [*] POSIX skin library&lt;br /&gt;
&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note|It&#039;s possible to enable (or not) some skins in a first menu.}}&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* If you plan to use &#039;&#039;xeno-test&#039;&#039; (Xenomai performance tool) then CONFIG_ASH_GETOPTS should be activated in Busybox:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make busybox-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Shells  ---&amp;gt;&lt;br /&gt;
        Choose your default shell (ash)  ---&amp;gt;&lt;br /&gt;
    --- ash&lt;br /&gt;
    ---   Ash Shell Options&lt;br /&gt;
          ...&lt;br /&gt;
          [*]   Builtin getopt to parse positional parameters &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Exit and save your configuration&lt;br /&gt;
* rebuild Busybox &amp;amp; Buildroot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make busybox-clean &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel greater than 2.6.29===&lt;br /&gt;
For kernels greater than 2.6.29, it&#039;s needed to suppress all patches in &#039;&#039;buildroot/packages/xenomai/&#039;&#039; and then modify URL and Adeos patch name:&lt;br /&gt;
====2.6.38====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Kernel ---&amp;gt;&lt;br /&gt;
    Linux Kernel Extensions  ---&amp;gt;&lt;br /&gt;
        [*] Adeos/Xenomai Real-time patch&lt;br /&gt;
        (http://download.gna.org/adeos/patches/v2.6/$(BR2_ARCH)) Adeos patch URL&lt;br /&gt;
        (adeos-ipipe-2.6.38.8-arm-1.18-09.patch) Path for Adeos patch file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Xenomai kernel space support===&lt;br /&gt;
*At first time, to have Linux kernel patched with Xenomai and Adeos patches, you must type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Then you can configure the Xenomai kernel options from Linux menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the new entry :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 Real-time sub-system  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 [*] Xenomai&lt;br /&gt;
   &amp;lt;*&amp;gt; Nucleus &lt;br /&gt;
   [*]   Pervasive real-time support in user-space&lt;br /&gt;
   [ ]     Interrupt shield support&lt;br /&gt;
   [*]     Priority coupling support&lt;br /&gt;
   [*]   Optimize as pipeline head&lt;br /&gt;
   (32)  Number of pipe devices&lt;br /&gt;
   (512) Number of registry slots&lt;br /&gt;
   (128) Size of the system heap (Kb)&lt;br /&gt;
   (32)  Size of the private stack pool (Kb)&lt;br /&gt;
   [*]   Statistics collection&lt;br /&gt;
   [ ]   Debug support&lt;br /&gt;
   [ ]   Shared interrupts&lt;br /&gt;
      Timing  ---&amp;gt;&lt;br /&gt;
      Scalability  ---&amp;gt;&lt;br /&gt;
      Machine  ---&amp;gt;&lt;br /&gt;
      Interfaces  ---&amp;gt;&lt;br /&gt;
      Drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionaly, to enable / disable the different available skins, go into &amp;lt;b&amp;gt;&#039;&#039;Interfaces  ---&amp;gt;&#039;&#039;&amp;lt;/b&amp;gt; :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Native API  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; POSIX API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; pSOS+ emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; uITRON API  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VRTX emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; VxWorks emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt; &amp;gt; RTAI emulator  ---&amp;gt;&lt;br /&gt;
 &amp;lt;*&amp;gt; Real-Time Driver Model  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, compile everything:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploy==&lt;br /&gt;
&lt;br /&gt;
You can now [[Target_Software_Installation | transfer]] the rootfs and the kernel&lt;br /&gt;
on the APF.&lt;br /&gt;
&lt;br /&gt;
==Validate the installation==&lt;br /&gt;
&lt;br /&gt;
* Boot the APF and logon as root.&lt;br /&gt;
* You can double check Xenomai is installed correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ dmesg | grep Xenomai&lt;br /&gt;
  I-pipe: Domain Xenomai registered.&lt;br /&gt;
  Xenomai: hal/arm started.&lt;br /&gt;
  Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded.&lt;br /&gt;
  Xenomai: starting native API services.&lt;br /&gt;
  Xenomai: starting POSIX services.&lt;br /&gt;
  Xenomai: starting RTDM services.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can run the performance test provided by Xenomai:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 $ xeno-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deinstalling or disabling Xenomai==&lt;br /&gt;
There are two parts needed for disabling Xenomai features&lt;br /&gt;
&lt;br /&gt;
===Kernel===&lt;br /&gt;
For disabling kernel part, two solutions are available&lt;br /&gt;
&lt;br /&gt;
* The first solution is to unselect kernel&#039;s features :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And disable following options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Real-time sub-system ---&amp;gt;&lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
Kernel Features ---&amp;gt; &lt;br /&gt;
    [ ] Interrupt pipeline&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The second solution is to destroy the kernel tree :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Userspace / package===&lt;br /&gt;
For disabling userspace/package part :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and disable Xenomai&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target ---&amp;gt; &lt;br /&gt;
    [ ] Xenomai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the dirclean command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make xenomai-dirclean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Going further==&lt;br /&gt;
* [[Xenomai:examples usage | Using Armadeus Xenomai custom examples]]&lt;br /&gt;
* [[Xenomai:Blinking LEDs | Xenomai tutorial (blinking LED)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://home.gna.org/adeos/ Adeos website]&lt;br /&gt;
* [http://www.xenomai.org Xenomai website]&lt;br /&gt;
* [[Adeos | Adeos installation]]&lt;br /&gt;
* [[Xenomai manual installation]] (for reference)&lt;br /&gt;
* [http://doc.fedora-fr.org/wiki/Mise_en_œuvre_de_Xenomai_pour_créer_un_noyau_Temps_Réel_dur Mise en œuvre de Xenomai pour créer un noyau Temps Réel dur - Fedora (french)]&lt;br /&gt;
* [http://lwn.net/images/conf/rtlws11/papers/proc/p11.pdf Latencies measurements on ARM platforms]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Real-Time]]&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=11847</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=11847"/>
		<updated>2013-06-12T14:00:43Z</updated>

		<summary type="html">&lt;p&gt;YounesC: /* Configure SDK options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation was successfully tested on the following distributions:&lt;br /&gt;
* Debian Sarge (3.1), Etch (4.0), Lenny (5.0) &amp;amp; Squeeze&lt;br /&gt;
* X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) &amp;amp; Jaunty Jackalope (9.04)&lt;br /&gt;
* Ubuntu Dapper Drake (6.04), Hardy Heron (8.04),  Intrepid Ibex (8.10) &amp;amp; Lucid Lynx (10.04) (32 &amp;amp; 64bits)&lt;br /&gt;
* Mandriva 2006&lt;br /&gt;
* Fedora Core 3 &amp;amp; 4, Fedora 10, Laughlin (14)&lt;br /&gt;
* Red Hat Enterprise 5.2&lt;br /&gt;
* Gentoo 10.0 (32 &amp;amp; 64 bits)&lt;br /&gt;
* SuSE 10.1, OpenSUSE 11.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The installation may fail on:&#039;&#039;&#039;&lt;br /&gt;
* Ubuntu Karmic Koala (9.10): tslib fails to build&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;APF28 requirements:&#039;&#039;&#039;&lt;br /&gt;
* APF28 board requires a linux distribution with (GNU) tar version 1.20 or later to compile the linux Kernel - Please update or upgrade your linux distribution. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a &#039;&#039;make&#039;&#039; version &#039;&#039;&#039;greater or equal to&#039;&#039;&#039; 3.81. To check it: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make -v&lt;br /&gt;
GNU Make 3.81&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
For armadeus up to 3.4, make should be &#039;&#039;&#039;strictly&#039;&#039;&#039; make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&amp;amp;&amp;amp; make&amp;amp;&amp;amp; sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one&#039;s PATH, make 3-81 can be invoked directly or as /usr/local/bin/make). &lt;br /&gt;
 &lt;br /&gt;
Depending on your distribution, some additional packages are required:&lt;br /&gt;
&lt;br /&gt;
===Debian/Ubuntu based systems===&lt;br /&gt;
[[Ubuntu/Debian installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===Mandriva based systems=== &lt;br /&gt;
[[Mandriva installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===RPM-based systems (RedHat, Fedora, CentOS)===&lt;br /&gt;
[[RedHat/Fedora installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===OpenSuse based systems===&lt;br /&gt;
[[OpenSuse installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
===Gentoo based systems===&lt;br /&gt;
[[Gentoo installation prerequisites]]&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* &#039;&#039;&#039;If you are a &amp;quot;careful&amp;quot; user&#039;&#039;&#039;, then download [https://sourceforge.net/projects/armadeus/files/ the latest stable installation tarball from SourceForge] and detar it wherever you want:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ tar xjvf armadeus-5.2.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If you want the latest snapshot&#039;&#039;&#039;, the whole development tree can be checked out from our [[GIT]] repository.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git clone git://git.code.sf.net/p/armadeus/code armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* depending on your previous choice, a directory named &#039;&#039;armadeus/&#039;&#039; or &#039;&#039;armadeus-5.2/&#039;&#039; will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Do not use spaces&#039;&#039;&#039; in the directory name !&lt;br /&gt;
* &#039;&#039;&#039;Do not use a directory path beginning with /usr.&#039;&#039;&#039; It is a known bug of Buildroot (until BR2012.11, at 2012-12).&lt;br /&gt;
* GIT write/push  accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:Salocin68|Salocin68]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK options==&lt;br /&gt;
{{Note|If you are new to Armadeus and have troubles compiling armadeus-5.0 using the following instructions, you may find some hints here: [[Armadeus 5.0 Troubleshots]]}}&lt;br /&gt;
*Go to the directory where you put the Armadeus sources:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd armadeus/  (or armadeus-5.0/)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*The first time you compile an Armadeus distribution you have to specify the target (here the APF9328) to work with. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make apf9328_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This command reloads the default configuration to support your target and automatically start a Buildroot&#039;s configuration menu.&lt;br /&gt;
&lt;br /&gt;
* Current valid default configurations are:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
apf9328_defconfig  apf27_defconfig  pps_defconfig  apf28_defconfig  apf51_defconfig pps51_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For PPS, please see [[APF27_PPS]] or [[PPS51]] for details on their specific build.&lt;br /&gt;
&lt;br /&gt;
* After some downloads, you will get the Buildroot configuration interface:&lt;br /&gt;
&lt;br /&gt;
{{Note|If you ever made changes in the following steps, at any time you can reload the default configuration with the same command}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Menuconfig3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
*If you are not familiar with Buildroot here are some tips:&lt;br /&gt;
*# you can move the highlighted item with the &amp;quot;up&amp;quot;/&amp;quot;down&amp;quot; arrow keys&lt;br /&gt;
*# with the &amp;quot;left&amp;quot;/&amp;quot;right&amp;quot; arrow keys you can choose between &amp;quot;Select&amp;quot;, &amp;quot;Exit&amp;quot; or &amp;quot;Help&amp;quot; buttons&lt;br /&gt;
*# &amp;quot;space&amp;quot;/&amp;quot;enter&amp;quot;:&lt;br /&gt;
*#* selects the currently highlighted item if you are on the &amp;quot;Select&amp;quot; button&lt;br /&gt;
*#* go back in previous menu if you are on &amp;quot;Exit&amp;quot; button&lt;br /&gt;
*#* show you some Help for current item if you are on &amp;quot;Help&amp;quot; button&lt;br /&gt;
*# for more Help about Buildroot commands, select &amp;quot;Help&amp;quot; in the main configuration screen&lt;br /&gt;
&lt;br /&gt;
*Update the memory configuration of your board:&lt;br /&gt;
&lt;br /&gt;
:In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;System configuration  ---&amp;gt;    [*] Armadeus Device Support  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:you can check and change the quantity of RAM available on your Armadeus board:&lt;br /&gt;
:[[Image:Build_config_memory.png]]&lt;br /&gt;
:For [[APF9328]] the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)&lt;br /&gt;
:For [[APF27]] it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).&lt;br /&gt;
:For [[APF51]] it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).&lt;br /&gt;
:For [[APF28]] The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip)&lt;br /&gt;
&lt;br /&gt;
* Put the correct port for login prompt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;System configuration  ---&amp;gt; () Port to run a getty (login prompt) on ---&amp;gt; ttymxc0&lt;br /&gt;
&lt;br /&gt;
* You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build Options ---&amp;gt;    (1) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* During the toolchain/distribution automatic build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. &#039;&#039;&#039;If you have several views or plan to build the toolchain several times&#039;&#039;&#039;, we advise you to put all the downloaded files in &#039;&#039;/local/downloads&#039;&#039; (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, buildroot will be downloaded separately for each build environment you set up.&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build options  ---&amp;gt;    (...) Download dir&amp;lt;/pre&amp;gt;&lt;br /&gt;
:[[Image:Build_config_menu_download.png]]&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
:[[Image:Build_config_download.png]]&lt;br /&gt;
&#039;&#039;&#039;Of course, &#039;&#039;/local/downloads&#039;&#039; should exists on your system and you should have writing rights on it !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you too to copy all the files in &#039;&#039;downloads/&#039;&#039; on a removable medium, in case you want to install the development tools on several systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Now, Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
* You can come back to this configuration menu, by typing (your changes will be kept): &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please wait for a while.... it takes at least one hour for the first run!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
By default, the downloaded files/tarball are put in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory &#039;&#039;buildroot/output/images&#039;&#039;:&lt;br /&gt;
*&#039;&#039;apf9328-u-boot.brec&#039;&#039; (only on [[APF9328]]): BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)&lt;br /&gt;
*&#039;&#039;XX-u-boot.bin&#039;&#039;: U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*&#039;&#039;XX-linux.bin&#039;&#039;: Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*&#039;&#039;XX-rootfs.jffs2&#039;&#039;: JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;XX-rootfs.ubi&#039;&#039; (not supported on [[APF9328]]): [[UBIFS|UBI]] filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.tar&#039;&#039;: for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp;amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note the new naming convention of binary files and directories (since Armadeus 4.0)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;buildroot/output/build&#039;&#039;: contains all the build results for target filesystem, &amp;lt;b&amp;gt;linux&amp;lt;/b&amp;gt;, busybox and &amp;lt;b&amp;gt;u-boot&amp;lt;/b&amp;gt;...&lt;br /&gt;
*&#039;&#039;buildroot/output/toolchain/&#039;&#039;: cross compilation toolchain&#039;s build dir. Binaries usable for cross-compilation are in &#039;&#039;buildroot/output/host/usr/bin&#039;&#039;.&lt;br /&gt;
*&#039;&#039;buildroot/output/target/&#039;&#039;: target filessytem before generating rootfs images&lt;br /&gt;
&lt;br /&gt;
More information is available in the  [http://buildroot.uclibc.org/buildroot.html Buildroot&#039;s documentation]&lt;br /&gt;
&lt;br /&gt;
* Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: &#039;&#039; &#039;&#039;buildroot/binaries/XX/&#039;&#039; (where XX was the name of your board).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You then copy the binary image to your server directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cp buildroot/output/images/* /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==To keep your local copy/repository up-to-date with the armadeus GIT repository==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will update your working directory to the latest release.&lt;br /&gt;
&lt;br /&gt;
Note: if &amp;quot;git pull&amp;quot; fails because a directory or a file already exists, then do:&lt;br /&gt;
 $ rm -rf &amp;lt;this-directory/file&amp;gt;&lt;br /&gt;
 $ git pull&lt;br /&gt;
&lt;br /&gt;
You can do a:&lt;br /&gt;
 $ make apfXX_defconfig&lt;br /&gt;
to have the latest features automatically activated.&lt;br /&gt;
&lt;br /&gt;
You have to do a &#039;&#039;&#039;make&#039;&#039;&#039; to rebuild binary files and then upload the binary files to your target.&lt;br /&gt;
&lt;br /&gt;
Note: if definitively everything goes wrong while it worked before the last update.&lt;br /&gt;
You can apply the following procedure (all your modifications in buildroot will be lost):&lt;br /&gt;
 $ rm -rf buildroot/&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ make apfXX_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
 $ cp buildroot/output/images/* /tftpboot&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>YounesC</name></author>
	</entry>
</feed>