
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.armadeus.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FabienM</id>
		<title>ArmadeusWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.armadeus.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FabienM"/>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Special:Contributions/FabienM"/>
		<updated>2026-05-03T07:38:51Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Armadeus_3&amp;diff=15108</id>
		<title>Armadeus 3</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Armadeus_3&amp;diff=15108"/>
				<updated>2022-06-30T12:12:18Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* How-to obtain the Armadeus 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will help you use the Armadeus 3.x software release. It also provides you with information about changes compared to the previous 2.x versions of Armadeus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Armadeus 3 adds many new features, including the following:&lt;br /&gt;
&lt;br /&gt;
*Some architectural changes to support different hardware targets: [[APF9328]] and [[APF27]]&lt;br /&gt;
*New versions of U-Boot (1.3.4), Linux kernel (2.6.27), GCC (4.2.1), Busybox (1.12.1) and also a recent version of Buildroot&lt;br /&gt;
*New naming convention of files&lt;br /&gt;
*New Flash partition mapping on the target&lt;br /&gt;
*TBC&lt;br /&gt;
&lt;br /&gt;
==Important Information regarding documentation==&lt;br /&gt;
&lt;br /&gt;
{{Note|With the introduction of the Armadeus 3 SDK, the Wiki documentation has moved to support the new software. Nevertheless you can download the following HTML dump to have the Armadeus 2.x compatible documentation: [http://www.armadeus.com/assos_downloads/wiki/wiki_assoc_html_dump_03_12_2008.tar.gz Armadeus 2.x wiki]. Wiki will also moved in the next weeks so to have an always Armadeus 3.x compatible HTML dump [http://www.armadeus.com/assos_downloads/wiki/wiki_assoc_html_dump_02_03_2009.tar.gz it's here]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To summarize the documentation changes, here are the rules to adapt the documentation according to your target and version of Armadeus.&lt;br /&gt;
* First Armadeus configuration once you have downloaded the Armadeus package found somewhere in First Setup pages:&lt;br /&gt;
: Armadeus 3 first command to use according to your &amp;lt;board&amp;gt; (apf9328 or apf27): make &amp;lt;board&amp;gt;_defconfig&lt;br /&gt;
: Armadeus 2 first command for apf9328: make&lt;br /&gt;
&lt;br /&gt;
* Binary files location according to your &amp;lt;board&amp;gt; (apf9328 or apf27):&lt;br /&gt;
: Armadeus 3 is buildroot/binaries/&amp;lt;board&amp;gt;/&lt;br /&gt;
: Armadeus 2 was buildroot/armadeus/&lt;br /&gt;
&lt;br /&gt;
* Armadeus 3 binary files naming convention according to your &amp;lt;board&amp;gt; (apf9328 or apf27):&lt;br /&gt;
: &amp;lt;board&amp;gt;-u-boot.brec&lt;br /&gt;
: &amp;lt;board&amp;gt;-u-boot.bin&lt;br /&gt;
: &amp;lt;board&amp;gt;-linux.bin&lt;br /&gt;
: &amp;lt;board&amp;gt;-rootfs.arm.jffs2&lt;br /&gt;
: &amp;lt;board&amp;gt;-rootfs.arm.tar&lt;br /&gt;
&lt;br /&gt;
* Armadeus 2 binary files naming convention for apf9328 only:&lt;br /&gt;
: u-boot.brec&lt;br /&gt;
: u-boot.bin&lt;br /&gt;
: linux-kernel-2.6.xx.x-arm.bin&lt;br /&gt;
: rootfs.arm.jffs2&lt;br /&gt;
: rootfs.arm.tar&lt;br /&gt;
&lt;br /&gt;
* Non configurable users-space tools including compiler for your board (apf9328 or apf27):&lt;br /&gt;
: Armadeus 3 tools for the apf9328 are located at buildroot/build_armv4t/&lt;br /&gt;
: Armadeus 3 tools for the apf27 are located at buildroot/build_armv5te/&lt;br /&gt;
: Armadeus 2 tools are located at buildroot/build_arm/&lt;br /&gt;
&lt;br /&gt;
* Configurable user-space tools (Linux, rootfs, U-Boot, Busybox...) for your board (apf9328 or apf27):&lt;br /&gt;
: Armadeus 3 tools for the apf9328 are located at buildroot/project_build_armv4t/apf9328/&lt;br /&gt;
: Armadeus 3 tools for the apf27 are located at buildroot/project_build_armv5te/apf27/&lt;br /&gt;
: Armadeus 2 tools are located at buildroot/project_build_arm/armadeus/&lt;br /&gt;
&lt;br /&gt;
* cross compilation toolchain for your board (apf9328 or apf27):&lt;br /&gt;
: Armadeus 3 source toolchain for the apf9328 is located at buildroot/toolchain_build_armv4t/&lt;br /&gt;
: Armadeus 3 source toolchain for the apf27 is located at buildroot/toolchain_build_armv5te/&lt;br /&gt;
: Armadeus 2 toolchain is located at buildroot/toolchain_build_arm/&lt;br /&gt;
&lt;br /&gt;
Keeping these rules in mind, you are ready to use any wiki page as a guideline whatever you are working with: Armadeus 2.x or 3.&lt;br /&gt;
&lt;br /&gt;
==How-to obtain the Armadeus 3==&lt;br /&gt;
&lt;br /&gt;
The third generation of Armadeus is either available on the gitlab repository: https://gitlab.com/armadeus/armadeus-bsp/-/tags/release-3.4 or by download: https://gitlab.com/armadeus/armadeus-bsp/-/archive/release-3.4/armadeus-bsp-release-3.4.tar.gz&lt;br /&gt;
&lt;br /&gt;
You can checkout the new version of armadeus or update your working version of armadeus. '''We strongly suggest you to checkout the new version of Armadeus because the new naming convention of files will produce a second directory structure of toolchain, projects, build and image files that could be a source of confusion.'''&lt;br /&gt;
&lt;br /&gt;
* Checkout the new version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  git clone git@gitlab.com:armadeus/armadeus-bsp.git armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this commmand will download the latest version of Armadeus.&lt;br /&gt;
&lt;br /&gt;
'''Remarks''': '''Do not use spaces''' in the directory name !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Update your working version of armadeus&lt;br /&gt;
&lt;br /&gt;
'''WARNING: Do not use a simple &amp;quot;git checkout&amp;quot; because some legacy buildroot patches will break your compilation!'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 cd armadeus&lt;br /&gt;
 rm -rf buildroot/package&lt;br /&gt;
 rm -rf buildroot/target&lt;br /&gt;
 rm -rf buildroot/toolchain&lt;br /&gt;
 git checkout -f&lt;br /&gt;
 make apf9328_defconfig or make apf27_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''WARNING: the latest command (make &amp;lt;board&amp;gt;_defconfig ) is very important to start with an up to date configuration!'''&lt;br /&gt;
&lt;br /&gt;
At any time you can cleanup the old directories built with armadeus 2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 rm -rf buildroot/binaries/armadeus&lt;br /&gt;
 rm -rf buildroot/build_arm&lt;br /&gt;
 rm -rf buildroot/project_build_arm&lt;br /&gt;
 rm -rf buildroot/toolchain_build_arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How-to obtain the legacy Armadeus 2 (If you're not ready to upgrade your target): Download tar.gz at https://gitlab.com/armadeus/armadeus-bsp/-/tags/release-2.x&lt;br /&gt;
&lt;br /&gt;
==How-to configure and build Armadeus 3==&lt;br /&gt;
&lt;br /&gt;
* After changing the directory to ''armadeus'', you have to configure Armadeus software for the APF target.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 cd armadeus/&lt;br /&gt;
 make '''apf9328_defconfig''' or make '''apf27_defconfig''' &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;The '&amp;lt;board&amp;gt;_defconfig' configuration option is the first difference with the previous releases of Armadeus. &lt;br /&gt;
This configuration has to be done only once after a checkout or after an update from an older version Armadeus. This command configures Armadeus for the apf board then launches the regular Buildroot configuration menu:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Menuconfig3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Configure Armadeus&lt;br /&gt;
 &lt;br /&gt;
In System configuration ---&amp;gt; Armadeus Device Support menu, you can check and change the quantity of RAM available on your Armadeus board. (Default value 16MB is just fine with all APF9328 boards and 64MB for the smallest apf27).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In Filesystem images --&amp;gt; for each type of filesystems to build you have the option to copy the binary file to secondary location like your tftp server folder (for exemple /tftpboot).&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In Bootloaders --&amp;gt; You will find U-Boot options at the end of this menu including the option to copy U-Boot to a secondary location like /tftpboot&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In Kernel --&amp;gt; Destination for linux kernel binaries --&amp;gt; You will find options to copy linux to a secondary location like /tftpboot&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Launch the build process and enjoy a cup of coffee for the next hour&lt;br /&gt;
&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;
&lt;br /&gt;
The toolchain is built automatically. During this procedure, several files are downloaded from Internet. Please wait for a while.... it takes at least one hour to compile everything!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Enjoy the result&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The generated binary files can be found in the new subdirectory &amp;lt;b&amp;gt;''buildroot/binaries/&amp;lt;board&amp;gt;/'':&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: '''apf9328-u-boot.brec''' (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;
: '''&amp;lt;board&amp;gt;-u-boot.bin''' (U-Boot image file to be used with U-Boot itself, see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
: '''&amp;lt;board&amp;gt;-linux.bin''' (Linux image to use with U-Boot, see [[Target_Software_Installation#Linux_kernel_installation | InstallLinux]])&lt;br /&gt;
: '''&amp;lt;board&amp;gt;-rootfs.arm.jffs2''' (FileSystem/RootFS image to use with U-Boot, see [[Target_Software_Installation#Linux_rootfs_installation | RootFS flashing]])&lt;br /&gt;
: '''&amp;lt;board&amp;gt;-rootfs.arm.tar''' (for an NFS/MMC 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;
&amp;lt;b&amp;gt; Please note the new naming convention of binary files and directories&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The toolchain and project files share a new nameing convention too:&lt;br /&gt;
: '''buildroot/build_armv&amp;lt;x&amp;gt;t''' (contains all non configurable user-space tools)&lt;br /&gt;
: '''buildroot/project_build_armv&amp;lt;x&amp;gt;t/&amp;lt;board&amp;gt;''' (contains all configurable user-space tools: 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;
: '''buildroot/toolchain_build_armv&amp;lt;x&amp;gt;t''' (cross compilation toolchain)&lt;br /&gt;
&lt;br /&gt;
More information is available in the  [http://buildroot.uclibc.org/buildroot.html buildroot documentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Prepare binary images for download&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simplest method to prepare binary files for a download to target is to copy them in the tftpboot public directory (for example /tftpboot). You can do it manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
cp -f buildroot/binaries/&amp;lt;board&amp;gt;/* /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or you can configure buildroot to copy the image files automatically as described hereabove in '''Configure Armadeus'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;From here we will suppose all the image files are available at the root of your tftp server&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How-to upgrade the apf9328 target==&lt;br /&gt;
&lt;br /&gt;
To prepare the upgrade of the target you have to copy binary files from ''buildroot/binaries/apf9328/'' to your ''/tftpboot'' folder or make this process automatic using the command: '''make menuconfig'''. The communication with target is fully compatible with previous versions of Armadeus, as explained in [[Communicate| communicate with the target]]&lt;br /&gt;
&lt;br /&gt;
===update U-Boot (on the target)===&lt;br /&gt;
&lt;br /&gt;
Using the command '''printenv''' check the target IP variables:&lt;br /&gt;
 BIOS&amp;gt; printenv&lt;br /&gt;
 bootcmd=run jffsboot&lt;br /&gt;
 bootdelay=20&lt;br /&gt;
 ...&lt;br /&gt;
 gatewayip=192.168.0.1&lt;br /&gt;
 netmask=255.255.255.0&lt;br /&gt;
 ipaddr=192.168.0.10&lt;br /&gt;
 serverip=192.168.0.2&lt;br /&gt;
&lt;br /&gt;
'''ipaddr''' is the target IP address and '''serverip''' is the one of the Host PC running the tftp server. The page [[Target_Software_Installation]] will help you to set these variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything is fine you should be ready to download the new release of u-boot:&lt;br /&gt;
&lt;br /&gt;
* '''Load the new U-Boot code in RAM'''&lt;br /&gt;
&lt;br /&gt;
You can use the following commands to download U-boot:&amp;lt;br&amp;gt;&lt;br /&gt;
With Ethernet and a TFTP server:&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; tftpboot 08000000 apf9328-u-boot.bin&lt;br /&gt;
&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46&lt;br /&gt;
 DM9000: running in 16 bit mode&lt;br /&gt;
 MAC: 00:1e:ac:00:00:02&lt;br /&gt;
 operating at 100M full duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.2; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'apf9328-u-boot.bin'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: ##################################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 173036 (2a3ec hex)&lt;br /&gt;
&lt;br /&gt;
Or with Ethernet and a NFS server:&lt;br /&gt;
 BIOS&amp;gt; nfs 08000000 ${serverip}:/nfs_path_to_buildroot/binaries/apf9328/apf9328-u-boot.bin&lt;br /&gt;
Or with the kermit and a serial line&lt;br /&gt;
 BIOS&amp;gt; loadb 08000000&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/binaries/apf9328/apf9328-u_boot.bin&lt;br /&gt;
    c&lt;br /&gt;
&lt;br /&gt;
* '''Test the downloaded version of u-boot'''&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; go 08000000&lt;br /&gt;
 &lt;br /&gt;
 ## Starting application at 0x08000000 ...&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 U-Boot 1.3.4 (Dec  2 2008 - 18:44:41) apf9328 patch 3.3&lt;br /&gt;
 &lt;br /&gt;
 I2C:   ready&lt;br /&gt;
 DRAM:  16 MB&lt;br /&gt;
 Flash:  8 MB&lt;br /&gt;
 In:    serial&lt;br /&gt;
 Out:   serial&lt;br /&gt;
 Err:   serial&lt;br /&gt;
 &lt;br /&gt;
 Hit any key to stop autoboot:  0&lt;br /&gt;
 BIOS&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Transfer code from RAM to Flash memory'''&lt;br /&gt;
&lt;br /&gt;
There is a simple U-Boot command/script to do that:&lt;br /&gt;
 BIOS&amp;gt; run flash_uboot&lt;br /&gt;
 &lt;br /&gt;
 .. done&lt;br /&gt;
 Un-Protected 2 sectors&lt;br /&gt;
 &lt;br /&gt;
 .. done&lt;br /&gt;
 Erased 2 sectors&lt;br /&gt;
 Copy to Flash... done&lt;br /&gt;
 .. done&lt;br /&gt;
 Protected 2 sectors&lt;br /&gt;
 Flashing uboot succeed&lt;br /&gt;
 BIOS&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Advanced informations can be found at the [[BootLoader]] wiki page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Reset the environment variables and reset the board''' &lt;br /&gt;
&lt;br /&gt;
Note: This is important to support the new flash memory mapping. '''!! You will loose all the variables you had defined before !!'''&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; run flash_reset_env&lt;br /&gt;
 &lt;br /&gt;
 . done&lt;br /&gt;
 Un-Protected 1 sectors&lt;br /&gt;
 &lt;br /&gt;
 . done&lt;br /&gt;
 Erased 1 sectors&lt;br /&gt;
 Erasing of flash environment variables done!&lt;br /&gt;
 BIOS&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;And do not forget to reset the board by hardware or software.&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; reset&lt;br /&gt;
 &lt;br /&gt;
 U-Boot 1.3.4 (Dec  2 2008 - 18:44:41) apf9328 patch 3.3&lt;br /&gt;
 &lt;br /&gt;
 I2C:   ready&lt;br /&gt;
 DRAM:  16 MB&lt;br /&gt;
 Flash:  8 MB&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
===update linux and rootfs (on the target)===&lt;br /&gt;
&lt;br /&gt;
* Check and set the IP variables:&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; printenv&lt;br /&gt;
 bootcmd=run jffsboot&lt;br /&gt;
 bootdelay=20&lt;br /&gt;
 ...&lt;br /&gt;
 gatewayip=192.168.0.1&lt;br /&gt;
 netmask=255.255.255.0&lt;br /&gt;
 ipaddr=192.168.0.10&lt;br /&gt;
 serverip=192.168.0.2&lt;br /&gt;
&lt;br /&gt;
'''ipaddr''' is the target IP address and '''serverip''' is the one of the Host PC running the tftp server. The page [[Target_Software_Installation]] will help you to set these variables.&lt;br /&gt;
&lt;br /&gt;
You can use the '''dhcp''' command to automatically configure these variables from your DHCP server. You probably will have to adjust the '''serverip''' variable manually.&lt;br /&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:02&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;
&lt;br /&gt;
Do not forget to save your changes in FLASH, to have them available at next power up:&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Update Linux (still on the target)&lt;br /&gt;
&lt;br /&gt;
Using the new release of U-Boot, it is quite simple to update Linux kernel and rootfs using the news scripts included in the release:&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; run update_kernel&lt;br /&gt;
&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46&lt;br /&gt;
 DM9000: running in 16 bit mode&lt;br /&gt;
 MAC: 00:1e:ac:00:00:02&lt;br /&gt;
 operating at 100M full duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.2; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'apf9328-linux.bin'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          ##############################################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 1564776 (17e068 hex)&lt;br /&gt;
 &lt;br /&gt;
 ................ done&lt;br /&gt;
 Erased 16 sectors&lt;br /&gt;
 Copy to Flash... done&lt;br /&gt;
 Flashing kernel succeed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Update rootfs (still on the target)&lt;br /&gt;
&lt;br /&gt;
 BIOS&amp;gt; run update_rootfs&lt;br /&gt;
&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46&lt;br /&gt;
 DM9000: running in 16 bit mode&lt;br /&gt;
 MAC: 00:1e:ac:00:00:02&lt;br /&gt;
 operating at 100M full duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.2; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'apf9328-rootfs.arm.jffs2'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          #################################################################&lt;br /&gt;
          ######################################################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 3932160 (3c0000 hex)&lt;br /&gt;
 &lt;br /&gt;
 ........................................... done&lt;br /&gt;
 Erased 43 sectors&lt;br /&gt;
 Copy to Flash... done&lt;br /&gt;
 Flashing rootfs succeed&lt;br /&gt;
 BIOS&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===update your fpga firmware (on the target)===&lt;br /&gt;
&lt;br /&gt;
Please follow the standard procedure [[InstallTargetSoftware#FPGA_firmware_installation | Firmware installation]]&lt;br /&gt;
&lt;br /&gt;
==How-to develop with Armadeus / customize your SDK==&lt;br /&gt;
&lt;br /&gt;
Your new Armadeus 3 is running fine on the target. Now you probably would like to customize the target for your project.&amp;lt;br&amp;gt;&lt;br /&gt;
If you are a Buildroot user, the following instructions should sound familiar.&lt;br /&gt;
&lt;br /&gt;
===How-to add a software package===&lt;br /&gt;
&lt;br /&gt;
Use the command '''make 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;
&lt;br /&gt;
[[Image:menuconfig_package.png]]&lt;br /&gt;
&lt;br /&gt;
Select your package in the menu &amp;quot;package&amp;quot;, save the configuration and compile a new rootfs&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;
&lt;br /&gt;
{{Note|For a given release, not all packages are tested/running. You can consult the list of the working packages [[Buildroot-20081103_integration| here]].}}&lt;br /&gt;
&lt;br /&gt;
On the target, download and flash the new rootfs:&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;
 ...&lt;br /&gt;
 BIOS&amp;gt; boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How-to remove a package===&lt;br /&gt;
&lt;br /&gt;
Supposing you would like to remove an unwanted package from the target.&lt;br /&gt;
* The first step is to use the command '''make menuconfig''' to unselect this package but this command will not remove the package from the rootfs. You have to use the ''clean'' command of buildroot. In the lines hereafter replace the word &amp;lt;package&amp;gt; with the real name of your package.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  $ make menuconfig&lt;br /&gt;
  ... deselect your &amp;lt;package&amp;gt;&lt;br /&gt;
  $ make &amp;lt;package&amp;gt;-clean&lt;br /&gt;
  $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Your new rootfs is now ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
* Some packages do not support any uninstall behavior. In such a case you can rebuild your environment using the global clean command. This command requests to compile almost everything and therefore will take time.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  $ make menuconfig&lt;br /&gt;
  ... deselect your &amp;lt;package&amp;gt;&lt;br /&gt;
  $ make clean&lt;br /&gt;
  $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|Using this method you will lose any modification you could have done directly in the directory buildroot/project_build_armvYY/apfXX/root.&lt;br /&gt;
Please read the chapter [[Armadeus_3#How-to_modify_root_filesystem| How-to modify root filesystem]] hereafter.}}&lt;br /&gt;
&lt;br /&gt;
Your new rootfs is ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
* A faster method exists to force to rebuild rootfs. You can delete the root directory. &amp;lt;b&amp;gt;Unfortunately some libraries (ie c++ lib) are not reinstalled using this method.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  $ make menuconfig&lt;br /&gt;
  ... deselect your &amp;lt;package&amp;gt;&lt;br /&gt;
  $ rm -rf buildroot/project_build_armv4t/apf9328/root&lt;br /&gt;
  $ rm -rf buildroot/project_build_armv4t/apf9328/.root&lt;br /&gt;
  $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|Using this method you will lose any modification you could have done directly in the directory buildroot/project_build_armvYY/apfXX/root.&lt;br /&gt;
Please read the chapter [[Armadeus_3#How-to_modify_root_filesystem| How-to modify root filesystem]] hereafter.}}&lt;br /&gt;
&lt;br /&gt;
Your new rootfs is ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
===How-to modify a software===&lt;br /&gt;
&lt;br /&gt;
You would like to modify a package and test your modification on the target. The command '''make &amp;lt;package&amp;gt;-clean''' will force to rebuild the package you modified:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  $ make &amp;lt;package&amp;gt;-clean&lt;br /&gt;
  $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Your new rootfs is ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
===How-to create a buildroot package===&lt;br /&gt;
&lt;br /&gt;
The creation of a new buildroot package is described more in depth in the specific wiki page [[Buildroot_Packages]] and in the [http://buildroot.uclibc.org/buildroot.html buildroot documentation]&lt;br /&gt;
&lt;br /&gt;
===How-to modify root filesystem===&lt;br /&gt;
&lt;br /&gt;
There are different methods to modify the rootfs of the apf9328:&lt;br /&gt;
# modify files directly on the target (ideal solution for first trials)&lt;br /&gt;
# modify files in buildroot/project_build_armv4t/apf9328/root/ (to validate your modification with armadeus)&lt;br /&gt;
# modify files in buildroot/target/device/aramdeus/rootfs/target_skeleton (your modifcation will support a '''make clean''' )&lt;br /&gt;
# create a patch file in armadeus/patches (your modification will support a '''git checkout''')&lt;br /&gt;
&lt;br /&gt;
===How-to modify Linux kernel===&lt;br /&gt;
&lt;br /&gt;
To rebuild the kernel or any kernel driver you can use the commands:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux-clean&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
your new Linux kernel and rootfs containing drivers are ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
There is another method to rebuild the kernel faster than the previous one:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make linux&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
With this method only the modified files are compiled.&lt;br /&gt;
&lt;br /&gt;
===How-to configure a Linux kernel===&lt;br /&gt;
&lt;br /&gt;
There is a command to modify the linux kernel configuration:&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;
Modify your kernel configuration, save your change and rebuild Armadeus in few seconds:&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;
&lt;br /&gt;
===How-to configure U-Boot===&lt;br /&gt;
&lt;br /&gt;
you can change the U-Boot configuration using the buildroot command '''make menuconfig'''. U-Boot options are in the sub-menu '''target filesystem options'''. In order to rebuild U-Boot with new options it is necessary to remove U-Boot first:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $make menuconfig&lt;br /&gt;
 ...&lt;br /&gt;
 $make u-boot-dirclean&lt;br /&gt;
 $make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning| the command '''make u-boot-dirclean''' delete the U-Boot directory and any modification you did in this directory.}}&lt;br /&gt;
&lt;br /&gt;
===How-to modify U-Boot===&lt;br /&gt;
&lt;br /&gt;
To rebuild U-Boot you can use the command '''make u-boot-clean; make'''.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make u-boot-clean&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
your new U-Boot is ready to use - Enjoy&lt;br /&gt;
&lt;br /&gt;
If you modify the config file ''apf9328.h'' located in ''buildroot/project_build_armv4t/apf9328/u-boot-1.3.4/include/configs/apf9328.h'', then we suggest you to rebuild the whole u-boot package:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make u-boot-distclean&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How-to configure busybox===&lt;br /&gt;
It also possible to modify the Busybox configuration to add or remove some features:&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;
&lt;br /&gt;
To be continued...&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://buildroot.uclibc.org/buildroot.html Buildroot's documentation]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15107</id>
		<title>Template:ArmadeusNews</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15107"/>
				<updated>2022-06-30T12:06:56Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: Undo revision 15106 by FabienM (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====June 30th, 2022: Gitlab is now official repository for armadeus bsp =====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Gitlab is now official repository for armadeus bsp : https://gitlab.com/armadeus/armadeus-bsp&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====August 7th, 2018: New software release [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_7.0_.28latest_stable_one.29| release]] introduces the support for the new [[OPOS6UL]] &amp;amp; [[OPOS6UL_NANO]] SoM and concludes the move to Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====August 11th, 2015: New software release [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_6.0_.28latest_stable_one.29| release]] introduces the support for the new [[APF6]] &amp;amp; [[APF6_SP]] Armadeus modules and concludes the move to Buildroot 2015.02 and U-Boot 2014.07+. It also consolidates the support for vanilla Linux kernels (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====June 17th, 2014: Bump to [[U-Boot-2014.04| U-Boot 2014.04]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
All Armadeus boards moved to [[U-Boot-2014.04| U-Boot 2014.04]] on [[http://sourceforge.net/p/armadeus/code/ci/master/tree/ GIT]] &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 25th 2013: New software release [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]]=====&lt;br /&gt;
This new [[Releases#Release_5.3_.28latest_stable_one.29| release]] concludes the move to Buildroot 2013.05 and U-Boot 2013.04. It also consolidates the support for vanilla Linux kernels (3.1x).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 11th 2013: Bump to Buildroot 2013.05 on GIT [[Current_Buildroot_status_in_Armadeus]]=====&lt;br /&gt;
Armadeus moved to Buildroot 2013.05 on GIT. Buildroot 2013.05 will apply after the BSP is fully rebuilt, so first backup your work in progress then do: git pull; git clean -dfx; make apfxx_defconfig; make &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====October 12th 2012: New software release [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]]=====&lt;br /&gt;
This new  [[Releases#Release_5.2_.28latest_stable_one.29| release]] enhances the supported features on the [[APF28]] board, fix a wireless issue on the PPS board and add few other improvements to the Armadeus software&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====August 12th 2012: Armadeus 5.0 is released=====&lt;br /&gt;
Consolidated support for the [[APF28]] board, BR 2012.02, U-Boot 2012.04, misc. fixes.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 27th 2012: Armadeus 4.1 is released=====&lt;br /&gt;
This new release adds (very preliminary &amp;amp; experimental) support for the [[APF28]] board, BR 2011.05, better BR integration, Linux 3.0 for APF51 and industrial automation new packages.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Some members of Armadeus Project team will attend booth n°71 at LSM 2011 in Strasbourg (11 to 14th July 2011)=====&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 9th 2011: Armadeus 4.0 is released=====&lt;br /&gt;
This new release adds support for the [[APF51]] board, BR 2010.11 and continue integration work (experimental) of Linux 2.6.38 for APF27/PPS &amp;amp; APF9328.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====May 1rst 2011: [[APF51]] SOM and [[APF51Dev]] docking board are available=====&lt;br /&gt;
These new powerfull boards are available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====March 3rd 2011: [[Release_3.4|Armadeus 3.4]] is released=====&lt;br /&gt;
This new release adds support for the [[APF27_PPS]] board, and continue integration work (experimental) of BR 2010.xx &amp;amp; Linux 2.6.38.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 30th 2010: [[Release_3.3|Armadeus 3.3]] is released=====&lt;br /&gt;
This new release adds better support for the [[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (experimental), etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 15th 2010: [[Wireless_extension_board|APW]] board is available=====&lt;br /&gt;
The new [[Wireless_extension_board|APW]] board (&amp;quot;Wireless&amp;quot; extension for the APF27) is available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 1rst 2009: [[Release_3.2|Armadeus 3.2]] is released=====&lt;br /&gt;
This new release adds better support for the [[APF27]] &amp;amp; 7&amp;quot; screen, new packages (pygame, xenomai, etc...), svn to git migration, etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 8th 2009: [[Current_events#General_Assembly_.2F_LSM_2009 | General Assembly / LSM 2009 ]]=====&lt;br /&gt;
On Wednesday July 8th 2009, occurred the General Assembly in Nantes (France) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 29th 2009: [[Armadeus 3|Armadeus software 3.1]] is released, following the [[APF27Dev|APF27DevFull]] availability=====&lt;br /&gt;
The new Armadeus release 3.1 supports Linux kernel 2.6.29, GDB 6.7.1, APF27 FPGA download, HDMI Output of APF27DevFull and much more.&lt;br /&gt;
This release can be downloaded as a tarball package from [http://sourceforge.net/project/showfiles.php?group_id=122057 the usual place]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====February 26th 2009: [[Armadeus 3|Armadeus software 3.0]] is released, following the [[APF27]] availability=====&lt;br /&gt;
The new Armadeus release 3.0 supports the new Armadeus Systems APF27 board, linux kernel 2.6.27, GCC 4.2.1, U-Boot 1.3.4 and much more.&lt;br /&gt;
The software released can be downloaded as a tarball package from the usual place:  &lt;br /&gt;
http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 6th 2008: [[Armadeus 3]] software available from subversion repository=====&lt;br /&gt;
The third generation of armadeus software is on the track. The documentation is available at [[Armadeus 3]]. For your convenience a copy of the wiki supporting previous version of Armadeus is available for offline browsing at [http://www.armadeus.com/assos_downloads/wiki/wiki_assoc_html_dump_03_12_2008.tar.gz Armadeus 2.x wiki]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 May 2008: DevFull boards are available=====&lt;br /&gt;
DevFull development boards are available and will be soon sold at discount price (for Armadeus Project members) on [http://www.store.armadeus.com/index.php?language=en armadeus systems online shop]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====17 Dec. 2007: Armadeus software version 2.2 released!=====&lt;br /&gt;
Armadeus release 2.2 adds many new drivers, fixes many bugs, supports the new linux kernel 2.6.23 and a recent version of buildroot. &lt;br /&gt;
Armadeus 2.2 can be downloaded as a tarball package from the usual place: &lt;br /&gt;
http://sourceforge.net/projects/armadeus&lt;br /&gt;
 &lt;br /&gt;
or directly from the Subversion server (SVN): &lt;br /&gt;
svn co https://armadeus.svn.sourceforge.net/svnroot/armadeus/tags/release-2.2 armadeus-2.2 &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: APF9328 boards have been received &amp;amp; first DevFull prototypes are under test=====&lt;br /&gt;
Now all boards are available. DevFull is working well and will be available at the end of year.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Jun. 2007: DevLight and LCD_Adapt received, but still waiting for APF9328 :-( !=====&lt;br /&gt;
DevLight and LCD_Adapter boards have been received but we are now waiting for new APF9328.&lt;br /&gt;
&lt;br /&gt;
=====26 Mar. 2007: DevLight and LCD_Adapt ordered !=====&lt;br /&gt;
A new DevLight order has been placed! Expected delivey date: week 17/18&lt;br /&gt;
&lt;br /&gt;
The LCD_Adapter boards have been ordered too. Expected delivery date: week 18/19&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====22 Mar. 2007: DevLight boards are out-of-stock !=====&lt;br /&gt;
We have no more DevLight boards for the moment. New one have been ordered but will only be available mid-April&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Feb. 2007: Release v2.0 is out !=====&lt;br /&gt;
Software Release 2.0 is (at least ;-) ) available. To download it, go on Sourceforge... Now serious things can begin ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: APF DevLight boards received=====&lt;br /&gt;
New members can now join us easily.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: APF DevLight boards quite ready=====&lt;br /&gt;
DevLight boards are in production and will be available end of October.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: APF DevLight boards ordered=====&lt;br /&gt;
Nico has placed an order today for 50 APF DevLight boards. They should arrive mid-october. They will allow more people to join this project soon.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Wiki and Web sites are quite up now=====&lt;br /&gt;
250 years (and some months) after the birth of Wolfgang, a new genius has come to earth: the Armadeus project... ;-)&lt;br /&gt;
Wiki and web site (http://www.armadeus.com) begin to rock...&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:ArmadeusNews|Show all News]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15106</id>
		<title>Template:ArmadeusNews</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15106"/>
				<updated>2022-06-30T12:06:31Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* June 30th, 2022: Gitlab is now official repository for armadeus bsp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====June 30th, 2022: Gitlab is now official repository for armadeus bsp =====&lt;br /&gt;
&lt;br /&gt;
Gitlab is now official repository for armadeus bsp : https://gitlab.com/armadeus/armadeus-bsp&lt;br /&gt;
&lt;br /&gt;
=====August 7th, 2018: New software release [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_7.0_.28latest_stable_one.29| release]] introduces the support for the new [[OPOS6UL]] &amp;amp; [[OPOS6UL_NANO]] SoM and concludes the move to Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====August 11th, 2015: New software release [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_6.0_.28latest_stable_one.29| release]] introduces the support for the new [[APF6]] &amp;amp; [[APF6_SP]] Armadeus modules and concludes the move to Buildroot 2015.02 and U-Boot 2014.07+. It also consolidates the support for vanilla Linux kernels (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====June 17th, 2014: Bump to [[U-Boot-2014.04| U-Boot 2014.04]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
All Armadeus boards moved to [[U-Boot-2014.04| U-Boot 2014.04]] on [[http://sourceforge.net/p/armadeus/code/ci/master/tree/ GIT]] &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 25th 2013: New software release [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]]=====&lt;br /&gt;
This new [[Releases#Release_5.3_.28latest_stable_one.29| release]] concludes the move to Buildroot 2013.05 and U-Boot 2013.04. It also consolidates the support for vanilla Linux kernels (3.1x).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 11th 2013: Bump to Buildroot 2013.05 on GIT [[Current_Buildroot_status_in_Armadeus]]=====&lt;br /&gt;
Armadeus moved to Buildroot 2013.05 on GIT. Buildroot 2013.05 will apply after the BSP is fully rebuilt, so first backup your work in progress then do: git pull; git clean -dfx; make apfxx_defconfig; make &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====October 12th 2012: New software release [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]]=====&lt;br /&gt;
This new  [[Releases#Release_5.2_.28latest_stable_one.29| release]] enhances the supported features on the [[APF28]] board, fix a wireless issue on the PPS board and add few other improvements to the Armadeus software&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====August 12th 2012: Armadeus 5.0 is released=====&lt;br /&gt;
Consolidated support for the [[APF28]] board, BR 2012.02, U-Boot 2012.04, misc. fixes.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 27th 2012: Armadeus 4.1 is released=====&lt;br /&gt;
This new release adds (very preliminary &amp;amp; experimental) support for the [[APF28]] board, BR 2011.05, better BR integration, Linux 3.0 for APF51 and industrial automation new packages.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Some members of Armadeus Project team will attend booth n°71 at LSM 2011 in Strasbourg (11 to 14th July 2011)=====&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 9th 2011: Armadeus 4.0 is released=====&lt;br /&gt;
This new release adds support for the [[APF51]] board, BR 2010.11 and continue integration work (experimental) of Linux 2.6.38 for APF27/PPS &amp;amp; APF9328.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====May 1rst 2011: [[APF51]] SOM and [[APF51Dev]] docking board are available=====&lt;br /&gt;
These new powerfull boards are available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====March 3rd 2011: [[Release_3.4|Armadeus 3.4]] is released=====&lt;br /&gt;
This new release adds support for the [[APF27_PPS]] board, and continue integration work (experimental) of BR 2010.xx &amp;amp; Linux 2.6.38.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 30th 2010: [[Release_3.3|Armadeus 3.3]] is released=====&lt;br /&gt;
This new release adds better support for the [[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (experimental), etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 15th 2010: [[Wireless_extension_board|APW]] board is available=====&lt;br /&gt;
The new [[Wireless_extension_board|APW]] board (&amp;quot;Wireless&amp;quot; extension for the APF27) is available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 1rst 2009: [[Release_3.2|Armadeus 3.2]] is released=====&lt;br /&gt;
This new release adds better support for the [[APF27]] &amp;amp; 7&amp;quot; screen, new packages (pygame, xenomai, etc...), svn to git migration, etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 8th 2009: [[Current_events#General_Assembly_.2F_LSM_2009 | General Assembly / LSM 2009 ]]=====&lt;br /&gt;
On Wednesday July 8th 2009, occurred the General Assembly in Nantes (France) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 29th 2009: [[Armadeus 3|Armadeus software 3.1]] is released, following the [[APF27Dev|APF27DevFull]] availability=====&lt;br /&gt;
The new Armadeus release 3.1 supports Linux kernel 2.6.29, GDB 6.7.1, APF27 FPGA download, HDMI Output of APF27DevFull and much more.&lt;br /&gt;
This release can be downloaded as a tarball package from [http://sourceforge.net/project/showfiles.php?group_id=122057 the usual place]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====February 26th 2009: [[Armadeus 3|Armadeus software 3.0]] is released, following the [[APF27]] availability=====&lt;br /&gt;
The new Armadeus release 3.0 supports the new Armadeus Systems APF27 board, linux kernel 2.6.27, GCC 4.2.1, U-Boot 1.3.4 and much more.&lt;br /&gt;
The software released can be downloaded as a tarball package from the usual place:  &lt;br /&gt;
http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 6th 2008: [[Armadeus 3]] software available from subversion repository=====&lt;br /&gt;
The third generation of armadeus software is on the track. The documentation is available at [[Armadeus 3]]. For your convenience a copy of the wiki supporting previous version of Armadeus is available for offline browsing at [http://www.armadeus.com/assos_downloads/wiki/wiki_assoc_html_dump_03_12_2008.tar.gz Armadeus 2.x wiki]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 May 2008: DevFull boards are available=====&lt;br /&gt;
DevFull development boards are available and will be soon sold at discount price (for Armadeus Project members) on [http://www.store.armadeus.com/index.php?language=en armadeus systems online shop]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====17 Dec. 2007: Armadeus software version 2.2 released!=====&lt;br /&gt;
Armadeus release 2.2 adds many new drivers, fixes many bugs, supports the new linux kernel 2.6.23 and a recent version of buildroot. &lt;br /&gt;
Armadeus 2.2 can be downloaded as a tarball package from the usual place: &lt;br /&gt;
http://sourceforge.net/projects/armadeus&lt;br /&gt;
 &lt;br /&gt;
or directly from the Subversion server (SVN): &lt;br /&gt;
svn co https://armadeus.svn.sourceforge.net/svnroot/armadeus/tags/release-2.2 armadeus-2.2 &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: APF9328 boards have been received &amp;amp; first DevFull prototypes are under test=====&lt;br /&gt;
Now all boards are available. DevFull is working well and will be available at the end of year.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Jun. 2007: DevLight and LCD_Adapt received, but still waiting for APF9328 :-( !=====&lt;br /&gt;
DevLight and LCD_Adapter boards have been received but we are now waiting for new APF9328.&lt;br /&gt;
&lt;br /&gt;
=====26 Mar. 2007: DevLight and LCD_Adapt ordered !=====&lt;br /&gt;
A new DevLight order has been placed! Expected delivey date: week 17/18&lt;br /&gt;
&lt;br /&gt;
The LCD_Adapter boards have been ordered too. Expected delivery date: week 18/19&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====22 Mar. 2007: DevLight boards are out-of-stock !=====&lt;br /&gt;
We have no more DevLight boards for the moment. New one have been ordered but will only be available mid-April&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Feb. 2007: Release v2.0 is out !=====&lt;br /&gt;
Software Release 2.0 is (at least ;-) ) available. To download it, go on Sourceforge... Now serious things can begin ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: APF DevLight boards received=====&lt;br /&gt;
New members can now join us easily.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: APF DevLight boards quite ready=====&lt;br /&gt;
DevLight boards are in production and will be available end of October.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: APF DevLight boards ordered=====&lt;br /&gt;
Nico has placed an order today for 50 APF DevLight boards. They should arrive mid-october. They will allow more people to join this project soon.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Wiki and Web sites are quite up now=====&lt;br /&gt;
250 years (and some months) after the birth of Wolfgang, a new genius has come to earth: the Armadeus project... ;-)&lt;br /&gt;
Wiki and web site (http://www.armadeus.com) begin to rock...&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:ArmadeusNews|Show all News]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15105</id>
		<title>Template:ArmadeusNews</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:ArmadeusNews&amp;diff=15105"/>
				<updated>2022-06-30T12:05:55Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====June 30th, 2022: Gitlab is now official repository for armadeus bsp =====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Gitlab is now official repository for armadeus bsp : https://gitlab.com/armadeus/armadeus-bsp&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====August 7th, 2018: New software release [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_7.0_.28latest_stable_one.29| release]] introduces the support for the new [[OPOS6UL]] &amp;amp; [[OPOS6UL_NANO]] SoM and concludes the move to Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====August 11th, 2015: New software release [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This new [[Releases#Release_6.0_.28latest_stable_one.29| release]] introduces the support for the new [[APF6]] &amp;amp; [[APF6_SP]] Armadeus modules and concludes the move to Buildroot 2015.02 and U-Boot 2014.07+. It also consolidates the support for vanilla Linux kernels (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====June 17th, 2014: Bump to [[U-Boot-2014.04| U-Boot 2014.04]]=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
All Armadeus boards moved to [[U-Boot-2014.04| U-Boot 2014.04]] on [[http://sourceforge.net/p/armadeus/code/ci/master/tree/ GIT]] &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 25th 2013: New software release [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]]=====&lt;br /&gt;
This new [[Releases#Release_5.3_.28latest_stable_one.29| release]] concludes the move to Buildroot 2013.05 and U-Boot 2013.04. It also consolidates the support for vanilla Linux kernels (3.1x).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 11th 2013: Bump to Buildroot 2013.05 on GIT [[Current_Buildroot_status_in_Armadeus]]=====&lt;br /&gt;
Armadeus moved to Buildroot 2013.05 on GIT. Buildroot 2013.05 will apply after the BSP is fully rebuilt, so first backup your work in progress then do: git pull; git clean -dfx; make apfxx_defconfig; make &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====October 12th 2012: New software release [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]]=====&lt;br /&gt;
This new  [[Releases#Release_5.2_.28latest_stable_one.29| release]] enhances the supported features on the [[APF28]] board, fix a wireless issue on the PPS board and add few other improvements to the Armadeus software&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====August 12th 2012: Armadeus 5.0 is released=====&lt;br /&gt;
Consolidated support for the [[APF28]] board, BR 2012.02, U-Boot 2012.04, misc. fixes.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 27th 2012: Armadeus 4.1 is released=====&lt;br /&gt;
This new release adds (very preliminary &amp;amp; experimental) support for the [[APF28]] board, BR 2011.05, better BR integration, Linux 3.0 for APF51 and industrial automation new packages.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Some members of Armadeus Project team will attend booth n°71 at LSM 2011 in Strasbourg (11 to 14th July 2011)=====&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 9th 2011: Armadeus 4.0 is released=====&lt;br /&gt;
This new release adds support for the [[APF51]] board, BR 2010.11 and continue integration work (experimental) of Linux 2.6.38 for APF27/PPS &amp;amp; APF9328.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====May 1rst 2011: [[APF51]] SOM and [[APF51Dev]] docking board are available=====&lt;br /&gt;
These new powerfull boards are available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====March 3rd 2011: [[Release_3.4|Armadeus 3.4]] is released=====&lt;br /&gt;
This new release adds support for the [[APF27_PPS]] board, and continue integration work (experimental) of BR 2010.xx &amp;amp; Linux 2.6.38.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 30th 2010: [[Release_3.3|Armadeus 3.3]] is released=====&lt;br /&gt;
This new release adds better support for the [[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (experimental), etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====January 15th 2010: [[Wireless_extension_board|APW]] board is available=====&lt;br /&gt;
The new [[Wireless_extension_board|APW]] board (&amp;quot;Wireless&amp;quot; extension for the APF27) is available on the Armadeus Systems Online Shop.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 1rst 2009: [[Release_3.2|Armadeus 3.2]] is released=====&lt;br /&gt;
This new release adds better support for the [[APF27]] &amp;amp; 7&amp;quot; screen, new packages (pygame, xenomai, etc...), svn to git migration, etc... &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====July 8th 2009: [[Current_events#General_Assembly_.2F_LSM_2009 | General Assembly / LSM 2009 ]]=====&lt;br /&gt;
On Wednesday July 8th 2009, occurred the General Assembly in Nantes (France) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====June 29th 2009: [[Armadeus 3|Armadeus software 3.1]] is released, following the [[APF27Dev|APF27DevFull]] availability=====&lt;br /&gt;
The new Armadeus release 3.1 supports Linux kernel 2.6.29, GDB 6.7.1, APF27 FPGA download, HDMI Output of APF27DevFull and much more.&lt;br /&gt;
This release can be downloaded as a tarball package from [http://sourceforge.net/project/showfiles.php?group_id=122057 the usual place]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====February 26th 2009: [[Armadeus 3|Armadeus software 3.0]] is released, following the [[APF27]] availability=====&lt;br /&gt;
The new Armadeus release 3.0 supports the new Armadeus Systems APF27 board, linux kernel 2.6.27, GCC 4.2.1, U-Boot 1.3.4 and much more.&lt;br /&gt;
The software released can be downloaded as a tarball package from the usual place:  &lt;br /&gt;
http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====December 6th 2008: [[Armadeus 3]] software available from subversion repository=====&lt;br /&gt;
The third generation of armadeus software is on the track. The documentation is available at [[Armadeus 3]]. For your convenience a copy of the wiki supporting previous version of Armadeus is available for offline browsing at [http://www.armadeus.com/assos_downloads/wiki/wiki_assoc_html_dump_03_12_2008.tar.gz Armadeus 2.x wiki]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 May 2008: DevFull boards are available=====&lt;br /&gt;
DevFull development boards are available and will be soon sold at discount price (for Armadeus Project members) on [http://www.store.armadeus.com/index.php?language=en armadeus systems online shop]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====17 Dec. 2007: Armadeus software version 2.2 released!=====&lt;br /&gt;
Armadeus release 2.2 adds many new drivers, fixes many bugs, supports the new linux kernel 2.6.23 and a recent version of buildroot. &lt;br /&gt;
Armadeus 2.2 can be downloaded as a tarball package from the usual place: &lt;br /&gt;
http://sourceforge.net/projects/armadeus&lt;br /&gt;
 &lt;br /&gt;
or directly from the Subversion server (SVN): &lt;br /&gt;
svn co https://armadeus.svn.sourceforge.net/svnroot/armadeus/tags/release-2.2 armadeus-2.2 &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: APF9328 boards have been received &amp;amp; first DevFull prototypes are under test=====&lt;br /&gt;
Now all boards are available. DevFull is working well and will be available at the end of year.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Jun. 2007: DevLight and LCD_Adapt received, but still waiting for APF9328 :-( !=====&lt;br /&gt;
DevLight and LCD_Adapter boards have been received but we are now waiting for new APF9328.&lt;br /&gt;
&lt;br /&gt;
=====26 Mar. 2007: DevLight and LCD_Adapt ordered !=====&lt;br /&gt;
A new DevLight order has been placed! Expected delivey date: week 17/18&lt;br /&gt;
&lt;br /&gt;
The LCD_Adapter boards have been ordered too. Expected delivery date: week 18/19&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====22 Mar. 2007: DevLight boards are out-of-stock !=====&lt;br /&gt;
We have no more DevLight boards for the moment. New one have been ordered but will only be available mid-April&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Feb. 2007: Release v2.0 is out !=====&lt;br /&gt;
Software Release 2.0 is (at least ;-) ) available. To download it, go on Sourceforge... Now serious things can begin ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: APF DevLight boards received=====&lt;br /&gt;
New members can now join us easily.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: APF DevLight boards quite ready=====&lt;br /&gt;
DevLight boards are in production and will be available end of October.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: APF DevLight boards ordered=====&lt;br /&gt;
Nico has placed an order today for 50 APF DevLight boards. They should arrive mid-october. They will allow more people to join this project soon.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Wiki and Web sites are quite up now=====&lt;br /&gt;
250 years (and some months) after the birth of Wolfgang, a new genius has come to earth: the Armadeus project... ;-)&lt;br /&gt;
Wiki and web site (http://www.armadeus.com) begin to rock...&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:ArmadeusNews|Show all News]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Footprints&amp;diff=15104</id>
		<title>Footprints</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Footprints&amp;diff=15104"/>
				<updated>2022-06-30T12:03:42Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To develop a custom docking board for an APFxx module, a symbol/footprint component is necessary. As Armadeus systems uses Mentor PAD to design their boards then, by default, PAD's footprint/symbol are approved for industrial designs.&lt;br /&gt;
Some footprint/symbol are available for others design software, they are marked '''na''' for '''n'''ot '''a'''pproved if no industrial design has been made with these footprint/symbol.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Software &amp;gt;!! rowspan=&amp;quot;2&amp;quot; | Mentor PAD !! rowspan=&amp;quot;2&amp;quot; | Mentor PAD export !! rowspan=&amp;quot;2&amp;quot; | KiCad !! rowspan=&amp;quot;2&amp;quot; | Eagle&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!  Module V&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[APF9328]] || not available || not available || not available || not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
[[APF27]] &lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf27/PAD/mentor_symbol_apf27.c] &amp;lt;br /&amp;gt; &lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf27/PAD/mentor_footprint_apf27.d]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf27/PAD_export/mentor_export_symbol_apf27.txt] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf27/PAD_export/mentor_export_footprint_apf27.asc]&lt;br /&gt;
|| not available &lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
[[APF51]]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf51/PAD/mentor_symbol_apf51.c]&amp;lt;br /&amp;gt; &lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf51/PAD/mentor_footprint_apf51.d]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf51/PAD_export/mentor_export_symbol_apf51.txt]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf51/PAD_expert/mentor_export_footprint_apf51.asc]&lt;br /&gt;
|| not available&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[APF28]]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/PAD/mentor_symbol_apf28.c]&amp;lt;br /&amp;gt; &lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/PAD/mentor_footprint_apf28.d]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/PAD_export/mentor_export_symbol_apf28.txt] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/PAD_export/mentor_export_footprint_apf28.asc]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/kicad/kicad_symbol_apf28.lib] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf28/kicad/kicad_symbol_apf28.kicad_mod]&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[APF6]]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf6/PAD/apf6.p] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf6/PAD/apf6.d]&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf6/PAD_export/apf6.txt] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/apf6/PAD_export/footprint.asc]&lt;br /&gt;
|| not available&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[APF6_SP]]&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| not available&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[OPOS6UL]]&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| [https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/opos6ul/kicad/opos6ul.lib)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://gitlab.com/armadeus/armadeus-bsp/-/tree/master/hardware/opos6ul/kicad/Opos6ul_Socket_SODIMM_DDR3_TE_2013289.kicad_mod]&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[OPOS6UL_NANO]]&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| not available&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[OPOS6UL_SP]]&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| TODO&lt;br /&gt;
|| not available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All Symbols/Footprint described in this table can be found in [[Toolchain#Get_Armadeus_software | Armadeus gitlab repository]] in '''hardware''' directory.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=APF6_legacy_Linux_4.1_kernel_status&amp;diff=15103</id>
		<title>APF6 legacy Linux 4.1 kernel status</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=APF6_legacy_Linux_4.1_kernel_status&amp;diff=15103"/>
				<updated>2022-06-30T11:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: kernel]]&lt;br /&gt;
[[Category: APF6]]&lt;br /&gt;
The [[APF6]] Linux distribution can be found here: [https://gitlab.com/armadeus/armadeus-bsp/-/tags latest stable installation tarball from gitlab]&lt;br /&gt;
&lt;br /&gt;
==Current version==&lt;br /&gt;
Currently (armadeus-6.0) default supported Linux version for APF6 is: '''vanilla 3.19'''. Details about this kernel can be found [[APF6_Linux_kernel_status|here]].&lt;br /&gt;
&lt;br /&gt;
We also support &amp;quot;legacy&amp;quot; kernels, based on Freescale/Wandboard's versions, to have GPU/VPU functionalities available until integrated in vanilla/mainline. This page detail the Freescale 4.1.xxx Linux version support.&lt;br /&gt;
&lt;br /&gt;
Details concerning the drivers usage can be found [[Setup|below]].&lt;br /&gt;
&lt;br /&gt;
* NT = Not Tested&lt;br /&gt;
* NA = Not Available / Not possible&lt;br /&gt;
&lt;br /&gt;
==APF6 module==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Functionnalities test results&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#b9e9a3;&amp;quot; |  '''4.1.15_2.0.0_ga legacy'''&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! '''Driver''' || colspan=&amp;quot;2&amp;quot; | '''Compiling ? &amp;lt;br&amp;gt; Static / Module''' || ''' Working ? ''' || '''Comments'''&lt;br /&gt;
|----------------&lt;br /&gt;
|'''eMMC''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SPI''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[SPI]] / Not tested yet.&lt;br /&gt;
|----------------&lt;br /&gt;
|'''I2C''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[I2C]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Keypad''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Not tested yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''MMC/SD/SDIO''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''UART''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Ethernet''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB OTG''' ||  style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT ||  style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[USB]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB HOST1''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[USB]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''PWM''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[PWM]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''RTC''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT ||  style=&amp;quot;background:#eeee00;&amp;quot; | NT || i.MX6 internal [[RTC]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Watchdog''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT ||  style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Watchdog]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''PM sleep/wakeup''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Power management]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Frequency scaling''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Not tested yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''CSI (Camera)''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Tested with a wandcam and SDL capture demo.&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SSI (Audio)''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Video codec (H.263/4)''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || H.264 with [[Gstreamer]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''3D GPU''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || OpenGLES 2.0&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Security/Sahara/RTIC''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Not tested yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Wi-Fi (b/g)''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||  style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Wifi]] - [[Wl12xx_driver]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Bluetooth''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||  style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Bluetooth]] / No RTS/CTS Bluetooth&lt;br /&gt;
|----------------&lt;br /&gt;
|'''FPGA POD interface''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Not tested yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''FPGA loading''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Only available on APF6SP&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Xenomai''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==APF6Dev development baseboard==&lt;br /&gt;
* NT = Not Tested&lt;br /&gt;
* NA = Not Available / Not possible&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Functionnalities test results&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#b9e9a3;&amp;quot; |  '''4.1.15_2.0.0_ga legacy'''&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! '''Driver''' || colspan=&amp;quot;2&amp;quot; | '''Compiling ? &amp;lt;br&amp;gt; Static / Module''' || '''Working ?''' || '''Comments'''&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SATA''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''PCIe''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''microSD''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Ethernet''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:orange;&amp;quot; | ~OK || 100M only at the moment&lt;br /&gt;
|----------------&lt;br /&gt;
|'''LCD''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Tested with LW700. [[LCD]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Backlight''' || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Not tested yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Headphone audio Out''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SPDIF Optical audio Out''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]] be sure to force SPDIF output with: aplay -D &amp;quot;default:CARD=imxspdif&amp;quot; /usr/share/sounds/alsa/Side_Left.wav&lt;br /&gt;
|----------------&lt;br /&gt;
|'''HDMI audio Out''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''MIC audio In''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Touchscreen''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || Single touch only.&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB Host 1''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || High Speed&lt;br /&gt;
|----------------&lt;br /&gt;
|'''CAN Bus''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[CAN_bus_Linux_driver]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''HDMI''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Issues with some DVI monitor.&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GPS''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[GPS]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GSM / 3G''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Gsm]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GPIO''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[GPIOlib]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''User LED''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[GPIO LEDS]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''User button''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[GPIO keys]]&lt;br /&gt;
|----------------&lt;br /&gt;
|'''RTC MCP79400''' || style=&amp;quot;background:#00ff00;&amp;quot; | NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||  style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[RTC]]. Timekeeping only.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=APF27_Linux_kernel_status&amp;diff=15102</id>
		<title>APF27 Linux kernel status</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=APF27_Linux_kernel_status&amp;diff=15102"/>
				<updated>2022-06-30T11:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [[Kernel-upstream-status]] for fresh information about APF27 kernel status.&lt;br /&gt;
&lt;br /&gt;
The APF27 Linux distribution can be found here: [https://gitlab.com/armadeus/armadeus-bsp/-/tags latest stable installation tarball from gitlab]&lt;br /&gt;
&lt;br /&gt;
==Current version==&lt;br /&gt;
Currently (Armadeus-6.0) supported Linux version is: '''2.6.29.6'''. &lt;br /&gt;
Details concerning the drivers usage can be found [[Setup|here]].&lt;br /&gt;
&lt;br /&gt;
* NT = Not Tested&lt;br /&gt;
* NA = Not Available / Not possible&lt;br /&gt;
&lt;br /&gt;
==APF27 module (ie i.MX27 internal controllers + FPGA)==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Functionnalities test results&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#b9e9a3;&amp;quot; |  '''2.6.29.6''' &lt;br /&gt;
|----------------&lt;br /&gt;
! '''Driver''' || colspan=&amp;quot;2&amp;quot; | '''Compiling ? &amp;lt;br&amp;gt; Static / Module''' || ''' Working ? ''' || '''Comments''' &lt;br /&gt;
|----------------&lt;br /&gt;
|'''NAND Flash''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#00ff00;&amp;quot; |OK || &lt;br /&gt;
|----------------&lt;br /&gt;
|'''PCMCIA''' || NA || NA || NA || can not be used on the APF27&lt;br /&gt;
|----------------&lt;br /&gt;
|'''1Wire''' || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || not integrated yet&lt;br /&gt;
|----------------&lt;br /&gt;
|'''ATA''' || NA || NA || NA || can not be used on the APF27&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SPI''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||  &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''I2C''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Keypad''' || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || not integrated yet&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''MMC/SD/SDIO''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA  || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''UART''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK  || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK  || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Ethernet''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB OTG''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || Used as High Speed Host only (for the moment == on APF27Dev) &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB HOST1''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB HOST2''' || NA || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''PWM''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''RTC''' || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || internal RTC &lt;br /&gt;
|----------------&lt;br /&gt;
|'''Watchdog''' || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || i.MX27 internal Watchdog &lt;br /&gt;
|----------------&lt;br /&gt;
|'''CSI''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GPIO''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#f6b400;&amp;quot; | Partially || GPIOlib work but no interrupts with /sys/class/gpio/gpioX/edge file&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''LCD''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''SSI (Audio)''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Video codec (H.263/4)''' || NA || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || Only encoding was validated. Mostly relies on userspace tools.&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Security/Sahara/RTIC''' || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT || style=&amp;quot;background:#eeee00;&amp;quot; |NT ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''FPGA POD interface''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK|| style=&amp;quot;background:#00ff00;&amp;quot; | OK || Wishbone bus &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''FPGA loading''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==APF27Dev development baseboard==&lt;br /&gt;
* NT = Not Tested&lt;br /&gt;
* NA = Not Available / Not possible&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Functionnalities test results&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#b9e9a3;&amp;quot; |  '''2.6.29.6'''&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! '''Driver''' || colspan=&amp;quot;2&amp;quot; | '''Compiling ? &amp;lt;br&amp;gt; Static / Module''' || ''' Working ? ''' || '''Comments'''&lt;br /&gt;
|----------------&lt;br /&gt;
|'''RTC''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; |OK || [[RTC|DS1374]] &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''microSD''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK|| style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Ethernet''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''RS232''' || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''LCD''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Audio out''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[ALSA]] &lt;br /&gt;
|----------------&lt;br /&gt;
|'''Audio in''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||  &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Touchscreen''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[TSC2102_Linux_driver]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB Host High Speed''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''USB Host Full Speed''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK ||&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''ADC''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK  || MAX1027 &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''DAC''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || MAX5821&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''CAN Bus''' || NA || style=&amp;quot;background:#eeee00;&amp;quot; |NT|| style=&amp;quot;background:#eeee00;&amp;quot; | NT || MCP2515&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''HDMI''' || colspan=&amp;quot;2&amp;quot; | No drivers needed || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[DVI_/_HDMI|AD9889]] &lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GPS''' || colspan=&amp;quot;2&amp;quot; | No drivers needed || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[Wireless extension board]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''GSM''' || colspan=&amp;quot;2&amp;quot; | No drivers needed || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[Wireless extension board]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Wi-Fi''' || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || style=&amp;quot;background:#00ff00;&amp;quot; | OK || [[Wireless extension board]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|'''Bluetooth''' || NA || style=&amp;quot;background:#eeee00;&amp;quot; | NT || style=&amp;quot;background:#eeee00;&amp;quot; | NT || [[Wireless extension board]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category: kernel]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Quilt&amp;diff=15101</id>
		<title>Quilt</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Quilt&amp;diff=15101"/>
				<updated>2022-06-30T11:44:44Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Quilt is a little tool used to manage patches. The project is hosted on [http://savannah.nongnu.org/projects/quilt savannah forge] and can be found in debian package repository.&lt;br /&gt;
&lt;br /&gt;
== Using quilt in Armadeus project ==&lt;br /&gt;
&lt;br /&gt;
Quilt is useful when linux kernel or buildroot modification must be done. Because Armadeus use official linux/buildroot sources, each specific modification for our platform must be done with a patch. And patches are versionned on Armadeus gitlab repository in directory buildroot/target/device/armadeus/linux/kernel-patches/ for Linux kernel and in patches/buildroot for buildroot.&lt;br /&gt;
&lt;br /&gt;
=== quiltify.sh ===&lt;br /&gt;
&lt;br /&gt;
To use it under Armadeus Project, a simple script was written to simplify it : ''quiltify.sh''. Launch it from the root project :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  [  ] $ ./scripts/quiltify.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then answer questions (defaults are recommended). For linux kernel, quiltify will rename your source directory and download/patch/compile again the sources.&lt;br /&gt;
&lt;br /&gt;
=== By Hand ===&lt;br /&gt;
&lt;br /&gt;
quiltify is used when patch are stored in Armadeus standard directory. For specific projects, where patches are stored elsewhere it doesn't work. To do this, you can follow this procedure:&lt;br /&gt;
&lt;br /&gt;
* linux-dirclean: linux kernel should be rebuild from ''scratch'' then first we have to cut the branch (in bsp root directory do):&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;
* linux-extract: We have to just extract virgin linux source (don't compile yet):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make linux-extract&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Once extract done, go to linux source directory and add patch one by one :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd buildroot/output/build/linux-5.3-rc4/&lt;br /&gt;
# Import patches one by one:&lt;br /&gt;
$ quilt import /Path/to/personnal/kernel/patches/my_wonderful_patch.patch&lt;br /&gt;
# All patches from a directory:&lt;br /&gt;
$ quilt import /Path/to/personnal/kernel/patches/*.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Play with quilt ===&lt;br /&gt;
&lt;br /&gt;
Once you done it, you can go to linux sources directory ''buildroot/project_build_armv5te/apf27/linux-2.6.29.6'' then list all patches applied to with quilt command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  [  ] $ quilt applied&lt;br /&gt;
015-armadeus-logo-add_armadeus-project_tux.patch&lt;br /&gt;
016-armadeus-imxfb-add_platform_specific_init_exit_functions.patch&lt;br /&gt;
018-armadeus-i2c-imx-add_driver_to_linux_build_system.patch&lt;br /&gt;
…&lt;br /&gt;
336-armadeus-imxfb-makes_it_compatible_with_arch_imx.patch&lt;br /&gt;
337-armadeus-imxfb-add_lcd_clock_def_for_imx_platform.patch&lt;br /&gt;
338-denx-mxcgpio-emulates_interrupt_on_both_edges.patch&lt;br /&gt;
339-apf27-armadeus-spidev.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to create a new patch, just use ''new'' quilt command. Then '''before''' modifying Linux file, add it to quilt with ''add'' command.&lt;br /&gt;
&lt;br /&gt;
The file can be modified according to your wish.&lt;br /&gt;
&lt;br /&gt;
Once modification done, you can generate the patch using ''refresh'' command. To add yours patches in the right directory, go to your project root then launch the script with ''export'' command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  [  ] $ ./scripts/quiltify.sh export&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your patch is now ready to be committed on Armadeus gitlab.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
The [http://linux.die.net/man/1/quilt man page] of quilt is a good documentation, it's strongly recommended to read it before using it.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=How_to_make_a_VHDL_design_in_Ubuntu/Debian&amp;diff=15100</id>
		<title>How to make a VHDL design in Ubuntu/Debian</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=How_to_make_a_VHDL_design_in_Ubuntu/Debian&amp;diff=15100"/>
				<updated>2022-06-30T10:44:55Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
This tutorial describes how to install all the necessary tools to develop simple designs under Ubuntu for the Armadeus Project.&amp;lt;br&amp;gt;&lt;br /&gt;
As Ubuntu is a Debian based distribution, all the informations on this page should work with Debian too.&lt;br /&gt;
&lt;br /&gt;
== Editing VHDL ==&lt;br /&gt;
&lt;br /&gt;
To edit VHDL code all standard editing softwares like Vim, Emacs or others can be used. &lt;br /&gt;
But Emacs has a really good [http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html vhdl-mode] used by lots of designers. If you hate Emacs, you &lt;br /&gt;
can use the xilinx-embedded editor or vim with a [http://code.google.com/p/vim-vhdl/ VHDL-plugin] under development.&lt;br /&gt;
&lt;br /&gt;
== Making a simple project ==&lt;br /&gt;
&lt;br /&gt;
It's a good idea to make a clean project tree for your design, because different software are &lt;br /&gt;
used and each generates a large amount of files.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a VHDL project tree :&lt;br /&gt;
&lt;br /&gt;
* '''MySimple_project/'''&lt;br /&gt;
**'''src/''' for all sources files (.vhd,.ucf,.xcf)&lt;br /&gt;
**'''testbench/''' VHDL sources files for testing your design&lt;br /&gt;
**'''ise/''' Xilinx web pack will work in this directory&lt;br /&gt;
**'''simu/''' All files generated by the simulator&lt;br /&gt;
&lt;br /&gt;
== Simulation ==&lt;br /&gt;
To stay in the Free Software spirit, the best method to simulate is to use [http://ghdl.free.fr/ GHDL] (based on GCC).&amp;lt;br&amp;gt;&lt;br /&gt;
To install it on Ubuntu you just have to type :&lt;br /&gt;
 $ sudo apt-get install ghdl&lt;br /&gt;
&lt;br /&gt;
You can find a good tutorial for using GHDL [http://forum.ubuntu-fr.org/viewtopic.php?pid=1545563#p839075 here] and on [http://ghdl.free.fr/ghdl/Starting-with-GHDL.html#Starting-with-GHDL the official website]. It's supposed that the project tree &lt;br /&gt;
used is this one described previously.&lt;br /&gt;
&lt;br /&gt;
Analysing files:&lt;br /&gt;
 $ ghdl -i --ieee=synopsys --warn-no-vital-generic --workdir=simu --work=work src/*.vhdl testbench/testb_file.vhd&lt;br /&gt;
And compile:&lt;br /&gt;
 $ ghdl -m --ieee=synopsys --warn-no-vital-generic --workdir=simu --work=work testb_file&lt;br /&gt;
&lt;br /&gt;
After that a binary file named ''testb_file'' is created; to launch simulation we just have to: &lt;br /&gt;
 $ ./testb_file --stop-time=500ns --vcdgz=testb_file.vcdgz &lt;br /&gt;
The stop time option sets the simulation time and the vcdgz option will generate a gunzip compressed wave file to visualize the result.&lt;br /&gt;
&lt;br /&gt;
Visualizing the result can be done with gtkwave:&lt;br /&gt;
 $ sudo apt-get install gtkwave&lt;br /&gt;
&lt;br /&gt;
We can launch it with the following command :&lt;br /&gt;
 $ gunzip --stdout testb_file.vcdgz | gtkwave --vcd&lt;br /&gt;
&lt;br /&gt;
[[Image:gtkwave.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It can be a good idea to make a Makefile instead of typing all this commands, here is a little Makefile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # project name&lt;br /&gt;
 PROJECT=bus_led_top&lt;br /&gt;
 # vhdl files&lt;br /&gt;
 FILES = src/bus_led.vhd src/bus_led_top.vhd&lt;br /&gt;
 # testbench&lt;br /&gt;
 SIMTOP = led_top_tb&lt;br /&gt;
 SIMFILES = testbench/led_top_tb.vhd&lt;br /&gt;
 # Simu break condition&lt;br /&gt;
 GHDL_SIM_OPT    = --assert-level=error&lt;br /&gt;
 #GHDL_SIM_OPT    = --stop-time=500ns&lt;br /&gt;
 &lt;br /&gt;
 SIMDIR = simu&lt;br /&gt;
 SYNTHFILES = bin/bus_led_ise/netgen/synthesis&lt;br /&gt;
 &lt;br /&gt;
 GHDL_CMD        = ghdl&lt;br /&gt;
 GHDL_FLAGS      = --ieee=synopsys --warn-no-vital-generic&lt;br /&gt;
 &lt;br /&gt;
 VIEW_CMD        = /usr/bin/gtkwave&lt;br /&gt;
 &lt;br /&gt;
 ghdl-compile :                                                                                                 &lt;br /&gt;
  mkdir -p simu                                                                                               &lt;br /&gt;
  $(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simu --work=work $(SIMFILES) $(FILES)                                &lt;br /&gt;
  $(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simu --work=work $(SIMTOP)                                           &lt;br /&gt;
  @mv $(SIMTOP) simu/$(SIMTOP)                                                                                &lt;br /&gt;
                                                                                                               &lt;br /&gt;
 ghdl-run :                                                                                                    &lt;br /&gt;
  @$(SIMDIR)/$(SIMTOP) $(GHDL_SIM_OPT) --vcdgz=$(SIMDIR)/$(SIMTOP).vcdgz                                      &lt;br /&gt;
                                                                                                              &lt;br /&gt;
 ghdl-view:                                                                                                    &lt;br /&gt;
  gunzip --stdout $(SIMDIR)/$(SIMTOP).vcdgz | $(VIEW_CMD) --vcd                                               &lt;br /&gt;
                                                                                                              &lt;br /&gt;
 ghdl-clean :                                                                                                  &lt;br /&gt;
  $(GHDL_CMD) --clean --workdir=simu     &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to use it, just write :&lt;br /&gt;
 $ make ghdl-compile&lt;br /&gt;
to compile, then:&lt;br /&gt;
 $ make ghdl-run&lt;br /&gt;
to run the design, then:&lt;br /&gt;
 $ make ghdl-view&lt;br /&gt;
to launch gtkwave and visualize the results.&lt;br /&gt;
&lt;br /&gt;
== Syntesis, place &amp;amp; route ==&lt;br /&gt;
&lt;br /&gt;
=== GUI installation ===&lt;br /&gt;
To synthesize the design it is mandatory to use Xilinx tools (It's not exactly true, others tools can be used for synthesize like Mentor tools, but at the end, to make the bitstream, Xilinx tools are mandatory), fortunately Xilinx provides his webpack for Linux. [[ISE_WebPack_installation_on_Linux| Click here if you didn't install it yet.]]&lt;br /&gt;
&lt;br /&gt;
To launch the floorplanner, DISPLAY has to be change:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 export DISPLAY=:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this installation, ISE can be found in the directory ''$(Xilinx_root_dir)/bin/lin''.&lt;br /&gt;
To avoid retyping export, a little script ''launch_ise.sh'' can be made in ''bin/lin/'' directory:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export DISPLAY=:0&lt;br /&gt;
~/Xilinx92i/bin/lin/ise&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then make launch click :&lt;br /&gt;
&lt;br /&gt;
[[Image:lanceurise.png]]&lt;br /&gt;
&lt;br /&gt;
There is a good tutorial on [http://harded.free.fr/site/?p=31 harded.free.fr].&lt;br /&gt;
&lt;br /&gt;
=== Using Xilinx command line tools for shell syntesis ===&lt;br /&gt;
&lt;br /&gt;
See [http://panteltje.com/panteltje/fpga/index.html Using Xilinx Webpack-8.1i on grml Linux in scripted mode, without GUI] for an introduction. &lt;br /&gt;
&lt;br /&gt;
First of all, library files has to be copied in library directory :&lt;br /&gt;
 sudo -s&lt;br /&gt;
 mkdir /usr/local/lib/xilinx/&lt;br /&gt;
 cp Xilinx_directory/bin/lin/*.so /usr/local/lib/xilinx/&lt;br /&gt;
 echo /usr/local/lib/xilinx &amp;gt;&amp;gt; /etc/ld.so.conf&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Then modify your .bashrc (add at the end):&lt;br /&gt;
 PLATFORM=lin&lt;br /&gt;
 XILINX=Xilinx_directory&lt;br /&gt;
 export XILINX&lt;br /&gt;
 PATH=Xilinx_directory/bin/lin:$PATH&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
Then ISE can be used in command line (xst, ngdbuild, map, bit,...). To avoid typing very long commands it can be a good idea to use a Makefile, xess.com provide a full [http://www.xess.com/appnotes/makefile.php Makefile] to do this and a basic Makefile for simulation and synthesis can be found in the armadeus gitlab project: [https://gitlab.com/armadeus/armadeus-bsp/-/blob/master/firmware/wishbone_example/wishbone_example9328_27/Makefile]. To use it modify the head and write the names of your files :&lt;br /&gt;
&lt;br /&gt;
*General options&lt;br /&gt;
&lt;br /&gt;
 # project name&lt;br /&gt;
 PROJECT=bus_led_top&lt;br /&gt;
 # vhdl files&lt;br /&gt;
 FILES = src/bus_led.vhd src/bus_led_top.vhd&lt;br /&gt;
&lt;br /&gt;
* constraints for synthesis&lt;br /&gt;
&lt;br /&gt;
 # pin configuration&lt;br /&gt;
 UCF_FILE = src/bus_led.ucf&lt;br /&gt;
 # Synthesis constraints file&lt;br /&gt;
 XCF_FILE = &lt;br /&gt;
&lt;br /&gt;
*Testbench options&lt;br /&gt;
&lt;br /&gt;
 # testbench&lt;br /&gt;
 SIMTOP = led_top_tb&lt;br /&gt;
 SIMFILES = ../apf_pkg/apf_test_pkg.vhd testbench/led_top_tb.vhd&lt;br /&gt;
&lt;br /&gt;
*Simulation can stop after a given time or after an assert error (end of test for example)&lt;br /&gt;
&lt;br /&gt;
 # Simu break condition&lt;br /&gt;
 GHDL_SIM_OPT    = --assert-level=error&lt;br /&gt;
 #GHDL_SIM_OPT    = --stop-time=500ns&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=A_simple_design_with_Wishbone_bus&amp;diff=15099</id>
		<title>A simple design with Wishbone bus</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=A_simple_design_with_Wishbone_bus&amp;diff=15099"/>
				<updated>2022-06-30T10:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
This article is intended to explain how to design Wishbone compatible components with simple example. &lt;br /&gt;
The VHDL source code can be found in firmware/wishbone_example from  [https://gitlab.com/armadeus/armadeus-bsp our gitlab repository].&lt;br /&gt;
&lt;br /&gt;
Description of the Wishbone structure for Armadeus APF boards can be found [[FpgaArchitecture#Le_bus_Wishbone | here]] (in french).&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
&lt;br /&gt;
The main functionality of this component is to allow to switch-on a LED when a button is pressed.&lt;br /&gt;
&lt;br /&gt;
When button is pressed, the component ''button'' send interrupt signal to&lt;br /&gt;
''irq_mngr''. ''irq_mngr'' will toggle a flag and send interruption to&lt;br /&gt;
'''i.MX''' processor. A Linux driver on '''i.MX''' will read ''irq_mngr'' and&lt;br /&gt;
acknowledge irq by writing '1' on the corresponding register. And finally, Linux driver will&lt;br /&gt;
toggle LED value by writing in ''led'' register.&lt;br /&gt;
&lt;br /&gt;
[[image:Wb_buttonled_top.png|700px|center|thumb|'''figure 1''' - ''Schematics of wishbone example. /!\ Bus signals are wrong for the APF51 because addr and data are multiplexed.'']]&lt;br /&gt;
&lt;br /&gt;
''imx_wrapper'', ''syscon'' and ''irq_mngr'' are standards&lt;br /&gt;
ARMadeus-Wishbone IPs that just been instantiated in our design.&lt;br /&gt;
&lt;br /&gt;
''button'' and ''led'' are simple slave component we want to integrate in the FPGA.&lt;br /&gt;
&lt;br /&gt;
All these components are connected together with the 'glue logic' component ''intercon''.&lt;br /&gt;
&lt;br /&gt;
=== Wrapper ===&lt;br /&gt;
The [http://armadeus.git.sourceforge.net/git/gitweb.cgi?p=armadeus/armadeus;a=blob;f=firmware/wishbone_example/src/wishbone_wrapper.vhd;h=d23110bac06cb121677e551c9eb5efc36b9e5981;hb=HEAD wrapper] is used to convert i.MX interface signals into Wishbone signals.&lt;br /&gt;
&lt;br /&gt;
=== Intercon === &lt;br /&gt;
&lt;br /&gt;
The [http://armadeus.git.sourceforge.net/git/gitweb.cgi?p=armadeus/armadeus;a=blob;f=firmware/wishbone_example/src/intercon.vhd;h=dfa98f69ee2263a715945173e138c846e186981c;hb=HEAD  intercon] is a component used to manage signals between Wishbone master and slave components. This component decode Wishbone-master addresses and dispatch them to Wishbone-slave components.&lt;br /&gt;
&lt;br /&gt;
[[image:Wb_intercon.png|center|500px|thumb|'''figure 2''' - ''Intercon internal structure'']]&lt;br /&gt;
&lt;br /&gt;
== Wishbone slave application components ==&lt;br /&gt;
&lt;br /&gt;
In this example there are 3 Wishbone-slave components :&lt;br /&gt;
&lt;br /&gt;
=== irq manager ===&lt;br /&gt;
&lt;br /&gt;
Some components (here, only ''button'') generate interrupts, [http://armadeus.git.sourceforge.net/git/gitweb.cgi?p=armadeus/armadeus;a=blob;f=firmware/wishbone_example/src/irq_mngr.vhd;h=014735fb81478b668091beac08af358d6c61240c;hb=HEAD irq manager] is used to mux these interrupts for i.MX. The irq_mngr can manage up to 16 internal interrupts. &lt;br /&gt;
&lt;br /&gt;
IRQ manager component has tree registers, one to enable interrupts, one for flags/acknowledge interrupts and one identification register :&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;irq_mgr registers&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! register !! function&lt;br /&gt;
|-&lt;br /&gt;
| mask&lt;br /&gt;
| write '1' to allow irq&lt;br /&gt;
|-&lt;br /&gt;
| ack/pend&lt;br /&gt;
| read for pending irq, write to acknowledge irq&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| identification register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== wb_led ===&lt;br /&gt;
&lt;br /&gt;
{{Note| On apf9328_devfull and on apf27_dev a LED is already soldered on fpga. &amp;lt;br&amp;gt; '''For apf27_dev the FPGA bank1 must be powered with 3.3V''' (connect pin 39 and pin 1 on J20 header (near Ethernet one)). For '''apf51Dev''' don't forget to power banks with jumper FPGA_Bank3 and FPGA_Bank1}}&lt;br /&gt;
&lt;br /&gt;
This component is a simple 16-bit Wishbone slave output port, from [http://cdn.opencores.org/downloads/wbspec_b3.pdf wishbone specification example] (p110).&lt;br /&gt;
&lt;br /&gt;
[[image:wbs_led.png|center|thumb|600px|'''figure 3''' - ''LED internal structure'']]&lt;br /&gt;
&lt;br /&gt;
It is a simple register, that can be read and write. The LED is controlled with register pin 0.&lt;br /&gt;
&lt;br /&gt;
The two registers are :&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;wb_led registers&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! register name !! (relative) address !! function&lt;br /&gt;
|-&lt;br /&gt;
| LED || 0x00 || Write '1' in LSB to shutdown LED&lt;br /&gt;
|-&lt;br /&gt;
| id || 0x02 || read identification number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== wb_button ===&lt;br /&gt;
&lt;br /&gt;
Wb_button component, is like ''led'' but in read only and with an edge detector to rise irq.&lt;br /&gt;
&lt;br /&gt;
{{Note| On [[APF27Dev]] and [[APF51Dev]] a button is already soldered to a FPGA pin. Just don't forget to power corresponding FPGA bank.&amp;lt;br&amp;gt; For [[APF9328DevFull]] a button must be connected to IO_L01N_0 FPGA pin (connector X7/FPGA2, pin 1)}}&lt;br /&gt;
[[image:wbs_button.png|center|thumb|500px|'''figure 4''' - ''Button internal structure'']]&lt;br /&gt;
&lt;br /&gt;
The two registers are:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;wb_button registers&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! register !! (relative) address !! function&lt;br /&gt;
|-&lt;br /&gt;
| id || 0x00 || read identification number&lt;br /&gt;
|-&lt;br /&gt;
| Button || 0x02 || read LSB to know button state&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Components drivers ==&lt;br /&gt;
&lt;br /&gt;
Each component is driven by a Linux driver described above. All driver code is in armadeus directory in [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/target/linux/modules/fpga/wishbone_example/ target/linux/module/fpga/wishbone_example/].&lt;br /&gt;
&lt;br /&gt;
Each component has an identification register with unique number. This number is used by driver when modprobed to unsure that device is present.&lt;br /&gt;
&lt;br /&gt;
=== irq manager ===&lt;br /&gt;
&lt;br /&gt;
The description of IRQ management module is available [[POD_Interrupt_handler | here]]. The module's source code can be found [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/target/linux/modules/fpga/wishbone_example/wb_irq_mngr/main.c?view=markup  here].&lt;br /&gt;
&lt;br /&gt;
=== LED ===&lt;br /&gt;
&lt;br /&gt;
LED driver is seen in Linux like a character driver. Writing in a ''/dev'' file will enable or disable the LED.&lt;br /&gt;
&lt;br /&gt;
The driver is composed of two modules :&lt;br /&gt;
&lt;br /&gt;
* '''led_ocore''' : this module implement generic LED driver mechanisms.&lt;br /&gt;
* '''wb_example_led''' : This module describe specific datas for each LED-component available in design. These datas are described in structure ''plat_led_port'' and ''plat_led_device''. The module will register each LED with ''platform_device_register()'' function. When a ''plat_led_port'' device is registered, ''led_ocore'' driver will detect it and will probe it with ''led_probe'' function.&lt;br /&gt;
&lt;br /&gt;
=== button ===&lt;br /&gt;
&lt;br /&gt;
Button driver is seen in Linux like a character driver. When a process want to read value in button register, the driver will block reading until an interrupt occur.&lt;br /&gt;
&lt;br /&gt;
Structure of button driver is similar to LED driver (two modules) :&lt;br /&gt;
&lt;br /&gt;
* '''button_ocore''' : This module implements generic button driver mechanisms.&lt;br /&gt;
* '''wb_example_button''' : Like LED module, this module describes specific data for each button-component available in design.&lt;br /&gt;
&lt;br /&gt;
== Using the design ==&lt;br /&gt;
&lt;br /&gt;
All code for this design is available in ARMadeus tree, [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/firmware/wishbone_example/ firmware] (VHDL) and [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/target/linux/modules/fpga/wishbone_example/ software] (Linux drivers).&lt;br /&gt;
&lt;br /&gt;
=== Make the FPGA bitstream ===&lt;br /&gt;
&lt;br /&gt;
ISE Webpack is mandatory to generate the bitstream, so [[ISE_WebPack_installation_on_Linux | its installation is required]]. Once bitstream has been generated, it can be downloaded in FPGA with [[Target_Software_Installation#FPGA_firmware_installation | U-Boot]] or [[FPGA_loader | Linux]].&lt;br /&gt;
For '''apf51''', bitstream is under the directory '''firmware/wishbone_example/wishbone_example51/binaries/top_wishbone_example51_lx9.bin'''. For apf27 and apf9328 bitstream can be found in '''firmware/wishbone_example/wishbone_example9328_27/bin/'''.&lt;br /&gt;
&lt;br /&gt;
=== Compile Linux drivers ===&lt;br /&gt;
&lt;br /&gt;
To compile the drivers for this design select them in 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;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
    Device Drivers ---&amp;gt;&lt;br /&gt;
        Armadeus specific drivers ---&amp;gt;&lt;br /&gt;
            FPGA Drivers ---&amp;gt;&lt;br /&gt;
                [*]   Board designs&lt;br /&gt;
                [*]     board drivers for wishbone example&lt;br /&gt;
                &amp;lt;M&amp;gt;       board Button&lt;br /&gt;
                &amp;lt;M&amp;gt;       board Led&lt;br /&gt;
                &amp;lt;M&amp;gt;       board irq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and compile them:&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;
Then reflash [[Target_Software_Installation#Linux_kernel_installation | Linux]] and  [[Target_Software_Installation#rootfs_installation | rootfs]] images.&lt;br /&gt;
&lt;br /&gt;
=== Play with button and LED ===&lt;br /&gt;
&lt;br /&gt;
==== Load modules ====&lt;br /&gt;
&lt;br /&gt;
Modules must be loaded in right order with ''modprobe'' command :&lt;br /&gt;
&lt;br /&gt;
* IRQ manager :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe irq_ocore&lt;br /&gt;
# modprobe wb_example_irq_mngr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Button generic module must be loaded before board module:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe button_ocore&lt;br /&gt;
# modprobe wb_example_buttons&lt;br /&gt;
button button.0: BUTTON0: MAJOR: 249 MINOR: 0&lt;br /&gt;
BUTTON0 loaded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* LED generic module must be loaded before board module:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# modprobe led_ocore&lt;br /&gt;
# modprobe wb_example_led&lt;br /&gt;
LED0: MAJOR: 248 MINOR: 0&lt;br /&gt;
LED module LED0 insered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device access ====&lt;br /&gt;
&lt;br /&gt;
Devices access are done with special caracters file. These file must be created '''with major and minor number given when modules are loaded''' (see ''Load modules'' above) :&lt;br /&gt;
&lt;br /&gt;
* Make LED access :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mknod /dev/led0 c LED_MAJOR_NUMBER 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Make button access :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mknod /dev/button0 c BUTTON_MAJOR_NUMBER 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace '''LED_MAJOR_NUMBER''' and '''BUTTON_MAJOR_NUMBER''' with correct major number given when modprobe is done.&lt;br /&gt;
&lt;br /&gt;
==== Test LED ====&lt;br /&gt;
&lt;br /&gt;
A test program is available in module directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
target/linux/modules/fpga/board_designs/wishbone_example/wb_led/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
simply compile it with arm-linux-gcc compiler :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download ''testled'' binary on your APF, then test it :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ./testled /dev/led0 &lt;br /&gt;
Testing led driver&lt;br /&gt;
Read 1&lt;br /&gt;
Write 0&lt;br /&gt;
Read 0&lt;br /&gt;
Write 1&lt;br /&gt;
Read 1&lt;br /&gt;
Write 0&lt;br /&gt;
Read 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LED is blinking slowly.&lt;br /&gt;
&lt;br /&gt;
==== Test Button ====&lt;br /&gt;
&lt;br /&gt;
A test program is available in directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
target/linux/modules/fpga/board_designs/wishbone_example/wb_button/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
simply compile it in the directory with command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy the ''testbutton'' binary in your target then launch it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ./testbutton /dev/button0&lt;br /&gt;
Testing button driver&lt;br /&gt;
Read 1&lt;br /&gt;
Read 0&lt;br /&gt;
Read 1&lt;br /&gt;
Read 0&lt;br /&gt;
Read 1&lt;br /&gt;
Read 0&lt;br /&gt;
Read 0&lt;br /&gt;
Read 1&lt;br /&gt;
Read 0&lt;br /&gt;
Read 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each time button is pushed or released, button state is printed out.&lt;br /&gt;
&lt;br /&gt;
==== Switching LED with button ====&lt;br /&gt;
&lt;br /&gt;
A simple program is available in wishbone example directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
target/linux/modules/fpga/board_designs/wishbone_example/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to switch on the LED when button is pressed.&lt;br /&gt;
&lt;br /&gt;
To compile :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use it, simply type (after downloaded it under your target):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ./push-led /dev/button0 /dev/led0 &lt;br /&gt;
Blink a led pushing button&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the button to switch on/off the LED.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Trash_Fr:Compilateur_crois%C3%A9&amp;diff=15098</id>
		<title>Trash Fr:Compilateur croisé</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Trash_Fr:Compilateur_crois%C3%A9&amp;diff=15098"/>
				<updated>2022-06-30T10:42:19Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Récupération de l'archive Armadeus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Comment installer le kit de développement du projet Armadeus pour Linux/Window$&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
==Prérequis pour une installation Window$==&lt;br /&gt;
Pour développer des programme pour la carte Armadeus, il vous faudra installer Cygwin dans un premier temps: http://www.cygwin.com.&lt;br /&gt;
Choisissez une installation par défaut et ajoutez les paquets suivants en cliquant une fois sur l'icône &amp;quot;skip&amp;quot;:&lt;br /&gt;
* devel  -&amp;gt; subversion &lt;br /&gt;
* devel  -&amp;gt; make&lt;br /&gt;
* devel  -&amp;gt; patchutils&lt;br /&gt;
* devel  -&amp;gt; gcc-core&lt;br /&gt;
* devel  -&amp;gt; gcc-g++&lt;br /&gt;
* devel  -&amp;gt; gdb&lt;br /&gt;
* devel  -&amp;gt; binutils&lt;br /&gt;
* devel  -&amp;gt; libncurses-devel&lt;br /&gt;
* devel  -&amp;gt; gettext-devel&lt;br /&gt;
* devel  -&amp;gt; bison&lt;br /&gt;
* devel  -&amp;gt; flex&lt;br /&gt;
* system -&amp;gt; util-linux&lt;br /&gt;
* web    -&amp;gt; wget&lt;br /&gt;
&lt;br /&gt;
==Prérequis pour une installation Linux==&lt;br /&gt;
Vérifiez que vous avez les paquets suivants installés dans votre distribution:&lt;br /&gt;
* cvs (fixme)&lt;br /&gt;
* gettext&lt;br /&gt;
* libncurses&lt;br /&gt;
* svn&lt;br /&gt;
* wget&lt;br /&gt;
* autoconf &lt;br /&gt;
* zlib1g-dev&lt;br /&gt;
* libacl1-dev&lt;br /&gt;
&lt;br /&gt;
Sous Debian, vous pouvez utiliser la commande suivante:&lt;br /&gt;
 $ sudo apt-get install autoconf automake bison flex g++ gettext libncurses5-dev liblzo1 liblzo-dev liblzo2-2 liblzo2-dev \&lt;br /&gt;
               patch subversion texinfo wget zlib1g-dev libacl1 libacl1-dev&lt;br /&gt;
&lt;br /&gt;
Il a été rapporté que l'installation se déroule bien sur: Fedora Core 3, Fedora Core 4, Debian Sarge, Ubuntu Edgy&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Ouvrez un shell et suivez la procédure suivante:&lt;br /&gt;
&lt;br /&gt;
===Récupération de l'archive Armadeus===&lt;br /&gt;
* Si vous voulez la derniere version du logiciel atmadeus, récupérez les fichiers requis depuis le dépôt:&lt;br /&gt;
 $ git clone git://git.code.sf.net/p/armadeus/code armadeus  &lt;br /&gt;
&lt;br /&gt;
Un répertoire appelé armadeus/ sera créé sur votre disque dur et contiendra tous les fichiers dont vous aurez besoin.&lt;br /&gt;
* Sinon, téléchargez l'archive d'installation depuis gitlab: https://gitlab.com/armadeus/armadeus-bsp/-/tags et décompressez la dans un répertoire avec au moins 2 Go d'espace libre.&lt;br /&gt;
&lt;br /&gt;
===Configurez le générateur de distribution Armadeus :===&lt;br /&gt;
 $ cd armadeus/&lt;br /&gt;
 $ make menuconfig  (ou juste make la première fois).&lt;br /&gt;
Ceci lancera la configuration du Buildroot.&lt;br /&gt;
Dans le menu Board Support Option, sélectionnez votre carte armadeus (apf/apm9328), la taille de la RAM (16/32MB) et ainsi de suite... &lt;br /&gt;
* Si vous avez besoin de la LIBSTD C++, ajoutez ceci dans le menuconfig/options du toolchain/options additionelles de gcc : &lt;br /&gt;
--disable-libstdcxx-pch. Ceci désactivera l'utilisation des en-êtes du précompilateur.&lt;br /&gt;
*Quittez l'outil de configuration en enregistrant votre config.&lt;br /&gt;
&lt;br /&gt;
===Lancez le build===&lt;br /&gt;
 $ make&lt;br /&gt;
La chaine de compile, le noyau linux et le système de fichier sont construits automatiquement. Durant cette procédure, plusieurs fichiers seront téléchargés depuis Internet. S'il vous plait, attendez un peu... cela prend au moins une heure la première fois!&lt;br /&gt;
&lt;br /&gt;
===Problèmes:===&lt;br /&gt;
* &amp;lt;strike&amp;gt;crash de la compilation avec uclibc-0.9.28: lancez make à nouveau&amp;lt;/strike&amp;gt; should be fixed now&lt;br /&gt;
* &amp;lt;strike&amp;gt;crash de la compilation avec gdb 6.3: lancez make à nouveau&amp;lt;/strike&amp;gt; should be fixed now&lt;br /&gt;
* &amp;lt;strike&amp;gt;crash de la compilation avec linux 2.6.12: lancez make à nouveau&amp;lt;/strike&amp;gt; should be fixed now&lt;br /&gt;
&lt;br /&gt;
===Appréciez le résultat===&lt;br /&gt;
Les fichiers binaires générés se trouvent dans le sous-répertoire armadeus/buildroot/binaries/armadeus:&lt;br /&gt;
&lt;br /&gt;
* '''u-boot.brec''' (peut être utilisé en mode bootstrap si U-Boot n'est pas installé ou ne marche plus. Dans ce cas regardez la page du [[BootLoader]] )&lt;br /&gt;
* '''u-boot.bin''' (à télécharger depuis U-Boot, regardez la page [[BootLoader]] &amp;quot;Update u-boot&amp;quot;)&lt;br /&gt;
* '''linux-kernel-2.6.xx-arm.bin''' (à télécharger depuis U-Boot, regardez InstallLinux)&lt;br /&gt;
* '''rootfs.arm.jffs2''' (à télécharger depuis U-Boot, regardez InstallFileSystem?)&lt;br /&gt;
* '''rootfs.arm.tar''' (pour un rootfs par NFS ou sur MMC/SD, regardez RootNFS)&lt;br /&gt;
&lt;br /&gt;
==Pour garder votre copie de travail à jour par rapport au dépôt Armadeus==&lt;br /&gt;
 $ svn update&lt;br /&gt;
Ceci mettra à jour votre répertoire de travail à la dernière release.&lt;br /&gt;
&lt;br /&gt;
Note: si &amp;quot;svn update&amp;quot; échoue à cause d'un répertoire ou fichier qui existe déjà, faites ceci:&lt;br /&gt;
 $ rm -rf &amp;lt;le_répertoire/ou_le_fichier&amp;gt;&lt;br /&gt;
 $ svn update&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire un:&lt;br /&gt;
 $ make defconfig&lt;br /&gt;
pour avoir récupérer les paramètres par défaut puis un:&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
pour apporter vos modifications personnelles&lt;br /&gt;
&lt;br /&gt;
Vous devez faire un '''make''' pour reconstruire les fichiers binaires et ensuite chargez les fichiers binaires sur votre cible/carte.&lt;br /&gt;
&lt;br /&gt;
Note: Si finalement rien ne marche alors que ça marchait avant la dernière mise à jour,&lt;br /&gt;
vous pouvez appliquer la procédure suivante:&lt;br /&gt;
 $ rm -rf buildroot&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ svn update&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=FPGA_and_led&amp;diff=15097</id>
		<title>FPGA and led</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=FPGA_and_led&amp;diff=15097"/>
				<updated>2022-06-30T10:41:29Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note| This article is only for '''apf9328''' module board}}&lt;br /&gt;
&lt;br /&gt;
This project is intented for people who are new to VHDL. Code for this design can be found [https://gitlab.com/armadeus/armadeus-bsp on armadeus gitlab] into firmware/leds/button_led/. &lt;br /&gt;
&lt;br /&gt;
We will connect a switch and a led to the FPGA and use some VHDL code to toggle the led state each time the switch is pressed.&lt;br /&gt;
&lt;br /&gt;
'''Some usefull informations:'''&lt;br /&gt;
&lt;br /&gt;
The main FPGA page [http://www.armadeus.com/wiki/index.php?title=FPGA] of the armadeus wiki.&lt;br /&gt;
&lt;br /&gt;
This document [http://www.cs.uml.edu/~fredm/courses/91.548-spr06/files/qst.pdf] gives a lot of usefull information on how to use ISE Webpack.&lt;br /&gt;
&lt;br /&gt;
Page 9 of this document shows the devlight pinout matrix: [http://www.armadeus.com/downloads/apf9328DevLight/documentation/dataSheet_APF9328_DevLight.pdf]&lt;br /&gt;
&lt;br /&gt;
Pages 28 and 29 of the APF datasheet shows the mapping of the devlight pinouts with the FPGA pinouts :[http://www.armadeus.com/downloads/apf9328/documentation/dataSheet_APF9328.pdf]&lt;br /&gt;
&lt;br /&gt;
'''Schematic'''&lt;br /&gt;
&lt;br /&gt;
[[Image:schema.png]]&lt;br /&gt;
&lt;br /&gt;
'''Anatomy of the circuit'''&lt;br /&gt;
&lt;br /&gt;
The led_top.vhd is a VHDL file where the components of the circuit are instantiated and connected between them.&lt;br /&gt;
&lt;br /&gt;
The functional diagram of the circuit is :&lt;br /&gt;
&lt;br /&gt;
[[Image:led_top.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benoît Canet / benoit on #armadeus&lt;br /&gt;
[[Category: FPGA]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Fr:FAQ&amp;diff=15096</id>
		<title>Fr:FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Fr:FAQ&amp;diff=15096"/>
				<updated>2022-06-30T10:40:40Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Où sont les sources ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Questions générales==&lt;br /&gt;
&lt;br /&gt;
===Quel est le but du &amp;quot;projet Armadeus&amp;quot; ?===&lt;br /&gt;
Le but de ce projet est de permettre à tous de développer facilement des systèmes embarqués à base de Logiciel/matériel Libres.&lt;br /&gt;
&amp;quot;Quand tous les systèmes embarqués tourneront sur des Logiciels Libres, la vie n'en sera que meilleure ! ;-)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Que signifie &amp;quot;Armadeus&amp;quot; ?===&lt;br /&gt;
&amp;quot;Armadeus&amp;quot; est la contraction de &amp;quot;ARM&amp;quot; et &amp;quot;Amadeus&amp;quot;. En effet nous avons choisi l'architecture ARM pour sa simplicité et son efficacité, et nos cartes sont aussi douées pour faire tourner des systèmes embarqués que ne l'était Mozart pour composer de la musique (:-) ). Bon, le projet Armadeus a aussi surtout vu le jour en 2006, année du 250ème anniversaire de la naissance de Mozart.&lt;br /&gt;
&lt;br /&gt;
===Comment obtenir de l'aide ?===&lt;br /&gt;
[[Help:Contents | Page détaillant comment obtenir de l'aide]]&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous habitez en France, nous avons des membres à Besançon, Montbéliard &amp;amp; Mulhouse qui peuvent vous aider (suivant leur temps libre). Pour les membres Suisses, ils peuvent éventuellement obtenir de l'aide à Bâle, Lausanne &amp;amp; Zürich.&amp;lt;br&amp;gt;&lt;br /&gt;
===Quelle est la relation entre http://www.armadeus.org et http://www.armadeus.com ? Y a t'il une société derrière l'assoc existante ?===&lt;br /&gt;
&lt;br /&gt;
http://armadeus.com&amp;gt; est le site web dédié à la société Armadeus Systems. Elle développe et produit les cartes qui sont ensuite proposées aux membres de l'association à des tarifs réduits (usage non commercial uniquement !). &lt;br /&gt;
&lt;br /&gt;
Historiquement l'association Armadeus Project a été fondée avant la société Armadeus Systems. &lt;br /&gt;
Après un an d'existence, nous avons vite vu que les objectifs que nous nous étions fixés ne pouvaient être atteint sans un investissement plus conséquent en temps et en moyens financiers.&lt;br /&gt;
C'est la raison pour laquelle la société à été fondée.&lt;br /&gt;
&lt;br /&gt;
L'association a été crée par plaisir et aussi afin d'aider les particuliers et les universitaires à développer des systèmes embarqués Linux. L'association est à but non lucratif et fonctionne essentiellement grâce au temps investit par les membres fondateurs.&lt;br /&gt;
&lt;br /&gt;
Les développements (hardware/firmware/software) effectués au sein de l'association sont sous licence GPL/LGPL. Les cartes electroniques financées par l'association ne peuvent être utilisées à des fins commerciales.&lt;br /&gt;
&lt;br /&gt;
==Questions sur le Matériel==&lt;br /&gt;
&lt;br /&gt;
===De quoi est composée la carte Armadeus APF9328 ?===&lt;br /&gt;
Cette carte est architecturée autour d'un [http://www.freescale.com/files/32bit/doc/ref_manual/MC9328MXLRM.pdf processeur i.MXL de chez Freescale] (ex Motorola). Ce processeur 32 bits contient un coeur ARM920T cadencé à 192Mhz et possède les périphériques intégrés suivant:&lt;br /&gt;
* 1 contrôleur LCD (TFT, CSTN, STN) jusqu'à 640x480 avec contrôle de rétro-éclairage&lt;br /&gt;
* 1 port USB 1.1 device&lt;br /&gt;
* 2 bus SPI &lt;br /&gt;
* 1 bus I2C&lt;br /&gt;
* 2 port séries asynchrones rapides&lt;br /&gt;
* 2 ports séries synchrones (SSI)&lt;br /&gt;
* 1 contrôleur MMC/SD (mode 4bits)&lt;br /&gt;
* 1 PWM (capable de générer des sons)&lt;br /&gt;
* 1 interface pour capteur CCD&lt;br /&gt;
* un mode bootstrap série (plus besoin de JTAG pour programmer le bootloader)&lt;br /&gt;
* un grands nombre de GPIOs (entrées/sorties), dépendant des périphériques configurés&lt;br /&gt;
&lt;br /&gt;
Voici un lien pour avoir plus d'informations: [http://www.armadeus.com/downloads/apf9328/documentation/dataSheet_APF9328.pdf]&lt;br /&gt;
&lt;br /&gt;
Sur notre carte l'i.MXL est associé à:&lt;br /&gt;
* 16Mo de SDRAM rapide (bus 32 bits)&lt;br /&gt;
* 16Mo de Flash NOR (bus 16 bits)&lt;br /&gt;
* un contrôleur 10/100Mbits Ethernet Davicom DM9000&lt;br /&gt;
* un FPGA Xilinx Spartan3 200k portes (optionnel)&lt;br /&gt;
* un CAN (SPI) et un CNA (I2C) (optionnels)&lt;br /&gt;
* des convertisseurs de niveau série (console), PHY USB et PHY Ethernet&lt;br /&gt;
* 2 connecteurs donnant accès aux signaux principaux&lt;br /&gt;
&lt;br /&gt;
===Qu'est-ce que la carte APF9328DevLight ?===&lt;br /&gt;
Les cartes APF9328 ont été conçues pour être aussi petites que possible et être capables de s'intégrer dans n'importe quel système embarqué. Une carte APF9328 n'est donc pas utilisable seule. Considérez la plutôt comme un module processeur pouvant se connecter partout. Pour développer sur les cartes APF9328 vous pouvez soit développer votre propre &amp;quot;carte fille&amp;quot;, soit utiliser celles que nous avons développées pour nos propres besoins.&lt;br /&gt;
&lt;br /&gt;
Actuellement seule la carte &amp;quot;DevLight&amp;quot; est disponible en quantité. Elle contient:&lt;br /&gt;
* un connecteur série&lt;br /&gt;
* un connecteur USB&lt;br /&gt;
* un connecteur Ethernet&lt;br /&gt;
* une zone prototype de test&lt;br /&gt;
* un connecteur microSD&lt;br /&gt;
* un zone préroutée permettant de connecter un TFT (MTFT035 / LQ043)&lt;br /&gt;
* une alimentation régulée avec une entrée standard&lt;br /&gt;
&lt;br /&gt;
Voici un lien pour avoir plus d'informations&lt;br /&gt;
[http://www.armadeus.com/downloads/apf9328DevLight/documentation/dataSheet_APF9328_DevLight.pdf]&lt;br /&gt;
&lt;br /&gt;
===Qu'est-ce que la carte APF9328DevFull ?===&lt;br /&gt;
La carte &amp;quot;DevFull&amp;quot; sera la version sur-vitaminée de la DevLight. Les premiers prototypes sont en cours de validation (sortie prévue mi avril 2008). Cette carte de développement contiendra:&lt;br /&gt;
* un contrôleur audio + avec interface écran tactile&lt;br /&gt;
* un contrôleur de bus CAN (option)&lt;br /&gt;
* un connecteur MMC/SD&lt;br /&gt;
* une RTC sauvegardée par batterie (option)&lt;br /&gt;
* un connecteur LCD compatible avec les TFT (LQ043 / MTFT035)&lt;br /&gt;
* un host USB 2.0 Fullspeed (2 ports)&lt;br /&gt;
* une sortie vidéo (PAL/NTSC)&lt;br /&gt;
* une mémoire externe pour le FPGA (option)&lt;br /&gt;
* une alimentation à découpage 2.5A avec une plage d'entrée étendue&lt;br /&gt;
* de nombreux connecteurs permettant d'accèder facilement à tous les signaux de la carte&lt;br /&gt;
&lt;br /&gt;
===De quel matériel ai-je besoin pour commencer à développer ?===&lt;br /&gt;
En plus de la carte APF9328 et d'une carte de développement (type DevLight), vous aurez besoin:&lt;br /&gt;
* d'une alimentation stabilisée délivrant une tension &amp;gt;= 5v,&lt;br /&gt;
* d'un cable série Null-Modem et d'un port série sur votre PC (ou d'un adaptateur USB &amp;lt;-&amp;gt; série pour certains portables),&lt;br /&gt;
* d'un routeur Ethernet pour monter un réseau local entre votre PC et la carte, ainsi que des cables Ethernet adequat,&lt;br /&gt;
* d'un cable USB, type ceux utilisés pour les imprimantes (si vous voulez utiliser la fonctionnalité USB),&lt;br /&gt;
* et éventuellement d'un fer à souder avec un multimètre.&lt;br /&gt;
* enfin un Adapteur USB/Série si vous n'avez pas de port série sur votre ordinateur (C'est souvent le cas des ordinateurs portables récents)&lt;br /&gt;
&lt;br /&gt;
===Où trouver ce matériel===&lt;br /&gt;
* Sur des sites marchands d'électronique comme http://www.conrad.fr/ ou http://www.selectronic.fr/&lt;br /&gt;
* Exemples:&lt;br /&gt;
** Alimentation stabilisée:&lt;br /&gt;
***http://www.selectronic.fr/article.asp?article_ref_entier=11.1063-9999&lt;br /&gt;
***http://www.selectronic.fr/article.asp?article_ref_entier=10.0854-9999&lt;br /&gt;
** Adaptateur USB/Série:&lt;br /&gt;
***http://www.selectronic.fr:80/article.asp?article_ref_entier=90.8014-6&lt;br /&gt;
***http://www.pearl.fr/cables/cables-informatiques/usb/interface-usb-vers-1-port-serie_PX3034.html&lt;br /&gt;
***http://www.conrad.fr/webapps/adaptateur_serie.html&lt;br /&gt;
** Câble série null modem (RS232 9F/9F) croisé:&lt;br /&gt;
***http://www.selectronic.fr:80/article.asp?article_ref_entier=90.8502-9999&lt;br /&gt;
&lt;br /&gt;
===Est ce que vos cartes sont compatibles avec la norme RoHS ?===&lt;br /&gt;
Oui&lt;br /&gt;
&lt;br /&gt;
==Questions sur le Logiciel==&lt;br /&gt;
&lt;br /&gt;
===Sur quelles briques de Logiciels Libres repose le projet ?===&lt;br /&gt;
* U-Boot pour le bootloader&lt;br /&gt;
* Linux 2.6 pour le système d'exploitation&lt;br /&gt;
* Buildroot pour la génération du &amp;quot;rootfs&amp;quot;, avec toute sa suite logicielle&lt;br /&gt;
* Qt/Embedded OpenSource (Qtopia) ou SDL pour l'interface graphique&lt;br /&gt;
* et nos programmes à nous :-)&lt;br /&gt;
&lt;br /&gt;
===Où sont les sources ?===&lt;br /&gt;
Notre projet est hébergé sur gitlab: https://gitlab.com/armadeus/armadeus-bsp&lt;br /&gt;
&lt;br /&gt;
===Quelles sont les connaissances nécessaires pour développer ?===&lt;br /&gt;
* connaissances de base des systèmes Unix/Linux&lt;br /&gt;
* les bases en C/C++&lt;br /&gt;
* des notions d'électronique sont recommandées&lt;br /&gt;
* nous essayons de faire en sorte que toutes les explications données ne soient pas réservées aux &amp;quot;hackers&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Quelles sont les performances de votre système ?===&lt;br /&gt;
[[Performances]]&lt;br /&gt;
&lt;br /&gt;
===Au secours j'ai besoin d'aide===&lt;br /&gt;
[[Help:Contents]]&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|FAQ|FAQ|FAQ}}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=WindowsInstall&amp;diff=15095</id>
		<title>WindowsInstall</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=WindowsInstall&amp;diff=15095"/>
				<updated>2022-06-30T10:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Need_Update}}&lt;br /&gt;
&lt;br /&gt;
How-To install Armadeus Software Development Kit for Window$&lt;br /&gt;
&lt;br /&gt;
The toolchain can also be built on a windows system. To do this, VMWare(a virtualization tool) has to be installed first.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Window$ installation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Be sure to have at least 3Go on, your hard disk before starting the installation&lt;br /&gt;
&amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Install VMWare workstation for evaluation: http://www.vmware.com/download/&lt;br /&gt;
Remark: you need to be registered to download the evaluation... &lt;br /&gt;
&lt;br /&gt;
*Download an Ubuntu ISO distribution (eg: Feisty) and burn a CD&lt;br /&gt;
*Start VMWare and create a new virtual machine (File-&amp;gt;New)&lt;br /&gt;
*Configure the virtual machine (memory space, RAM...)&lt;br /&gt;
*Place the Ubuntu ISO CD in the drive&lt;br /&gt;
*Start the virtual machine&lt;br /&gt;
*Once the Ubuntu desktop appears, click install&lt;br /&gt;
*At the end of the installation, quit Ubuntu (shutdown)&lt;br /&gt;
*Now you have a complete Linux OS.&lt;br /&gt;
Linux can be started by double clicking on the .vmx file.&lt;br /&gt;
&lt;br /&gt;
As the VMWare workstation is only valid a few weeks, you will need to install the VMWare player which is free (http://www.vmware.com/download/player/). &lt;br /&gt;
&lt;br /&gt;
Depending on the linux distribution you have installed, several packages have to be installed before compiling the Armadeus package. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Take a look at the [[LinuxInstall]] for the rest of the procedure.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cygwin user ONLY==&lt;br /&gt;
&lt;br /&gt;
Choose the default installation (nothing to modify) and add the following packages by clicking one time on the &amp;quot;skip&amp;quot; icon:&lt;br /&gt;
* devel  -&amp;gt; automake&lt;br /&gt;
* devel  -&amp;gt; binutils&lt;br /&gt;
* devel  -&amp;gt; bison&lt;br /&gt;
* devel  -&amp;gt; flex&lt;br /&gt;
* devel  -&amp;gt; gcc-core&lt;br /&gt;
* devel  -&amp;gt; gcc-g++&lt;br /&gt;
* devel  -&amp;gt; gdb&lt;br /&gt;
* devel  -&amp;gt; gettext-devel&lt;br /&gt;
* devel  -&amp;gt; libncurses-devel&lt;br /&gt;
* devel  -&amp;gt; make&lt;br /&gt;
* devel  -&amp;gt; patchutils&lt;br /&gt;
* devel  -&amp;gt; subversion &lt;br /&gt;
* python -&amp;gt; python an interactive interpreter&lt;br /&gt;
* system -&amp;gt; util-linux&lt;br /&gt;
* web    -&amp;gt; wget&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Open a cygwin shell and follow this procedure:&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* If you are a user:&lt;br /&gt;
then download the installation archive from [gitlab https://gitlab.com/armadeus/armadeus-bsp/-/tags] and detar it wherever you want.&lt;br /&gt;
 $ tar xjvf armadeusArchiveName.tar.bz2&lt;br /&gt;
* If you are a registered developper:&lt;br /&gt;
In cygwin, check out the required files from the SVN repository:&lt;br /&gt;
 $ git clone git://git.code.sf.net/p/armadeus/code armadeus armadeus&lt;br /&gt;
A directory named armadeus/ will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Remarks&amp;lt;/strong&amp;gt;: &lt;br /&gt;
*The armadeus directory has to be placed within the cygwin directory&lt;br /&gt;
*&amp;lt;strong&amp;gt;Do not use spaces&amp;lt;/strong&amp;gt; in the directory name !&lt;br /&gt;
*Write access are limited to the integrators&lt;br /&gt;
&lt;br /&gt;
* If it is your &amp;lt;strong&amp;gt;first toolchain installation&amp;lt;/strong&amp;gt; , the following script has to be executed in order to patch some cygwin files and add the required fake user for the rootfs generation  &lt;br /&gt;
 $ ./armadeus/host/patches/cygwin/run&lt;br /&gt;
&lt;br /&gt;
==Configure Armadeus software==&lt;br /&gt;
 $ cd armadeus/&lt;br /&gt;
 $ make menuconfig  (or just make the first time).&lt;br /&gt;
This will launch the buildroot configuration.&lt;br /&gt;
in Board Support Option menu, select your armadeus board (apf/apm9328), the RAM size (16/32MB) and so on... &lt;br /&gt;
* If you need the LIBSTD C++, add this in the menuconfig/toolchain options/additional gcc options: &lt;br /&gt;
--disable-libstdcxx-pch. This will disable the use of the precompiler headers&lt;br /&gt;
* Exit the configuration tool and save your config&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain is built automatically. During this procedure, several files are downloaded from the web. Please wait for a while.... it takes at least one hour for the first run!&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
* none for the moment :)&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory armadeus/software/buildroot:&lt;br /&gt;
&lt;br /&gt;
* '''u-boot.brec''' (can be used with the bootstrap, if U-Boot is not installed or not working, see [[BootLoader]] page)&lt;br /&gt;
* '''u-boot.bin''' (for download with uboot, see [[BootLoader]] &amp;quot;Update u-boot&amp;quot; page)&lt;br /&gt;
* '''linux-kernel-2.6.xx-arm.bin''' (for download with uboot, see InstallLinux)&lt;br /&gt;
* '''rootfs.arm.jffs2''' (for download with uboot, see InstallFileSystem?)&lt;br /&gt;
* '''rootfs.arm.tar''' (for an nfsroot, see RootNFS?)&lt;br /&gt;
&lt;br /&gt;
==To keep your copy up-to-date within the armadeus tree==&lt;br /&gt;
 $ svn update&lt;br /&gt;
This will update your working directory to the latest release.&lt;br /&gt;
&lt;br /&gt;
Note: if &amp;quot;svn update&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;
 $ svn update&lt;br /&gt;
&lt;br /&gt;
You can do a:&lt;br /&gt;
 $ make defconfig&lt;br /&gt;
to have the latest features automatically activated and a &lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
to set again your personnal parameters (SDRAM size...).&lt;br /&gt;
&lt;br /&gt;
You have to do a '''make''' to rebuild binary files end 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:&lt;br /&gt;
 $ make dirclean&lt;br /&gt;
 $ rm -rf software/buildroot&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ svn update&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=LinuxInstall&amp;diff=15094</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=LinuxInstall&amp;diff=15094"/>
				<updated>2022-06-30T10:38:44Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Get Armadeus software */&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 Lenny (5.0),  Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)&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  Lucid Lynx (10.04) (32 &amp;amp; 64bits), 12.04 LTS (32 &amp;amp; 64bits), 13.10 (32 &amp;amp; 64bits), 14.04, 15.04 &amp;amp; 16.04&lt;br /&gt;
* LUbuntu 17.10&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 - 12.3&lt;br /&gt;
&lt;br /&gt;
'''The installation may fail on:'''&lt;br /&gt;
* Ubuntu Karmic Koala (9.10): tslib fails to build&lt;br /&gt;
&lt;br /&gt;
'''APF28 requirements:'''&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;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a ''make'' version '''greater or equal to''' 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 '''strictly''' 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'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;
* '''If you are a &amp;quot;careful&amp;quot; user''', then download [https://gitlab.com/armadeus/armadeus-bsp/-/tags the latest stable installation tarball from gitlab] 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-7.0.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* '''If you want the latest snapshot or if you have an [[OPOS6UL]]''', 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@gitlab.com:armadeus/armadeus-bsp.git armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* depending on your previous choice, a directory named ''armadeus/'' or ''armadeus-7.0/'' will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* '''Do not use spaces''' in the directory name !&lt;br /&gt;
* '''Do not use a directory path beginning with /usr.''' 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:SebastienSz|SebastienSz]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]], [[User:SebastienR|SebastienR]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK/BSP options==&lt;br /&gt;
{{Note|If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: [[Releases]]}}&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-7.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'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 apf6_defconfig apf6legacy_defconfig opos6ul_defconfig opos6ulnano_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Note| To get the full list of available config just type make, it will download buildroot and print following message :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make&lt;br /&gt;
[...]&lt;br /&gt;
 System not configured. Use make &amp;lt;board&amp;gt;_defconfig &lt;br /&gt;
 armadeus valid configurations are:                &lt;br /&gt;
     opos6ul_legacy_defconfig opos6ulnano-preempt-rt_defconfig apf6_defconfig pps_defconfig opos6ultest_defconfig apf51_defconfig opos6ulsp_defconfig apf6dawnsmalllinux_defconfig apf27preempt-rt_defconfig apf27test_defconfig apf27_defconfig apf28legacytest_defconfig opos6ullegacy-4.14_defconfig opos6ulnano_defconfig apf28legacy_defconfig apf6mainline-4.19_defconfig opos6ul_defconfig apf6legacy_defconfig apf6xenomai_defconfig apf51test_defconfig opos6ul-preempt-rt_defconfig apf6legacy-preempt-rt_defconfig apf6legacy-4.1_defconfig pps51_defconfig apf6mainline-4.9_defconfig apf28test_defconfig apf28_defconfig apf6mediacenter_defconfig opos6ullegacy-4.9_defconfig opos6ul_recovery_defconfig apf6failsafe_defconfig apf6test_defconfig opos6ullegacy-4.1_defconfig apf27xenomai_defconfig&lt;br /&gt;
                                                   &lt;br /&gt;
Makefile:129: recipe for target '/usr/local/projects/apf6_sp_419/buildroot/.configured' failed&lt;br /&gt;
make: *** [/usr/local/projects/apf6_sp_419/buildroot/.configured] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For PPS boards, please see [[APF27_PPS]] or [[PPS51]] Wiki pages, as these boards have 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 during the following steps, at any time, you can reload the default configuration with:&lt;br /&gt;
 $ make xxx_defconfig       (xxx depending on your module name)}}&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 ('''if needed'''; by default BSP is configured for the minimal memory configuration available on the corresponding 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;
: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;
:For [[APF6]]/[[APF6SP]] The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.&lt;br /&gt;
:For [[OPOS6UL]]/[[OPOS6UL_NANO]] The memory size is automatically detected so you don't care ;-)&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;    (0) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.&lt;br /&gt;
&lt;br /&gt;
* During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the ''armadeus/downloads/'' directory. '''If you have several views or plan to build the toolchain several times''', we advise you to put all the downloaded files in ''/local/downloads'' (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_download.png]]&lt;br /&gt;
{{Note|Of course, ''/local/downloads'' should exists on your system and you should have writing rights on it !}}&lt;br /&gt;
* In recent Buildroot you can also use the following method:&lt;br /&gt;
 export BR2_DL_DIR=/local/downloads&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you to copy all the files in ''downloads/'' / ''/local/downloads'' on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.&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;
'''Please wait for a while.... it takes at least one hour for the first run!'''&amp;lt;br&amp;gt;&lt;br /&gt;
By default, the downloaded files/tarball are put in the ''armadeus/downloads/'' 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 ''buildroot/output/images'':&lt;br /&gt;
*''apf9328-u-boot.brec'' (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;
*''xxx-u-boot.bin'': U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*''xxx-linux.bin'': Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*''xxx-rootfs.jffs2'': JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*''xxx-rootfs.ubi'' (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;
*''xxx-rootfs.ext4'': EXT4 filesystem/rootfs image to use with U-Boot, (on [[APF6]] and [[OPOS6UL]])&lt;br /&gt;
*''xxx-rootfs.tar'': 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;
'''Please note the new naming convention of binary files and directories (since Armadeus 4.0)'''&lt;br /&gt;
&lt;br /&gt;
*''buildroot/output/build'': contains all the build results for target root filesystem, Linux, Busybox and U-Boot...&lt;br /&gt;
*''buildroot/output/toolchain/'': cross compilation toolchain's build dir. Binaries usable for cross-compilation are in ''buildroot/output/host/usr/bin''.&lt;br /&gt;
*''buildroot/output/target/'': 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'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: '' ''buildroot/binaries/XX/'' (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;
==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 '''make''' 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>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Bugs&amp;diff=15093</id>
		<title>Bugs</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Bugs&amp;diff=15093"/>
				<updated>2022-06-30T10:36:26Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* List of known bugs and others problems reported */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==List of known bugs and others problems reported==&lt;br /&gt;
* If you want a day by day view on all the '''OPEN''' bugs currently reported, please consult the project repository on gitlab:&lt;br /&gt;
**https://gitlab.com/armadeus/armadeus-bsp/-/issues&lt;br /&gt;
* To have the list of bugs &amp;amp; workaround (if any) per Release:&lt;br /&gt;
** [[Releases]]&lt;br /&gt;
&lt;br /&gt;
== (Very) Old releases ==&lt;br /&gt;
* Armadeus release 2.2&lt;br /&gt;
* Armadeus release 2.0&lt;br /&gt;
&lt;br /&gt;
CCache seems to make some troubles for the moment:&lt;br /&gt;
During a second buildroot compiling, the compiler does not use the right Linux&lt;br /&gt;
headers. This is only visible with packages that needs system dependent headers.&lt;br /&gt;
(ex: compile a new buildroot and then do a make menuconfig and select additional package:&lt;br /&gt;
''utils-linux'' and then compile again. ...... this will not work ). &lt;br /&gt;
&lt;br /&gt;
'''workaround:''' Disable ccache for the moment &lt;br /&gt;
&lt;br /&gt;
* Armadeus release 1.6&lt;br /&gt;
&lt;br /&gt;
If project is compiled twice then jffs2 generation of rootfs can fail&lt;br /&gt;
&lt;br /&gt;
'''workaround:''' do the compilation in a new shell.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=FAQ&amp;diff=15092</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=FAQ&amp;diff=15092"/>
				<updated>2022-06-30T10:34:54Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Armadeus Project&amp;quot; intended for ?===&lt;br /&gt;
The goal of this project is to allow everyone to easily develop embedded Open Source systems.&lt;br /&gt;
When all the embedded systems in the world will run open source software, life will be better ;-)&lt;br /&gt;
&lt;br /&gt;
===How do I get help ?===&lt;br /&gt;
First take a look at the whole Wiki. If you can't find help contact us directly: [[Help:Contents]]. If you are located in France, we have members in Besançon, Montbéliard &amp;amp; Mulhouse who can provide help. For Swiss members, we can provide help in Basel, Lausanne &amp;amp; Zürich.&lt;br /&gt;
&lt;br /&gt;
=== Why are there http://armadeus.org and http://armadeus.com ? Is there a company backing/hiding behind the project? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://armadeus.com&amp;gt; is the webpage dedicated to Armadeus Systems. &amp;lt;br&amp;gt; &lt;br /&gt;
The company develops and produces the main boards which are then available at a discount price to the association members (non commercial usage only!). &lt;br /&gt;
&lt;br /&gt;
Historically the Armadeus Project (association) was founded before Armadeus Systems (company).  &amp;lt;br&amp;gt;&lt;br /&gt;
After one year of existence we realized that it was quite impossible to achieve our goals without investing more time and more cash. That's why the company was founded.&lt;br /&gt;
&lt;br /&gt;
The association was started for our own pleasure and also to help universities and enthusiasts develop Linux embedded systems.  &amp;lt;br&amp;gt;&lt;br /&gt;
It is a non profit association and works mostly on founders' free time.&lt;br /&gt;
&lt;br /&gt;
The developments (hardware/firmware/software) performed within the association are under GPL/LGPL licence.  &amp;lt;br&amp;gt;&lt;br /&gt;
The hardware funded by the association can not be used in a commercial product.&lt;br /&gt;
&lt;br /&gt;
=== Is there some rule to respect to contribute to the wiki? ===&lt;br /&gt;
Yes there are few rules that help you to contribute to update the wiki there:  [[WritingRules |HowTo write articles for armadeus wiki]]  &lt;br /&gt;
&lt;br /&gt;
==Hardware Questions==&lt;br /&gt;
===Are the Armadeus boards RoHS compliant ?===&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
===I have an APF27 kit and my 7&amp;quot; Chimei LW700 LCD is blinking (RGB colors), what can I do ?===&lt;br /&gt;
You're probably running an old (&amp;lt; 3.3) Armadeus BSP release and so default LCD is Sharp LQ043. You have to change your Linux configuration to support your LCD. Please follow instructions on [[FrameBuffer|this page]].&lt;br /&gt;
&lt;br /&gt;
== Gateware Questions (FPGA) ==&lt;br /&gt;
&lt;br /&gt;
=== My bitstream break my APF ===&lt;br /&gt;
&lt;br /&gt;
If you are using ISE13.x or upper, there is a bug loading script TCL file. When design is generated by POD, a script is sourced to make bitstream (myproject.tcl), the source commande ignore the constraint file (ucf) and FPGA pinout is done randomly. To avoid this, once tcl script sourced, re-run all design.&lt;br /&gt;
&lt;br /&gt;
==Software Questions==&lt;br /&gt;
===Where are the sources ?===&lt;br /&gt;
&lt;br /&gt;
We have a project on gitlab : https://gitlab.com/armadeus/armadeus-bsp&lt;br /&gt;
&lt;br /&gt;
===What are the performances of your board ?===&lt;br /&gt;
[[Performances | Wiki page talking about board performances]]&lt;br /&gt;
&lt;br /&gt;
===How do I get help/support===&lt;br /&gt;
[[Help:Contents]]&lt;br /&gt;
&lt;br /&gt;
=== How to register my interrupt routine in Linux application ? ===&lt;br /&gt;
[[How to register my interrupt routine in Linux application ?]]&lt;br /&gt;
&lt;br /&gt;
=== How to launch my application at startup ? ===&lt;br /&gt;
See [[Automatically_launch_your_application | Automatically launch your application]] page.&lt;br /&gt;
&lt;br /&gt;
===U-Boot seems ok but prints: *** Warning - bad CRC, using default environment - Is there something wrong?=== &lt;br /&gt;
Everything is ok. It is an U-Boot feature that happens if the environment partition is empty.&amp;lt;br&amp;gt;&lt;br /&gt;
Please read the U-Boot FAQ on this issue: http://www.denx.de/wiki/view/DULG/WarningBadCRCUsingDefaultEnvironment&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|FAQ|FAQ|FAQ}}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15073</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15073"/>
				<updated>2022-02-21T08:37:25Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Le Dockerfile Armadeus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancé avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciels à télécharger et installer. Le problème des containers c'est que rien n'est enregistré, donc à chaque fois qu'on lance le container avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc indispensable d'ajouter les commandes de mise à jour des packages dans le `Dockerfile`. Heureusement, Armadeus propose un script pour ça dans son BSP comme nous allons le voir par la suite.&lt;br /&gt;
&lt;br /&gt;
== Montage de répertoires «host» ==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;br /&gt;
&lt;br /&gt;
== Le Dockerfile Armadeus ==&lt;br /&gt;
&lt;br /&gt;
Armadeus fourni le [https://sourceforge.net/p/armadeus/code/ci/master/tree/scripts/docker/apf27-ubuntu-12.04/ Dockerfile pour compiler l'apf27]. Le script se trouve dans le répertoire `scripts/docker/apf27-ubuntu-12.04` du bsp. Un fichier README.md donne la marche à suivre pour le construire et le lancer.&lt;br /&gt;
&lt;br /&gt;
Pour construire le container, il suffit de se rendre dans le répertoire et de taper la commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15072</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15072"/>
				<updated>2022-02-21T08:32:19Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Construction d'un container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancé avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciels à télécharger et installer. Le problème des containers c'est que rien n'est enregistré, donc à chaque fois qu'on lance le container avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc indispensable d'ajouter les commandes de mise à jour des packages dans le `Dockerfile`. Heureusement, Armadeus propose un script pour ça dans son BSP comme nous allons le voir par la suite.&lt;br /&gt;
&lt;br /&gt;
== Montage de répertoires «host» ==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;br /&gt;
&lt;br /&gt;
== Le Dockerfile Armadeus ==&lt;br /&gt;
&lt;br /&gt;
Armadeus fourni le Dockerfile pour compiler l'apf27, il suffit donc de le construire en se rendant dans le répertoire `scripts/docker/apf27-ubuntu-12.04` du bsp. Un fichier README.md donne la marche à suivre pour le construire et le lancer.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15071</id>
		<title>Template:DernièresNouvelles</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15071"/>
				<updated>2022-02-21T08:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* 18 Février 2022: Container docker pour vieux BSP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====18 Février 2022: Container docker pour vieux BSP=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[2022_02_18_Container_docker_pour_vieux_BSP| Comment utiliser une vieille distribution Linux sur un ordinateur récent pour pouvoir compiler le BSP pour apf27 en toute tranquilité]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====7 Août 2018: La nouvelle version [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_7.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux SoM [[OPOS6UL]] et [[OPOS6UL_NANO]] et finalise la mise à jour vers Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====11 Août 2015: La nouvelle version [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_6.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux modules Armadeus ([[APF6]] et [[APF6_SP]]) et finalise la mise à jour vers Buildroot 2015.02 et U-Boot 2014.07+. Elle améliore aussi le support pour les noyaux Linux vanilla (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====25 Décembre 2013: La nouvelle version [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.3_.28latest_stable_one.29| version]] finalise la mise à jour vers Buildroot 2013.05 et U-Boot 2013.04. Elle ajoute aussi le support pour les noyaux Linux vanilla (3.1x). L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-3-du-bsp-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Octobre 2012: Nouvelle version du logiciel Armadeus: [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]] est disponible=====&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.2_.28latest_stable_one.29| version]] ajoute de nouvelles fonctionnalitées a la carte [[APF28]] , corrige un probleme sur l interface wifi de la carte PPS et ajoute plusieurs ameliorations au logiciel Armadeus &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Août 2012: La release Armadeus 5.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support stable de l'[[APF28]], BR 2012.02, U-Boot 2012.04. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-0-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====27 Janvier 2012: La release Armadeus 4.1 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le pré-support (vraiment expérimental) de l'[[APF28]], BR 2011.05, une meilleure intégration de BR, Linux 3.0 pour APF51 et de nouveaux packages orientés automatisation industrielle. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-4-1-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Certains membres d'Armadeus Project tiendront un stand (71) aux RMLL 2011 à Strasbourg  (du 11 au 14 Juillet)=====&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====9 Juillet 2011: La release Armadeus 4.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour l'[[APF51]] , BR 2010.11 et continue le travail d'intégration (expérimental) de Linux 2.6.38 pour APF27/PPS et APF9328.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-40-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Mai 2011: Le module [[APF51]] et sa carte d'accueil [[APF51Dev]] sont disponibles=====&lt;br /&gt;
Ces nouvelles cartes surpuissantes ( ;-) ) sont disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====3 Mars 2011: [[Release_3.4|La release Armadeus 3.4]] est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour la carte d'accueil [[APF27_PPS]] et continue le travail d'intégration (expérimental) de Linux 2.6.38 et Buildroot 2010.xx.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version 34-du- projet-armadeus]. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====30 Juillet 2010: [[Release_3.3|La release Armadeus 3.3]] est sortie=====&lt;br /&gt;
Cette nouvelle release améliore le support pour l'[[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, ajoute Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (expérimental), etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2010/08/24/27281.html].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Janvier 2010: La carte APW est disponible=====&lt;br /&gt;
La nouvelle carte [[Wireless_extension_board|APW]] (extension &amp;quot;Wireless&amp;quot; pour l'APF27) est disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Décembre 2009: [[Release_3.2|La release Armadeus 3.2]] est sortie=====&lt;br /&gt;
La nouvelle release Armadeus 3.2 améliore le support [[APF27]], ajoute un écran 7 pouces, de nouveaux packages (pygame, xenomai, etc...), migration svn vers git, etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2009/12/02/26228.html]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====29 Juin 2009: La release Armadeus 3.1 est sortie, suivant la disponibilité des [[APF27Dev|APF27DevFull]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.1 supporte désormais Linux 2.6.29, GDB 6.7.1, la sortie HDMI de l'APF27DevFull, le FPGA de l'APF27 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à [http://sourceforge.net/project/showfiles.php?group_id=122057 l'endroit habituel.]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Février 2009: La release [[Armadeus 3]] est sortie, juste après les [[APF27]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.0 supporte la nouvelle carte d'Armadeus Systems ([[APF27]]), Linux 2.6.27, GCC 4.2.1, U-Boot 1.3.4 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à l'endroit habituel: http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 Mai 2008: Les cartes DevFull sont arrivées=====&lt;br /&gt;
Les cartes de développement [[APF9328DevFull|DevFull]] sont désormais produites et seront bientôt en vente à tarif préférentiel (pour les membres d'Armadeus Project) dans le [http://www.store.armadeus.com/index.php?language=fr magasin en ligne d'armadeus systems]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: Des cartes APF9328 ont été reçues &amp;amp; les premiers prototypes de DevFull sont en test=====&lt;br /&gt;
Toutes les cartes sont désormais disponibles. Le DevFull fonctionne bien et sera vraisemblablement disponible vers la fin de l'année.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Juin 2007: Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328 :-( !=====&lt;br /&gt;
Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328. Date de livraison: fin Juin ??&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Mar. 2007: des DevLight et des LCD_Adapt ont été commandées !=====&lt;br /&gt;
De nouvelles DevLight ont été commandées ! Date de livraison: semaine 17/18 (mi-Avril)&lt;br /&gt;
&lt;br /&gt;
Les LCD_Adapter ont été commandées aussi. Date de livraison: semaine 18/19&lt;br /&gt;
&lt;br /&gt;
=====22 Mars 2007: Rupture de stock sur les DevLight=====&lt;br /&gt;
Devant l'arrivée massive de nouveaux membres, nous sommes en rupture de stock de DevLight. De nouvelles cartes ont été commandées mais elles ne seront disponibles que mi-Avril.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====01 Mars 2007: Article dans GLMF=====&lt;br /&gt;
Le magazine français GNU/Linux Magazine France (Linux Mag) a publié ce mois-ci notre article de présentation de l'association&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Fev. 2007: ça y est la V2.0 est sortie !=====&lt;br /&gt;
La version 2.0 est (enfin ;-) ) disponible. Pour la charger, RDV sur Sourceforge... Maintenant les choses sérieuses vont pouvoir commencer !&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: Les APF DevLight sont prêtes !=====&lt;br /&gt;
&lt;br /&gt;
Nous pouvons désormais accueillir 50 nouveaux membres ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: Les cartes APF DevLight seront bientôt là=====&lt;br /&gt;
Les cartes DevLight (de développement) sont en cours de production et seront disponibles fin Octobre. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: Les cartes APF DevLight sont commandées=====&lt;br /&gt;
Nico a commandé 50 cartes APF DevLight aujourd'hui. Elles devraient arriver mi-Octobre. Elles permettront à un plus grand nombre de personnes de rejoindre le projet bientôt ! :-). &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Le Wiki et le site Web sont presques prêts=====&lt;br /&gt;
250 ans (et quelques mois) après la naissance de notre idole Wolfgang, un nouveau génie est apparu sur Terre: le projet Armadeus... ;-) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:DernièresNouvelles|Voir toutes les nouvelles]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15070</id>
		<title>Template:DernièresNouvelles</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15070"/>
				<updated>2022-02-21T08:27:37Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* 18 Février 2022: Container docker pour vieux BSP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====18 Février 2022: Container docker pour vieux BSP=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[2022_02_18_Container_docker_pour_vieux_BSP| Comment utiliser une vieille distribution Linux sur un ordinateur récent pour pouvoir compiler le BSP pour apf27 en toute tranquilité]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====7 Août 2018: La nouvelle version [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_7.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux SoM [[OPOS6UL]] et [[OPOS6UL_NANO]] et finalise la mise à jour vers Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====11 Août 2015: La nouvelle version [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_6.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux modules Armadeus ([[APF6]] et [[APF6_SP]]) et finalise la mise à jour vers Buildroot 2015.02 et U-Boot 2014.07+. Elle améliore aussi le support pour les noyaux Linux vanilla (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====25 Décembre 2013: La nouvelle version [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.3_.28latest_stable_one.29| version]] finalise la mise à jour vers Buildroot 2013.05 et U-Boot 2013.04. Elle ajoute aussi le support pour les noyaux Linux vanilla (3.1x). L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-3-du-bsp-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Octobre 2012: Nouvelle version du logiciel Armadeus: [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]] est disponible=====&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.2_.28latest_stable_one.29| version]] ajoute de nouvelles fonctionnalitées a la carte [[APF28]] , corrige un probleme sur l interface wifi de la carte PPS et ajoute plusieurs ameliorations au logiciel Armadeus &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Août 2012: La release Armadeus 5.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support stable de l'[[APF28]], BR 2012.02, U-Boot 2012.04. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-0-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====27 Janvier 2012: La release Armadeus 4.1 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le pré-support (vraiment expérimental) de l'[[APF28]], BR 2011.05, une meilleure intégration de BR, Linux 3.0 pour APF51 et de nouveaux packages orientés automatisation industrielle. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-4-1-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Certains membres d'Armadeus Project tiendront un stand (71) aux RMLL 2011 à Strasbourg  (du 11 au 14 Juillet)=====&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====9 Juillet 2011: La release Armadeus 4.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour l'[[APF51]] , BR 2010.11 et continue le travail d'intégration (expérimental) de Linux 2.6.38 pour APF27/PPS et APF9328.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-40-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Mai 2011: Le module [[APF51]] et sa carte d'accueil [[APF51Dev]] sont disponibles=====&lt;br /&gt;
Ces nouvelles cartes surpuissantes ( ;-) ) sont disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====3 Mars 2011: [[Release_3.4|La release Armadeus 3.4]] est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour la carte d'accueil [[APF27_PPS]] et continue le travail d'intégration (expérimental) de Linux 2.6.38 et Buildroot 2010.xx.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version 34-du- projet-armadeus]. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====30 Juillet 2010: [[Release_3.3|La release Armadeus 3.3]] est sortie=====&lt;br /&gt;
Cette nouvelle release améliore le support pour l'[[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, ajoute Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (expérimental), etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2010/08/24/27281.html].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Janvier 2010: La carte APW est disponible=====&lt;br /&gt;
La nouvelle carte [[Wireless_extension_board|APW]] (extension &amp;quot;Wireless&amp;quot; pour l'APF27) est disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Décembre 2009: [[Release_3.2|La release Armadeus 3.2]] est sortie=====&lt;br /&gt;
La nouvelle release Armadeus 3.2 améliore le support [[APF27]], ajoute un écran 7 pouces, de nouveaux packages (pygame, xenomai, etc...), migration svn vers git, etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2009/12/02/26228.html]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====29 Juin 2009: La release Armadeus 3.1 est sortie, suivant la disponibilité des [[APF27Dev|APF27DevFull]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.1 supporte désormais Linux 2.6.29, GDB 6.7.1, la sortie HDMI de l'APF27DevFull, le FPGA de l'APF27 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à [http://sourceforge.net/project/showfiles.php?group_id=122057 l'endroit habituel.]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Février 2009: La release [[Armadeus 3]] est sortie, juste après les [[APF27]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.0 supporte la nouvelle carte d'Armadeus Systems ([[APF27]]), Linux 2.6.27, GCC 4.2.1, U-Boot 1.3.4 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à l'endroit habituel: http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 Mai 2008: Les cartes DevFull sont arrivées=====&lt;br /&gt;
Les cartes de développement [[APF9328DevFull|DevFull]] sont désormais produites et seront bientôt en vente à tarif préférentiel (pour les membres d'Armadeus Project) dans le [http://www.store.armadeus.com/index.php?language=fr magasin en ligne d'armadeus systems]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: Des cartes APF9328 ont été reçues &amp;amp; les premiers prototypes de DevFull sont en test=====&lt;br /&gt;
Toutes les cartes sont désormais disponibles. Le DevFull fonctionne bien et sera vraisemblablement disponible vers la fin de l'année.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Juin 2007: Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328 :-( !=====&lt;br /&gt;
Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328. Date de livraison: fin Juin ??&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Mar. 2007: des DevLight et des LCD_Adapt ont été commandées !=====&lt;br /&gt;
De nouvelles DevLight ont été commandées ! Date de livraison: semaine 17/18 (mi-Avril)&lt;br /&gt;
&lt;br /&gt;
Les LCD_Adapter ont été commandées aussi. Date de livraison: semaine 18/19&lt;br /&gt;
&lt;br /&gt;
=====22 Mars 2007: Rupture de stock sur les DevLight=====&lt;br /&gt;
Devant l'arrivée massive de nouveaux membres, nous sommes en rupture de stock de DevLight. De nouvelles cartes ont été commandées mais elles ne seront disponibles que mi-Avril.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====01 Mars 2007: Article dans GLMF=====&lt;br /&gt;
Le magazine français GNU/Linux Magazine France (Linux Mag) a publié ce mois-ci notre article de présentation de l'association&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Fev. 2007: ça y est la V2.0 est sortie !=====&lt;br /&gt;
La version 2.0 est (enfin ;-) ) disponible. Pour la charger, RDV sur Sourceforge... Maintenant les choses sérieuses vont pouvoir commencer !&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: Les APF DevLight sont prêtes !=====&lt;br /&gt;
&lt;br /&gt;
Nous pouvons désormais accueillir 50 nouveaux membres ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: Les cartes APF DevLight seront bientôt là=====&lt;br /&gt;
Les cartes DevLight (de développement) sont en cours de production et seront disponibles fin Octobre. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: Les cartes APF DevLight sont commandées=====&lt;br /&gt;
Nico a commandé 50 cartes APF DevLight aujourd'hui. Elles devraient arriver mi-Octobre. Elles permettront à un plus grand nombre de personnes de rejoindre le projet bientôt ! :-). &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Le Wiki et le site Web sont presques prêts=====&lt;br /&gt;
250 ans (et quelques mois) après la naissance de notre idole Wolfgang, un nouveau génie est apparu sur Terre: le projet Armadeus... ;-) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:DernièresNouvelles|Voir toutes les nouvelles]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15069</id>
		<title>Template:DernièresNouvelles</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Template:Derni%C3%A8resNouvelles&amp;diff=15069"/>
				<updated>2022-02-18T16:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=====18 Février 2022: Container docker pour vieux BSP=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[2022_02_18_Container_docker_pour_vieux_BSP| Comment utiliser une vieille distribution Linux pour pouvoir compiler le BSP pour apf27 en toute tranquilité]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=====7 Août 2018: La nouvelle version [[Releases#Release_7.0_.28latest_stable_one.29|Armadeus 7.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_7.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux SoM [[OPOS6UL]] et [[OPOS6UL_NANO]] et finalise la mise à jour vers Buildroot 2017.02.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====11 Août 2015: La nouvelle version [[Releases#Release_6.0_.28latest_stable_one.29|Armadeus 6.0]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_6.0_.28latest_stable_one.29| version]] ajoute le support des nouveaux modules Armadeus ([[APF6]] et [[APF6_SP]]) et finalise la mise à jour vers Buildroot 2015.02 et U-Boot 2014.07+. Elle améliore aussi le support pour les noyaux Linux vanilla (3.19+).&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====25 Décembre 2013: La nouvelle version [[Releases#Release_5.3_.28latest_stable_one.29|Armadeus 5.3]] est disponible=====&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.3_.28latest_stable_one.29| version]] finalise la mise à jour vers Buildroot 2013.05 et U-Boot 2013.04. Elle ajoute aussi le support pour les noyaux Linux vanilla (3.1x). L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-3-du-bsp-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Octobre 2012: Nouvelle version du logiciel Armadeus: [[Releases#Release_5.2_.28latest_stable_one.29|Armadeus 5.2]] est disponible=====&lt;br /&gt;
Cette nouvelle [[Releases#Release_5.2_.28latest_stable_one.29| version]] ajoute de nouvelles fonctionnalitées a la carte [[APF28]] , corrige un probleme sur l interface wifi de la carte PPS et ajoute plusieurs ameliorations au logiciel Armadeus &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Août 2012: La release Armadeus 5.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support stable de l'[[APF28]], BR 2012.02, U-Boot 2012.04. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-5-0-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====27 Janvier 2012: La release Armadeus 4.1 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le pré-support (vraiment expérimental) de l'[[APF28]], BR 2011.05, une meilleure intégration de BR, Linux 3.0 pour APF51 et de nouveaux packages orientés automatisation industrielle. Plus les corrections de bugs et les améliorations d'utilisation habituelles bien sûr.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-4-1-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====Certains membres d'Armadeus Project tiendront un stand (71) aux RMLL 2011 à Strasbourg  (du 11 au 14 Juillet)=====&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====9 Juillet 2011: La release Armadeus 4.0 est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour l'[[APF51]] , BR 2010.11 et continue le travail d'intégration (expérimental) de Linux 2.6.38 pour APF27/PPS et APF9328.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version-40-du-projet-armadeus].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Mai 2011: Le module [[APF51]] et sa carte d'accueil [[APF51Dev]] sont disponibles=====&lt;br /&gt;
Ces nouvelles cartes surpuissantes ( ;-) ) sont disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====3 Mars 2011: [[Release_3.4|La release Armadeus 3.4]] est sortie=====&lt;br /&gt;
Cette nouvelle release ajoute le support pour la carte d'accueil [[APF27_PPS]] et continue le travail d'intégration (expérimental) de Linux 2.6.38 et Buildroot 2010.xx.&lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/news/sortie-de-la-version 34-du- projet-armadeus]. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====30 Juillet 2010: [[Release_3.3|La release Armadeus 3.3]] est sortie=====&lt;br /&gt;
Cette nouvelle release améliore le support pour l'[[Wireless_extension_board|APW]], WiFi, Bluetooth, GPS, ajoute Qt 4.5.3, BR 2010.05 &amp;amp; U-Boot 2010.03 (expérimental), etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2010/08/24/27281.html].&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Janvier 2010: La carte APW est disponible=====&lt;br /&gt;
La nouvelle carte [[Wireless_extension_board|APW]] (extension &amp;quot;Wireless&amp;quot; pour l'APF27) est disponible dans la boutique en ligne d'Armadeus Systems.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====1er Décembre 2009: [[Release_3.2|La release Armadeus 3.2]] est sortie=====&lt;br /&gt;
La nouvelle release Armadeus 3.2 améliore le support [[APF27]], ajoute un écran 7 pouces, de nouveaux packages (pygame, xenomai, etc...), migration svn vers git, etc... &lt;br /&gt;
L'annonce sur LinuxFr: [http://linuxfr.org/2009/12/02/26228.html]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====29 Juin 2009: La release Armadeus 3.1 est sortie, suivant la disponibilité des [[APF27Dev|APF27DevFull]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.1 supporte désormais Linux 2.6.29, GDB 6.7.1, la sortie HDMI de l'APF27DevFull, le FPGA de l'APF27 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à [http://sourceforge.net/project/showfiles.php?group_id=122057 l'endroit habituel.]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Février 2009: La release [[Armadeus 3]] est sortie, juste après les [[APF27]]=====&lt;br /&gt;
La nouvelle release Armadeus 3.0 supporte la nouvelle carte d'Armadeus Systems ([[APF27]]), Linux 2.6.27, GCC 4.2.1, U-Boot 1.3.4 et une foultitude de nouveautés.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle peut être téléchargée sous forme d'archive à l'endroit habituel: http://sourceforge.net/projects/armadeus&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====20 Mai 2008: Les cartes DevFull sont arrivées=====&lt;br /&gt;
Les cartes de développement [[APF9328DevFull|DevFull]] sont désormais produites et seront bientôt en vente à tarif préférentiel (pour les membres d'Armadeus Project) dans le [http://www.store.armadeus.com/index.php?language=fr magasin en ligne d'armadeus systems]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Sept. 2007: Des cartes APF9328 ont été reçues &amp;amp; les premiers prototypes de DevFull sont en test=====&lt;br /&gt;
Toutes les cartes sont désormais disponibles. Le DevFull fonctionne bien et sera vraisemblablement disponible vers la fin de l'année.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Juin 2007: Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328 :-( !=====&lt;br /&gt;
Des DevLight et des LCD_Adapt ont été reçues, mais nous attendons toujours les APF9328. Date de livraison: fin Juin ??&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====26 Mar. 2007: des DevLight et des LCD_Adapt ont été commandées !=====&lt;br /&gt;
De nouvelles DevLight ont été commandées ! Date de livraison: semaine 17/18 (mi-Avril)&lt;br /&gt;
&lt;br /&gt;
Les LCD_Adapter ont été commandées aussi. Date de livraison: semaine 18/19&lt;br /&gt;
&lt;br /&gt;
=====22 Mars 2007: Rupture de stock sur les DevLight=====&lt;br /&gt;
Devant l'arrivée massive de nouveaux membres, nous sommes en rupture de stock de DevLight. De nouvelles cartes ont été commandées mais elles ne seront disponibles que mi-Avril.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====01 Mars 2007: Article dans GLMF=====&lt;br /&gt;
Le magazine français GNU/Linux Magazine France (Linux Mag) a publié ce mois-ci notre article de présentation de l'association&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====09 Fev. 2007: ça y est la V2.0 est sortie !=====&lt;br /&gt;
La version 2.0 est (enfin ;-) ) disponible. Pour la charger, RDV sur Sourceforge... Maintenant les choses sérieuses vont pouvoir commencer !&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====05 Nov. 2006: Les APF DevLight sont prêtes !=====&lt;br /&gt;
&lt;br /&gt;
Nous pouvons désormais accueillir 50 nouveaux membres ! &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====15 Oct. 2006: Les cartes APF DevLight seront bientôt là=====&lt;br /&gt;
Les cartes DevLight (de développement) sont en cours de production et seront disponibles fin Octobre. &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====12 Sept. 2006: Les cartes APF DevLight sont commandées=====&lt;br /&gt;
Nico a commandé 50 cartes APF DevLight aujourd'hui. Elles devraient arriver mi-Octobre. Elles permettront à un plus grand nombre de personnes de rejoindre le projet bientôt ! :-). &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=====10 Sept. 2006: Le Wiki et le site Web sont presques prêts=====&lt;br /&gt;
250 ans (et quelques mois) après la naissance de notre idole Wolfgang, un nouveau génie est apparu sur Terre: le projet Armadeus... ;-) &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Template:DernièresNouvelles|Voir toutes les nouvelles]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15068</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15068"/>
				<updated>2022-02-18T16:24:38Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Le Dockerfile Armadeus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancer avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciels à télécharger et installer. Le problème des containers c'est que rien n'est enregistré, donc à chaque fois qu'on lance le container avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc indispensable d'ajouter les commandes de mise à jour des packages dans le `Dockerfile`. Heureusement, Armadeus propose un script pour ça dans son BSP comme nous allons le voir par la suite.&lt;br /&gt;
&lt;br /&gt;
== Montage de répertoires «host» ==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;br /&gt;
&lt;br /&gt;
== Le Dockerfile Armadeus ==&lt;br /&gt;
&lt;br /&gt;
Armadeus fourni le Dockerfile pour compiler l'apf27, il suffit donc de le construire en se rendant dans le répertoire `scripts/docker/apf27-ubuntu-12.04` du bsp. Un fichier README.md donne la marche à suivre pour le construire et le lancer.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15067</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15067"/>
				<updated>2022-02-18T16:16:07Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Construction d'un container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancer avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciels à télécharger et installer. Le problème des containers c'est que rien n'est enregistré, donc à chaque fois qu'on lance le container avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc indispensable d'ajouter les commandes de mise à jour des packages dans le `Dockerfile`. Heureusement, Armadeus propose un script pour ça dans son BSP comme nous allons le voir par la suite.&lt;br /&gt;
&lt;br /&gt;
== Montage de répertoires «host» ==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;br /&gt;
&lt;br /&gt;
== Le Dockerfile Armadeus ==&lt;br /&gt;
&lt;br /&gt;
Armadeus fourni le Dockerfile pour compiler l'apf27, il suffit donc de le construire en se rendant dans le répertoire `??` du bsp. Un fichier README.md donne la marche à suivre pour le construire et le lancer.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15066</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15066"/>
				<updated>2022-02-18T16:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Construction d'un container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancer avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciel à télécharger et installer. Le problème des container c'est que rien n'est enregistré, donc à chaque fois qu'on lance le container avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc rapidement indispensable d'ajouter les commande de mise à jour des packages dans le `Dockerfile`. Heureusement, Armadeus propose un script pour ça dans son BSP comme nous allons le voir par la suite.&lt;br /&gt;
&lt;br /&gt;
== Montage de répertoires «host» ==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;br /&gt;
&lt;br /&gt;
== Le Dockerfile Armadeus ==&lt;br /&gt;
&lt;br /&gt;
Armadeus fourni le Dockerfile pour compiler l'apf27, il suffit donc de le construire en se rendant dans le répertoire `??` du bsp. Un fichier README.md donne la marche à suivre pour le construire et le lancer.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15065</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15065"/>
				<updated>2022-02-18T16:07:08Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Construction d'un container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancer avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
$ sudo docker container run -it apf27bsp:0.1 /bin/bash&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get update&lt;br /&gt;
Get:1 http://old-releases.ubuntu.com precise Release.gpg [198 B]&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following extra packages will be installed:&lt;br /&gt;
  libidn11&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  libidn11 wget&lt;br /&gt;
0 upgraded, 2 newly installed, 0 to remove and 27 not upgraded.&lt;br /&gt;
Need to get 392 kB of archives.&lt;br /&gt;
After this operation, 970 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue [Y/n]? y&lt;br /&gt;
...&lt;br /&gt;
root@d6f2e3190f9b:/# cd /opt/&lt;br /&gt;
root@d6f2e3190f9b:/opt# ls&lt;br /&gt;
root@d6f2e3190f9b:/opt# mkdir bsp&lt;br /&gt;
root@d6f2e3190f9b:/opt# cd bsp/&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download --no-check-certificate&lt;br /&gt;
...&lt;br /&gt;
Saving to: `download'&lt;br /&gt;
&lt;br /&gt;
100%[=========================================================================================================================================================================&amp;gt;] 6,572,959   1.87M/s   in 3.8s    &lt;br /&gt;
&lt;br /&gt;
2022-02-18 15:58:54 (1.67 MB/s) - `download' saved [6572959/6572959]&lt;br /&gt;
&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# mv download armadeus-7.0.tar.bz2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# apt-get install bzip2&lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp# tar jxf armadeus-7.0.tar.bz2 &lt;br /&gt;
root@d6f2e3190f9b:/opt/bsp#&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Très vite on se rend compte que nous avons beaucoup de logiciel à télécharger et installer. Le problème des container c'est que rien n'est enregistré, donc à chaque fois qu'on lance le containert avec la commande `run` tout est remis à zéro.&lt;br /&gt;
&lt;br /&gt;
Il devient donc rapidement indispensable d'ajouter les commande de mise à jour des packages dans le `Dockerfile`. Et pour récupérer les fichiers que l'on compile avec le container il va être nécessaire de «monter» un répertoire de son ordinateur dans le container.&lt;br /&gt;
&lt;br /&gt;
Ce montage se fait au lancement du container. Par exemple si nous souhaitons monter le répertoire de téléchargement des packets buildroot ainsi que le répertoire du bsp armadeus nous utiliserons la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
sudo docker run --mount src=/downloads,target=/downloads,type=bind \&lt;br /&gt;
                --mount src=/home/user/prj/armadeusbsp,target=/opt/bsp/,type=bind \&lt;br /&gt;
                -it apf27bsp:1.0 /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous mutualiserons ainsi le répertoires /downloads de notre machine et nous récupérerons les binaires générés à la compilation du bsp dans le container.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15064</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15064"/>
				<updated>2022-02-18T15:52:53Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Lancement de Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;br /&gt;
&lt;br /&gt;
== Construction d'un container ==&lt;br /&gt;
&lt;br /&gt;
Pour construire son propre container, il faut créer un fichier de configuration avec le nom '''Dockerfile'''. Dans lequel on donnera le container de départ :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
#Simple commentaire d'entête&lt;br /&gt;
FROM ubuntu:12.04&lt;br /&gt;
&lt;br /&gt;
# on ajoute les dépots apt encore accessible aujourd'hui&lt;br /&gt;
&lt;br /&gt;
# Sources from https://gist.github.com/ivomts/4558134&lt;br /&gt;
RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp; \&lt;br /&gt;
    echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et on construit le container en lui donnant un nom et une version :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker build -t apf27bsp:0.1 .&lt;br /&gt;
Sending build context to Docker daemon   2.56kB&lt;br /&gt;
Step 1/2 : FROM ubuntu:12.04&lt;br /&gt;
 ---&amp;gt; 5b117edd0b76&lt;br /&gt;
Step 2/2 : RUN echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;  /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;amp;&amp;amp;     echo &amp;quot;deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 ---&amp;gt; Running in 0b854be1e236&lt;br /&gt;
Removing intermediate container 0b854be1e236&lt;br /&gt;
 ---&amp;gt; 9c3cb7850267&lt;br /&gt;
Successfully built 9c3cb7850267&lt;br /&gt;
Successfully tagged apf27bsp:0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le container ainsi construit peut être lancer avec la commande que l'on connaît bien maintenant :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15063</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15063"/>
				<updated>2022-02-18T15:45:31Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Lancement de Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un container existe déjà sur les serveurs docker avec une version minimaliste. En tapant la commande ci-dessus, docker va simplement télécharger le container pour le lancer sur la machine.&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y ré-attacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que l'on se trouve dans la console on peut tenter de télécharger et compiler le bsp armadeus-7.0 par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
root@3264de07ca45:/# cd /opt/&lt;br /&gt;
root@3264de07ca45:/opt# mkdir bsp&lt;br /&gt;
root@3264de07ca45:/opt# cd bsp/&lt;br /&gt;
root@3264de07ca45:/opt/bsp# wget https://sourceforge.net/projects/armadeus/files/armadeus/armadeus-7.0/armadeus-7.0.tar.bz2/download&lt;br /&gt;
bash: wget: command not found&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get install wget&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree       &lt;br /&gt;
Reading state information... Done&lt;br /&gt;
E: Unable to locate package wget&lt;br /&gt;
root@3264de07ca45:/opt/bsp# apt-get update&lt;br /&gt;
Ign http://archive.ubuntu.com precise Release.gpg&lt;br /&gt;
[...]&lt;br /&gt;
E: Some index files failed to download. They have been ignored, or old ones used instead.&lt;br /&gt;
root@3264de07ca45:/opt/bsp# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ach! Très vite on se rend compte que la distribution fournie par docker est bien trop minimaliste pour que l'on puisse travailler avec. Nous allons donc devoir construire notre propre container qui partira de cette distribution pour la customiser.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15062</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15062"/>
				<updated>2022-02-18T15:26:35Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Lancement de Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker ps&lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y réattacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15061</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15061"/>
				<updated>2022-02-18T15:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Compilation du BSP armadeus pour APF27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;br /&gt;
L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.&lt;br /&gt;
&lt;br /&gt;
== Lancement de Docker ==&lt;br /&gt;
&lt;br /&gt;
Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo systemctl start docker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo docker run -it ubuntu:12.04 /bin/bash&lt;br /&gt;
root@1a5b88e1759c:/# cat /etc/lsb-release &lt;br /&gt;
DISTRIB_ID=Ubuntu&lt;br /&gt;
DISTRIB_RELEASE=12.04&lt;br /&gt;
DISTRIB_CODENAME=precise&lt;br /&gt;
DISTRIB_DESCRIPTION=&amp;quot;Ubuntu 12.04.5 LTS&amp;quot;&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 sudo docker ps&lt;br /&gt;
[sudo] password for fabienm: &lt;br /&gt;
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES&lt;br /&gt;
1a5b88e1759c   ubuntu:12.04   &amp;quot;/bin/bash&amp;quot;   2 minutes ago   Up 2 minutes             stoic_noether&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y réattacher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
root@1a5b88e1759c:/# exit&lt;br /&gt;
exit&lt;br /&gt;
$ sudo docker container start stoic_noether&lt;br /&gt;
stoic_noether&lt;br /&gt;
$ sudo docker attach stoic_noether&lt;br /&gt;
root@1a5b88e1759c:/# history&lt;br /&gt;
    1  ls&lt;br /&gt;
    2  top&lt;br /&gt;
    3  cat /etc/lsb-release &lt;br /&gt;
    4  exit&lt;br /&gt;
    5  history&lt;br /&gt;
root@1a5b88e1759c:/# &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15060</id>
		<title>2022 02 18 Container docker pour vieux BSP</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=2022_02_18_Container_docker_pour_vieux_BSP&amp;diff=15060"/>
				<updated>2022-02-18T15:06:40Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;= Introduction =  Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variante...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette.&lt;br /&gt;
Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».&lt;br /&gt;
&lt;br /&gt;
Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : '''la virtualisation légère''', avec notamment le logiciel [https://fr.wikipedia.org/wiki/Docker_(logiciel) docker].&lt;br /&gt;
&lt;br /&gt;
= Docker, la virtualisation légère =&lt;br /&gt;
&lt;br /&gt;
Selon [https://fr.wikipedia.org/wiki/Docker_(logiciel) Wikipedia] Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»&lt;br /&gt;
&lt;br /&gt;
Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.&lt;br /&gt;
&lt;br /&gt;
Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.&lt;br /&gt;
&lt;br /&gt;
= Compilation du BSP armadeus pour APF27 =&lt;br /&gt;
&lt;br /&gt;
L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !&lt;br /&gt;
&lt;br /&gt;
Si l'on veut pouvoir reprendre son  projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=User:FabienM&amp;diff=15059</id>
		<title>User:FabienM</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=User:FabienM&amp;diff=15059"/>
				<updated>2022-02-18T14:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Blog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MemberList | &amp;lt;&amp;lt; liste des membres]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mes petites bidouilles avec l'armadeus =&lt;br /&gt;
&lt;br /&gt;
* [[Une led qui clignote avec le spartan 3]]&lt;br /&gt;
* [[Petits trucs en vrac]]&lt;br /&gt;
* [[Led sensor]]&lt;br /&gt;
* [[vim | The best editor in the world]]&lt;br /&gt;
&lt;br /&gt;
= Trucs =&lt;br /&gt;
&lt;br /&gt;
== Python en environnement virtuel ==&lt;br /&gt;
&lt;br /&gt;
Un pense bète pour installer la version voulue de python en environnement virtuel avec virtualenv:&lt;br /&gt;
&lt;br /&gt;
=== virtualenv et autre tkinter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install python-tk python3-tk tk-dev&lt;br /&gt;
apt-get install python-virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 3.7.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install libffi-dev&lt;br /&gt;
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz&lt;br /&gt;
tar -Jxvf Python-3.7.4.tar.xz&lt;br /&gt;
cd Python-3.7.4&lt;br /&gt;
./configure --enable-shared&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
sudo ldconfig /usr/local/lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== virtualenv ===&lt;br /&gt;
&lt;br /&gt;
* Virtual env configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install python-virtualenv&lt;br /&gt;
mkdir virtenv&lt;br /&gt;
cd virtenv&lt;br /&gt;
virtualenv --python=/usr/local/bin/python3.7 envp37&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enum bug fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/virtenv/envp37/lib/python3.7&lt;br /&gt;
ln -s /usr/local/lib/python3.7/enum.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Activation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source /home/armadeus/virtenv/envp37/bin/activate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Desactivation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= '''P'''eripheral '''O'''n '''D'''emand =&lt;br /&gt;
&lt;br /&gt;
* [[Specification feedback]]&lt;br /&gt;
&lt;br /&gt;
= Participation à la documentation ArmadeuS Project =&lt;br /&gt;
&lt;br /&gt;
* [[How to make a VHDL design in Ubuntu/Debian]]&lt;br /&gt;
* [[How to simulate post synthesis and post place &amp;amp; route design with GHDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Using FPGA]]&lt;br /&gt;
&lt;br /&gt;
* [[A simple design with Wishbone bus]]&lt;br /&gt;
&lt;br /&gt;
* [[How to use kernel 2.6.38.x on APF27]]&lt;br /&gt;
&lt;br /&gt;
== Trash ==&lt;br /&gt;
* [[APF27_FPGA-IMX_interface_description | Description of FPGA-IMX interface for APF27]]&lt;br /&gt;
* [[APF51_FPGA-IMX_interface_description | Description of FPGA-IMX interface for APF51]]&lt;br /&gt;
* [[FPGA | FPGA on APF introduction]]&lt;br /&gt;
* [[FPGA and led | Button and LED]]&lt;br /&gt;
&lt;br /&gt;
== Projets ==&lt;br /&gt;
&lt;br /&gt;
* Camera [[C38A]] with chip ov7620&lt;br /&gt;
* Camera omnivision [[VC21CC1]]&lt;br /&gt;
* [[Robotic]]&lt;br /&gt;
* [[Home monitoring energy | Compteur d'énergie électrique]]&lt;br /&gt;
* [[OOCP]] (Only One Cable Project)&lt;br /&gt;
* [[Use MySQL-client on apf9328]]&lt;br /&gt;
* [[Light-APF27Dev | Light-APF27Dev project ]]&lt;br /&gt;
&lt;br /&gt;
= Liens utiles =&lt;br /&gt;
&lt;br /&gt;
* Projets [http://sourceforge.net/projects/armadeus sourceforge]&lt;br /&gt;
* Site [http://www.armadeus.com/english/index.html entreprise]&lt;br /&gt;
* Les codes de retour d'erreurs : http://www.opengroup.org/onlinepubs/007908799/xsh/errno.h.html&lt;br /&gt;
* [[Buildroot_Packages]]&lt;br /&gt;
* [http://sebsauvage.net/files/20130426_cpp_quovadis2013cppontheweb-130425105424-phpapp01.pdf Un papier très intéressant] d'un développeur de jeux vidéo prônant l'utilisation du C++ ... pour le web. Notamment grâce à l'utilisation de [http://sebsauvage.net/files/20130426_cpp_multiplatformconthewebwithemscripten-130405172545-phpapp01.pdf emscripten] qui permet de compiler du C++ vers le javascript (HTML5).&lt;br /&gt;
&lt;br /&gt;
= Somes usefull tricks =&lt;br /&gt;
== press a button ==&lt;br /&gt;
Here, function to «press enter to continue» on apf in different languages :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
setbit /proc/driver/gpio/portFmode 13 1 # set pin as gpio&lt;br /&gt;
setbit /proc/driver/gpio/portFdir 13 0  # set pin as input&lt;br /&gt;
setbit /proc/driver/gpio/portFirq 13 1  # irq on rising edge&lt;br /&gt;
&lt;br /&gt;
/usr/bin/testsuite/testbutton /dev/gpio/PF13 3 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With ''testbutton'' program comming from&lt;br /&gt;
''target/linux/modules/fpga/wishbone_example/wb_button''. Type «make» in this&lt;br /&gt;
directory to compile it.&lt;br /&gt;
&lt;br /&gt;
== Logging with timestamps in seconds ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
LIGHT=$(cat /sys/class/hwmon/hwmon0/device/in3_input)&lt;br /&gt;
TIME=$(date +%s)&lt;br /&gt;
echo $TIME&amp;quot;, sec, &amp;quot;$LIGHT&amp;quot;, mV,&amp;quot; &amp;gt;&amp;gt; log;&lt;br /&gt;
sleep 2&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Press enter to continue ==&lt;br /&gt;
=== C ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pressEnterToContinue(void)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;Press enter to continue\n&amp;quot;);&lt;br /&gt;
    getc(stdin);//XXX &lt;br /&gt;
    while( getc(stdin) != '\n') ; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt; //XXX&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pressEnterToContinue(void)&lt;br /&gt;
{&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Press enter to continue&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    getc(stdin); //XXX&lt;br /&gt;
    std::cin.ignore( std::numeric_limits &amp;lt;std::streamsize&amp;gt; ::max(), '\n' );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def pressEnterToContinue():&lt;br /&gt;
    print &amp;quot;Press enter to continue&amp;quot;&lt;br /&gt;
    raw_input()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 3 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def pressEnterToContinue():&lt;br /&gt;
    print(&amp;quot;Press enter to continue&amp;quot;)&lt;br /&gt;
    input()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Driver =&lt;br /&gt;
&lt;br /&gt;
* [[IIO kernel driver model]]&lt;br /&gt;
* [[UIO kernel driver model]]&lt;br /&gt;
&lt;br /&gt;
= bac à sable =&lt;br /&gt;
[[Image:dessin.svg]]&lt;br /&gt;
&lt;br /&gt;
* [[APF6_SP_DDR3_PINOUT]]&lt;br /&gt;
* [[APF6_SP The full howto]]&lt;br /&gt;
&lt;br /&gt;
== Wavedrom ==&lt;br /&gt;
&lt;br /&gt;
If [https://github.com/Martoni/mediawiki_wavedrom wavedrom plugin] is installed on this wiki, we can see a beautiful waves bellow :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;clk&amp;quot;,  wave: &amp;quot;p......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;bus&amp;quot;,  wave: &amp;quot;x.34.5x&amp;quot;,   data: &amp;quot;head body tail&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;wire&amp;quot;, wave: &amp;quot;0.1..0.&amp;quot; },&lt;br /&gt;
]}&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Blog =&lt;br /&gt;
&lt;br /&gt;
* [[2022_02_18_Container_docker_pour_vieux_BSP]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=User:FabienM&amp;diff=15058</id>
		<title>User:FabienM</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=User:FabienM&amp;diff=15058"/>
				<updated>2022-02-18T14:29:16Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MemberList | &amp;lt;&amp;lt; liste des membres]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mes petites bidouilles avec l'armadeus =&lt;br /&gt;
&lt;br /&gt;
* [[Une led qui clignote avec le spartan 3]]&lt;br /&gt;
* [[Petits trucs en vrac]]&lt;br /&gt;
* [[Led sensor]]&lt;br /&gt;
* [[vim | The best editor in the world]]&lt;br /&gt;
&lt;br /&gt;
= Trucs =&lt;br /&gt;
&lt;br /&gt;
== Python en environnement virtuel ==&lt;br /&gt;
&lt;br /&gt;
Un pense bète pour installer la version voulue de python en environnement virtuel avec virtualenv:&lt;br /&gt;
&lt;br /&gt;
=== virtualenv et autre tkinter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install python-tk python3-tk tk-dev&lt;br /&gt;
apt-get install python-virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 3.7.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install libffi-dev&lt;br /&gt;
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz&lt;br /&gt;
tar -Jxvf Python-3.7.4.tar.xz&lt;br /&gt;
cd Python-3.7.4&lt;br /&gt;
./configure --enable-shared&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
sudo ldconfig /usr/local/lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== virtualenv ===&lt;br /&gt;
&lt;br /&gt;
* Virtual env configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install python-virtualenv&lt;br /&gt;
mkdir virtenv&lt;br /&gt;
cd virtenv&lt;br /&gt;
virtualenv --python=/usr/local/bin/python3.7 envp37&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enum bug fix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/virtenv/envp37/lib/python3.7&lt;br /&gt;
ln -s /usr/local/lib/python3.7/enum.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Activation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source /home/armadeus/virtenv/envp37/bin/activate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Desactivation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= '''P'''eripheral '''O'''n '''D'''emand =&lt;br /&gt;
&lt;br /&gt;
* [[Specification feedback]]&lt;br /&gt;
&lt;br /&gt;
= Participation à la documentation ArmadeuS Project =&lt;br /&gt;
&lt;br /&gt;
* [[How to make a VHDL design in Ubuntu/Debian]]&lt;br /&gt;
* [[How to simulate post synthesis and post place &amp;amp; route design with GHDL]]&lt;br /&gt;
&lt;br /&gt;
* [[Using FPGA]]&lt;br /&gt;
&lt;br /&gt;
* [[A simple design with Wishbone bus]]&lt;br /&gt;
&lt;br /&gt;
* [[How to use kernel 2.6.38.x on APF27]]&lt;br /&gt;
&lt;br /&gt;
== Trash ==&lt;br /&gt;
* [[APF27_FPGA-IMX_interface_description | Description of FPGA-IMX interface for APF27]]&lt;br /&gt;
* [[APF51_FPGA-IMX_interface_description | Description of FPGA-IMX interface for APF51]]&lt;br /&gt;
* [[FPGA | FPGA on APF introduction]]&lt;br /&gt;
* [[FPGA and led | Button and LED]]&lt;br /&gt;
&lt;br /&gt;
== Projets ==&lt;br /&gt;
&lt;br /&gt;
* Camera [[C38A]] with chip ov7620&lt;br /&gt;
* Camera omnivision [[VC21CC1]]&lt;br /&gt;
* [[Robotic]]&lt;br /&gt;
* [[Home monitoring energy | Compteur d'énergie électrique]]&lt;br /&gt;
* [[OOCP]] (Only One Cable Project)&lt;br /&gt;
* [[Use MySQL-client on apf9328]]&lt;br /&gt;
* [[Light-APF27Dev | Light-APF27Dev project ]]&lt;br /&gt;
&lt;br /&gt;
= Liens utiles =&lt;br /&gt;
&lt;br /&gt;
* Projets [http://sourceforge.net/projects/armadeus sourceforge]&lt;br /&gt;
* Site [http://www.armadeus.com/english/index.html entreprise]&lt;br /&gt;
* Les codes de retour d'erreurs : http://www.opengroup.org/onlinepubs/007908799/xsh/errno.h.html&lt;br /&gt;
* [[Buildroot_Packages]]&lt;br /&gt;
* [http://sebsauvage.net/files/20130426_cpp_quovadis2013cppontheweb-130425105424-phpapp01.pdf Un papier très intéressant] d'un développeur de jeux vidéo prônant l'utilisation du C++ ... pour le web. Notamment grâce à l'utilisation de [http://sebsauvage.net/files/20130426_cpp_multiplatformconthewebwithemscripten-130405172545-phpapp01.pdf emscripten] qui permet de compiler du C++ vers le javascript (HTML5).&lt;br /&gt;
&lt;br /&gt;
= Somes usefull tricks =&lt;br /&gt;
== press a button ==&lt;br /&gt;
Here, function to «press enter to continue» on apf in different languages :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
setbit /proc/driver/gpio/portFmode 13 1 # set pin as gpio&lt;br /&gt;
setbit /proc/driver/gpio/portFdir 13 0  # set pin as input&lt;br /&gt;
setbit /proc/driver/gpio/portFirq 13 1  # irq on rising edge&lt;br /&gt;
&lt;br /&gt;
/usr/bin/testsuite/testbutton /dev/gpio/PF13 3 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With ''testbutton'' program comming from&lt;br /&gt;
''target/linux/modules/fpga/wishbone_example/wb_button''. Type «make» in this&lt;br /&gt;
directory to compile it.&lt;br /&gt;
&lt;br /&gt;
== Logging with timestamps in seconds ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
while true&lt;br /&gt;
do&lt;br /&gt;
LIGHT=$(cat /sys/class/hwmon/hwmon0/device/in3_input)&lt;br /&gt;
TIME=$(date +%s)&lt;br /&gt;
echo $TIME&amp;quot;, sec, &amp;quot;$LIGHT&amp;quot;, mV,&amp;quot; &amp;gt;&amp;gt; log;&lt;br /&gt;
sleep 2&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Press enter to continue ==&lt;br /&gt;
=== C ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pressEnterToContinue(void)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;Press enter to continue\n&amp;quot;);&lt;br /&gt;
    getc(stdin);//XXX &lt;br /&gt;
    while( getc(stdin) != '\n') ; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt; //XXX&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void pressEnterToContinue(void)&lt;br /&gt;
{&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Press enter to continue&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    getc(stdin); //XXX&lt;br /&gt;
    std::cin.ignore( std::numeric_limits &amp;lt;std::streamsize&amp;gt; ::max(), '\n' );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 2 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def pressEnterToContinue():&lt;br /&gt;
    print &amp;quot;Press enter to continue&amp;quot;&lt;br /&gt;
    raw_input()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python 3 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def pressEnterToContinue():&lt;br /&gt;
    print(&amp;quot;Press enter to continue&amp;quot;)&lt;br /&gt;
    input()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Driver =&lt;br /&gt;
&lt;br /&gt;
* [[IIO kernel driver model]]&lt;br /&gt;
* [[UIO kernel driver model]]&lt;br /&gt;
&lt;br /&gt;
= bac à sable =&lt;br /&gt;
[[Image:dessin.svg]]&lt;br /&gt;
&lt;br /&gt;
* [[APF6_SP_DDR3_PINOUT]]&lt;br /&gt;
* [[APF6_SP The full howto]]&lt;br /&gt;
&lt;br /&gt;
== Wavedrom ==&lt;br /&gt;
&lt;br /&gt;
If [https://github.com/Martoni/mediawiki_wavedrom wavedrom plugin] is installed on this wiki, we can see a beautiful waves bellow :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;clk&amp;quot;,  wave: &amp;quot;p......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;bus&amp;quot;,  wave: &amp;quot;x.34.5x&amp;quot;,   data: &amp;quot;head body tail&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;wire&amp;quot;, wave: &amp;quot;0.1..0.&amp;quot; },&lt;br /&gt;
]}&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Blog =&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15055</id>
		<title>Serial Transfer</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15055"/>
				<updated>2022-02-01T16:31:42Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Microcom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the serial port of your Armadeus board to transfer files from/to your PC.&lt;br /&gt;
{{Note|This page explains how to transfer files on the board when the Linux system has started, '''not from U-Boot !'''.&lt;br /&gt;
To know how to configure serial link for U-Boot communication, [[Connection_with_U-Boot_on_Linux|it's here]].}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
When you only have a serial link (RS232/USB) as connection with your devt PC (ie no Ethernet available), then you can use Zmodem protocol to send/receive files to/from your Shell/Console of your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
====Target (APF)====&lt;br /&gt;
Modify your Buildroot configuration:&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;
to add lrzsz package:&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;
    Networking applications  ---&amp;gt;&lt;br /&gt;
        [*]   lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then rebuild your rootfs:&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;
&lt;br /&gt;
Reflash it or manually copy ''rz'' and ''sz'' executables found in ''$ARMADEUS_ROOTFS_DIR/usr/bin/''.&lt;br /&gt;
&lt;br /&gt;
====Host====&lt;br /&gt;
* Install lrzsz package, if not already installed on your system. For example on Ubuntu/Debian:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install minicom tool:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install minicom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The first time, configure minicom (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo minicom -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
{{Warning| You must use [[minicom]] as serial terminal and not [[kermit]]/[[screen]], sorry ! :-(}}&lt;br /&gt;
* Be sure to have correctly configured Minicom (line speed, 8N1, no flow control, and correct download/upload directories path).&lt;br /&gt;
* Use '''rz''' for receiving and '''sz''' to send files:&lt;br /&gt;
====Host (PC) --&amp;gt; Target (APF)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /whereToPutTheFileOnTheTarget/&lt;br /&gt;
 # rz -bZ&lt;br /&gt;
 .. waiting to receive.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then in minicom do: '''Ctrl+a , s''' and choose zmodem protocol and the file to send.&lt;br /&gt;
* Wait a little and your file will be copied to your board rootfs ! ;-)&lt;br /&gt;
&lt;br /&gt;
====Target (APF) --&amp;gt; Host (PC)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /location/of_the/file_to_send/on_the_apf/&lt;br /&gt;
 # sz -b --zmodem filename&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Minicom handles the file receiving automatically (and put it in your $HOME by default, or the directory you configured in Minicom: Ctrl+z, o, ''Filenames and paths'', ''Download directory'')&lt;br /&gt;
&lt;br /&gt;
===TBDL===&lt;br /&gt;
====Serial transfer through USB gadget as serial link====&lt;br /&gt;
After having booted your board:&lt;br /&gt;
* On your Target, open a new terminal on your serial link (here USB):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/getty -L ttygserial 115200 vt100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch Minicom and configure it to use ''/dev/ttyUSB1'' at 115200, then connect it to this terminal&lt;br /&gt;
&lt;br /&gt;
===Transfer without terminal===&lt;br /&gt;
* On your Target, launch receiving:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rz --zmodem 1&amp;gt;/dev/ttyXXX 0&amp;lt;/dev/ttyXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch transfer:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sz --zmodem /tftpboot/afiletosend 1&amp;gt;/dev/ttyUSB1 0&amp;lt;/dev/ttyUSB1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UBoot ==&lt;br /&gt;
&lt;br /&gt;
=== Minicom ===&lt;br /&gt;
&lt;br /&gt;
With [[minicom]] use ymodem :&lt;br /&gt;
&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; loady ${loadaddr}&lt;br /&gt;
Ctrl+A Z&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Select ymodem  then filename&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.ohse.de/uwe/software/lrzsz.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Serial ports]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15054</id>
		<title>Serial Transfer</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15054"/>
				<updated>2022-02-01T16:30:53Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the serial port of your Armadeus board to transfer files from/to your PC.&lt;br /&gt;
{{Note|This page explains how to transfer files on the board when the Linux system has started, '''not from U-Boot !'''.&lt;br /&gt;
To know how to configure serial link for U-Boot communication, [[Connection_with_U-Boot_on_Linux|it's here]].}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
When you only have a serial link (RS232/USB) as connection with your devt PC (ie no Ethernet available), then you can use Zmodem protocol to send/receive files to/from your Shell/Console of your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
====Target (APF)====&lt;br /&gt;
Modify your Buildroot configuration:&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;
to add lrzsz package:&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;
    Networking applications  ---&amp;gt;&lt;br /&gt;
        [*]   lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then rebuild your rootfs:&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;
&lt;br /&gt;
Reflash it or manually copy ''rz'' and ''sz'' executables found in ''$ARMADEUS_ROOTFS_DIR/usr/bin/''.&lt;br /&gt;
&lt;br /&gt;
====Host====&lt;br /&gt;
* Install lrzsz package, if not already installed on your system. For example on Ubuntu/Debian:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install minicom tool:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install minicom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The first time, configure minicom (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo minicom -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
{{Warning| You must use [[minicom]] as serial terminal and not [[kermit]]/[[screen]], sorry ! :-(}}&lt;br /&gt;
* Be sure to have correctly configured Minicom (line speed, 8N1, no flow control, and correct download/upload directories path).&lt;br /&gt;
* Use '''rz''' for receiving and '''sz''' to send files:&lt;br /&gt;
====Host (PC) --&amp;gt; Target (APF)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /whereToPutTheFileOnTheTarget/&lt;br /&gt;
 # rz -bZ&lt;br /&gt;
 .. waiting to receive.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then in minicom do: '''Ctrl+a , s''' and choose zmodem protocol and the file to send.&lt;br /&gt;
* Wait a little and your file will be copied to your board rootfs ! ;-)&lt;br /&gt;
&lt;br /&gt;
====Target (APF) --&amp;gt; Host (PC)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /location/of_the/file_to_send/on_the_apf/&lt;br /&gt;
 # sz -b --zmodem filename&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Minicom handles the file receiving automatically (and put it in your $HOME by default, or the directory you configured in Minicom: Ctrl+z, o, ''Filenames and paths'', ''Download directory'')&lt;br /&gt;
&lt;br /&gt;
===TBDL===&lt;br /&gt;
====Serial transfer through USB gadget as serial link====&lt;br /&gt;
After having booted your board:&lt;br /&gt;
* On your Target, open a new terminal on your serial link (here USB):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/getty -L ttygserial 115200 vt100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch Minicom and configure it to use ''/dev/ttyUSB1'' at 115200, then connect it to this terminal&lt;br /&gt;
&lt;br /&gt;
===Transfer without terminal===&lt;br /&gt;
* On your Target, launch receiving:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rz --zmodem 1&amp;gt;/dev/ttyXXX 0&amp;lt;/dev/ttyXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch transfer:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sz --zmodem /tftpboot/afiletosend 1&amp;gt;/dev/ttyUSB1 0&amp;lt;/dev/ttyUSB1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UBoot ==&lt;br /&gt;
&lt;br /&gt;
=== Microcom ===&lt;br /&gt;
&lt;br /&gt;
With [[microcom]] use ymodem :&lt;br /&gt;
&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; loady ${loadaddr}&lt;br /&gt;
Ctrl+A Z&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Select ymodem  then filename&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.ohse.de/uwe/software/lrzsz.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Serial ports]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15053</id>
		<title>Serial Transfer</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15053"/>
				<updated>2022-02-01T16:29:14Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the serial port of your Armadeus board to transfer files from/to your PC.&lt;br /&gt;
{{Note|This page explains how to transfer files on the board when the Linux system has started, '''not from U-Boot !'''.&lt;br /&gt;
To know how to configure serial link for U-Boot communication, [[Connection_with_U-Boot_on_Linux|it's here]].}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
When you only have a serial link (RS232/USB) as connection with your devt PC (ie no Ethernet available), then you can use Zmodem protocol to send/receive files to/from your Shell/Console of your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
====Target (APF)====&lt;br /&gt;
Modify your Buildroot configuration:&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;
to add lrzsz package:&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;
    Networking applications  ---&amp;gt;&lt;br /&gt;
        [*]   lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then rebuild your rootfs:&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;
&lt;br /&gt;
Reflash it or manually copy ''rz'' and ''sz'' executables found in ''$ARMADEUS_ROOTFS_DIR/usr/bin/''.&lt;br /&gt;
&lt;br /&gt;
====Host====&lt;br /&gt;
* Install lrzsz package, if not already installed on your system. For example on Ubuntu/Debian:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install minicom tool:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install minicom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The first time, configure minicom (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo minicom -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
{{Warning| You must use [[minicom]] as serial terminal and not [[kermit]]/[[screen]], sorry ! :-(}}&lt;br /&gt;
* Be sure to have correctly configured Minicom (line speed, 8N1, no flow control, and correct download/upload directories path).&lt;br /&gt;
* Use '''rz''' for receiving and '''sz''' to send files:&lt;br /&gt;
====Host (PC) --&amp;gt; Target (APF)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /whereToPutTheFileOnTheTarget/&lt;br /&gt;
 # rz -bZ&lt;br /&gt;
 .. waiting to receive.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then in minicom do: '''Ctrl+a , s''' and choose zmodem protocol and the file to send.&lt;br /&gt;
* Wait a little and your file will be copied to your board rootfs ! ;-)&lt;br /&gt;
&lt;br /&gt;
====Target (APF) --&amp;gt; Host (PC)====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /location/of_the/file_to_send/on_the_apf/&lt;br /&gt;
 # sz -b --zmodem filename&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Minicom handles the file receiving automatically (and put it in your $HOME by default, or the directory you configured in Minicom: Ctrl+z, o, ''Filenames and paths'', ''Download directory'')&lt;br /&gt;
&lt;br /&gt;
===TBDL===&lt;br /&gt;
====Serial transfer through USB gadget as serial link====&lt;br /&gt;
After having booted your board:&lt;br /&gt;
* On your Target, open a new terminal on your serial link (here USB):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/getty -L ttygserial 115200 vt100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch Minicom and configure it to use ''/dev/ttyUSB1'' at 115200, then connect it to this terminal&lt;br /&gt;
&lt;br /&gt;
===Transfer without terminal===&lt;br /&gt;
* On your Target, launch receiving:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rz --zmodem 1&amp;gt;/dev/ttyXXX 0&amp;lt;/dev/ttyXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch transfer:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sz --zmodem /tftpboot/afiletosend 1&amp;gt;/dev/ttyUSB1 0&amp;lt;/dev/ttyUSB1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.ohse.de/uwe/software/lrzsz.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Serial ports]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=ISE_WebPack_installation_on_Linux&amp;diff=15050</id>
		<title>ISE WebPack installation on Linux</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=ISE_WebPack_installation_on_Linux&amp;diff=15050"/>
				<updated>2022-01-20T09:57:16Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* ISE 14.7 tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
==Xilinx WebPack installation instructions for Linux Ubuntu (6.10) with ISE 10.1.==&lt;br /&gt;
&lt;br /&gt;
{{Note|Tested on:&lt;br /&gt;
* Ubuntu Dapper (6.10) &amp;amp; Gusty (7.10) x86 32bits, &lt;br /&gt;
* KUbuntu 7.10 x86 32bits&lt;br /&gt;
}}&lt;br /&gt;
=== Packages needed ===&lt;br /&gt;
Install following package before installing ISE:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get install libstdc++5 libmotif4 libxp6 libcurl3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
{{Note|On new version of ISE webpack '''tcl console''' is not activated by default. To use it check the menu '''View-&amp;gt;Panels-&amp;gt;Tcl Console'''}}&lt;br /&gt;
* download '''ISE WebPACK - WebInstall / ISE WebPACK 10.1 (Free Download)''' archive [http://www.xilinx.com/ise/logic_design_prod/webpack.htm from here]. You will need to create a Xilinx's account and register before being able to download files (it's free).&lt;br /&gt;
* Choose the full download version &amp;quot;Download Files Individually&amp;quot; (2,4 Gbytes). When asked, you are not obliged to accept Java download manager (if you are sure of your Internet connection quality). '''Note the registration ID, it will be asked later during installation.'''&lt;br /&gt;
[[Image:ISE_full_download.png]]&lt;br /&gt;
* You will get a ''webpack_SFD.tar'' archive, save it in your ''$HOME'' dir&lt;br /&gt;
* unzip the archive:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd $HOME&lt;br /&gt;
 $ tar xvf webpack_SFD.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* launch the installation&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd webpack&lt;br /&gt;
 $ ./setup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Follows the instructions of the graphical interface (you need to launch setup as root if you want to install JTAG tools '''but on Armadeus JTAG tools are not needed to program the FPGA'''):&lt;br /&gt;
[[Image:ISE_install_select.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_dir.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_options.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_options2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_update.png]]&lt;br /&gt;
&lt;br /&gt;
== Installation guide for debian Wheezy (intel i5 64bits)  and ISE 14.6 ==&lt;br /&gt;
&lt;br /&gt;
* with a 64bits (amd64 on debian) first configure i386 compatibility:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg --add-architecture i386&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install ia32-libs ia32-libs-gtk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Following package must then be installed :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libstdc++5 libxp6 libcurl3 libmotif4&lt;br /&gt;
sudo apt-get install libstdc++5:i386 libxp6:i386 libcurl3:i386 libmotif4:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download «ISE Design Suite - 14.6 Full Product Installation» on [http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html xilinx website] (7.3Go !)&lt;br /&gt;
&lt;br /&gt;
* decompress the tar archive with following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
tar xvf Xilinx_ISE_DS_14.6_P.68d_3.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* launch installer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
cd Xilinx_ISE_DS_14.6_P.68d_3&lt;br /&gt;
./xsetup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* accept all conditions&lt;br /&gt;
* select ''ISE WebPACK'' under menu '''Select Products to Install'''.&lt;br /&gt;
* keep default settings&lt;br /&gt;
* Give a directory where you have enough space (1.6Go).&lt;br /&gt;
* click on '''Install''' button&lt;br /&gt;
* get a free license on [http://www.xilinx.com/getlicense this page].&lt;br /&gt;
&lt;br /&gt;
* Go to the directory ISE/ then create the following shell script named '''launchISE''':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ../ISE/14.6/ISE_DS/settings32.sh&lt;br /&gt;
cd ../ISE/14.6/ISE_DS/ISE/bin/lin/&lt;br /&gt;
./ise&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Give rights :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
chmod 777 launchISE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then launch it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
./launchISE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enjoy the power of Xilinx tools.&lt;br /&gt;
&lt;br /&gt;
* To add tcl console : View -&amp;gt; Panels -&amp;gt; Tcl Console&lt;br /&gt;
&lt;br /&gt;
{{Note| For [[Migen]], you can also export xilinx path in your '''~/.bashrc''' file :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export XILINX=/opt/Xilinx/14.7/ISE_DS/ISE/&lt;br /&gt;
export PATH=$PATH:${XILINX}/bin/lin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== ISE 14.7 tips ==&lt;br /&gt;
&lt;br /&gt;
* To launch FPGA Editor, install following packages, then add symbolic links [https://askubuntu.com/a/1187070 as explained here].&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install libxm4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== CoreGen TCL Evaluation Error ===&lt;br /&gt;
&lt;br /&gt;
TCL problems with coregen come from an old version of java [https://wiki.archlinux.org/index.php/Xilinx_ISE_WebPACK#CORE_Generator_fails_to_generate_core as explain on archlinux wiki].&lt;br /&gt;
&lt;br /&gt;
Solution #2 works :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# backup old java&lt;br /&gt;
$ mv /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java.old&lt;br /&gt;
# make symbolic link for java 6&lt;br /&gt;
$ ln -s /opt/Xilinx/14.7/ISE_DS/ISE/java6/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.xilinx.com/ise/logic_design_prod/webpack.htm&lt;br /&gt;
* Good french tutorial : http://harded.free.fr/site/?p=55&lt;br /&gt;
* [http://outputlogic.com/xcell_using_xilinx_tools/74_xperts_04.pdf to use it in command lines]&lt;br /&gt;
* [http://www.wiki.xilinx.com/ Xilinx Wiki]&lt;br /&gt;
* [http://forums.xilinx.com/ Xilinx forum]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=ISE_WebPack_installation_on_Linux&amp;diff=15049</id>
		<title>ISE WebPack installation on Linux</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=ISE_WebPack_installation_on_Linux&amp;diff=15049"/>
				<updated>2022-01-20T09:57:03Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
==Xilinx WebPack installation instructions for Linux Ubuntu (6.10) with ISE 10.1.==&lt;br /&gt;
&lt;br /&gt;
{{Note|Tested on:&lt;br /&gt;
* Ubuntu Dapper (6.10) &amp;amp; Gusty (7.10) x86 32bits, &lt;br /&gt;
* KUbuntu 7.10 x86 32bits&lt;br /&gt;
}}&lt;br /&gt;
=== Packages needed ===&lt;br /&gt;
Install following package before installing ISE:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get install libstdc++5 libmotif4 libxp6 libcurl3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
{{Note|On new version of ISE webpack '''tcl console''' is not activated by default. To use it check the menu '''View-&amp;gt;Panels-&amp;gt;Tcl Console'''}}&lt;br /&gt;
* download '''ISE WebPACK - WebInstall / ISE WebPACK 10.1 (Free Download)''' archive [http://www.xilinx.com/ise/logic_design_prod/webpack.htm from here]. You will need to create a Xilinx's account and register before being able to download files (it's free).&lt;br /&gt;
* Choose the full download version &amp;quot;Download Files Individually&amp;quot; (2,4 Gbytes). When asked, you are not obliged to accept Java download manager (if you are sure of your Internet connection quality). '''Note the registration ID, it will be asked later during installation.'''&lt;br /&gt;
[[Image:ISE_full_download.png]]&lt;br /&gt;
* You will get a ''webpack_SFD.tar'' archive, save it in your ''$HOME'' dir&lt;br /&gt;
* unzip the archive:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd $HOME&lt;br /&gt;
 $ tar xvf webpack_SFD.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* launch the installation&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd webpack&lt;br /&gt;
 $ ./setup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Follows the instructions of the graphical interface (you need to launch setup as root if you want to install JTAG tools '''but on Armadeus JTAG tools are not needed to program the FPGA'''):&lt;br /&gt;
[[Image:ISE_install_select.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_dir.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_options.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_options2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ISE_install_update.png]]&lt;br /&gt;
&lt;br /&gt;
== Installation guide for debian Wheezy (intel i5 64bits)  and ISE 14.6 ==&lt;br /&gt;
&lt;br /&gt;
* with a 64bits (amd64 on debian) first configure i386 compatibility:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg --add-architecture i386&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install ia32-libs ia32-libs-gtk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Following package must then be installed :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libstdc++5 libxp6 libcurl3 libmotif4&lt;br /&gt;
sudo apt-get install libstdc++5:i386 libxp6:i386 libcurl3:i386 libmotif4:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download «ISE Design Suite - 14.6 Full Product Installation» on [http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html xilinx website] (7.3Go !)&lt;br /&gt;
&lt;br /&gt;
* decompress the tar archive with following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
tar xvf Xilinx_ISE_DS_14.6_P.68d_3.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* launch installer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
cd Xilinx_ISE_DS_14.6_P.68d_3&lt;br /&gt;
./xsetup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* accept all conditions&lt;br /&gt;
* select ''ISE WebPACK'' under menu '''Select Products to Install'''.&lt;br /&gt;
* keep default settings&lt;br /&gt;
* Give a directory where you have enough space (1.6Go).&lt;br /&gt;
* click on '''Install''' button&lt;br /&gt;
* get a free license on [http://www.xilinx.com/getlicense this page].&lt;br /&gt;
&lt;br /&gt;
* Go to the directory ISE/ then create the following shell script named '''launchISE''':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ../ISE/14.6/ISE_DS/settings32.sh&lt;br /&gt;
cd ../ISE/14.6/ISE_DS/ISE/bin/lin/&lt;br /&gt;
./ise&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Give rights :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
chmod 777 launchISE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then launch it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
./launchISE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enjoy the power of Xilinx tools.&lt;br /&gt;
&lt;br /&gt;
* To add tcl console : View -&amp;gt; Panels -&amp;gt; Tcl Console&lt;br /&gt;
&lt;br /&gt;
{{Note| For [[Migen]], you can also export xilinx path in your '''~/.bashrc''' file :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export XILINX=/opt/Xilinx/14.7/ISE_DS/ISE/&lt;br /&gt;
export PATH=$PATH:${XILINX}/bin/lin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== ISE 14.7 tips ==&lt;br /&gt;
&lt;br /&gt;
* To launch FPGA Editor, install following packages, then add symbolic links [https://askubuntu.com/a/1187070 as explain here].&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install libxm4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== CoreGen TCL Evaluation Error ===&lt;br /&gt;
&lt;br /&gt;
TCL problems with coregen come from an old version of java [https://wiki.archlinux.org/index.php/Xilinx_ISE_WebPACK#CORE_Generator_fails_to_generate_core as explain on archlinux wiki].&lt;br /&gt;
&lt;br /&gt;
Solution #2 works :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# backup old java&lt;br /&gt;
$ mv /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java.old&lt;br /&gt;
# make symbolic link for java 6&lt;br /&gt;
$ ln -s /opt/Xilinx/14.7/ISE_DS/ISE/java6/lin64/jre/bin/java /opt/Xilinx/14.7/ISE_DS/ISE/java/lin64/jre/bin/java&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.xilinx.com/ise/logic_design_prod/webpack.htm&lt;br /&gt;
* Good french tutorial : http://harded.free.fr/site/?p=55&lt;br /&gt;
* [http://outputlogic.com/xcell_using_xilinx_tools/74_xperts_04.pdf to use it in command lines]&lt;br /&gt;
* [http://www.wiki.xilinx.com/ Xilinx Wiki]&lt;br /&gt;
* [http://forums.xilinx.com/ Xilinx forum]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15047</id>
		<title>Simple blinking LED</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15047"/>
				<updated>2021-11-25T13:24:02Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Quartus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
This design introduce FPGA usage on APF. The design will allow you to synthesize a design and configure the FGPA to blink a LED. &lt;br /&gt;
&lt;br /&gt;
== The design ==&lt;br /&gt;
&lt;br /&gt;
=== VHDL code ===&lt;br /&gt;
The VHDL code above describe a clock divider by 48000000 to generate a 0.5 Hz clock that will blink the LED. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
 library IEEE;&lt;br /&gt;
 use IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
 use IEEE.numeric_std.all;&lt;br /&gt;
 &lt;br /&gt;
 entity led is&lt;br /&gt;
    Port ( &lt;br /&gt;
           refclk : in  std_logic;&lt;br /&gt;
           led : out std_logic&lt;br /&gt;
    );&lt;br /&gt;
 end led;&lt;br /&gt;
 &lt;br /&gt;
 architecture RTL of led is&lt;br /&gt;
    constant max_count : natural := 48000000;&lt;br /&gt;
    signal Rst : std_logic;&lt;br /&gt;
 begin&lt;br /&gt;
&lt;br /&gt;
    Rst &amp;lt;= '0';&lt;br /&gt;
 &lt;br /&gt;
    -- 0 to max_count counter&lt;br /&gt;
    compteur : process(refclk, Rst)&lt;br /&gt;
        variable count : natural range 0 to max_count;&lt;br /&gt;
    begin&lt;br /&gt;
        if Rst = '1' then&lt;br /&gt;
            count := 0;&lt;br /&gt;
            led &amp;lt;= '1';&lt;br /&gt;
        elsif rising_edge(refclk) then&lt;br /&gt;
            if count &amp;lt; max_count/2 then&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
            elsif count &amp;lt; max_count then&lt;br /&gt;
                led &amp;lt;= '0';&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
            else&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
                count := 0;&lt;br /&gt;
            end if;&lt;br /&gt;
        end if;&lt;br /&gt;
    end process compteur; &lt;br /&gt;
 end RTL;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
To synthesize this code, use [[ISE_WebPack_installation_on_Linux | Xilinx Web Pack]], create a new project and add this VHDL module.&lt;br /&gt;
&lt;br /&gt;
{{Note| Don't forget to power the FPGA IO bank as explained in [[datasheet]]}}&lt;br /&gt;
&lt;br /&gt;
ISE/Quartus need to know where to branch LED pins on its IO, this pinout is describe in constraint file with extension '''.ucf'''.&lt;br /&gt;
&lt;br /&gt;
* For '''APF9328''':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 96MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;P55&amp;quot;;&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.42 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;P118&amp;quot;| IOSTANDARD = LVCMOS33 ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF27'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 100MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N9&amp;quot;; # CLK0&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;C15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L24N_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF51'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 92.85MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N8&amp;quot;; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.77 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;G15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L41N_GCLK8_M1CASN_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF6_SP'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;&lt;br /&gt;
# Clock is the differential PCIe clock (LVDS) at 100MHz&lt;br /&gt;
set_instance_assignment -name IO_STANDARD &amp;quot;1.5-V PCML&amp;quot; -to Clk&lt;br /&gt;
set_location_assignment PIN_V4 -to Clk&lt;br /&gt;
set_location_assignment PIN_U4 -to &amp;quot;Clk(n)&amp;quot;&lt;br /&gt;
# LED&lt;br /&gt;
# For the first apf6dev serie this pin must be used :&lt;br /&gt;
set_location_assignment PIN_M10 -to led &lt;br /&gt;
# Others apf6dev will use PIN_K15&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
These constraints files examples can be found in Armadeus BSP's ''firmware/leds/blinking_led/src/'' directory.&lt;br /&gt;
&lt;br /&gt;
== Generate bitstream ==&lt;br /&gt;
&lt;br /&gt;
=== ISE ===&lt;br /&gt;
Once these two files are written, FPGA configuration file, also named &amp;quot;bitstream&amp;quot;, can be generated by clicking on ''Synthetize - XST'' then ''Implement Design'' and finally ''Generate Programming File''. If all these operations are correctly done, a file with &amp;quot;.bit&amp;quot; extension will be generated.&lt;br /&gt;
&lt;br /&gt;
=== Quartus ===&lt;br /&gt;
&lt;br /&gt;
See the [[Quartus]] page for tutorials.&lt;br /&gt;
&lt;br /&gt;
== Configure FPGA ==&lt;br /&gt;
&lt;br /&gt;
To configure FGPA the bitstream must be downloaded from Host to APF's memory and then from APF's memory to FPGA.&lt;br /&gt;
&lt;br /&gt;
=== Host to APF ===&lt;br /&gt;
&lt;br /&gt;
Downloading Bitstream from Host to APF can be done in different way : with [[Connection_with_U-Boot_on_Linux | tftp from U-Boot]], with tftp from Linux, with [[kermit | serial from U-Boot]] or with [[nfs]] from Linux. Here the file is downloaded with tftp in U-Boot:&lt;br /&gt;
&lt;br /&gt;
* First copy bitstream in the host tftp directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 cp blinking_led_apfXX_200k.bit /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then download it in APF ram with U-Boot command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; tftpboot ${loadaddr} blinking_led_apfXX_200k.bit&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46 &lt;br /&gt;
 MAC: 00:0e:32:00:00:01&lt;br /&gt;
 operating at 10M half duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.143; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'Clk_div_led.bit'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: T ##########################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 131029 (1ffd5 hex)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== APF to FPGA ===&lt;br /&gt;
&lt;br /&gt;
Finally, to download bitstream in FPGA (to ''configure'' the FGPA) use the U-Boot ''fpga'' command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt;fpga load 0 ${loadaddr} ${firmware_len}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FPGA configuration can also be done in [[FPGA_loader | Linux]].&lt;br /&gt;
&lt;br /&gt;
== Enjoy the beauty of a blinking LED ==&lt;br /&gt;
&lt;br /&gt;
To see the LED blinking, the '''FPGA bank must be powered''' as explain in the [[datasheet]].&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Datasheet&amp;diff=15046</id>
		<title>Datasheet</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Datasheet&amp;diff=15046"/>
				<updated>2021-11-22T13:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Armadeus datasheets and schematics =&lt;br /&gt;
&lt;br /&gt;
To see all documentation available for the board clic on the title.&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf9328/ APF9328] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf9328/documentation/dataSheet_APF9328.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf9328/hardware/apf_schema.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf9328DevLight/ APF9328Devlight] ==&lt;br /&gt;
* Datasheet [http://www.opossom.com/_downloads/apf9328DevLight/documentation/dataSheet_APF9328_DevLight.pdf V1] [http://www.opossom.com/_downloads/apf9328DevLight/documentation/dataSheet_APF9328_DevLight_V2.pdf V2]&lt;br /&gt;
*  Schematics [http://www.opossom.com/_downloads/apf9328DevLight/hardware/dev_light_schema_v1.2.pdf V1.2] [http://www.opossom.com/_downloads/apf9328DevLight/hardware/dev_light_schema.pdf V2]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf9328DevFull/ APF9328DevFull] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf9328DevFull/documentation/DataSheet_APF9328_DevFull.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf9328DevFull/hardware/apf9328_dev_schematics_v1_1.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf27/ APF27] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27/documentation/datasheet_apf27.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27/hardware/apf27_V1.2.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf27Dev/ APF27Dev] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27Dev/documentation/dataSheet_APF27Dev.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27Dev/hardware/apf27_devfull_12.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf27_PPS/ PPS (APF27)] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27_PPS/documentation/datasheet_pps.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf27_PPS/hardware/pps_v11.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf28/ APF28] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf28/documentation/datasheet_apf28.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf28/hardware/apf29_v10.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf28_Dev/ APF28_DEV] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf28_Dev/documentation/dataSheet_APF28Dev.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf28_Dev/hardware/apf28_dev_V10.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf51/ APF51] ==&lt;br /&gt;
* Datasheet&lt;br /&gt;
** [http://www.opossom.com/_downloads/apf51/documentation/datasheet_apf51_V1.pdf  APF51_V1]&lt;br /&gt;
** [http://www.opossom.com/_downloads/apf51/documentation/datasheet_apf51_V2.pdf  APF51_V2]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf51/hardware/apf51_v10.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf51_Dev/ APF51Dev] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf51_Dev/documentation/dataSheet_APF51Dev.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf51_Dev/hardware/apf51_dev_V12.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf6/ APF6] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf6/documentation/datasheet_apf6.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf6Dev/ APF6Dev] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf6Dev/documentation/dataSheet_APF6_Dev.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf6Dev/hardware/apf6_dev_V2.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apf6_SP/ APF6_SP] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apf6_SP/documentation/datasheet_apf6SP.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/opos6ul/ OPOS6UL] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/opos6ul/documentation/datasheet_opos6ul.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/opos6ul_nano/ OPOS6UL_NANO] ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.opossom.com/_downloads/opos6ul_nano/datasheet_opos6ul_nano.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/opos6ul_sp/ OPOS6UL_SP] ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.opossom.com/_downloads/opos6ul_sp/documentation/datasheet_opos6ul_sp.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/opos6ul_dev/ OPOS6ULDev] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/opos6ul_dev/documentation/datasheet_opos6ul_Dev.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/opos6ul_dev/hardware/opos6UL_dev_V12.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/sp6_vision/ SP_VISION] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/sp6_vision/datasheet_sp_vision.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/sp6_vision/hardware/sp_vision_eval_board_V05.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/lw700at_adapt/ LW700] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/lw700at_adapt/documentation/datasheet_lw700at_adapt.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/lw700at_adapt/hardware/LW700AT_adapt_v0B.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/apw/ APW] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/apw/documentation/datasheet_APW.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/apw/hardware/apf27_wireless_V0C.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
== [http://www.opossom.com/_downloads/lcd_adapt_LQ043 LQ043] ==&lt;br /&gt;
* [http://www.opossom.com/_downloads/lcd_adapt_LQ043/documentation/datasheet_lq043_adapt.pdf Datasheet]&lt;br /&gt;
* [http://www.opossom.com/_downloads/lcd_adapt_LQ043/hardware/lq043_adapt_schematics_v0a.pdf Schematics]&lt;br /&gt;
&lt;br /&gt;
= HMS Demo =&lt;br /&gt;
* Datasheet&lt;br /&gt;
* Schema&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15045</id>
		<title>Simple blinking LED</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15045"/>
				<updated>2021-11-05T12:57:33Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Quartus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
This design introduce FPGA usage on APF. The design will allow you to synthesize a design and configure the FGPA to blink a LED. &lt;br /&gt;
&lt;br /&gt;
== The design ==&lt;br /&gt;
&lt;br /&gt;
=== VHDL code ===&lt;br /&gt;
The VHDL code above describe a clock divider by 48000000 to generate a 0.5 Hz clock that will blink the LED. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
 library IEEE;&lt;br /&gt;
 use IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
 use IEEE.numeric_std.all;&lt;br /&gt;
 &lt;br /&gt;
 entity led is&lt;br /&gt;
    Port ( &lt;br /&gt;
           refclk : in  std_logic;&lt;br /&gt;
           led : out std_logic&lt;br /&gt;
    );&lt;br /&gt;
 end led;&lt;br /&gt;
 &lt;br /&gt;
 architecture RTL of led is&lt;br /&gt;
    constant max_count : natural := 48000000;&lt;br /&gt;
    signal Rst : std_logic;&lt;br /&gt;
 begin&lt;br /&gt;
&lt;br /&gt;
    Rst &amp;lt;= '0';&lt;br /&gt;
 &lt;br /&gt;
    -- 0 to max_count counter&lt;br /&gt;
    compteur : process(refclk, Rst)&lt;br /&gt;
        variable count : natural range 0 to max_count;&lt;br /&gt;
    begin&lt;br /&gt;
        if Rst = '1' then&lt;br /&gt;
            count := 0;&lt;br /&gt;
            led &amp;lt;= '1';&lt;br /&gt;
        elsif rising_edge(refclk) then&lt;br /&gt;
            if count &amp;lt; max_count/2 then&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
            elsif count &amp;lt; max_count then&lt;br /&gt;
                led &amp;lt;= '0';&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
            else&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
                count := 0;&lt;br /&gt;
            end if;&lt;br /&gt;
        end if;&lt;br /&gt;
    end process compteur; &lt;br /&gt;
 end RTL;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
To synthesize this code, use [[ISE_WebPack_installation_on_Linux | Xilinx Web Pack]], create a new project and add this VHDL module.&lt;br /&gt;
&lt;br /&gt;
{{Note| Don't forget to power the FPGA IO bank as explained in [[datasheet]]}}&lt;br /&gt;
&lt;br /&gt;
ISE/Quartus need to know where to branch LED pins on its IO, this pinout is describe in constraint file with extension '''.ucf'''.&lt;br /&gt;
&lt;br /&gt;
* For '''APF9328''':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 96MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;P55&amp;quot;;&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.42 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;P118&amp;quot;| IOSTANDARD = LVCMOS33 ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF27'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 100MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N9&amp;quot;; # CLK0&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;C15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L24N_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF51'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 92.85MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N8&amp;quot;; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.77 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;G15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L41N_GCLK8_M1CASN_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF6_SP'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;&lt;br /&gt;
# Clock is the differential PCIe clock (LVDS) at 100MHz&lt;br /&gt;
set_instance_assignment -name IO_STANDARD &amp;quot;1.5-V PCML&amp;quot; -to Clk&lt;br /&gt;
set_location_assignment PIN_V4 -to Clk&lt;br /&gt;
set_location_assignment PIN_U4 -to &amp;quot;Clk(n)&amp;quot;&lt;br /&gt;
# LED&lt;br /&gt;
# For the first apf6dev serie this pin must be used :&lt;br /&gt;
set_location_assignment PIN_M10 -to led &lt;br /&gt;
# Others apf6dev will use PIN_K15&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
These constraints files examples can be found in Armadeus BSP's ''firmware/leds/blinking_led/src/'' directory.&lt;br /&gt;
&lt;br /&gt;
== Generate bitstream ==&lt;br /&gt;
&lt;br /&gt;
=== ISE ===&lt;br /&gt;
Once these two files are written, FPGA configuration file, also named &amp;quot;bitstream&amp;quot;, can be generated by clicking on ''Synthetize - XST'' then ''Implement Design'' and finally ''Generate Programming File''. If all these operations are correctly done, a file with &amp;quot;.bit&amp;quot; extension will be generated.&lt;br /&gt;
&lt;br /&gt;
=== Quartus ===&lt;br /&gt;
&lt;br /&gt;
Se the [[Quartus]] page for tutorials.&lt;br /&gt;
&lt;br /&gt;
== Configure FPGA ==&lt;br /&gt;
&lt;br /&gt;
To configure FGPA the bitstream must be downloaded from Host to APF's memory and then from APF's memory to FPGA.&lt;br /&gt;
&lt;br /&gt;
=== Host to APF ===&lt;br /&gt;
&lt;br /&gt;
Downloading Bitstream from Host to APF can be done in different way : with [[Connection_with_U-Boot_on_Linux | tftp from U-Boot]], with tftp from Linux, with [[kermit | serial from U-Boot]] or with [[nfs]] from Linux. Here the file is downloaded with tftp in U-Boot:&lt;br /&gt;
&lt;br /&gt;
* First copy bitstream in the host tftp directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 cp blinking_led_apfXX_200k.bit /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then download it in APF ram with U-Boot command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; tftpboot ${loadaddr} blinking_led_apfXX_200k.bit&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46 &lt;br /&gt;
 MAC: 00:0e:32:00:00:01&lt;br /&gt;
 operating at 10M half duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.143; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'Clk_div_led.bit'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: T ##########################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 131029 (1ffd5 hex)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== APF to FPGA ===&lt;br /&gt;
&lt;br /&gt;
Finally, to download bitstream in FPGA (to ''configure'' the FGPA) use the U-Boot ''fpga'' command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt;fpga load 0 ${loadaddr} ${firmware_len}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FPGA configuration can also be done in [[FPGA_loader | Linux]].&lt;br /&gt;
&lt;br /&gt;
== Enjoy the beauty of a blinking LED ==&lt;br /&gt;
&lt;br /&gt;
To see the LED blinking, the '''FPGA bank must be powered''' as explain in the [[datasheet]].&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15044</id>
		<title>Simple blinking LED</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Simple_blinking_LED&amp;diff=15044"/>
				<updated>2021-11-05T12:56:52Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Quartus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
This design introduce FPGA usage on APF. The design will allow you to synthesize a design and configure the FGPA to blink a LED. &lt;br /&gt;
&lt;br /&gt;
== The design ==&lt;br /&gt;
&lt;br /&gt;
=== VHDL code ===&lt;br /&gt;
The VHDL code above describe a clock divider by 48000000 to generate a 0.5 Hz clock that will blink the LED. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
 library IEEE;&lt;br /&gt;
 use IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
 use IEEE.numeric_std.all;&lt;br /&gt;
 &lt;br /&gt;
 entity led is&lt;br /&gt;
    Port ( &lt;br /&gt;
           refclk : in  std_logic;&lt;br /&gt;
           led : out std_logic&lt;br /&gt;
    );&lt;br /&gt;
 end led;&lt;br /&gt;
 &lt;br /&gt;
 architecture RTL of led is&lt;br /&gt;
    constant max_count : natural := 48000000;&lt;br /&gt;
    signal Rst : std_logic;&lt;br /&gt;
 begin&lt;br /&gt;
&lt;br /&gt;
    Rst &amp;lt;= '0';&lt;br /&gt;
 &lt;br /&gt;
    -- 0 to max_count counter&lt;br /&gt;
    compteur : process(refclk, Rst)&lt;br /&gt;
        variable count : natural range 0 to max_count;&lt;br /&gt;
    begin&lt;br /&gt;
        if Rst = '1' then&lt;br /&gt;
            count := 0;&lt;br /&gt;
            led &amp;lt;= '1';&lt;br /&gt;
        elsif rising_edge(refclk) then&lt;br /&gt;
            if count &amp;lt; max_count/2 then&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
            elsif count &amp;lt; max_count then&lt;br /&gt;
                led &amp;lt;= '0';&lt;br /&gt;
                count := count + 1;&lt;br /&gt;
            else&lt;br /&gt;
                led &amp;lt;= '1';&lt;br /&gt;
                count := 0;&lt;br /&gt;
            end if;&lt;br /&gt;
        end if;&lt;br /&gt;
    end process compteur; &lt;br /&gt;
 end RTL;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
To synthesize this code, use [[ISE_WebPack_installation_on_Linux | Xilinx Web Pack]], create a new project and add this VHDL module.&lt;br /&gt;
&lt;br /&gt;
{{Note| Don't forget to power the FPGA IO bank as explained in [[datasheet]]}}&lt;br /&gt;
&lt;br /&gt;
ISE/Quartus need to know where to branch LED pins on its IO, this pinout is describe in constraint file with extension '''.ucf'''.&lt;br /&gt;
&lt;br /&gt;
* For '''APF9328''':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 96MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;P55&amp;quot;;&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.42 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;P118&amp;quot;| IOSTANDARD = LVCMOS33 ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF27'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 100MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N9&amp;quot;; # CLK0&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;C15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L24N_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF51'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
# Clock at 92.85MHz&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; LOC = &amp;quot;N8&amp;quot;; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;Clk&amp;quot; TNM_NET = &amp;quot;Clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_Clk&amp;quot; = PERIOD &amp;quot;Clk&amp;quot; 10.77 ns HIGH 50 %;&lt;br /&gt;
# LED&lt;br /&gt;
NET &amp;quot;led&amp;quot; LOC = &amp;quot;G15&amp;quot;| IOSTANDARD = LVCMOS33 ; #IO_L41N_GCLK8_M1CASN_1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For '''APF6_SP'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;&lt;br /&gt;
# Clock is the differential PCIe clock (LVDS) at 100MHz&lt;br /&gt;
set_instance_assignment -name IO_STANDARD &amp;quot;1.5-V PCML&amp;quot; -to Clk&lt;br /&gt;
set_location_assignment PIN_V4 -to Clk&lt;br /&gt;
set_location_assignment PIN_U4 -to &amp;quot;Clk(n)&amp;quot;&lt;br /&gt;
# LED&lt;br /&gt;
# For the first apf6dev serie this pin must be used :&lt;br /&gt;
set_location_assignment PIN_M10 -to led &lt;br /&gt;
# Others apf6dev will use PIN_K15&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
These constraints files examples can be found in Armadeus BSP's ''firmware/leds/blinking_led/src/'' directory.&lt;br /&gt;
&lt;br /&gt;
== Generate bitstream ==&lt;br /&gt;
&lt;br /&gt;
=== ISE ===&lt;br /&gt;
Once these two files are written, FPGA configuration file, also named &amp;quot;bitstream&amp;quot;, can be generated by clicking on ''Synthetize - XST'' then ''Implement Design'' and finally ''Generate Programming File''. If all these operations are correctly done, a file with &amp;quot;.bit&amp;quot; extension will be generated.&lt;br /&gt;
&lt;br /&gt;
=== Quartus ===&lt;br /&gt;
&lt;br /&gt;
Se the [[Quartus]] page for installation tutorials.&lt;br /&gt;
&lt;br /&gt;
== Configure FPGA ==&lt;br /&gt;
&lt;br /&gt;
To configure FGPA the bitstream must be downloaded from Host to APF's memory and then from APF's memory to FPGA.&lt;br /&gt;
&lt;br /&gt;
=== Host to APF ===&lt;br /&gt;
&lt;br /&gt;
Downloading Bitstream from Host to APF can be done in different way : with [[Connection_with_U-Boot_on_Linux | tftp from U-Boot]], with tftp from Linux, with [[kermit | serial from U-Boot]] or with [[nfs]] from Linux. Here the file is downloaded with tftp in U-Boot:&lt;br /&gt;
&lt;br /&gt;
* First copy bitstream in the host tftp directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 cp blinking_led_apfXX_200k.bit /tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then download it in APF ram with U-Boot command :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; tftpboot ${loadaddr} blinking_led_apfXX_200k.bit&lt;br /&gt;
 dm9000 i/o: 0x15c00000, id: 0x90000a46 &lt;br /&gt;
 MAC: 00:0e:32:00:00:01&lt;br /&gt;
 operating at 10M half duplex mode&lt;br /&gt;
 TFTP from server 192.168.0.143; our IP address is 192.168.0.10&lt;br /&gt;
 Filename 'Clk_div_led.bit'.&lt;br /&gt;
 Load address: 0x8000000&lt;br /&gt;
 Loading: T ##########################&lt;br /&gt;
 done&lt;br /&gt;
 Bytes transferred = 131029 (1ffd5 hex)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== APF to FPGA ===&lt;br /&gt;
&lt;br /&gt;
Finally, to download bitstream in FPGA (to ''configure'' the FGPA) use the U-Boot ''fpga'' command:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt;fpga load 0 ${loadaddr} ${firmware_len}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FPGA configuration can also be done in [[FPGA_loader | Linux]].&lt;br /&gt;
&lt;br /&gt;
== Enjoy the beauty of a blinking LED ==&lt;br /&gt;
&lt;br /&gt;
To see the LED blinking, the '''FPGA bank must be powered''' as explain in the [[datasheet]].&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Opos8mm&amp;diff=15043</id>
		<title>Opos8mm</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Opos8mm&amp;diff=15043"/>
				<updated>2021-10-22T11:35:57Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;{{Under_Construction}}  * OPOS8MM_PINOUT * EMMC_OPOS8MM&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
* [[OPOS8MM_PINOUT]]&lt;br /&gt;
* [[EMMC_OPOS8MM]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15042</id>
		<title>Serial Transfer</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Serial_Transfer&amp;diff=15042"/>
				<updated>2021-09-09T09:24:56Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Host (PC) --&amp;gt; Target (APF) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the serial port of your Armadeus board to transfer files from/to your PC.&lt;br /&gt;
{{Note|This page explains how to transfer files on the board when the Linux system has started, '''not from U-Boot !'''.&lt;br /&gt;
To know how to configure serial link for U-Boot communication, [[Connection_with_U-Boot_on_Linux|it's here]].}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
When you only have a serial link (RS232/USB) as connection with your devt PC (ie no Ethernet available), then you can use Zmodem protocol to send/receive files to/from your Shell/Console of your Armadeus board.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
===Target (APF)===&lt;br /&gt;
Modify your Buildroot configuration:&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;
to add lrzsz package:&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;
    Networking applications  ---&amp;gt;&lt;br /&gt;
        [*]   lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then rebuild your rootfs:&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;
&lt;br /&gt;
Reflash it or manually copy ''rz'' and ''sz'' executables found in ''$ARMADEUS_ROOTFS_DIR/usr/bin/''.&lt;br /&gt;
&lt;br /&gt;
===Host===&lt;br /&gt;
* Install lrzsz package, if not already installed on your system. For example on Ubuntu/Debian:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install lrzsz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install minicom tool:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo apt-get install minicom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The first time, configure minicom (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo minicom -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
{{Warning| You must use [[minicom]] as serial terminal and not [[kermit]]/[[screen]], sorry ! :-(}}&lt;br /&gt;
* Be sure to have correctly configured Minicom (line speed, 8N1, no flow control, and correct download/upload directories path).&lt;br /&gt;
* Use '''rz''' for receiving and '''sz''' to send files:&lt;br /&gt;
===Host (PC) --&amp;gt; Target (APF)===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /whereToPutTheFileOnTheTarget/&lt;br /&gt;
 # rz -bZ&lt;br /&gt;
 .. waiting to receive.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then in minicom do: '''Ctrl+a , s''' and choose zmodem protocol and the file to send.&lt;br /&gt;
* Wait a little and your file will be copied to your board rootfs ! ;-)&lt;br /&gt;
&lt;br /&gt;
===Target (APF) --&amp;gt; Host (PC)===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cd /location/of_the/file_to_send/on_the_apf/&lt;br /&gt;
 # sz -b --zmodem filename&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Minicom handles the file receiving automatically (and put it in your $HOME by default, or the directory you configured in Minicom: Ctrl+z, o, ''Filenames and paths'', ''Download directory'')&lt;br /&gt;
&lt;br /&gt;
==TBDL==&lt;br /&gt;
===Serial transfer through USB gadget as serial link===&lt;br /&gt;
After having booted your board:&lt;br /&gt;
* On your Target, open a new terminal on your serial link (here USB):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/getty -L ttygserial 115200 vt100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch Minicom and configure it to use ''/dev/ttyUSB1'' at 115200, then connect it to this terminal&lt;br /&gt;
&lt;br /&gt;
==Transfer without terminal==&lt;br /&gt;
* On your Target, launch receiving:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# rz --zmodem 1&amp;gt;/dev/ttyXXX 0&amp;lt;/dev/ttyXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On your Host, launch transfer:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sz --zmodem /tftpboot/afiletosend 1&amp;gt;/dev/ttyUSB1 0&amp;lt;/dev/ttyUSB1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.ohse.de/uwe/software/lrzsz.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Serial ports]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=FAQ&amp;diff=15041</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=FAQ&amp;diff=15041"/>
				<updated>2021-09-09T08:33:19Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the &amp;quot;Armadeus Project&amp;quot; intended for ?===&lt;br /&gt;
The goal of this project is to allow everyone to easily develop embedded Open Source systems.&lt;br /&gt;
When all the embedded systems in the world will run open source software, life will be better ;-)&lt;br /&gt;
&lt;br /&gt;
===How do I get help ?===&lt;br /&gt;
First take a look at the whole Wiki. If you can't find help contact us directly: [[Help:Contents]]. If you are located in France, we have members in Besançon, Montbéliard &amp;amp; Mulhouse who can provide help. For Swiss members, we can provide help in Basel, Lausanne &amp;amp; Zürich.&lt;br /&gt;
&lt;br /&gt;
=== Why are there http://armadeus.org and http://armadeus.com ? Is there a company backing/hiding behind the project? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://armadeus.com&amp;gt; is the webpage dedicated to Armadeus Systems. &amp;lt;br&amp;gt; &lt;br /&gt;
The company develops and produces the main boards which are then available at a discount price to the association members (non commercial usage only!). &lt;br /&gt;
&lt;br /&gt;
Historically the Armadeus Project (association) was founded before Armadeus Systems (company).  &amp;lt;br&amp;gt;&lt;br /&gt;
After one year of existence we realized that it was quite impossible to achieve our goals without investing more time and more cash. That's why the company was founded.&lt;br /&gt;
&lt;br /&gt;
The association was started for our own pleasure and also to help universities and enthusiasts develop Linux embedded systems.  &amp;lt;br&amp;gt;&lt;br /&gt;
It is a non profit association and works mostly on founders' free time.&lt;br /&gt;
&lt;br /&gt;
The developments (hardware/firmware/software) performed within the association are under GPL/LGPL licence.  &amp;lt;br&amp;gt;&lt;br /&gt;
The hardware funded by the association can not be used in a commercial product.&lt;br /&gt;
&lt;br /&gt;
=== Is there some rule to respect to contribute to the wiki? ===&lt;br /&gt;
Yes there are few rules that help you to contribute to update the wiki there:  [[WritingRules |HowTo write articles for armadeus wiki]]  &lt;br /&gt;
&lt;br /&gt;
==Hardware Questions==&lt;br /&gt;
===Are the Armadeus boards RoHS compliant ?===&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
===I have an APF27 kit and my 7&amp;quot; Chimei LW700 LCD is blinking (RGB colors), what can I do ?===&lt;br /&gt;
You're probably running an old (&amp;lt; 3.3) Armadeus BSP release and so default LCD is Sharp LQ043. You have to change your Linux configuration to support your LCD. Please follow instructions on [[FrameBuffer|this page]].&lt;br /&gt;
&lt;br /&gt;
== Gateware Questions (FPGA) ==&lt;br /&gt;
&lt;br /&gt;
=== My bitstream break my APF ===&lt;br /&gt;
&lt;br /&gt;
If you are using ISE13.x or upper, there is a bug loading script TCL file. When design is generated by POD, a script is sourced to make bitstream (myproject.tcl), the source commande ignore the constraint file (ucf) and FPGA pinout is done randomly. To avoid this, once tcl script sourced, re-run all design.&lt;br /&gt;
&lt;br /&gt;
==Software Questions==&lt;br /&gt;
===Where are the sources ?===&lt;br /&gt;
We have a project on SourceForge: http://sourceforge.net/projects/armadeus/ with a [[GIT]] repository.&lt;br /&gt;
&lt;br /&gt;
===What are the performances of your board ?===&lt;br /&gt;
[[Performances | Wiki page talking about board performances]]&lt;br /&gt;
&lt;br /&gt;
===How do I get help/support===&lt;br /&gt;
[[Help:Contents]]&lt;br /&gt;
&lt;br /&gt;
=== How to register my interrupt routine in Linux application ? ===&lt;br /&gt;
[[How to register my interrupt routine in Linux application ?]]&lt;br /&gt;
&lt;br /&gt;
=== How to launch my application at startup ? ===&lt;br /&gt;
See [[Automatically_launch_your_application | Automatically launch your application]] page.&lt;br /&gt;
&lt;br /&gt;
===U-Boot seems ok but prints: *** Warning - bad CRC, using default environment - Is there something wrong?=== &lt;br /&gt;
Everything is ok. It is an U-Boot feature that happens if the environment partition is empty.&amp;lt;br&amp;gt;&lt;br /&gt;
Please read the U-Boot FAQ on this issue: http://www.denx.de/wiki/view/DULG/WarningBadCRCUsingDefaultEnvironment&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|FAQ|FAQ|FAQ}}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Target_Software_Installation&amp;diff=15040</id>
		<title>Target Software Installation</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Target_Software_Installation&amp;diff=15040"/>
				<updated>2021-09-09T07:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Update U-Boot, kernel and rootfs images all at once */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page you will learn how to update (from U-Boot) the Flash'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 '''printenv''' 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 '''setenv''' is used to change these variables. For example, to set the IP address (don'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 '''saveenv''' 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;
{{Note| You have to install [[Communicate#TFTP_server_installation | tftpboot on your host development]] computer}}&lt;br /&gt;
&lt;br /&gt;
In order to use the U-Boot'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 '''dhcp''' command to configure these variables from your DHCP server. You probably will have to adjust the '''serverip''' variable manually.&lt;br /&gt;
If you use VirtualBox or VMware 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;
or&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; env default -f -a; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux kernel installation==&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 ''/tftpboot/''):&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 'update_kernel' 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 ''update_kernel'' 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 transferred 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;
     ''Ctrl+Altgr+\+c to access kermit command line then:''&lt;br /&gt;
 (/home/.../) C-Kermit&amp;gt;send /tftpboot/XX-linux.bin&lt;br /&gt;
     ''After download is completed, you can type the c command to reconnect to the terminal:''&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 transferred 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;
** '''Please note''': The ''bootm'' 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;
* '''Please note''': The ''bootm'' 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;
 $ ls -al buildroot/output/images/&lt;br /&gt;
 ...&lt;br /&gt;
 $ 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;
&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;
    ''Ctrl+Altgr+\+c to access kermit command line then...''&lt;br /&gt;
(/home/.../) C-Kermit&amp;gt;send path_to_your_host_buildroot_dir/XX-rootfs.ubi&lt;br /&gt;
    ''After download is completed, you can type the c command to reconnect to the terminal:''&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;
* For large rootfs (bigger than the available RAM on your system) please use the method which suit your board:&lt;br /&gt;
** [[APF9328]]: none :-(&lt;br /&gt;
** [[APF27]]/[[APF28]]/[[APF51]]:&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;
** [[APF6]]: [[U-Boot UMS on APF6|U-Boot UMS]]&lt;br /&gt;
&lt;br /&gt;
==FPGA firmware test==&lt;br /&gt;
&lt;br /&gt;
* The FPGA firmwares are all located in the ''firmware/'' directory of your Armadeus BSP sources:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ ls firmware/&lt;br /&gt;
 apf_pkg  BRAMTest  bus_led  led  PS2  PS2_Opencore  servo  sram_test  wishbone_example  Xtools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can make some trials with the ''firmware/leds/blinking_led/bin/'' files.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning| for the APF9328, please 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;
&lt;br /&gt;
{{Note | For the APF51 and U-Boot versions earlier than 2013.04, only binary file format ('''.bin''') can be used; do not try '''.bit''' file. &amp;lt;br&amp;gt; For the APF51 and U-Boot versions 2013.04 or later you can also use .bit files with the U-Boot command: &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt; BIOS&amp;gt; fpga loadb &amp;lt;/pre&amp;gt;}}&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;
''fpgafirmware.bin'' is of course the name of your bitfile stored in your TFTP shared directory (''/tftpboot/'')&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's downloading:&lt;br /&gt;
** for .bin binary files  &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;BIOS&amp;gt; fpga load 0 ${loadaddr} ${filesize}&amp;lt;/pre&amp;gt;&lt;br /&gt;
** for .bit binary files &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;BIOS&amp;gt; fpga loadb 0 ${loadaddr} ${filesize}&amp;lt;/pre&amp;gt;&lt;br /&gt;
* For your convenience a set of U-Boot script to facilitate firmware management with the APF boards:&lt;br /&gt;
** ''download_firmware'': assuming your firmware is in /tftpboot and name apfXX-firmware.bin (where apfXX is the name of your board apf27, apf51, apf9328..) will download the firmware in RAM with the command: run download_firmware&lt;br /&gt;
** ''flash_firmware'': save the previously downloaded firmware from RAM into the flash.&lt;br /&gt;
** ''update_firmware'': will execute the previous 2 scripts in sequence.&lt;br /&gt;
** ''load_firmware'': read a firmware from the flash (there is dedication partition named firmware for this purpose) and load it into the FPGA.&lt;br /&gt;
&lt;br /&gt;
==FPGA firmware installation==&lt;br /&gt;
=== APF9328, APF27 and APF51 ===&lt;br /&gt;
* instal/copy your firmware to /tftpboot&lt;br /&gt;
** manually: &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt; $ cp myfirmware.bin /tftpboot/apfXX-firmware.bin (where apfXX is the name of your board: apf27, apf51 or apf9328)&amp;lt;/pre&amp;gt;&lt;br /&gt;
** using the armadeus BSP:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt; $ make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Package Selection for the target  ---&amp;gt;   Armadeus specific tools/utilities  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:you can specify the path to the FPGA firmware:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
[*] FPGA Firmware &lt;br /&gt;
      Firmware to install (Install a custom FPGA firmware)  ---&amp;gt;&lt;br /&gt;
 ($(TOPDIR)/../firmware/leds/blinking_led/bin/blinking_led_apf27_200k.bit) FPGA binary file path&lt;br /&gt;
[*]   Export this file to Buildroot images folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt; $ cp buildroot/output/images/* /tftpboot &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Download and test 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 download_firmware&lt;br /&gt;
 BIOS&amp;gt; run load_firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When you are satisfied with your firmware, you can write it in flash make it &amp;quot;autoloaded&amp;quot; at power up:&lt;br /&gt;
{{Warning| '''Before''' setting the firmware_autoload variable, be sure that your FPGA binary file is correct. If not, your board will '''hang up''' at U-Boot start and you will need to cancel the fpga download to take control of the board. see note below}}&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run update_firmware&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;
&lt;br /&gt;
{{Note | (U-Boot 2012.04) 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;
=== APF6_SP ===&lt;br /&gt;
&lt;br /&gt;
Firmware installation was simplified in APF6_SP.&lt;br /&gt;
&lt;br /&gt;
* To «autoload» your firmware while U-Boot is starting, simply add your bitstream to your rootfs, for example :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
/lib/firmware/fpga/firmware.periph.rbf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note| By default, directory /lib/firmware/fpga doesn't exists, then simply create it with &amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;# mkdir /lib/firmware/fpga&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* Then reboot under U-Boot and configure your environment variables '''firmware_autoload''' and '''firmware_path''' :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; setenv firmware_path /lib/firmware/fpga/firmware.periph.rbf&lt;br /&gt;
BIOS&amp;gt; setenv firmware_autoload 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Do not forget to save your environment variables:&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;
&lt;br /&gt;
* That's all, now your bitstream will be loaded with U-Boot at boot:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
U-Boot SPL 2014.07 (Apr 23 2015 - 16:16:45)&lt;br /&gt;
&lt;br /&gt;
U-Boot 2014.07 (Apr 23 2015 - 16:16:45)&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
39688 bytes read in 260 ms (148.4 KiB/s)&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 'update_uboot' 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 'flash_uboot' 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;
{{Note | '''APF51'''&lt;br /&gt;
&lt;br /&gt;
When updating your board from a legacy version of Armadeus BSP you should set the `fdt_addr_r` environment var to boot correctly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; setenv fdt_addr_r 91000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[How_to_use_vanilla_kernel_on_APF51]] for more informations.&lt;br /&gt;
}}&lt;br /&gt;
&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 'update_all' 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;
* Old Flash partitionning (pre armadeus-5.0) is kept [[Talk:Target_Software_Installation|here]].&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 image&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 2011.12 and newer release - Flash memory partitions===&lt;br /&gt;
* It's safer to not touch sectors marked as red ;-)&lt;br /&gt;
&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;
|- style=&amp;quot;background:#ffcccc;&amp;quot; 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 image&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 - 0xff7ffff (&amp;gt;~248MB)&lt;br /&gt;
|Root filesystem (rootfs)&lt;br /&gt;
|- style=&amp;quot;background:#ffcccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|0xff800000 - End of FLASH (512KB)&lt;br /&gt;
|U-Boot NAND bad blocks table. Sectors mark as bad, don't touch !!&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 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 image&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;
===APF6===&lt;br /&gt;
[[APF6]] has an [[eMMC]].&lt;br /&gt;
&lt;br /&gt;
===OPOS6UL===&lt;br /&gt;
[[OPOS6UL]] has an [[EMMC OPOS6UL|eMMC]].&lt;br /&gt;
&lt;br /&gt;
[[Category:System Update]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Devmem&amp;diff=15039</id>
		<title>Devmem</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Devmem&amp;diff=15039"/>
				<updated>2021-09-07T15:28:40Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: Redirected page to Linux Debug#Observing system clocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Linux_Debug#Observing_system_clocks]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=IMX51-Spartan6_interface_description&amp;diff=15038</id>
		<title>IMX51-Spartan6 interface description</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=IMX51-Spartan6_interface_description&amp;diff=15038"/>
				<updated>2021-09-07T15:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Chip Select */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: APF51]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
[[Category: Spartan6]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article describe the bus interface configuration to communicate between i.MX51 processor and Spartan6 FPGA. In i.MX51, the bus used to make communication with the FPGA is named '''WEIM''' for Wireless Extension Interface Module. All description of this bus can be found under the [http://cache.freescale.com/files/dsp/doc/ref_manual/MCIMX51RM.pdf?fpsp=1&amp;amp;WT_TYPE=Reference%20Manuals&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation  i.MX51 reference manual] in chapter 63 (page 3113).&lt;br /&gt;
&lt;br /&gt;
== Simplified view ==&lt;br /&gt;
&lt;br /&gt;
[[image:Imx51-spartan6.jpg|700px|center|thumb|'''figure 1''' - ''i.MX51-Spartan6 bus description'']]&lt;br /&gt;
&lt;br /&gt;
Figure 1 is a simplified view of [[Datasheet#APF51 | APF51 schematics]] (page 15), signals are :&lt;br /&gt;
&lt;br /&gt;
* '''BCLK''': i.MX51 burst clock used to clock the spartan6.&lt;br /&gt;
* '''DA'''[15:0] : Data/Address multiplexed bus.&lt;br /&gt;
* '''LBA''' : Noted '''ADV''' for ''AD''dress ''V''alid under the i.MX51 reference manual.&lt;br /&gt;
* EB0, EB1 : For Enable Byte, write signal for lower byte and upper byte on data bus. &lt;br /&gt;
* '''CS1''' : Chip Select 1.&lt;br /&gt;
* CS2 : Chip Select 2.&lt;br /&gt;
* OE : For Output Enable bit, read signal. (Motorola way of bus)&lt;br /&gt;
* '''RW''' : Read/Write signal. (Intel way of bus)&lt;br /&gt;
* DTACK : Data acknoledge, for asynchronous access.&lt;br /&gt;
* WAIT : Wait signal used for some burst access.&lt;br /&gt;
Not part of WEIM bus :&lt;br /&gt;
* CLK0 : An i.MX51 output clock (not used ).&lt;br /&gt;
* FPGA_INITB : used by default for interrupts (GPIO4_11).&lt;br /&gt;
&lt;br /&gt;
Signals in '''bold''' are signals used in default configuration.&lt;br /&gt;
&lt;br /&gt;
== Default configuration on CS1 ==&lt;br /&gt;
=== Clock ===&lt;br /&gt;
&lt;br /&gt;
The clock used to clock the fpga is ''BCLK'' (IO_L29P_GCLK3_2 on Spartan6) and is configured to '''95 MHz'''.&lt;br /&gt;
&lt;br /&gt;
=== Chip Select ===&lt;br /&gt;
By default the chip select 1 (CS1) is used for communication. The address domain corresponding to this chip select can be found in [https://www.nxp.com/docs/en/reference-manual/MCIMX51RM.pdf i.MX51 reference manual] in chapter 2 (Memory Map page 65).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Start Address !! End Address !! Size !! Region&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| '''B800_0000''' || '''BFFF_FFFF''' || '''128M''' || '''CS1 (Flash) 128M'''&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| C000_0000 || C7FF_FFFF||  128M||  CS2 (Flash) 128M&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It's possible to use the second chip select (CS2) to extend memory domain or to use different timing configuration with the same Address/Data bus signals.&lt;br /&gt;
&lt;br /&gt;
The default bus configuration for the APF51 can be found in the file apf51.h in u-boot sources :&lt;br /&gt;
''buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h''&lt;br /&gt;
&lt;br /&gt;
Especially these lines :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define	CONFIG_FPGA_GCR1_VALUE	0x019100bf&lt;br /&gt;
#define	CONFIG_FPGA_GCR2_VALUE	0x00000000&lt;br /&gt;
                                           &lt;br /&gt;
#define	CONFIG_FPGA_RCR1_VALUE	0x04000010&lt;br /&gt;
#define	CONFIG_FPGA_RCR2_VALUE	0x00000000&lt;br /&gt;
                                           &lt;br /&gt;
#define	CONFIG_FPGA_WCR1_VALUE	0x04000008&lt;br /&gt;
#define	CONFIG_FPGA_WCR2_VALUE	0x00000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note| Do not forget to do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make u-boot-dirclean&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To test your modification under the ''apf51-u-boot-2010.03.h'' file&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is not necessary to modify apf51.h file and recompile U-Boot for WEIM timings test, register can be read/written ''via'' [http://www.denx.de/wiki/view/DULG/UBootCmdGroupMemory#Section_5.9.2.8. U-Boot] or [[FPGA_register | Linux]].&lt;br /&gt;
To access these register with U-Boot or Linux, use the address given under the reference manual in WEIM register descriptions (63.4.3 Register Descriptions).&lt;br /&gt;
{{Note| The 0xBASE value is given in chapter 2 &amp;quot;Memory Map&amp;quot; (page 65) : 0xBASE -&amp;gt; 0x83FD8000}}&lt;br /&gt;
&lt;br /&gt;
Configuration register can be read/write with [[devmem]] tool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# echo &amp;quot;CS1GCR1&amp;quot;&lt;br /&gt;
# devmem 0x83fda018 32&lt;br /&gt;
0x019100BF&lt;br /&gt;
# echo &amp;quot;CS1GCR2&amp;quot;&lt;br /&gt;
# devmem 0x83fda01c 32&lt;br /&gt;
0x00000000&lt;br /&gt;
# echo &amp;quot;CS1RCR1&amp;quot;&lt;br /&gt;
# devmem 0x83fda020 32&lt;br /&gt;
0x04000010&lt;br /&gt;
# echo &amp;quot;CS1RCR2&amp;quot;&lt;br /&gt;
# devmem 0x83fda024 32&lt;br /&gt;
0x00000000&lt;br /&gt;
# echo &amp;quot;CS1WCR1&amp;quot;&lt;br /&gt;
# devmem 0x83fda028 32&lt;br /&gt;
0x04000008&lt;br /&gt;
# echo &amp;quot;CS1WCR2&amp;quot;&lt;br /&gt;
# devmem 0x83fda02C 32&lt;br /&gt;
0x00000000&lt;br /&gt;
# echo &amp;quot;WCR&amp;quot;&lt;br /&gt;
# devmem 0x83fda090 32&lt;br /&gt;
0x00000021&lt;br /&gt;
# echo &amp;quot;WIAR&amp;quot;&lt;br /&gt;
# devmem 0x83fda094 32&lt;br /&gt;
0x00000014&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Timings ====&lt;br /&gt;
&lt;br /&gt;
Following chronograms represents WEIM read and write configured for APF51.&lt;br /&gt;
&lt;br /&gt;
[[image:Imx51_sp6_write_timings.jpeg|700px|center|thumb|'''figure 2''' - ''WEIM Write timings'']]&lt;br /&gt;
[[image:Imx51_sp6_read_timings.jpeg|700px|center|thumb|'''figure 3''' - ''WEIM Read timings'']]&lt;br /&gt;
&lt;br /&gt;
=== FPGA side ===&lt;br /&gt;
&lt;br /&gt;
By default, the wishbone bus is used under the spartan6 fpga. Then a WEIM to Wishbone wrapper is used, this wrapper is available under [https://github.com/Martoni/pod_lib/tree/master/platforms/apf51 POD] default libraries in ''wrappers'' lib. The component is named ''imx51_wb16_wrapper''.&lt;br /&gt;
&lt;br /&gt;
== The FPGA interrupt ==&lt;br /&gt;
&lt;br /&gt;
By default under [https://github.com/Martoni/periphondemand POD] the pin '''FPGA_INITB''' (gpio4_11) is used for the interrupts manager ''irq_mngr''. For simple user application the gpio can be used with the [[GPIOlib]] interface, the gpio number will then be (4-1)x32+11 = '''107'''.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://billauer.co.il/blog/2011/10/imx51-imx-weim-freescale-arm-bus/ Eli Billauer investigation].&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=IMX51-Spartan6_interface_description&amp;diff=15037</id>
		<title>IMX51-Spartan6 interface description</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=IMX51-Spartan6_interface_description&amp;diff=15037"/>
				<updated>2021-09-07T14:45:51Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: /* Chip Select */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: APF51]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
[[Category: Spartan6]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article describe the bus interface configuration to communicate between i.MX51 processor and Spartan6 FPGA. In i.MX51, the bus used to make communication with the FPGA is named '''WEIM''' for Wireless Extension Interface Module. All description of this bus can be found under the [http://cache.freescale.com/files/dsp/doc/ref_manual/MCIMX51RM.pdf?fpsp=1&amp;amp;WT_TYPE=Reference%20Manuals&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation  i.MX51 reference manual] in chapter 63 (page 3113).&lt;br /&gt;
&lt;br /&gt;
== Simplified view ==&lt;br /&gt;
&lt;br /&gt;
[[image:Imx51-spartan6.jpg|700px|center|thumb|'''figure 1''' - ''i.MX51-Spartan6 bus description'']]&lt;br /&gt;
&lt;br /&gt;
Figure 1 is a simplified view of [[Datasheet#APF51 | APF51 schematics]] (page 15), signals are :&lt;br /&gt;
&lt;br /&gt;
* '''BCLK''': i.MX51 burst clock used to clock the spartan6.&lt;br /&gt;
* '''DA'''[15:0] : Data/Address multiplexed bus.&lt;br /&gt;
* '''LBA''' : Noted '''ADV''' for ''AD''dress ''V''alid under the i.MX51 reference manual.&lt;br /&gt;
* EB0, EB1 : For Enable Byte, write signal for lower byte and upper byte on data bus. &lt;br /&gt;
* '''CS1''' : Chip Select 1.&lt;br /&gt;
* CS2 : Chip Select 2.&lt;br /&gt;
* OE : For Output Enable bit, read signal. (Motorola way of bus)&lt;br /&gt;
* '''RW''' : Read/Write signal. (Intel way of bus)&lt;br /&gt;
* DTACK : Data acknoledge, for asynchronous access.&lt;br /&gt;
* WAIT : Wait signal used for some burst access.&lt;br /&gt;
Not part of WEIM bus :&lt;br /&gt;
* CLK0 : An i.MX51 output clock (not used ).&lt;br /&gt;
* FPGA_INITB : used by default for interrupts (GPIO4_11).&lt;br /&gt;
&lt;br /&gt;
Signals in '''bold''' are signals used in default configuration.&lt;br /&gt;
&lt;br /&gt;
== Default configuration on CS1 ==&lt;br /&gt;
=== Clock ===&lt;br /&gt;
&lt;br /&gt;
The clock used to clock the fpga is ''BCLK'' (IO_L29P_GCLK3_2 on Spartan6) and is configured to '''95 MHz'''.&lt;br /&gt;
&lt;br /&gt;
=== Chip Select ===&lt;br /&gt;
By default the chip select 1 (CS1) is used for communication. The address domain corresponding to this chip select can be found in [https://www.nxp.com/docs/en/reference-manual/MCIMX51RM.pdf i.MX51 reference manual] in chapter 2 (Memory Map page 65).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Start Address !! End Address !! Size !! Region&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| '''B800_0000''' || '''BFFF_FFFF''' || '''128M''' || '''CS1 (Flash) 128M'''&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| C000_0000 || C7FF_FFFF||  128M||  CS2 (Flash) 128M&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It's possible to use the second chip select (CS2) to extend memory domain or to use different timing configuration with the same Address/Data bus signals.&lt;br /&gt;
The default bus configuration for the APF51 can be found in the file apf51.h in u-boot sources :&lt;br /&gt;
''buildroot/target/device/armadeus/apf51/apf51-u-boot-2010.03.h''&lt;br /&gt;
&lt;br /&gt;
Especially these lines :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define	CONFIG_FPGA_GCR1_VALUE	0x019100bf&lt;br /&gt;
#define	CONFIG_FPGA_GCR2_VALUE	0x00000000&lt;br /&gt;
                                           &lt;br /&gt;
#define	CONFIG_FPGA_RCR1_VALUE	0x04000010&lt;br /&gt;
#define	CONFIG_FPGA_RCR2_VALUE	0x00000000&lt;br /&gt;
                                           &lt;br /&gt;
#define	CONFIG_FPGA_WCR1_VALUE	0x04000008&lt;br /&gt;
#define	CONFIG_FPGA_WCR2_VALUE	0x00000000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note| Do not forget to do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make u-boot-dirclean&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To test your modification under the ''apf51-u-boot-2010.03.h'' file&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is not necessary to modify apf51.h file and recompile U-Boot for WEIM timings test, register can be read/written ''via'' [http://www.denx.de/wiki/view/DULG/UBootCmdGroupMemory#Section_5.9.2.8. U-Boot] or [[FPGA_register | Linux]].&lt;br /&gt;
To access these register with U-Boot or Linux, use the address given under the reference manual in WEIM register descriptions (63.4.3 Register Descriptions).&lt;br /&gt;
{{Note| The 0xBASE value is given in chapter 2 &amp;quot;Memory Map&amp;quot; (page 65) : 0xBASE -&amp;gt; 0x83FD8000}}&lt;br /&gt;
&lt;br /&gt;
==== Timings ====&lt;br /&gt;
&lt;br /&gt;
Following chronograms represents WEIM read and write configured for APF51.&lt;br /&gt;
&lt;br /&gt;
[[image:Imx51_sp6_write_timings.jpeg|700px|center|thumb|'''figure 2''' - ''WEIM Write timings'']]&lt;br /&gt;
[[image:Imx51_sp6_read_timings.jpeg|700px|center|thumb|'''figure 3''' - ''WEIM Read timings'']]&lt;br /&gt;
&lt;br /&gt;
=== FPGA side ===&lt;br /&gt;
&lt;br /&gt;
By default, the wishbone bus is used under the spartan6 fpga. Then a WEIM to Wishbone wrapper is used, this wrapper is available under [https://github.com/Martoni/pod_lib/tree/master/platforms/apf51 POD] default libraries in ''wrappers'' lib. The component is named ''imx51_wb16_wrapper''.&lt;br /&gt;
&lt;br /&gt;
== The FPGA interrupt ==&lt;br /&gt;
&lt;br /&gt;
By default under [https://github.com/Martoni/periphondemand POD] the pin '''FPGA_INITB''' (gpio4_11) is used for the interrupts manager ''irq_mngr''. For simple user application the gpio can be used with the [[GPIOlib]] interface, the gpio number will then be (4-1)x32+11 = '''107'''.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://billauer.co.il/blog/2011/10/imx51-imx-weim-freescale-arm-bus/ Eli Billauer investigation].&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=Fpgaregs&amp;diff=15036</id>
		<title>Fpgaregs</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Fpgaregs&amp;diff=15036"/>
				<updated>2021-09-07T08:30:02Z</updated>
		
		<summary type="html">&lt;p&gt;FabienM: Redirected page to FPGA registers access from Linux userspace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[FPGA_registers_access_from_Linux_userspace]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>	</entry>

	</feed>