<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SonZerro</id>
	<title>ArmadeusWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SonZerro"/>
	<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Special:Contributions/SonZerro"/>
	<updated>2026-04-27T23:22:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=10623</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=10623"/>
		<updated>2012-02-12T21:11:28Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Fix XESS link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
==Developing on the APF FPGA==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; summary=&amp;quot;Hardware Add-Ons by functionalities&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 1. Starting Up with FPGA ===&lt;br /&gt;
All you need to know to play with the Armadeus FPGA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== Design Tools===&lt;br /&gt;
Description of tools used to simulate, to synthesize, and to download/configure FGPA.&lt;br /&gt;
&lt;br /&gt;
* [[ISE WebPack installation on Linux| ISE WebPack (Xilinx&#039;s free devt tool) installation]]&lt;br /&gt;
* [[How_to_make_a_VHDL_design_in_Ubuntu/Debian| How to setup the FPGA toolchain 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;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 2. Make some examples ===&lt;br /&gt;
&lt;br /&gt;
These examples give the basis to make VHDL design for FPGA.&lt;br /&gt;
&lt;br /&gt;
* [[Simple blinking LED | LED]]&lt;br /&gt;
* [[A simple design with Wishbone bus | Complete example with button and led on wishbone bus communication and Linux drivers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===Using Armadeus FPGA===&lt;br /&gt;
Manage the FGPA from Armadeus distribution.&lt;br /&gt;
&lt;br /&gt;
* [[Configure or flash FPGA ?]]&lt;br /&gt;
* Configure the FPGA [[FPGA_loader | from Linux]], [[Target_Software_Installation#FPGA_firmware_test | from U-Boot]]&lt;br /&gt;
* Flashing FPGA firmware [[Uboot_FPGA_firmware_update_from_Linux | from Linux]], [[Target_Software_Installation#FPGA_firmware_installation | from U-Boot]]&lt;br /&gt;
* [[FPGA_register | Access the FPGA address domain from Linux]]&lt;br /&gt;
* [[Ho! No FPGA-reset button on armadeus card.]]&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 3. Automatize FPGA design making ===&lt;br /&gt;
&lt;br /&gt;
==== [[Peripherals On Demand]] ====&lt;br /&gt;
For complex projects, POD should be used to simplify design.&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===VHDL ===&lt;br /&gt;
&lt;br /&gt;
* [[VHDL coding styles|VHDL coding styles &amp;amp; externals documentations]]&lt;br /&gt;
* [http://www.xess.com/design_examples.php#XESS_Examples Nice ideas/examples to look at]&lt;br /&gt;
* [http://www.opencores.org www.opencores.org]&lt;br /&gt;
* [http://www.gmvhdl.com/VHDL.html An Introductory VHDL Tutorial]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== FPGA Interface ===&lt;br /&gt;
&lt;br /&gt;
* APF9328 : [[IMX9328-Spartan3 interface description]]&lt;br /&gt;
* APF27 : [[IMX27-Spartan3A interface description]]&lt;br /&gt;
* APF51 : [[IMX51-Spartan6 interface description]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
Some useful links.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Wishbone &#039;&#039;&#039;&lt;br /&gt;
* [http://cdn.opencores.org/downloads/wbspec_b3.pdf  official Wishbone specifications]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29 Wikipedia Wishbone doc]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Spartan &#039;&#039;&#039;&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf Spartan-3 FPGA Family Data Sheet]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Orchestra &#039;&#039;&#039;&lt;br /&gt;
* [http://osocgen.berlios.de/ Orchestra website]&lt;br /&gt;
* [http://developer.berlios.de/projects/osocgen/ Orchestra project page]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7198</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7198"/>
		<updated>2009-08-06T23:22:54Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: buildroot download&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation was successfully tested on the following distributions:&lt;br /&gt;
* Debian Sarge, Etch &amp;amp; Lenny&lt;br /&gt;
* Fedora Core 3 &amp;amp; 4&lt;br /&gt;
* Fedora 10&lt;br /&gt;
* KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) &amp;amp; Jaunty Jackalope (9.04)&lt;br /&gt;
* Mandriva 2006&lt;br /&gt;
* SuSE 10.1&lt;br /&gt;
* Ubuntu Dapper Drake (6.04), Hardy Heron (8.04) &amp;amp; Intrepid Ibex (8.10)&lt;br /&gt;
* Xubuntu Edgy Eft (6.10)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a &#039;&#039;make&#039;&#039; version &#039;&#039;&#039;greater or equal to&#039;&#039;&#039; 3.81. To check it: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make -v&lt;br /&gt;
GNU Make 3.81&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&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;
* you can use the following command to get them (assuming your userid is allowed to use sudo (execution of commands as root)):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install gcc  g++ autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo apt-get install patch subversion texinfo wget git-core&lt;br /&gt;
 sudo apt-get install libncurses5 libncurses5-dev&lt;br /&gt;
 sudo apt-get install zlib1g-dev liblzo2-2 liblzo2-dev&lt;br /&gt;
 sudo apt-get install libacl1 libacl1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add for compiling some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install libglib2.0-dev&lt;br /&gt;
 sudo apt-get install libnetpbm10-dev   (for fbtest)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|For Ubuntu based systems, the following is now required if your &#039;&#039;/bin/sh&#039;&#039; is &#039;&#039;&#039;not&#039;&#039;&#039; pointing to &#039;&#039;/bin/bash&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ ls -al /bin/sh&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2007-12-08 18:33 /bin/sh -&amp;gt; dash&lt;br /&gt;
 $ sudo dpkg-reconfigure dash&lt;br /&gt;
     and select no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Indeed dash do not support all the capabilities needed by Buildroot (our build system).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mandriva based systems=== &lt;br /&gt;
* name of packages are different therefore use the lines hereafter instead (assuming sudo is configured to support root commands):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi gcc  gcc-c++ make autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo urpmi patch subversion texinfo wget git&lt;br /&gt;
 sudo urpmi libncurses5 libncurses-devel&lt;br /&gt;
 sudo urpmi zlib1-devel liblzo2_2 liblzo-devel&lt;br /&gt;
 sudo urpmi libacl1 libacl-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi libglib2.0-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RPM-based systems===&lt;br /&gt;
*like Fedora and CentOS, the following commands should install all the needed prerequisites (assuming root shell):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 yum install gcc gcc-c++ make autoconf automake libtool bison flex gettext&lt;br /&gt;
 yum install patch subversion texinfo git&lt;br /&gt;
 yum install zlib-devel gettext-devel ncurses-devel lzo-devel libacl-devel&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some extra packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  yum install glib2-devel  lzo2-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* &#039;&#039;&#039;If you are a &amp;quot;careful&amp;quot; user&#039;&#039;&#039;, then download [http://sourceforge.net/project/showfiles.php?group_id=122057&amp;amp;package_id=133240 the latest stable installation tarball from SourceForge] and detar it wherever you want:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ tar xjvf armadeus-3.1.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If you want the last snapshot&#039;&#039;&#039;,the whole development tree can now be checked out from the new [[GIT_Migration|GIT]] repository. SVN repository is no more maintained !!!&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git clone git://armadeus.git.sourceforge.net/gitroot/armadeus armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A directory named &#039;&#039;armadeus/&#039;&#039; or &#039;&#039;armadeus-3.1/&#039;&#039; will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Do not use spaces&#039;&#039;&#039; in the directory name !&lt;br /&gt;
* GIT write/push  accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:Salocin68|Salocin68]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK options==&lt;br /&gt;
The first time you compile an Armadeus distribution you have to specify the target to work with. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd armadeus/  (or armadeus-3.1/)&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 an [[APF9328|APF9328 board]] and automatically start a Buildroot&#039;s configuration menu. For the [[APF27]] it would be:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make apf27_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you ever made changes in the following steps, at any time you can reload the default configuration with &#039;&#039;&#039;make apf9328_defconfig&#039;&#039;&#039; or &#039;&#039;&#039;make apf27_defconfig&#039;&#039;&#039;.}}&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;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target options  ---&amp;gt; &lt;br /&gt;
:[*] Armadeus Device Support  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:you can check and change the quantity of RAM available on your Armadeus board. Default value 16MB is just fine with all [[APF9328]] boards, for [[APF27]] it could be either 64MB or or 2 x 64MB (in that case be sure to select 2 chips of 64MB instead of 1 chip of 128MB).&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target filesystem options --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:for each type of filesystems to build, you have the option (&#039;&#039;also copy the image to...&#039;&#039;) to copy the binary file to secondary location like your tftp server folder (for example &#039;&#039;/tftpboot&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Also U-Boot can be copied to a second location (like &#039;&#039;/tftpboot&#039;&#039;). You will find the U-Boot options at the end of the list.&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Kernel --&amp;gt;&lt;br /&gt;
:Destination for linux kernel binaries --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:you will find options to copy Linux to a secondary location (like &#039;&#039;/tftpboot&#039;&#039;)&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;&lt;br /&gt;
:(1) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* During the toolchain/distribution automatic build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. &#039;&#039;&#039;If you have several views or plan to build the toolchain several times&#039;&#039;&#039;, we advise you to put all the downloaded files in &#039;&#039;/local/downloads&#039;&#039; (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, buildroot will be downloaded separately for each build environment you set up.&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build options  ---&amp;gt; &lt;br /&gt;
:(...) Download dir&amp;lt;/pre&amp;gt;&lt;br /&gt;
:[[Image:Build_config_menu_download.png]]&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
:[[Image:Build_config_download.png]]&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you too to copy all the files in &#039;&#039;downloads/&#039;&#039; on a removable medium, in case you want to install the development tools on several systems.&lt;br /&gt;
&lt;br /&gt;
* Now, Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please wait for a while.... it takes at least one hour for the first run!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The downloaded files are put (by default) in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. Please see the previous chapter to know how to optimize that if you plan to build several views.&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory &#039;&#039;buildroot/binaries/apfXX/&#039;&#039; (where XX is the name of your board):&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.brec&#039;&#039;: only on [[APF9328]]; BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.bin&#039;&#039;: U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*&#039;&#039;apfXX-linux.bin&#039;&#039;: Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.jffs2&#039;&#039;: filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.tar&#039;&#039;: for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp;amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note the new naming convention of binary files and directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The toolchain and project files share a new naming convention too (YY is 4t for APF9328 and 5te for APF27):&lt;br /&gt;
*&#039;&#039;buildroot/build_armvYY&#039;&#039;: contains all non configurable user-space tools&lt;br /&gt;
*&#039;&#039;buildroot/project_build_armvYY/apfXX&#039;&#039;: 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;
*&#039;&#039;buildroot/toolchain_build_armvYY&#039;&#039;: 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;
* Note: Previous versions of Armadeus SDK stored the generated binary files at different place &#039;&#039;buildroot/binaries/armadeus/&#039;&#039; and file names did not contained any prefix of board name:&lt;br /&gt;
&lt;br /&gt;
:u-boot.brec (BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working)&lt;br /&gt;
:u-boot.bin (U-Boot image file for use with U-Boot itself)&lt;br /&gt;
:linux-kernel-2.6.xx-arm.bin (Linux image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.jffs2 (FileSystem/RootFS image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.tar (for an NFS/MMC RootFS)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;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 apf9328_defconfig&lt;br /&gt;
to have the latest features automatically activated.&lt;br /&gt;
&lt;br /&gt;
You have to do a &#039;&#039;&#039;make&#039;&#039;&#039; to rebuild binary files and then upload the binary files to your target.&lt;br /&gt;
&lt;br /&gt;
Note: if definitively everything goes wrong while it worked before the last update.&lt;br /&gt;
You can apply the following procedure (all your modifications in buildroot will be lost):&lt;br /&gt;
 $ rm -rf buildroot/&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ make apf9328_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|LinuxInstall|Compilateur croisé|LinuxInstall}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7195</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7195"/>
		<updated>2009-08-06T13:59:38Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: additional distro tested&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation was successfully tested on the following distributions:&lt;br /&gt;
* Debian Sarge, Etch &amp;amp; Lenny&lt;br /&gt;
* Fedora Core 3 &amp;amp; 4&lt;br /&gt;
* Fedora 10&lt;br /&gt;
* KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) &amp;amp; Jaunty Jackalope (9.04)&lt;br /&gt;
* Mandriva 2006&lt;br /&gt;
* SuSE 10.1&lt;br /&gt;
* Ubuntu Dapper Drake (6.04), Hardy Heron (8.04) &amp;amp; Intrepid Ibex (8.10)&lt;br /&gt;
* Xubuntu Edgy Eft (6.10)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a &#039;&#039;make&#039;&#039; version &#039;&#039;&#039;greater or equal to&#039;&#039;&#039; 3.81. To check it: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make -v&lt;br /&gt;
GNU Make 3.81&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&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;
* you can use the following command to get them (assuming your userid is allowed to use sudo (execution of commands as root)):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install gcc  g++ autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo apt-get install patch subversion texinfo wget git-core&lt;br /&gt;
 sudo apt-get install libncurses5 libncurses5-dev&lt;br /&gt;
 sudo apt-get install zlib1g-dev liblzo2-2 liblzo2-dev&lt;br /&gt;
 sudo apt-get install libacl1 libacl1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add for compiling some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install libglib2.0-dev&lt;br /&gt;
 sudo apt-get install libnetpbm10-dev   (for fbtest)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|For Ubuntu based systems, the following is now required if your &#039;&#039;/bin/sh&#039;&#039; is &#039;&#039;&#039;not&#039;&#039;&#039; pointing to &#039;&#039;/bin/bash&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ ls -al /bin/sh&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2007-12-08 18:33 /bin/sh -&amp;gt; dash&lt;br /&gt;
 $ sudo dpkg-reconfigure dash&lt;br /&gt;
     and select no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Indeed dash do not support all the capabilities needed by Buildroot (our build system).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mandriva based systems=== &lt;br /&gt;
* name of packages are different therefore use the lines hereafter instead (assuming sudo is configured to support root commands):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi gcc  gcc-c++ make autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo urpmi patch subversion texinfo wget git&lt;br /&gt;
 sudo urpmi libncurses5 libncurses-devel&lt;br /&gt;
 sudo urpmi zlib1-devel liblzo2_2 liblzo-devel&lt;br /&gt;
 sudo urpmi libacl1 libacl-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi libglib2.0-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RPM-based systems===&lt;br /&gt;
*like Fedora and CentOS, the following commands should install all the needed prerequisites (assuming root shell):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 yum install gcc gcc-c++ make autoconf automake libtool bison flex gettext&lt;br /&gt;
 yum install patch subversion texinfo git&lt;br /&gt;
 yum install zlib-devel gettext-devel ncurses-devel lzo-devel libacl-devel&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some extra packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  yum install glib2-devel  lzo2-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* &#039;&#039;&#039;If you are a &amp;quot;careful&amp;quot; user&#039;&#039;&#039;, then download [http://sourceforge.net/project/showfiles.php?group_id=122057&amp;amp;package_id=133240 the latest stable installation tarball from SourceForge] and detar it wherever you want:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ tar xjvf armadeus-3.1.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If you want the last snapshot&#039;&#039;&#039;,the whole development tree can now be checked out from the new [[GIT_Migration|GIT]] repository. SVN repository is no more maintained !!!&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git clone git://armadeus.git.sourceforge.net/gitroot/armadeus armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A directory named &#039;&#039;armadeus/&#039;&#039; or &#039;&#039;armadeus-3.1/&#039;&#039; will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Do not use spaces&#039;&#039;&#039; in the directory name !&lt;br /&gt;
* GIT write/push  accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:Salocin68|Salocin68]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK options==&lt;br /&gt;
The first time you compile an Armadeus distribution you have to specify the target to work with. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd armadeus/  (or armadeus-3.1/)&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 an [[APF9328|APF9328 board]] and automatically start a Buildroot&#039;s configuration menu. For the [[APF27]] it would be:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make apf27_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you ever made changes in the following steps, at any time you can reload the default configuration with &#039;&#039;&#039;make apf9328_defconfig&#039;&#039;&#039; or &#039;&#039;&#039;make apf27_defconfig&#039;&#039;&#039;.}}&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;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target options  ---&amp;gt; &lt;br /&gt;
:[*] Armadeus Device Support  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:you can check and change the quantity of RAM available on your Armadeus board. Default value 16MB is just fine with all [[APF9328]] boards, for [[APF27]] it could be either 64MB or or 2 x 64MB (in that case be sure to select 2 chips of 64MB instead of 1 chip of 128MB).&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target filesystem options --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:for each type of filesystems to build, you have the option (&#039;&#039;also copy the image to...&#039;&#039;) to copy the binary file to secondary location like your tftp server folder (for example &#039;&#039;/tftpboot&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Also U-Boot can be copied to a second location (like &#039;&#039;/tftpboot&#039;&#039;). You will find the U-Boot options at the end of the list.&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Kernel --&amp;gt;&lt;br /&gt;
:Destination for linux kernel binaries --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:you will find options to copy Linux to a secondary location (like &#039;&#039;/tftpboot&#039;&#039;)&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;&lt;br /&gt;
:(1) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* During the toolchain/distribution automatic build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. &#039;&#039;&#039;If you have several views or plan to build the toolchain several times&#039;&#039;&#039;, we advise you to put all the downloaded files in &#039;&#039;/local/downloads&#039;&#039; (for example). This is done by configuring Buildroot to use this directory for all your views:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build options  ---&amp;gt; &lt;br /&gt;
:(...) Download dir&amp;lt;/pre&amp;gt;&lt;br /&gt;
:[[Image:Build_config_menu_download.png]]&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
:[[Image:Build_config_download.png]]&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you too to copy all the files in &#039;&#039;downloads/&#039;&#039; on a removable medium, in case you want to install the development tools on several systems.&lt;br /&gt;
&lt;br /&gt;
* Now, Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please wait for a while.... it takes at least one hour for the first run!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The downloaded files are put (by default) in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. Please see the previous chapter to know how to optimize that if you plan to build several views.&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory &#039;&#039;buildroot/binaries/apfXX/&#039;&#039; (where XX is the name of your board):&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.brec&#039;&#039;: only on [[APF9328]]; BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.bin&#039;&#039;: U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*&#039;&#039;apfXX-linux.bin&#039;&#039;: Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.jffs2&#039;&#039;: filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.tar&#039;&#039;: for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp;amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note the new naming convention of binary files and directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The toolchain and project files share a new naming convention too (YY is 4t for APF9328 and 5te for APF27):&lt;br /&gt;
*&#039;&#039;buildroot/build_armvYY&#039;&#039;: contains all non configurable user-space tools&lt;br /&gt;
*&#039;&#039;buildroot/project_build_armvYY/apfXX&#039;&#039;: 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;
*&#039;&#039;buildroot/toolchain_build_armvYY&#039;&#039;: 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;
* Note: Previous versions of Armadeus SDK stored the generated binary files at different place &#039;&#039;buildroot/binaries/armadeus/&#039;&#039; and file names did not contained any prefix of board name:&lt;br /&gt;
&lt;br /&gt;
:u-boot.brec (BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working)&lt;br /&gt;
:u-boot.bin (U-Boot image file for use with U-Boot itself)&lt;br /&gt;
:linux-kernel-2.6.xx-arm.bin (Linux image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.jffs2 (FileSystem/RootFS image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.tar (for an NFS/MMC RootFS)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;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 apf9328_defconfig&lt;br /&gt;
to have the latest features automatically activated.&lt;br /&gt;
&lt;br /&gt;
You have to do a &#039;&#039;&#039;make&#039;&#039;&#039; to rebuild binary files and then upload the binary files to your target.&lt;br /&gt;
&lt;br /&gt;
Note: if definitively everything goes wrong while it worked before the last update.&lt;br /&gt;
You can apply the following procedure (all your modifications in buildroot will be lost):&lt;br /&gt;
 $ rm -rf buildroot/&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ make apf9328_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|LinuxInstall|Compilateur croisé|LinuxInstall}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7194</id>
		<title>LinuxInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=LinuxInstall&amp;diff=7194"/>
		<updated>2009-08-06T13:45:19Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation was successfully tested on the following distributions:&lt;br /&gt;
* Debian Sarge, Etch &amp;amp; Lenny&lt;br /&gt;
* Fedora Core 3 &amp;amp; 4&lt;br /&gt;
* Fedora 10&lt;br /&gt;
* KUbuntu Edgy Eft (6.10), Gusty Gibbon (7.10), Hardy Heron (8.04) &amp;amp; Jaunty Jackalope (9.04)&lt;br /&gt;
* Mandriva 2006&lt;br /&gt;
* SuSE 10.1&lt;br /&gt;
* Ubuntu Dapper Drake (6.04) &amp;amp; Intrepid Ibex (8.10)&lt;br /&gt;
* Xubuntu Edgy Eft (6.10)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Linux installation==&lt;br /&gt;
{{Note|From here we assume that your Linux system has a &#039;&#039;make&#039;&#039; version &#039;&#039;&#039;greater or equal to&#039;&#039;&#039; 3.81. To check it: &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ make -v&lt;br /&gt;
GNU Make 3.81&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&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;
* you can use the following command to get them (assuming your userid is allowed to use sudo (execution of commands as root)):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install gcc  g++ autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo apt-get install patch subversion texinfo wget git-core&lt;br /&gt;
 sudo apt-get install libncurses5 libncurses5-dev&lt;br /&gt;
 sudo apt-get install zlib1g-dev liblzo2-2 liblzo2-dev&lt;br /&gt;
 sudo apt-get install libacl1 libacl1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add for compiling some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install libglib2.0-dev&lt;br /&gt;
 sudo apt-get install libnetpbm10-dev   (for fbtest)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|For Ubuntu based systems, the following is now required if your &#039;&#039;/bin/sh&#039;&#039; is &#039;&#039;&#039;not&#039;&#039;&#039; pointing to &#039;&#039;/bin/bash&#039;&#039;:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ ls -al /bin/sh&lt;br /&gt;
 lrwxrwxrwx 1 root root 4 2007-12-08 18:33 /bin/sh -&amp;gt; dash&lt;br /&gt;
 $ sudo dpkg-reconfigure dash&lt;br /&gt;
     and select no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Indeed dash do not support all the capabilities needed by Buildroot (our build system).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mandriva based systems=== &lt;br /&gt;
* name of packages are different therefore use the lines hereafter instead (assuming sudo is configured to support root commands):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi gcc  gcc-c++ make autoconf  automake libtool bison flex gettext &lt;br /&gt;
 sudo urpmi patch subversion texinfo wget git&lt;br /&gt;
 sudo urpmi libncurses5 libncurses-devel&lt;br /&gt;
 sudo urpmi zlib1-devel liblzo2_2 liblzo-devel&lt;br /&gt;
 sudo urpmi libacl1 libacl-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some Buildroot packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 sudo urpmi libglib2.0-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RPM-based systems===&lt;br /&gt;
*like Fedora and CentOS, the following commands should install all the needed prerequisites (assuming root shell):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 yum install gcc gcc-c++ make autoconf automake libtool bison flex gettext&lt;br /&gt;
 yum install patch subversion texinfo git&lt;br /&gt;
 yum install zlib-devel gettext-devel ncurses-devel lzo-devel libacl-devel&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not mandatory but useful to add some extra packages:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
  yum install glib2-devel  lzo2-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get Armadeus software==&lt;br /&gt;
* &#039;&#039;&#039;If you are a &amp;quot;careful&amp;quot; user&#039;&#039;&#039;, then download [http://sourceforge.net/project/showfiles.php?group_id=122057&amp;amp;package_id=133240 the latest stable installation tarball from SourceForge] and detar it wherever you want:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ tar xjvf armadeus-3.1.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;If you want the last snapshot&#039;&#039;&#039;,the whole development tree can now be checked out from the new [[GIT_Migration|GIT]] repository. SVN repository is no more maintained !!!&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ git clone git://armadeus.git.sourceforge.net/gitroot/armadeus armadeus&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A directory named &#039;&#039;armadeus/&#039;&#039; or &#039;&#039;armadeus-3.1/&#039;&#039; will be created on your hard-disk and will contain all the files you need.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Do not use spaces&#039;&#039;&#039; in the directory name !&lt;br /&gt;
* GIT write/push  accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:Salocin68|Salocin68]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]])&lt;br /&gt;
&lt;br /&gt;
==Configure SDK options==&lt;br /&gt;
The first time you compile an Armadeus distribution you have to specify the target to work with. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ cd armadeus/  (or armadeus-3.1/)&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 an [[APF9328|APF9328 board]] and automatically start a Buildroot&#039;s configuration menu. For the [[APF27]] it would be:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make apf27_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you ever made changes in the following steps, at any time you can reload the default configuration with &#039;&#039;&#039;make apf9328_defconfig&#039;&#039;&#039; or &#039;&#039;&#039;make apf27_defconfig&#039;&#039;&#039;.}}&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;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target options  ---&amp;gt; &lt;br /&gt;
:[*] Armadeus Device Support  ---&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:you can check and change the quantity of RAM available on your Armadeus board. Default value 16MB is just fine with all [[APF9328]] boards, for [[APF27]] it could be either 64MB or or 2 x 64MB (in that case be sure to select 2 chips of 64MB instead of 1 chip of 128MB).&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Target filesystem options --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:for each type of filesystems to build, you have the option (&#039;&#039;also copy the image to...&#039;&#039;) to copy the binary file to secondary location like your tftp server folder (for example &#039;&#039;/tftpboot&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
:Also U-Boot can be copied to a second location (like &#039;&#039;/tftpboot&#039;&#039;). You will find the U-Boot options at the end of the list.&lt;br /&gt;
&lt;br /&gt;
*In menu:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Kernel --&amp;gt;&lt;br /&gt;
:Destination for linux kernel binaries --&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
:you will find options to copy Linux to a secondary location (like &#039;&#039;/tftpboot&#039;&#039;)&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;&lt;br /&gt;
:(1) Number of jobs to run simultaneously&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* During the toolchain/distribution automatic build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. &#039;&#039;&#039;If you have several views or plan to build the toolchain several times&#039;&#039;&#039;, we advise you to put all the downloaded files in &#039;&#039;/local/downloads&#039;&#039; (for example). This is done by configuring Buildroot to use this directory for all your views:&lt;br /&gt;
:&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;Build options  ---&amp;gt; &lt;br /&gt;
:(...) Download dir&amp;lt;/pre&amp;gt;&lt;br /&gt;
:[[Image:Build_config_menu_download.png]]&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
:[[Image:Build_config_download.png]]&lt;br /&gt;
&lt;br /&gt;
* After the build, we advise you too to copy all the files in &#039;&#039;downloads/&#039;&#039; on a removable medium, in case you want to install the development tools on several systems.&lt;br /&gt;
&lt;br /&gt;
* Now, Exit the configuration tool and save your configuration&lt;br /&gt;
&lt;br /&gt;
==Launch build==&lt;br /&gt;
 $ make&lt;br /&gt;
The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please wait for a while.... it takes at least one hour for the first run!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The downloaded files are put (by default) in the &#039;&#039;armadeus/downloads/&#039;&#039; directory. Please see the previous chapter to know how to optimize that if you plan to build several views.&lt;br /&gt;
&lt;br /&gt;
==Enjoy the result==&lt;br /&gt;
The generated binary files can be found in the subdirectory &#039;&#039;buildroot/binaries/apfXX/&#039;&#039; (where XX is the name of your board):&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.brec&#039;&#039;: only on [[APF9328]]; BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)&lt;br /&gt;
*&#039;&#039;apfXX-u-boot.bin&#039;&#039;: U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])&lt;br /&gt;
*&#039;&#039;apfXX-linux.bin&#039;&#039;: Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.jffs2&#039;&#039;: filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])&lt;br /&gt;
*&#039;&#039;apfXX-rootfs.arm.tar&#039;&#039;: for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp;amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note the new naming convention of binary files and directories&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The toolchain and project files share a new naming convention too (YY is 4t for APF9328 and 5te for APF27):&lt;br /&gt;
*&#039;&#039;buildroot/build_armvYY&#039;&#039;: contains all non configurable user-space tools&lt;br /&gt;
*&#039;&#039;buildroot/project_build_armvYY/apfXX&#039;&#039;: 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;
*&#039;&#039;buildroot/toolchain_build_armvYY&#039;&#039;: 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;
* Note: Previous versions of Armadeus SDK stored the generated binary files at different place &#039;&#039;buildroot/binaries/armadeus/&#039;&#039; and file names did not contained any prefix of board name:&lt;br /&gt;
&lt;br /&gt;
:u-boot.brec (BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working)&lt;br /&gt;
:u-boot.bin (U-Boot image file for use with U-Boot itself)&lt;br /&gt;
:linux-kernel-2.6.xx-arm.bin (Linux image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.jffs2 (FileSystem/RootFS image to use with U-Boot)&lt;br /&gt;
:rootfs.arm.tar (for an NFS/MMC RootFS)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;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 apf9328_defconfig&lt;br /&gt;
to have the latest features automatically activated.&lt;br /&gt;
&lt;br /&gt;
You have to do a &#039;&#039;&#039;make&#039;&#039;&#039; to rebuild binary files and then upload the binary files to your target.&lt;br /&gt;
&lt;br /&gt;
Note: if definitively everything goes wrong while it worked before the last update.&lt;br /&gt;
You can apply the following procedure (all your modifications in buildroot will be lost):&lt;br /&gt;
 $ rm -rf buildroot/&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ git pull&lt;br /&gt;
 $ make apf9328_defconfig&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|LinuxInstall|Compilateur croisé|LinuxInstall}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ArmadeusWiki:Site_support&amp;diff=7193</id>
		<title>ArmadeusWiki:Site support</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ArmadeusWiki:Site_support&amp;diff=7193"/>
		<updated>2009-08-06T13:27:31Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Well, the best way to support this project is to join it by buying an APF9328 or APF27 board !&lt;br /&gt;
* Le meilleur moyen de &amp;quot;sponsoriser&amp;quot; ce projet est de nous rejoindre en nous commandant une carte APF9328 ou APF27 !&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=POD_installation_guide&amp;diff=7189</id>
		<title>POD installation guide</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=POD_installation_guide&amp;diff=7189"/>
		<updated>2009-08-05T09:33:23Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Ho! Again this second template...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
=== mandatory ===&lt;br /&gt;
* python : POD is written in python.&lt;br /&gt;
* pyparsing : a python module to parse files.&lt;br /&gt;
&lt;br /&gt;
=== optional ===&lt;br /&gt;
* ghdl, gtkwave : it&#039;s not mandatory, POD can generate VHDL testbench ready for ghdl simulator. As it&#039;s standard VHDL, another simulator should work.&lt;br /&gt;
* ISE Webpack : to generate synthesis project for Xilinx.&lt;br /&gt;
* Quartus : to generate synthesis project for Altera.&lt;br /&gt;
* ARMadeus SDK : to generate driver project for the Armadeus boards.&lt;br /&gt;
&lt;br /&gt;
== Install from package ==&lt;br /&gt;
 {{Note| For this moment, package must be created from svn repository. Release will be downloadable soon}}&lt;br /&gt;
* Decompress the package PeriphOnDemand-X.X.tar.gz in install directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd somewhere/&lt;br /&gt;
$ tar -zxvf PeriphOnDemand-X.X.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Walk through &#039;&#039;periphondemand/&#039;&#039; directory:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ cd periphondemand&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then install POD with root privilege:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Generate package from subversion tree ==&lt;br /&gt;
&lt;br /&gt;
* Checkout the source code with following command (subversion is needed):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ svn co https://periphondemand.svn.sourceforge.net/svnroot/periphondemand/trunk periphondemand&lt;br /&gt;
$ cd periphondemand/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Make python POD distribution:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ python setup.py sdist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The POD package can be found in directory &#039;&#039;dist/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Using svn tree directly ==&lt;br /&gt;
&lt;br /&gt;
on your branche tree add a symbolic link named periphondemand :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
trunk/$ln -s src periphondemand&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify the binary &amp;quot;pod&amp;quot; file to add the path :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
vim src/bin/pod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import periphondemand.bin.pod&lt;br /&gt;
import sys&lt;br /&gt;
periphondemand.bin.pod.main(sys.argv)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os,sys&lt;br /&gt;
sys.path.append(&amp;quot;PATH_OF_YOUR_TRUNK/BRANCHE&amp;quot;)&lt;br /&gt;
import periphondemand.bin.pod&lt;br /&gt;
periphondemand.bin.pod.main(sys.argv)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then start POD using this binary :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ ./periphondemand/bin/pod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Ho!_No_FPGA-reset_button_on_armadeus_card.&amp;diff=7188</id>
		<title>Ho! No FPGA-reset button on armadeus card.</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Ho!_No_FPGA-reset_button_on_armadeus_card.&amp;diff=7188"/>
		<updated>2009-08-05T09:32:10Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Ho! A second template exists!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
That is a constant comment about the armadeus apf9328 card. Most of FPGA designer learn that it&#039;s mandatory to use a reset in each module with structure like it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
myprocess : process (clk,reset)&lt;br /&gt;
begin&lt;br /&gt;
  if reset = &#039;1&#039; then&lt;br /&gt;
    -- init values&lt;br /&gt;
  elsif rising_edge(clk) then&lt;br /&gt;
    -- processing code&lt;br /&gt;
  end if;&lt;br /&gt;
end process myprocess;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But by default there is no reset button on card, then what to do ?&lt;br /&gt;
&lt;br /&gt;
== Plug a reset button ==&lt;br /&gt;
&lt;br /&gt;
Of course it&#039;s possible to solder a reset button on card, there are a large amount of I/O on connector and one can serve to do it.&lt;br /&gt;
&lt;br /&gt;
== Generate the reset internal ==&lt;br /&gt;
&lt;br /&gt;
But it is possible to use initial state of fpga after configuration with this code:&lt;br /&gt;
&lt;br /&gt;
{{Warning| This code work only with FPGA, because states of flip-flop after configuration is defined to &#039;0&#039;. This can&#039;t work with CPLD for example because beginning state is unknown.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;VHDL&amp;quot;&amp;gt;&lt;br /&gt;
 ---------------------------------------------------------------------------&lt;br /&gt;
 Entity clock_and_reset_gen is &lt;br /&gt;
 ---------------------------------------------------------------------------&lt;br /&gt;
 generic(&lt;br /&gt;
     invert_reset : std_logic := &#039;0&#039; -- 0 : not invert, 1 invert&lt;br /&gt;
 );&lt;br /&gt;
 port &lt;br /&gt;
 (&lt;br /&gt;
 	-- external signals&lt;br /&gt;
 	ext_clk : in std_logic ;&lt;br /&gt;
 	--internal generated signals&lt;br /&gt;
 	gls_clk : out std_logic ;&lt;br /&gt;
 	gls_reset : out std_logic &lt;br /&gt;
 );&lt;br /&gt;
 end entity;&lt;br /&gt;
 &lt;br /&gt;
 ---------------------------------------------------------------------------&lt;br /&gt;
 Architecture clock_and_reset_gen_1 of clock_and_reset_gen is&lt;br /&gt;
 ---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
 	signal dly: std_logic := &#039;0&#039;;&lt;br /&gt;
 	signal rst: std_logic := &#039;0&#039;;&lt;br /&gt;
 	signal int_reset : std_logic;&lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
&lt;br /&gt;
 	int_reset &amp;lt;= &#039;0&#039;;&lt;br /&gt;
    ----------------------------------------------------------------------------&lt;br /&gt;
    --  RESET signal generator.&lt;br /&gt;
    ----------------------------------------------------------------------------&lt;br /&gt;
    process(ext_clk)&lt;br /&gt;
    begin&lt;br /&gt;
      if(rising_edge(ext_clk)) then&lt;br /&gt;
        dly &amp;lt;= ( not(int_reset) and     dly  and not(rst) )&lt;br /&gt;
            or ( not(int_reset) and not(dly) and     rst  );&lt;br /&gt;
    &lt;br /&gt;
        rst &amp;lt;= ( not(int_reset) and not(dly) and not(rst) );&lt;br /&gt;
      end if;&lt;br /&gt;
    end process;&lt;br /&gt;
    &lt;br /&gt;
    gls_clk &amp;lt;= ext_clk;&lt;br /&gt;
    gls_reset &amp;lt;= rst xor invert_reset ;&lt;br /&gt;
 	&lt;br /&gt;
 end architecture clock_and_reset_gen_1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Driver_for_i.MX_GPIO_controlled_keypads&amp;diff=7187</id>
		<title>Driver for i.MX GPIO controlled keypads</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Driver_for_i.MX_GPIO_controlled_keypads&amp;diff=7187"/>
		<updated>2009-08-05T09:29:18Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
This driver is intented to control matrix keypads connected to i.MX GPIOs&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If not already done in standard Armadeus rootfs:&lt;br /&gt;
 $ make linux-menuconfig&lt;br /&gt;
 Device Drivers  ---&amp;gt; Input device support  ---&amp;gt; [*]   Keyboards  ---&amp;gt; &amp;lt;*&amp;gt;   AT keyboard&lt;br /&gt;
then&lt;br /&gt;
 Device Drivers  ---&amp;gt; Armadeus specific drivers  ---&amp;gt; &amp;lt;M&amp;gt;   Armadeus Keypad driver&lt;br /&gt;
&lt;br /&gt;
Reflash rootfs then:&lt;br /&gt;
 # modprobe imxkeypad&lt;br /&gt;
 Initializing Armadeus keypad driver&lt;br /&gt;
 input: imxkeypad as /class/input/input0&lt;br /&gt;
&lt;br /&gt;
==Test==&lt;br /&gt;
* use &#039;&#039;target/demos/keypad_test/&#039;&#039; test tool&lt;br /&gt;
* If you have a graphical LCD connected to your board (= virtual terminal), then you should see what you type.&lt;br /&gt;
* If you don&#039;t have any virtual terminal, but only the serial console:&lt;br /&gt;
 # cat /sys/class/input/input0/event0/dev&lt;br /&gt;
 13:64&lt;br /&gt;
If corresponding device node in /dev/input/ is not existing, then:&lt;br /&gt;
 # mkdir -p /dev/input&lt;br /&gt;
 # mknod /dev/input/event0 c 13 64&lt;br /&gt;
&lt;br /&gt;
 # cat /dev/input/event0&lt;br /&gt;
Then you should see weirds characters when pressing keyboard keys:&lt;br /&gt;
 �,~~_�,}�}�3T,QToT6,TT�,�;��, � �&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Keypad&amp;diff=7186</id>
		<title>Keypad</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Keypad&amp;diff=7186"/>
		<updated>2009-08-05T09:28:24Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
==How to connect a keypad to your Armadeus board==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
&lt;br /&gt;
Your Armadeus board allows you to connect a matrix keypad as input device. The default keypad driver configuration supports 16 keys connected to the i.MXL CSI bus. The current development state of the driver is unfinished and not fully generic but you can easily extend the driver to support keypads up to 36 keys using the whole CSI bus. Development are also ongoing to connect matrix keypads using the FPGA.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
There are 2 solutions to connect a matrix keypad to your Armadeus board:&lt;br /&gt;
====Direct connection to i.MXL====&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 width=100%&lt;br /&gt;
|- &lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | By default your board supports a direct connection with a 4x4 matrix keypad using the CSI lines: CSI_MCLK, CSI_D0...CSI_D6.&lt;br /&gt;
The driver uses the i.MXL GPIO&#039;s internal pull-up, therefore your board does not need any additional external resistor.&lt;br /&gt;
* Connect the 4 (rows) lines of the keypad to CSI_MCLK, CSI_D0, CSI_D1, CSI_D2 (resp. PORT_A pin 3, 4, 5, 6)&lt;br /&gt;
* Connect the 4 (columns) lines of the keypad to CSI_D3, CSI_D4, CSI_D5 CSI_D6 (resp. PORT_A pin 7, 8, 9, 10)&lt;br /&gt;
{add a big picture of the keypad link with APF_DEV_LIGHT}&lt;br /&gt;
{add a big picture of the keypad link with APF_DEV_FULL}&lt;br /&gt;
| [[Image:keypad.svg|thumb|3x4 matrix keypad connected to i.MXL GPIOs|150px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====FPGA solution====&lt;br /&gt;
Under development...&lt;br /&gt;
&lt;br /&gt;
===Software driver===&lt;br /&gt;
&lt;br /&gt;
[[Driver for i.MX GPIO controlled keypads]]&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
&lt;br /&gt;
external links (for exemple: locomo driver model)&lt;br /&gt;
&lt;br /&gt;
[[Category:UserInput]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=EFL&amp;diff=7185</id>
		<title>EFL</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=EFL&amp;diff=7185"/>
		<updated>2009-08-05T09:27:42Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
==What is it ?==&lt;br /&gt;
http://en.wikipedia.org/wiki/Enlightenment_Foundation_Libraries&lt;br /&gt;
&lt;br /&gt;
==Building the librairies==&lt;br /&gt;
&lt;br /&gt;
===Get the packages===&lt;br /&gt;
The buildroot packages of the EFL can be downloaded there :&lt;br /&gt;
&lt;br /&gt;
http://e-ghosting.com/~jujun/EFL-buildroot.tar.bz2&lt;br /&gt;
&lt;br /&gt;
===Compile it===&lt;br /&gt;
Select the new options in the menuconfig&lt;br /&gt;
and then start make&lt;br /&gt;
&lt;br /&gt;
==RootFS with EFL==&lt;br /&gt;
&lt;br /&gt;
You will need a mmc card !&lt;br /&gt;
the rootfs will use 29M (it is not very optimised)&lt;br /&gt;
&lt;br /&gt;
10M tarball :&lt;br /&gt;
http://www.e-ghosting.com/~jujun/armadeus/rootfs-EFL.arm.tar.bz2&lt;br /&gt;
&lt;br /&gt;
put the rootfs on a mmc card in ext2 (or change it in the fstab)&lt;br /&gt;
and then in uboot :&lt;br /&gt;
&lt;br /&gt;
   run mmcboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple test ==&lt;br /&gt;
&lt;br /&gt;
[[Image:080120_160232.jpg|thumb|Screen Shoot of the example]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A test using Evas and Ecore and Evas_Ecore&lt;br /&gt;
&lt;br /&gt;
[[CodingWithEFL]]&lt;br /&gt;
&lt;br /&gt;
The source of the above example :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Ecore_Evas.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Ecore.h&amp;gt;&lt;br /&gt;
#define WIDTH 320&lt;br /&gt;
#define HEIGHT 240&lt;br /&gt;
&lt;br /&gt;
        Ecore_Evas  *   ee;&lt;br /&gt;
        Evas        *   evas;&lt;br /&gt;
        Evas_Object *   base_rect;&lt;br /&gt;
        Evas_Object *   base_rect_sec;&lt;br /&gt;
        Evas_Object *   img;&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
        evas_init();&lt;br /&gt;
        ecore_init();&lt;br /&gt;
        //ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, WIDTH, HEIGHT); // When you test on your host computer&lt;br /&gt;
        ee = ecore_evas_fb_new(NULL, 270, WIDTH, HEIGHT); //When you will run it on the board&lt;br /&gt;
        ecore_evas_show(ee);&lt;br /&gt;
        evas = ecore_evas_get(ee);&lt;br /&gt;
&lt;br /&gt;
        base_rect = evas_object_rectangle_add(evas);//This is the red rectangle&lt;br /&gt;
        evas_object_resize(base_rect, WIDTH, HEIGHT-100);&lt;br /&gt;
        evas_object_color_set(base_rect, 255, 0, 0, 25);&lt;br /&gt;
        evas_object_show(base_rect);&lt;br /&gt;
&lt;br /&gt;
        base_rect_sec = evas_object_rectangle_add(evas);//This is the blue rectangle&lt;br /&gt;
        evas_object_resize(base_rect_sec, WIDTH-200, HEIGHT);&lt;br /&gt;
        evas_object_color_set(base_rect_sec, 0, 0, 255, 25);&lt;br /&gt;
        evas_object_show(base_rect_sec);&lt;br /&gt;
&lt;br /&gt;
        img = evas_object_image_add(evas);//This is the png&lt;br /&gt;
        evas_object_image_file_set(img, &amp;quot;e_logo.png&amp;quot;, NULL);&lt;br /&gt;
        evas_object_resize(img, 241, 195);&lt;br /&gt;
        evas_object_image_fill_set(img, 0, 0, 241, 195);&lt;br /&gt;
        evas_object_layer_set(img, -999);&lt;br /&gt;
        evas_object_show(img);&lt;br /&gt;
&lt;br /&gt;
        ecore_main_loop_begin();&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, there is no &amp;quot;Violet&amp;quot; rectangle !&lt;br /&gt;
&lt;br /&gt;
== To Do ==&lt;br /&gt;
 - &amp;quot;stable&amp;quot; buildroot packages&lt;br /&gt;
 - Use it with the touchscreen (tslib)&lt;br /&gt;
 - Get events from keyboard&lt;br /&gt;
 - Edje&lt;br /&gt;
 - Emotion (hard!)&lt;br /&gt;
 - More examples&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Graphical User Interface]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Linux_2.6.24_integration&amp;diff=7184</id>
		<title>Linux 2.6.24 integration</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Linux_2.6.24_integration&amp;diff=7184"/>
		<updated>2009-08-05T09:27:02Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt; This kernel was not well tested and is only here to test libertas WiFi drivers &amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2.6.24.3==&lt;br /&gt;
&lt;br /&gt;
*I2C:&lt;br /&gt;
** dans drivers/i2c/busses/i2c-imx.h, struct i2c_algorithm n&#039;a plus de champ algo_control&lt;br /&gt;
** du coup dans drivers/i2c/busses/i2c-imx.c faut virer i2c_imx_ioctl() ??... pas sur car ça doit bien servir à qqchose&lt;br /&gt;
&lt;br /&gt;
*USB Gadget:&lt;br /&gt;
** linux/usb_gadget.h est devenu linux/usb/gadget.h -&amp;gt; à changer dans drivers/usb/gadget/imx_udc.c&lt;br /&gt;
&lt;br /&gt;
*USB Host:&lt;br /&gt;
** l&#039;ISP166x est maintenant intégré dans Linux (non testé). Notre driver ne compile plus.&lt;br /&gt;
&lt;br /&gt;
*RTC:&lt;br /&gt;
** la DS1374 est désormais intégrée au kernel (non testée, le driver semble bcp plus complet)&lt;br /&gt;
&lt;br /&gt;
*WiFi:&lt;br /&gt;
** libertas_sdio ne compile pas sans les &amp;quot;wireless extensions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Patches inutiles:===&lt;br /&gt;
* 010-linux-2.6.24-imx1 (ne contient que des fichiers plateformes inutiles (Pengu) ) &#039;&#039;&#039;-&amp;gt; Supprimé&#039;&#039;&#039;&lt;br /&gt;
* 012-linux-2.6.24-apm9328 (hack pour utiliser l&#039;APM avec la target scb9328) &#039;&#039;&#039;-&amp;gt; Supprimé&#039;&#039;&#039;&lt;br /&gt;
* 020-linux-2.6.24-scbfb (hack pour le utiliser le LCD à partir de l&#039;APM en utilisant scb9328) &#039;&#039;&#039;-&amp;gt; Supprimé&#039;&#039;&#039;&lt;br /&gt;
* 021-...-apf9328.diff: virer apf9328_defconfig dedans car ça sert à rien avec buildroot, simplification de la partie Kconfig et Makefile (virer MX1FS2 SCB9328)&lt;br /&gt;
* 022-...-apf9328-mtd.diff: pareil que ci-dessus&lt;br /&gt;
&lt;br /&gt;
==Drivers test summary==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;MMC+&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Device&#039;&#039;&#039; || colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Compiling ? &amp;lt;br&amp;gt; Static / Module&#039;&#039;&#039; || &#039;&#039;&#039; Working ? &#039;&#039;&#039; || &#039;&#039;&#039;Comments&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;ADC&#039;&#039;&#039; || NA || style=&amp;quot;background:#00ff00;&amp;quot; | OK || NT ||    &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;Backlight&#039;&#039;&#039; || NT || NT ||   ||&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;CH7024 (Video Out)&#039;&#039;&#039; || NT || NA || NT ||   &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;DAC&#039;&#039;&#039; || NT || NA || NT ||   &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;Ethernet (DM9000)&#039;&#039;&#039; || NT || NA || NT || &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;FPGA PS/2&#039;&#039;&#039; || NT || NT || NT ||   &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;LCD&#039;&#039;&#039; || NT || NA || NT || message starting PID 235, tty &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;MMC/SD&#039;&#039;&#039; || NT || NA || NT || Linux boot on MMC Ok&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;PWM classic&#039;&#039;&#039; || NT || NT || NT || [[PWM]]&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;PWM sound&#039;&#039;&#039; || NA || NT || NT || [[PWM]]&lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;RTC&#039;&#039;&#039; || NT || NT || NT ||  &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;Serial&#039;&#039;&#039; || NT || NA || NT ||  &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;TSC2102&#039;&#039;&#039; || NA || NT || NT || ts_test is not compiled :( &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;USB (gadget)&#039;&#039;&#039; || NT || NT || NT || [[USB_Gadget]]   &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;USB (host)&#039;&#039;&#039; || NA || NT || NT ||  &lt;br /&gt;
|----------------&lt;br /&gt;
|&#039;&#039;&#039;Watchdog&#039;&#039;&#039; || NA || NA || NA ||  &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Linux_driver_for_FPGA_controlled_keyboards&amp;diff=7183</id>
		<title>Linux driver for FPGA controlled keyboards</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Linux_driver_for_FPGA_controlled_keyboards&amp;diff=7183"/>
		<updated>2009-08-05T09:25:41Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
This driver is intented to control FPGA IPs connected to numerous hardware keyboards like:&lt;br /&gt;
* [[PS/2]]&lt;br /&gt;
* Home made matrix keyboards&lt;br /&gt;
The driver is currently named &#039;&#039;&#039;apf9328ps2&#039;&#039;&#039; but this will be changed soon (or later ;-) ) to reflect its generic capability. Indeed all specific logic is done in the FPGA IP and the exported interface can be standardized.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Now installed by default for APF9328 rootfs (since armadeus-3.0). Not supported on APF27 yet.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # modprobe apf9328ps2&lt;br /&gt;
 input: AT Raw Set 2 keyboard as /class/input/input0&lt;br /&gt;
 Armadeus PS/2: APF9328KBD AT adapter OK!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have a graphical LCD connected to your board (= virtual terminal), then you should see what you type.&lt;br /&gt;
* If you don&#039;t have any virtual terminal, but only the serial console, you can do a quick test with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # cat /dev/input/event0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you should see weirds characters when pressing the keyboard keys:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 �,~~_�,}�}�3T,QToT6,TT�,�;��, � �&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Keymap==&lt;br /&gt;
* To change keyboard keymap (by default qwerty one):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # loadkmap &amp;lt; /etc/i18n/fr.kmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Mesa&amp;diff=7182</id>
		<title>Mesa</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Mesa&amp;diff=7182"/>
		<updated>2009-08-05T09:24:41Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Gears.png]]&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
 armadeus$ make menuconfig&lt;br /&gt;
[[Image:Menuconfig_package.png]]&lt;br /&gt;
&lt;br /&gt;
* Choose Mesa&lt;br /&gt;
&lt;br /&gt;
Requires GPM too !!&lt;br /&gt;
&lt;br /&gt;
* copy demo and examples .... on your rootfs&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
To launch Allegro programs you must do it from a virtual terminal, for example the one opened on the LCD screen after APF boot. &amp;lt;br&amp;gt;&#039;&#039;&#039;You won&#039;t be able to launch Allegro programs from the serial console !!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This implies that you have a keyboard connected to your board (for the moment only PS/2 one are supported if you have an FPGA onboard).&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://www.mesa3d.org/ Mesa Website]&lt;br /&gt;
* http://www.mesa3d.org/glfbdev-driver.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:FrenchFlag.png]][[Fr:Mesa| Cette page en français]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Graphical User Interface]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Allegro&amp;diff=7181</id>
		<title>Allegro</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Allegro&amp;diff=7181"/>
		<updated>2009-08-05T09:23:58Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under Construction}}&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
 armadeus$ make menuconfig&lt;br /&gt;
[[Image:Menuconfig_package.png]]&lt;br /&gt;
&lt;br /&gt;
* Choose Allegro&lt;br /&gt;
&lt;br /&gt;
For the moment it is only possible to have Allegro as a static library. (Doesn&#039;t compile as dynamic one).&lt;br /&gt;
&lt;br /&gt;
* copy demo and examples in &#039;&#039;buildroot/build_armv4t/allegro/demo/&#039;&#039; and &#039;&#039;buildroot/build_armv4t/allegro/examples&#039;&#039; on your rootfs&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
To launch Allegro programs you must do it from a virtual terminal, for example the one opened on the LCD screen after APF boot. &amp;lt;br&amp;gt;&#039;&#039;&#039;You won&#039;t be able to launch Allegro programs from the serial console !!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This implies that you have a keyboard connected to your board (for the moment only PS/2 one are supported if you have an FPGA onboard).&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://alleg.sourceforge.net/index.html Allegro project page on SourceForge]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:FrenchFlag.png]][[Fr:Allegro| Cette page en français]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Graphical User Interface]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Trash_Fr:Installation_de_ISE_sur_Ubuntu_Linux&amp;diff=7180</id>
		<title>Trash Fr:Installation de ISE sur Ubuntu Linux</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Trash_Fr:Installation_de_ISE_sur_Ubuntu_Linux&amp;diff=7180"/>
		<updated>2009-08-05T09:23:13Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Use &amp;quot;Under Construction&amp;quot; Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
Depuis quelque temps déja, Xilinx [http://www.xilinx.com/ise/logic_design_prod/webpack.htm propose sa suite logicielle pour le développent et la synthèse FPGA ISE WebPack pour le système GNU/Linux].&lt;br /&gt;
&lt;br /&gt;
Je vais essayer d&#039;expliquer la marche a suivre pour faire tourner ISE WebPack 9.1i sur Ubuntu Edgy. Je pense que la procédure n&#039;est pas exclusivement réservé à Ubuntu, et que les utilisateurs d&#039;autres distributions devraient s&#039;y retrouver.&lt;br /&gt;
&lt;br /&gt;
* Aller sur [http://www.xilinx.com/ise/logic_design_prod/webpack.htm sur cette page]. Choisir &#039;&#039;Download ISE WebPACK software for Windows and Linux&#039;&#039;&lt;br /&gt;
* Il vous sera demandé, si ce n&#039;est pas déja fait, de vous inscrire sur le site de Xilinx pour obtenir un compte. On pourra alors télécharger les différents binaires et procéder à l&#039;installation.&lt;br /&gt;
&lt;br /&gt;
* Nous allons télécharger &#039;&#039;&#039;ISE WebPACK - WebInstall (16MB)&#039;&#039;&#039;. Le fichier téléchargé est une archive tar que nous pouvons décompresser. A la racine des fichiers décompressés, nous trouvons un script exécutable Linux: setup.&lt;br /&gt;
&lt;br /&gt;
* Et là magie, nous nous retrouvons devant un installeur Qt &amp;quot;à la Windows&amp;quot;, il vous suffit de suivre les indications à l&#039;écran : le programme vous demande à quel endroit installer les outils, et télécharge automatiquement les différents composants. &#039;&#039;&#039;A noter cependant qu&#039;il est nécessaire de lancer le programme en root pour pouvoir installer les drivers de cables JTAG&#039;&#039;&#039;, ou si vous voulez installer ISE dans un repertoire comme /usr ou /opt. &#039;&#039;&#039;Sur Armadeus il n&#039;est pas nécessaire d&#039;avoir le JTAG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Attention cependant l&#039;installation/téléchargement est très long (plus d&#039;une heure avec une connection chez moi) et vous pouvez compter sur 2Go pour l&#039;installation/téléchargement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voila votre environnement est opérationnel, vous pouvez synthétiser pour le FPGA :)&lt;br /&gt;
&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;
==Liens==&lt;br /&gt;
* [http://harded.free.fr/site/?p=31 un tutoriel en français de harded.fr (pour la version 7.1i)]&lt;br /&gt;
* http://www.xilinx.com/ise/logic_design_prod/webpack.htm&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|ISE_WebPack_installation_on_Linux|Installation_de_ISE_sur_Ubuntu_Linux|ISE_WebPack_install_auf_Linux}}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Template:Under_Construction&amp;diff=7179</id>
		<title>Template:Under Construction</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Template:Under_Construction&amp;diff=7179"/>
		<updated>2009-08-05T09:21:32Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Page under construction... &#039;&#039;&#039;&lt;br /&gt;
[[Image:Construction.png]]&lt;br /&gt;
&#039;&#039;&#039; Informations on this page are not guaranteed !!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Current_events&amp;diff=7178</id>
		<title>Current events</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Current_events&amp;diff=7178"/>
		<updated>2009-08-05T09:18:03Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Libre Software Meeting 2008 */ Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General Assembly / Libre Software Meeting 2009==&lt;br /&gt;
* On Wednesday July 8th 2009 occurred the General Assembly in Nantes (France). Special Thanks to SylvainL for the room access.&lt;br /&gt;
* Attendees: FabienM, SylvainL, JulienV, JulienP, NicolasD (&amp;amp; his wife ;-)), JulienC, YoannC, GillesD, JeanFrancoisR, YvanR, NicolasC, EricJ, JulienB.&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Photos&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|  [[Image:GA2009-01.jpg|thumb|center|JulienB ]]&lt;br /&gt;
|| [[Image:GA2009-02.jpg|thumb|center|L2R: SylvainL, NicolasC, FabienM, NicolasD &amp;amp; his wife, 4 &amp;quot;intruders&amp;quot; of Free-Electron/Calao, JulienP, 3 other &amp;quot;intruders&amp;quot; ]] &lt;br /&gt;
|| [[Image:GA2009-03.jpg|thumb|center|L2R: JulienC, YoannC, YvanR, JeanFrancoisR ]] &lt;br /&gt;
|| [[Image:GA2009-04.jpg|thumb|center|L2R: JulienP (very serious), NicolasD]] &lt;br /&gt;
|----------------&lt;br /&gt;
| [[Image:GA2009-05.jpg|thumb|center|L2R: FabienM, SylvainL, JulienV, JulienP ]]&lt;br /&gt;
|| [[Image:GA2009-07.jpg|thumb|center|JulienC]] &lt;br /&gt;
|| [[Image:GA2009-08.jpg|thumb|center|L2R: GillesD, JeanFrancoisR ]] &lt;br /&gt;
|| [[Image:GA2009-09.jpg|thumb|center|L2R: JulienC, YvanR, NicolasC, YoannC ]] &lt;br /&gt;
|----------------&lt;br /&gt;
|  [[Image:GA2009-11.jpg|thumb|center|L2R: 2 intruders (;-)) + JulienC &amp;amp; GillesD]] &lt;br /&gt;
|| [[Image:GA2009-12.jpg|thumb|center|L2R:YoannC, GillesD, JeanFrancoisR ]] &lt;br /&gt;
|| [[Image:GA2009-15.jpg|thumb|center| L2R:JulienB, YvanR (explaining its project)]] &lt;br /&gt;
|| [[Image:GA2009-17.jpg|thumb|center|L2R:JulienB, YvanR (explaining its project) ]] &lt;br /&gt;
|----------------&lt;br /&gt;
|  [[Image:GA2009-21.jpg|thumb|center|L2R:JulienB, YvanR: 2008 contest price award ]] &lt;br /&gt;
|| [[Image:GA2009-22.jpg|thumb|center|L2R:JulienB, YvanR: 2008 contest price award ]]   &lt;br /&gt;
|| [[Image:GA2009-23.jpg|thumb|center|L2R:JulienB, FabienM, NicolasC: at the hotel ]] &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Libre Software Meeting 2008==&lt;br /&gt;
* On 1st to 3rd July 2008 we attended the [http://2008.rmll.info/ RMLL at Mont de Marsan]:&lt;br /&gt;
** [http://free-electrons.com/pub/video/2008/rmll/rmll2008-julien-boibessot-nicolas-colombain-fabien-marteau-armadeus.ogg Video of Embedded systems conference]&lt;br /&gt;
** [http://2008.rmll.info/IMG/pdf/armadeus.pdf Slides of the Armadeus presentation]&lt;br /&gt;
&lt;br /&gt;
==General Assembly 2008==&lt;br /&gt;
* On Saturday Mar. 9th 2008 occurred the General Assembly in Mulhouse (France).&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Photos&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|[[Image:AG2008_01.jpg|thumb|center|L2R: Nicolas, Frédéric and Fabien]] || [[Image:AG2008_02.jpg|thumb|center|Nicolas and Frédéric]] || [[Image:AG2008_03.jpg|thumb|center|Julien, Michael and Fabrice]]&lt;br /&gt;
|----------------&lt;br /&gt;
|[[Image:AG2008_04.jpg|thumb|center|L2R: Nicolas and Frédéric ]] || [[Image:AG2008_05.jpg|thumb|center| L2R: Fabrice and Eric]] || [[Image:AG2008_06.jpg|thumb|center| everyone ;-)]] ||&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==General Assembly 2007==&lt;br /&gt;
* On Saturday Feb. 17th 2007 occured the annual meeting in Mulhouse (France).&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Photos&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|[[Image:ArmadeusAM07-1.JPG|thumb|center| L2R: Paola, Nicolas, Julien, Sébastien, Michael]] || [[Image:ArmadeusAM07-2.JPG|thumb|center|Paola, Michael]] || [[Image:ArmadeusAM07-3.JPG|thumb|center|Michael, Eric, Fabrice, Frédéric, Julien]]&lt;br /&gt;
|----------------&lt;br /&gt;
|[[Image:ArmadeusAM07-4.JPG|thumb|center|L2R: Eric, Fabrice, Frédéric,Nicolas, Julien, Michael]] || [[Image:ArmadeusAM07-5.JPG|thumb|center|again ;-)]] || &lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|Current_events|Événements|Ereignisse}}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=APF27_FPGA-IMX_interface_description&amp;diff=7177</id>
		<title>APF27 FPGA-IMX interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=APF27_FPGA-IMX_interface_description&amp;diff=7177"/>
		<updated>2009-08-05T08:45:23Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Brushed up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describe the interface between IMX and Spartan3A on APF27.&lt;br /&gt;
Documentation of i.MX interface can be found in the iMX reference manual, chapter 17,&lt;br /&gt;
«Wireless External Interface Module (&#039;&#039;&#039;WEIM&#039;&#039;&#039;)».&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The detailled electronic schematics of apf27 fpga interface can be found on&lt;br /&gt;
[http://www.armadeus.com/_downloads/apf27/hardware/apf27_V1.2.pdf this document] page 11. A simplified schema is shown below on figure 1.&lt;br /&gt;
&lt;br /&gt;
[[image:fpgaimx_wire.png|center|500px|thumb|&#039;&#039;&#039;figure 1&#039;&#039;&#039; - &#039;&#039;FPGA-i.MXL wiring&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
The signals used in the design are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CLKO&#039;&#039;&#039;: Clock generated by i.MX. Used as general clock by the FPGA.&lt;br /&gt;
* &#039;&#039;&#039;DATA[16]&#039;&#039;&#039;: 16 bits data bus.&lt;br /&gt;
* &#039;&#039;&#039;ADDR[13]&#039;&#039;&#039;: 12 bits address bus, least significant bit (ADDR[0]) is not used because only word access are done.&lt;br /&gt;
* &#039;&#039;&#039;CS4N_DTACK&#039;&#039;&#039;: &#039;&#039;&#039;C&#039;&#039;&#039;hip &#039;&#039;&#039;S&#039;&#039;&#039;elect 4 or &#039;&#039;&#039;D&#039;&#039;&#039;ata &#039;&#039;&#039;T&#039;&#039;&#039;ransmit &#039;&#039;&#039;ACK&#039;&#039;&#039;nowledge.&lt;br /&gt;
* &#039;&#039;&#039;CS5&#039;&#039;&#039;,&#039;&#039;&#039;CS1&#039;&#039;&#039;: &#039;&#039;&#039;C&#039;&#039;&#039;hip &#039;&#039;&#039;S&#039;&#039;&#039;elect 5 and 1.&lt;br /&gt;
* &#039;&#039;&#039;EB0N&#039;&#039;&#039; and &#039;&#039;&#039;EB1N&#039;&#039;&#039;: For &#039;&#039;&#039;E&#039;&#039;&#039;nable &#039;&#039;&#039;B&#039;&#039;&#039;yte, write signal for lower byte and upper byte on data bus.&lt;br /&gt;
* &#039;&#039;&#039;OEN&#039;&#039;&#039;: For &#039;&#039;&#039;O&#039;&#039;&#039;utput &#039;&#039;&#039;E&#039;&#039;&#039;nable bit, read signal.&lt;br /&gt;
* &#039;&#039;&#039;DMA_GRANT#&#039;&#039;&#039; and &#039;&#039;&#039;DMA_REQ#&#039;&#039;&#039;: Signals to use DMA on i.MX.&lt;br /&gt;
&lt;br /&gt;
Each chip select has its own configuration (timing, address range, ...) that can be used for different slaves in the FPGA.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CLKO&#039;&#039;&#039; is by default configured to run at 133MHz to be synchronous with the &#039;&#039;&#039;WEIM&#039;&#039;&#039; bus that is internally clocked at 133MHz, too.&lt;br /&gt;
&lt;br /&gt;
== Chip Select Timings configuration ==&lt;br /&gt;
&lt;br /&gt;
===Present configuration (static timing)===&lt;br /&gt;
The default configuration uses &#039;&#039;&#039;CS5&#039;&#039;&#039; for accessing the FPGA. 32 bits register CS5&lt;br /&gt;
is used to configure all timing for this chip select. It&#039;s default&lt;br /&gt;
configuration is:&lt;br /&gt;
* CS5U (Upper 16bits, see page 521 of reference manual ): mw D8002050 00000600&lt;br /&gt;
This will add 6 waits state on access to read value correctly (WSC: Wait&lt;br /&gt;
State Control).&lt;br /&gt;
* CS5L (Lower 16bits,see page 525 of reference manual): mw D8002054 00000D01&lt;br /&gt;
Enable chip select (CSEN), Enable for only write access EB[] (EBC) and select data port size to&lt;br /&gt;
16bits (DSZ: Data port SiZe).&lt;br /&gt;
* CS5A (additionnal register, page 528): mw D8002058 0&lt;br /&gt;
&lt;br /&gt;
* WCR (WEIM Configuration Register): mw D8002060 00002000&lt;br /&gt;
Address unshifted for CS5 (AUS5)&lt;br /&gt;
&lt;br /&gt;
[[image:timingstatic.png|center|500px|thumb|&#039;&#039;&#039;figure 2&#039;&#039;&#039; - &#039;&#039;Static timings chronograms&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
With this configuration, the access time (read/write) to the FPGA is set to 50ns.&lt;br /&gt;
&lt;br /&gt;
This configuration is interesting because all timings are under control. But&lt;br /&gt;
the problem is that to be perfectly synchronous, the FPGA is clocked at 133MHz&lt;br /&gt;
like WEIM and some IP design doesn&#039;t work at this frequency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Alternative configuration (with DTACK)===&lt;br /&gt;
&lt;br /&gt;
To solve the problem, another solution can be the DTACK signal (asynchronous protocol). The DTACK signal&lt;br /&gt;
is emmited by the slave to master when write/read is done. &lt;br /&gt;
With this solution, access time is variable and the timing is not static any more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Timing register configuration===&lt;br /&gt;
&lt;br /&gt;
All register configurations for external memory are done in u-boot.&lt;br /&gt;
Configuration file can be found in&lt;br /&gt;
&#039;&#039;buildroot/project_build_armv5te/&amp;lt;project_name&amp;gt;/u-boot-1.3.4/include/configs/apf27.h&#039;&#039;&lt;br /&gt;
And is saved in armadeus tree at&lt;br /&gt;
&#039;&#039;buildroot/target/device/armadeus/apf27/apf27.h&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Setup&amp;diff=7176</id>
		<title>Setup</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Setup&amp;diff=7176"/>
		<updated>2009-08-05T07:55:33Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Going further with your board */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this page, you will find all the useful information you need to configure your Armadeus board for optimum usage.&lt;br /&gt;
&lt;br /&gt;
==First StartUp==&lt;br /&gt;
Just got your Armadeus board and want to start playing with it ? Follow these quick steps to setup your environment accordingly:&lt;br /&gt;
# Connect your APF to your development board (custom or [[APF9328DevLight|DevLight]]/[[APF9328DevFull|DevFull]]) (your system will be hereafter referred to as &amp;quot;the Target&amp;quot;) ---&amp;gt;&amp;gt; [[Image:Apf_on_devlight.png|40px]]&lt;br /&gt;
# Connect your PC (= &amp;quot;the Host&amp;quot;) to your board with a [http://en.wikipedia.org/wiki/Null_modem null-modem RS232 cable] (only Rx/Tx/Gnd signals are needed). If you don&#039;t have a RS232 port on your Host, you can use a &amp;quot;USB &amp;lt;-&amp;gt; serial&amp;quot; converter (you&#039;ll still require the null-modem cable).&lt;br /&gt;
# [[Communicate | Install (minimum) tools to communicate with your APF from your Host.]]&lt;br /&gt;
# [[Development_boards_power_supply | Connect the power supply on your development board.]]&lt;br /&gt;
# Verify your system is booting by starting Linux: In U-Boot console, type &amp;quot;boot&amp;quot;. Several informations will be displayed on your terminal like on this [[Linux start screenshot | screenshot ]] (Default Linux login is &amp;quot;root&amp;quot; with an empty password). &#039;&#039;&#039;IF NOT&#039;&#039;&#039;, walk through [[U-Boot communication quick check|this small checklist]].&lt;br /&gt;
# If Linux has successfully started, your system is operational. If you want to add applications to your board or developp custom ones, then you can proceed with the Toolchain installation. [[Setup#Basics | See Basics below]].&lt;br /&gt;
&lt;br /&gt;
===Tutorial===&lt;br /&gt;
If you want a more &amp;quot;userfriendly&amp;quot; procedure, you can try this (under construction) tutorial: [[Beginner&#039;s_tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Basics for customizing your board==&lt;br /&gt;
# [[Toolchain| Install the development environment (=Toolchain) for your board and generate your Linux/rootfs images]]&lt;br /&gt;
# [[Target Software Installation| Install/flash your U-Boot, Linux and rootfs freshly generated images on your board]]&lt;br /&gt;
# [[Armadeus_3#How-to_develop_with_Armadeus_.2F_customize_your_SDK| Customize your Armadeus SDK]]&lt;br /&gt;
&lt;br /&gt;
==Going further with your board==&lt;br /&gt;
* [[Armadeus 3]]: How to use the third generation of Armadeus SDK at a glance (notably for 2.x users). Newcomers can particularly find the chapter [[Armadeus_3#How-to_develop_with_Armadeus_.2F_customize_your_SDK| How-to customize your Armadeus SDK]] interesting.&lt;br /&gt;
* [[Network File System configuration| How to configure NFS on Host and Target]]&lt;br /&gt;
* [[MultiMediaCard | How to use MMC/SD/microSD cards from Linux on your Armadeus board]]&lt;br /&gt;
* [[ALSA|How to play sound with your board]]&lt;br /&gt;
* [[Mplayer|How to play videos on your board]]&lt;br /&gt;
&lt;br /&gt;
* [[FrameBuffer]]: How to configure and use the framebuffer for new LCDs&lt;br /&gt;
* [[BackLight| How to control the backlight of you graphical LCD (if it supports it)]]&lt;br /&gt;
* [[GPIO Driver]]: How to configure the GPIO driver&lt;br /&gt;
* [[Boa]]: How install and configure the boa Web server on your board&lt;br /&gt;
* [[USB Gadget]]: How to configure your Armadeus board to use it as a USB device (aka Gadget in Linux language)&lt;br /&gt;
* [[DAC|Digital to Analog Convertion]]: How to configure and use the DAC on your board&lt;br /&gt;
* [[ADC max1027|Analog to Digital Converter]]: How to install and use the on board ADC (max1027)&lt;br /&gt;
* [[PWM]]: How to use the i.MX integrated PWM&lt;br /&gt;
* [[RTC]]: How to use an external Real Time Clock (Maxim DS1374)&lt;br /&gt;
* [[Watchdog]]: How to configure and use the i.MX integrated Watchdog&lt;br /&gt;
* [[TV Output]]: How to use the SVideo output of the APF9328DevFull&lt;br /&gt;
* [[USB Host]]: How to use USB Host controllers of the APF9328DevFull and APF27&lt;br /&gt;
* [[TSC2102 Linux driver| Touchscreen ]]: How to configure and use the touchscreen controller&lt;br /&gt;
* [[CAN bus Linux driver]]: How to configure and use the CAN controller of the DevFull&lt;br /&gt;
* [[DVI / HDMI]]: How to configure and use the DVI/HDMI controller of the apf27DevFull&lt;br /&gt;
* [http://txlab.wordpress.com/2009/03/20/mounting-the-lcd-touchscreen-on-top-of-armadeus-devboard Low cost assembly of LCD &amp;amp; apf27 development board ]: How to mount the LCD touchscreen on top of Armadeus devboard (Thx to Stanislav)&lt;br /&gt;
&lt;br /&gt;
==Advanced==&lt;br /&gt;
* [[Ethernet_MAC_address|How to change your board Ethernet MAC address]] (Thanks to Julien Catalano)&lt;br /&gt;
* [[BootLoader]]: (U-Boot useful tips)&lt;br /&gt;
* [[BootStrap]]: Install U-Boot from scratch or recover your U-Boot if it was corrupted&lt;br /&gt;
* [[ JTAG | Support JTAGKey and BDI2000 JTAG probes]]&lt;br /&gt;
* [[Serial Transfer| How to transfer files between your Host and your Armadeus board&#039;s Linux with the RS232 link]] (if you don&#039;t have Ethernet/NFS/TFTP/MMC/USB)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|Setup|Configuration|Konfiguration}}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MultiMediaCard&amp;diff=7175</id>
		<title>MultiMediaCard</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MultiMediaCard&amp;diff=7175"/>
		<updated>2009-08-05T07:50:26Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions to use the MultiMediaCard (MMC/SD) on your Armadeus board&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
You can use standard MMC/SD/miniSD/microSD cards with your Armadeus board:&lt;br /&gt;
* with a DevLight V1, you must have [[MMC/SD | the corresponding connector attached to your development board.]] and use an adaptor for miniSD and microSD&lt;br /&gt;
* with a DevLight V2, you can use the onboard microSD connector&lt;br /&gt;
* with an [[APF9328DevFull]], you can use the MMC/SD onboard connector and an adaptor for miniSD and microSD&lt;br /&gt;
* with an [[APF27Dev]], you can use the onboard microSD connector&lt;br /&gt;
&lt;br /&gt;
All needed drivers are included in the standard Armadeus Linux image.&lt;br /&gt;
&lt;br /&gt;
==Card insertion==&lt;br /&gt;
You should see something like that on the Linux console:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # imx-mmc imx-mmc.0: card inserted&lt;br /&gt;
 mmc0: host does not support reading read-only switch. assuming write-enable.&lt;br /&gt;
 mmc0: new SD card at address 01b0&lt;br /&gt;
 mmcblk0: mmc0:01b0 SD512 500224KiB&lt;br /&gt;
  mmcblk0: p1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note :&lt;br /&gt;
If the special files /dev/mmcblk0, /dev/mmcblk0p1 /dev/mmcblk0p2 ... /dev/mmcblk0p7 are NOT present on your filesystem,&lt;br /&gt;
create them by hand :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mknod /dev/mmcblk0 b 179 0&lt;br /&gt;
 # mknod /dev/mmcblk0p1 b 179 1&lt;br /&gt;
 # mknod /dev/mmcblk0p2 b 179 2&lt;br /&gt;
 ...&lt;br /&gt;
 # mknod /dev/mmcblk0p7 b 179 7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(It happened to me after upgrading an APF9328+DevLight from version 2.3 to 3.1)&lt;br /&gt;
&lt;br /&gt;
==Mounting the MMC/SD==&lt;br /&gt;
&lt;br /&gt;
* Just mount the MMC like you will do on your PC, for example (FAT32 formatted card):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount -t vfat /dev/mmcblk0p1 /mnt/mmc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then, you can access the MMC&#039;s files from the &#039;&#039;/mnt/mmc&#039;&#039; directory&lt;br /&gt;
&lt;br /&gt;
If you have problems with vfat code page, [[MultiMediaCard#VFAT_Code_Page|include the missing code page into the kernel]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting from MMC/SD==&lt;br /&gt;
When your rootfs is too big to be put on the APF Flash, you can always use a MMC/SD like a Hard Drive and boot from it (this is possible because standard Armadeus kernel is compiled with the MMC driver built in).&lt;br /&gt;
&lt;br /&gt;
===Prepare your card===&lt;br /&gt;
* On your APF board (to avoid to crash your Host HD), create a good partition table:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/fdisk /dev/mmcblk0&lt;br /&gt;
 Delete all existing partion with &#039;d&#039;&lt;br /&gt;
 Create a primary partion: &#039;n&#039; then &#039;p&#039; then &#039;1&#039;&lt;br /&gt;
 Change bootflag to Linux: &#039;t&#039; then &#039;83&#039;&lt;br /&gt;
 Save partition table: &#039;w&#039;&lt;br /&gt;
 (To quit without saving: &#039;m&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Then, on your PC, format your MMC with Ext2 filesystem (booting on FAT is bad :-) ):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo mkfs.ext2 /dev/sdX1   (replace X with your MMC reader drive letter, if your Laptop has an integrated&lt;br /&gt;
                                           MMC reader then use mmcblk0p1 instead of sdX1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If not automatically detected/mounted by your distribution, mount your MMC/SD on your Host filesystem (for example in &#039;&#039;/media/mmc&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo mkdir -p /media/mmc&lt;br /&gt;
 $ sudo mount /dev/sdX1 /media/mmc    (replace X with your MMC reader drive letter, if your Laptop has an integrated&lt;br /&gt;
                                                   MMC reader then use mmcblk0p1 instead of sdX1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Put your rootfs on the MMC/SD===&lt;br /&gt;
* Buildroot should be configured to generate a tar-ed rootfs &#039;&#039;&#039;(now done by default)&#039;&#039;&#039;.&lt;br /&gt;
 [armadeus] $ make menuconfig&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Target filesystem options  ---&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Menuconfig_tar_rootfs.png]]&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 [armadeus] $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and then uncompress the rootfs to the SD card:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make shell_env&lt;br /&gt;
 $ source armadeus_env.sh&lt;br /&gt;
 $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /media/mmc&lt;br /&gt;
 $ sudo umount /media/mmc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Boot===&lt;br /&gt;
* Insert the MMC/SD/microSD in the corresponding slot of your Armadeus board and then under U-Boot do:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run mmcboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if you want to automatically boot from SD at each startup, modify the &#039;&#039;bootcmd&#039;&#039; U-Boot macro:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv bootcmd run mmcboot&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(default bootcmd when you receive your board is &#039;&#039;run jffsboot&#039;&#039; = boot from FLASH)&lt;br /&gt;
&lt;br /&gt;
==Performances==&lt;br /&gt;
* [[MMC/SD#Supported_Cards| Show tested cards performances]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshots==&lt;br /&gt;
===VFAT Code Page===&lt;br /&gt;
If you encounter this message (or something similar):&lt;br /&gt;
 Unable to load NLS charset cp437&lt;br /&gt;
 FAT: codepage cp437 not found&lt;br /&gt;
you have to add the charset to the supported kernel ones:&lt;br /&gt;
 $ make linux26-menuconfig&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
File systems  ---&amp;gt; &lt;br /&gt;
    -*- Native language support  ---&amp;gt;&lt;br /&gt;
        &amp;lt;*&amp;gt;   Codepage 437 (United States, Canada)&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;*&amp;gt;   NLS ISO 8859-1  (Latin 1; Western European Languages)&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* http://en.wikipedia.org/wiki/MultiMedia_Card&lt;br /&gt;
&lt;br /&gt;
{{LanguageBar|MultiMediaCard|MultiMediaCard|MultiMediaCard}}&lt;br /&gt;
&lt;br /&gt;
[[Category:MassStorage]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Orchestra&amp;diff=3677</id>
		<title>Orchestra</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Orchestra&amp;diff=3677"/>
		<updated>2008-03-26T06:42:58Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: berlios&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Info: The development tree of the Orchestra Tool of Armadeus Project has been moved to&lt;br /&gt;
http://developer.berlios.de/projects/osocgen/ &lt;br /&gt;
&lt;br /&gt;
== Vue d&#039;ensemble du système Orchestra ==&lt;br /&gt;
&lt;br /&gt;
Une image étant souvent plus explicite qu&#039;un long texte, voici, schématiquement, le principe de fonctionnement retenu pour Orchestra.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:orchestra.png|Description fonctionnelle du système]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut reconnaitre de ce schéma, que le système se repose sur:&lt;br /&gt;
* une bibliothèque de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&lt;br /&gt;
* une bibliothèque de plateformes&lt;br /&gt;
* un projet&lt;br /&gt;
* une liste de fichiers modèles&lt;br /&gt;
&lt;br /&gt;
A l&#039;aide des ces composants le &#039;&#039;&#039;&#039;&#039;processeur orchestra&#039;&#039;&#039;&#039;&#039; va générer:&lt;br /&gt;
* un projet Xilinx &#039;&#039;&#039;complet&#039;&#039;&#039;, c&#039;est-à-dire que l&#039;on pourra lancer les outils Xilinx en ligne de commande avec ce projet et générer ainsi les fichiers nécessaires pour le fonctionnement du FPGA. Ce projet pourra également servir de base et être compléter par l&#039;utilisateur pour y inclure d&#039;autres fonctionnalités n&#039;ayant aucun lien avec l&#039;i.MX.&lt;br /&gt;
* un projet &#039;&#039;Device Driver&#039;&#039;, cette sortie est &#039;&#039;&#039;optionnelle&#039;&#039;&#039; et dépendra fortement du type de composants utilisés lors de la construction du système. En effet, ces composants devront inclure une partie driver.&lt;br /&gt;
&lt;br /&gt;
== Format de base des fichiers XML ==&lt;br /&gt;
&lt;br /&gt;
Avant de donner plus de détails sur les fichiers XML traités et/ou générés par Orchestra, voici quelques règles de codage qui seront globalement appliquées :&lt;br /&gt;
* Tous les fichiers XML commencent avec une entête définissant le type de codage utilisé pour les caractères.&lt;br /&gt;
* Toutes les balises et tous les attributs des balises sont en minuscule.&lt;br /&gt;
* Un fichier XML décrit un seul élément, le noeud de base permettra d&#039;identifier le contenu du fichier :&lt;br /&gt;
** &#039;&#039;&#039;component&#039;&#039;&#039;: pour un composant&lt;br /&gt;
** &#039;&#039;&#039;board&#039;&#039;&#039;: pour une plateforme&lt;br /&gt;
** &#039;&#039;&#039;project&#039;&#039;&#039;: pour un projet&lt;br /&gt;
* Le corps d&#039;une balise est utilisé pour la description ou un commentaire relatif à l&#039;élément représenté par la balise. Afin de ne pas avoir de problème liés aux caractères ou séquences d&#039;échappement XML, ces textes seront placés dans une section &#039;&#039;&#039;CDATA&#039;&#039;&#039;. Ainsi il sera possible de saisir du code XML ou HTML pour faire de la mise en page par exemple.&lt;br /&gt;
&lt;br /&gt;
Voici un extrait de fichier XML pour un composant à titre d&#039;illustration&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;component name=&amp;quot;irq_mngr&amp;quot; version=&amp;quot;1.0&amp;quot; category=&amp;quot;base&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    &amp;lt;![CDATA[&lt;br /&gt;
      The Interruption Manager is a Wishbone slave component and Armadeus compiliant.&lt;br /&gt;
    ]]&amp;gt;&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/component&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== La bibliothèque de composants ==&lt;br /&gt;
&lt;br /&gt;
Un composant &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; se compose des éléments suivants:&lt;br /&gt;
* un ensemble de fichiers HDL (VHDL ou Verilog)&lt;br /&gt;
* un ensemble de fichiers C et H (optionnel)&lt;br /&gt;
* un fichier XML qui va décrire entièrement le composant&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant nous intéresser au contenu de ce fichier XML et en premier lieu avec les attributs dont dispose le noeud de base &#039;&#039;&#039;component&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039;: le nom du composant (IP), de préférence pas plus de 16 caractères.&lt;br /&gt;
* &#039;&#039;&#039;version&#039;&#039;&#039;: la version du composant&lt;br /&gt;
* &#039;&#039;&#039;category&#039;&#039;&#039;: la catégorie dans laquelle le composant se situe. Par exemple: base, communication, etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;component name=&amp;quot;irq_mngr&amp;quot; version=&amp;quot;1.0&amp;quot; category=&amp;quot;base&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/component&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sous le noeud de base se trouve les éléments suivants:&lt;br /&gt;
* Le noeud &#039;&#039;&#039;description&#039;&#039;&#039; (optionnel) qui va contenir une description plus ou moins détaillée du composant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
  &amp;lt;![CDATA[&lt;br /&gt;
    The Interruption Manager is a Wishbone slave component and Armadeus compiliant.&lt;br /&gt;
  ]]&amp;gt;&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* le noeud &#039;&#039;&#039;hdl_files&#039;&#039;&#039; va contenir la liste des fichiers VHDL ou Verilog qui composent l&#039;IP. Chaque fichier est placé dans une base &#039;&#039;&#039;hdl_file&#039;&#039;&#039; et les attributs suivant sont proposés:&lt;br /&gt;
** &#039;&#039;&#039;name&#039;&#039;&#039;: C&#039;est le nom du fichier. Le chemin vers le fichier est donné en relatif par rapport à l&#039;emplacement du fichier XML de description du composant.&lt;br /&gt;
** &#039;&#039;&#039;scope&#039;&#039;&#039;: Cet attribut va permettre de donner la &#039;&#039;portée&#039;&#039; du fichier, c&#039;est-à-dire pour quel utilisation ce fichier est prévu. Voici quelques valeurs pour cet attribut:&lt;br /&gt;
*** &#039;&#039;&#039;all&#039;&#039;&#039;: le fichier doit toujours être inclus (valeur par défaut)&lt;br /&gt;
*** &#039;&#039;&#039;xilinx&#039;&#039;&#039;: le fichier n&#039;est exploitable que pour des composants/outils de chez Xilinx&lt;br /&gt;
*** &#039;&#039;&#039;altera&#039;&#039;&#039;: le fichier n&#039;est exploitable que pour des composants/outils de chez Altera&lt;br /&gt;
*** &#039;&#039;&#039;tb&#039;&#039;&#039;: le fichier n&#039;est pas synthétisable et ne fonctionne que dans le cadre de bancs de tests.&lt;br /&gt;
** &#039;&#039;&#039;istop&#039;&#039;&#039;: Cet attribut va permettre d&#039;identifier le fichier &#039;&#039;&#039;TOP&#039;&#039;&#039; de l&#039;IP. Il n&#039;y a que 2 valeurs possible 0 (valeur par défaut) ou 1 (pour indiquer le fichier TOP). Il faut définir au moins 1 fichier TOP. Si plusieurs fichiers TOP sont déclarés, par exemple si une IP est spécialisable en fonction du type de carte, toutes les entités des fichiers TOP doivent avoir la même signature.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;hdl_files&amp;gt;&lt;br /&gt;
  &amp;lt;hdl_file name=&amp;quot;irq_mgnr.vhd&amp;quot; scope=&amp;quot;all&amp;quot; istop=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/hdl_files&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* le noeud &#039;&#039;&#039;generic_map&#039;&#039;&#039; est utilisé pour &amp;lt;u&amp;gt;contenir la déclaration des paramètres GENERIC disponibles sur l&#039;élément TOP de l&#039;IP &#039;&#039;&#039;si celui-ci est un fichier VHDL&#039;&#039;&#039;&amp;lt;/u&amp;gt;. Chaque entrée GENERIC de l&#039;IP va être représentée par une balise &#039;&#039;&#039;generic&#039;&#039;&#039; qui va entièrement décrire la paramètre à l&#039;aide des attributs suivants:&lt;br /&gt;
** &#039;&#039;&#039;name&#039;&#039;&#039;: C&#039;est le nom du paramètre GENERIC qui doit être identique au nom utilisé dans l&#039;IP&lt;br /&gt;
** &#039;&#039;&#039;type&#039;&#039;&#039;: C&#039;est le type de paramètre, dans un premier temps, uniquement les types suivants sont supportés:&lt;br /&gt;
*** &#039;&#039;&#039;integer&#039;&#039;&#039;: pour définir un nombre entier&lt;br /&gt;
*** &#039;&#039;&#039;std_logic&#039;&#039;&#039;: pour définir un signal&lt;br /&gt;
*** &#039;&#039;&#039;std_logic_vector&#039;&#039;&#039;: pour définir un vecteur&lt;br /&gt;
** &#039;&#039;&#039;valid&#039;&#039;&#039;: Cet attribut va permettre de définir la ou les valeurs ou plages de valeurs valide pour ce paramètre. Le format de ce champ n&#039;est pas encore totalement défini, soit sous forme d&#039;expression régulière soit sous la forme suivante:&lt;br /&gt;
*** &#039;&#039;&#039;1..16&#039;&#039;&#039; ==&amp;gt; de 1 (inclus) à 16 (inclus)&lt;br /&gt;
*** &#039;&#039;&#039;8|16|32&#039;&#039;&#039; ==&amp;gt;  8 &#039;&#039;&#039;ou&#039;&#039;&#039; 16 &#039;&#039;&#039;ou&#039;&#039;&#039; 32&lt;br /&gt;
*** &#039;&#039;&#039;1..16|32&#039;&#039;&#039; ==&amp;gt; de 1 à 16 &#039;&#039;&#039;ou&#039;&#039;&#039; 32&lt;br /&gt;
** &#039;&#039;&#039;value&#039;&#039;&#039;: Cet attribut va permettre de définir la valeur par défaut du paramètre&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;generic_map&amp;gt; &lt;br /&gt;
  &amp;lt;generic name=&amp;quot;irq_count&amp;quot; type=&amp;quot;integer&amp;quot; value=&amp;quot;16&amp;quot; valid=&amp;quot;1..16&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;![CDATA[&lt;br /&gt;
      irq_count gives the maximum allowed interruption sources.&lt;br /&gt;
    ]]&amp;gt;&lt;br /&gt;
  &amp;lt;/generic&amp;gt;&lt;br /&gt;
  &amp;lt;generic name=&amp;quot;irq_level&amp;quot; type=&amp;quot;std_logic&amp;quot; value=&amp;quot;1&amp;quot; valid=&amp;quot;0|1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;![CDATA[&lt;br /&gt;
      irq_level gives the irq output signal active level.&lt;br /&gt;
    ]]&amp;gt;&lt;br /&gt;
  &amp;lt;/generic&amp;gt;&lt;br /&gt;
&amp;lt;/generics&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les plateformes ==&lt;br /&gt;
&lt;br /&gt;
== Les projets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Orchestra ProjectBuilder ==&lt;br /&gt;
This program is used to generate the target firmware based on the specified IPs.&lt;br /&gt;
A list of the available commands can be displayed like that: projectBuilder&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;strong&amp;gt;Project creation&amp;lt;/strong&amp;gt;&lt;br /&gt;
Before to be able to add Ips to a project, it has to be created:&lt;br /&gt;
 projectBuilder -createProject test platform.xml &lt;br /&gt;
Where test is the name of the project and platform.xml the platform description file. This file contains informations like the type of the FPGA used on a particular platform. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Result&amp;lt;/u&amp;gt;: creation of a  test.pro file.&lt;br /&gt;
 &lt;br /&gt;
*&amp;lt;strong&amp;gt;Adding/removing IPs&amp;lt;/strong&amp;gt;&lt;br /&gt;
Once the project created, IPs can be added like that:&lt;br /&gt;
 projectBuilder -addIp myIp ip.xml ip_constraint.xml&lt;br /&gt;
where myIp is the instance name of the IP ip.xml and ip_constraint.xml the constraint file for myIp.&amp;lt;br/&amp;gt;&lt;br /&gt;
The local .pro file is used that&#039;s why the it must not be specified in the command line&lt;br /&gt;
&lt;br /&gt;
Ips can be removed like that:&lt;br /&gt;
 projectBuilder -removeIp myIp&lt;br /&gt;
  &lt;br /&gt;
*&amp;lt;strong&amp;gt;Project informations&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;List of Ips&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The Ips present in the project can be listed as follow:&lt;br /&gt;
 projectBuilder -listIps&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;IP information&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Informations concerning a particular Ip within the project can be retrieved like that:&lt;br /&gt;
 projectBuilder -viewIpInfos myIp&lt;br /&gt;
A list of all the ArmadeusReady Ips can be generated like that:&lt;br /&gt;
 projectBuilder -listArmadeusReadyIps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Platform information&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Platform informations can be displayed as follow:&lt;br /&gt;
 projectBuilder -viewPlatformInfos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;i&amp;gt;Toolchain&amp;lt;/i&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The toolchain used to compile the project can be specified as follow:&lt;br /&gt;
 projectBuilder -setToolchain xilinx&lt;br /&gt;
It has be noted that the xilinx toolchain is the only tooclhain for the moment.&lt;br /&gt;
 &lt;br /&gt;
*&amp;lt;strong&amp;gt;IP set functions&amp;lt;/strong&amp;gt;&lt;br /&gt;
An IP instance has its own base address and its own interrupt ID within a project.  This two parameters can be changed like that:&lt;br /&gt;
 projectBuilder -clearIpAddress myIP&lt;br /&gt;
 projectBuilder -setIPBaseAddress myIP 0X0008   where 0X0008 is the new base address of the IP  &lt;br /&gt;
 projectBuilder -setInterrupt myIP 0X0001 where 0X0001 si the new interrupt number of the IP&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;strong&amp;gt;Project Build&amp;lt;/strong&amp;gt;&lt;br /&gt;
Once the IPs added to your project, it can be build with the following command:&lt;br /&gt;
 projectBuilder -buildProject&lt;br /&gt;
&amp;lt;u&amp;gt;Results&amp;lt;/u&amp;gt;: several files are created:&amp;lt;br/&amp;gt;&lt;br /&gt;
test.scr : script file for the Xilinx XST compiler&amp;lt;br/&amp;gt;&lt;br /&gt;
test.prj: project file for the Xilinx XST compiler&amp;lt;br/&amp;gt;&lt;br /&gt;
test.log log file&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3621</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3621"/>
		<updated>2008-03-14T21:11:04Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Synthesis */ new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more complex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
====Synthesis====&lt;br /&gt;
For FPGA development, you need the &#039;&#039;Xilinx ISE WebPack&#039;&#039; from Xilinx. It can be downloaded for free (after registration) from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
ISE WebPack is available for Windows and Linux. See the [[How_to_make_a_VHDL_design_in_Ubuntu/Debian| ISE WebPack installation on Linux]] page for more infos.&lt;br /&gt;
&lt;br /&gt;
====Simulation====&lt;br /&gt;
For simulation, Xilinx offers a free version of &#039;&#039;ModelSim&#039;&#039;, called &#039;&#039;ModelSim Xilinx Edition (MXE)&#039;&#039;. It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license. MXE is available for Windows only. &lt;br /&gt;
The alternative for Linux users is GHDL. More information can be found on the [http://www.armadeus.com/wiki/index.php?title=How_to_make_a_VHDL_design_in_Ubuntu/Debian#Simulation VHDL for Linux] page.&lt;br /&gt;
&lt;br /&gt;
====VHDL code editor====&lt;br /&gt;
The editor in ISE is not very useful and inconvenient. In principle, any alternative editor can be used with ISE, but some have special support for VHDL-Code as syntax highlighting, template insertion, indenting and many other cool features that help to write nice and error-free code in less time. The [http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html  VHDL Mode] for the well known [http://www.gnu.org/software/emacs/ GNU Emacs] editor can be recommended in particular. Emacs is available for all important operating systems.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
==Licence==&lt;br /&gt;
The firmware for the FPGA has to be licenced under LGPL and BSD. &lt;br /&gt;
&lt;br /&gt;
Please add to each created file a header containing the name of the &amp;quot;company&amp;quot; here it is an association, the maintainer name, the licence.&lt;br /&gt;
&lt;br /&gt;
If a part of a work of an other developper has been reused, please indicate where this part has been found, the author name and keep the original licence. If no licence is specified, assume it is unlicenced.&lt;br /&gt;
&lt;br /&gt;
==FPGA configuration from the iMX board==&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
See the FPGA loader page [[FPGA loader]] of this wiki for details.&lt;br /&gt;
&lt;br /&gt;
==FPGA timing diagrams==&lt;br /&gt;
The following timings diagrams have been taken with an Armadeus release 2.1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Timings&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| [[Image:FPGA_read.png | thumb | center | READ]] || &lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 8bits]] ||&lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 16bits]] ||&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.comelec.enst.fr/hdl&lt;br /&gt;
* http://www.fpga4fun.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]] [[Fr:FPGA|Cette page en français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=3620</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=3620"/>
		<updated>2008-03-14T21:10:09Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Developing on the APF FPGA==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; summary=&amp;quot;Hardware Add-Ons by functionnalities&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
===Tools===&lt;br /&gt;
* [[FPGA | FPGA on APF introduction]]&lt;br /&gt;
* [[ISE WebPack installation on Linux]]&lt;br /&gt;
* [[How_to_make_a_VHDL_design_in_Ubuntu/Debian| How to setup the FPGA toolchain in Ubuntu/Debian]]&lt;br /&gt;
* [[FPGA_loader| Configure FPGA from armadeus-Linux card]]&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Xilinx documentation links===&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf Spartan-3 FPGA Family Data Sheet]&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Designs===&lt;br /&gt;
* [[FPGA and led]]&lt;br /&gt;
* [[A simple design with Wishbone bus]]&lt;br /&gt;
* [[Une led qui clignote avec le spartan 3]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Link VHDL===&lt;br /&gt;
* [http://www.chez.com/amouf/syntaxe.htm Syntaxe VHDL (French)]&lt;br /&gt;
* [http://www.gmvhdl.com/VHDL.html An Introductory VHDL Tutorial]&lt;br /&gt;
* [http://www.xess.com/ho03000.html Nice ideas/examples to look at]&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Orchestra===&lt;br /&gt;
* [[FpgaArchitecture | Spécification de l&#039;architecture du FPGA (french)]]&lt;br /&gt;
* [[Orchestra | Spécification de l&#039;outil de conception automatique du FPGA (french)]]&lt;br /&gt;
* [[FPGA | FPGA project generation with Orchestra]]&lt;br /&gt;
* [[OrchestraPython | Elaboration du projet Orchestra en Python (french)]]&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Link Orchestra===&lt;br /&gt;
* [http://www.opencores.org/projects.cgi/web/wishbone/wbspec_b3.pdf  official Wishbone specifications]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29 Wikipedia Wishbone doc]&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3610</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3610"/>
		<updated>2008-03-14T20:48:53Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: More structure added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more complex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
====Synthesis====&lt;br /&gt;
For FPGA development, you need the &#039;&#039;Xilinx ISE WebPack&#039;&#039; from Xilinx. It can be downloaded for free (after registration) from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
ISE WebPack is available for Windows and Linux. See the [[ISE WebPack installation on Linux]] page for more infos.&lt;br /&gt;
&lt;br /&gt;
====Simulation====&lt;br /&gt;
For simulation, Xilinx offers a free version of &#039;&#039;ModelSim&#039;&#039;, called &#039;&#039;ModelSim Xilinx Edition (MXE)&#039;&#039;. It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license. MXE is available for Windows only. &lt;br /&gt;
The alternative for Linux users is GHDL. More information can be found on the [http://www.armadeus.com/wiki/index.php?title=How_to_make_a_VHDL_design_in_Ubuntu/Debian#Simulation VHDL for Linux] page.&lt;br /&gt;
&lt;br /&gt;
====VHDL code editor====&lt;br /&gt;
The editor in ISE is not very useful and inconvenient. In principle, any alternative editor can be used with ISE, but some have special support for VHDL-Code as syntax highlighting, template insertion, indenting and many other cool features that help to write nice and error-free code in less time. The [http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html  VHDL Mode] for the well known [http://www.gnu.org/software/emacs/ GNU Emacs] editor can be recommended in particular. Emacs is available for all important operating systems.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
==Licence==&lt;br /&gt;
The firmware for the FPGA has to be licenced under LGPL and BSD. &lt;br /&gt;
&lt;br /&gt;
Please add to each created file a header containing the name of the &amp;quot;company&amp;quot; here it is an association, the maintainer name, the licence.&lt;br /&gt;
&lt;br /&gt;
If a part of a work of an other developper has been reused, please indicate where this part has been found, the author name and keep the original licence. If no licence is specified, assume it is unlicenced.&lt;br /&gt;
&lt;br /&gt;
==FPGA configuration from the iMX board==&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
See the FPGA loader page [[FPGA loader]] of this wiki for details.&lt;br /&gt;
&lt;br /&gt;
==FPGA timing diagrams==&lt;br /&gt;
The following timings diagrams have been taken with an Armadeus release 2.1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Timings&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| [[Image:FPGA_read.png | thumb | center | READ]] || &lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 8bits]] ||&lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 16bits]] ||&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.comelec.enst.fr/hdl&lt;br /&gt;
* http://www.fpga4fun.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]] [[Fr:FPGA|Cette page en français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=3609</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=3609"/>
		<updated>2008-03-14T20:44:38Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Tools */ Toolchain or Design ?!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Developing on the APF FPGA==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; summary=&amp;quot;Hardware Add-Ons by functionnalities&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
===Tools===&lt;br /&gt;
* [[FPGA | FPGA on APF introduction]]&lt;br /&gt;
* [[ISE WebPack installation on Linux]]&lt;br /&gt;
* [[How to setup the FPGA toolchain in Ubuntu/Debian]]&lt;br /&gt;
* [[FPGA_loader| Configure FPGA from armadeus-Linux card]]&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Xilinx documentation links===&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf Spartan-3 FPGA Family Data Sheet]&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Designs===&lt;br /&gt;
* [[FPGA and led]]&lt;br /&gt;
* [[A simple design with Wishbone bus]]&lt;br /&gt;
* [[Une led qui clignote avec le spartan 3]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Link VHDL===&lt;br /&gt;
* [http://www.chez.com/amouf/syntaxe.htm Syntaxe VHDL (French)]&lt;br /&gt;
* [http://www.gmvhdl.com/VHDL.html An Introductory VHDL Tutorial]&lt;br /&gt;
* [http://www.xess.com/ho03000.html Nice ideas/examples to look at]&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Orchestra===&lt;br /&gt;
* [[FpgaArchitecture | Spécification de l&#039;architecture du FPGA (french)]]&lt;br /&gt;
* [[Orchestra | Spécification de l&#039;outil de conception automatique du FPGA (french)]]&lt;br /&gt;
* [[FPGA | FPGA project generation with Orchestra]]&lt;br /&gt;
* [[OrchestraPython | Elaboration du projet Orchestra en Python (french)]]&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Link Orchestra===&lt;br /&gt;
* [http://www.opencores.org/projects.cgi/web/wishbone/wbspec_b3.pdf  official Wishbone specifications]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29 Wikipedia Wishbone doc]&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3605</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3605"/>
		<updated>2008-03-14T20:40:52Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Simulation */ GHDL hint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more complex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
====Synthesis====&lt;br /&gt;
For FPGA development, you need the &#039;&#039;Xilinx ISE WebPack&#039;&#039; from Xilinx. It can be downloaded for free (after registration) from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
ISE WebPack is available for Windows and Linux. See the [[ISE WebPack installation on Linux]] page for more infos.&lt;br /&gt;
&lt;br /&gt;
====Simulation====&lt;br /&gt;
For simulation, Xilinx offers a free version of &#039;&#039;ModelSim&#039;&#039;, called &#039;&#039;ModelSim Xilinx Edition (MXE)&#039;&#039;. It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license. MXE is available for Windows only. &lt;br /&gt;
The alternative for Linux users is GHDL. More information can be found on the [http://www.armadeus.com/wiki/index.php?title=How_to_make_a_VHDL_design_in_Ubuntu/Debian#Simulation VHDL for Linux] page.&lt;br /&gt;
&lt;br /&gt;
====VHDL code editor====&lt;br /&gt;
The editor in ISE is not very useful and inconvenient. In principle, any alternative editor can be used with ISE, but some have special support for VHDL-Code as syntax highlighting, template insertion, indenting and many other cool features that help to write nice and error-free code in less time. The [http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html  VHDL Mode] for the well known [http://www.gnu.org/software/emacs/ GNU Emacs] editor can be recommended in particular. Emacs is available for all important operating systems.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
===Licence===&lt;br /&gt;
The firmware for the FPGA has to be licenced under LGPL and BSD. &lt;br /&gt;
&lt;br /&gt;
Please add to each created file a header containing the name of the &amp;quot;company&amp;quot; here it is an association, the maintainer name, the licence.&lt;br /&gt;
&lt;br /&gt;
If a part of a work of an other developper has been reused, please indicate where this part has been found, the author name and keep the original licence. If no licence is specified, assume it is unlicenced.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
See the FPGA loader page [[FPGA loader]] of this wiki for details.&lt;br /&gt;
&lt;br /&gt;
===FPGA timing diagrams===&lt;br /&gt;
The following timings diagrams have been taken with an Armadeus release 2.1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Timings&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| [[Image:FPGA_read.png | thumb | center | READ]] || &lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 8bits]] ||&lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 16bits]] ||&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.comelec.enst.fr/hdl&lt;br /&gt;
* http://www.fpga4fun.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]] [[Fr:FPGA|Cette page en français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Fpga.png&amp;diff=3591</id>
		<title>File:Fpga.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Fpga.png&amp;diff=3591"/>
		<updated>2008-03-14T20:10:17Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Chip Icon, LGPL from KDE-LOOK.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chip Icon, LGPL from KDE-LOOK.org&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3588</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=3588"/>
		<updated>2008-03-14T19:15:23Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Development Software */  More structure and hint on editors added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more complex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
====Synthesis====&lt;br /&gt;
For FPGA development, you need the &#039;&#039;Xilinx ISE WebPack&#039;&#039; from Xilinx. It can be downloaded for free (after registration) from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
ISE WebPack is available for Windows and Linux. See the [[ISE WebPack installation on Linux]] page for more infos.&lt;br /&gt;
&lt;br /&gt;
====Simulation====&lt;br /&gt;
For simulation, Xilinx offers a free version of &#039;&#039;ModelSim&#039;&#039;, called &#039;&#039;ModelSim Xilinx Edition (MXE)&#039;&#039;. It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license. MXE is available only for Windows :-(&lt;br /&gt;
&lt;br /&gt;
====VHDL code editor====&lt;br /&gt;
The editor in ISE is not very useful and inconvenient. In principle, any alternative editor can be used with ISE, but some have special support for VHDL-Code as syntax highlighting, template insertion, indenting and many other cool features that help to write nice and error-free code in less time. The [http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html  VHDL Mode] for the well known [http://www.gnu.org/software/emacs/ GNU Emacs] editor can be recommended in particular. Emacs is available for all important operating systems.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
===Licence===&lt;br /&gt;
The firmware for the FPGA has to be licenced under LGPL and BSD. &lt;br /&gt;
&lt;br /&gt;
Please add to each created file a header containing the name of the &amp;quot;company&amp;quot; here it is an association, the maintainer name, the licence.&lt;br /&gt;
&lt;br /&gt;
If a part of a work of an other developper has been reused, please indicate where this part has been found, the author name and keep the original licence. If no licence is specified, assume it is unlicenced.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
See the FPGA loader page [[FPGA loader]] of this wiki for details.&lt;br /&gt;
&lt;br /&gt;
===FPGA timing diagrams===&lt;br /&gt;
The following timings diagrams have been taken with an Armadeus release 2.1&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=0 summary=&amp;quot;Timings&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| [[Image:FPGA_read.png | thumb | center | READ]] || &lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 8bits]] ||&lt;br /&gt;
| [[Image:FPGA_write_8bits.png | thumb | center | WRITE 16bits]] ||&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.comelec.enst.fr/hdl&lt;br /&gt;
* http://www.fpga4fun.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]] [[Fr:FPGA|Cette page en français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3297</id>
		<title>FpgaArchitecture</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3297"/>
		<updated>2008-01-06T22:08:11Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spécifications de conception du FPGA =&lt;br /&gt;
&lt;br /&gt;
== Evolutions ==&lt;br /&gt;
&lt;br /&gt;
2006/12/29: MAJ de la partie 1.7 pour décrire plus en détail le programme d&#039;assemblage des IP (Orchestra)&lt;br /&gt;
&lt;br /&gt;
2006/12/21: MAJ en fonction des remarques de tout le monde.&lt;br /&gt;
&lt;br /&gt;
== But ==&lt;br /&gt;
&lt;br /&gt;
Cette page a été créée pour permettre à tous les membres de l&#039;association de discuter de l&#039;architecture qui va être mise en place pour le FPGA présent sur la carte APF9328.&lt;br /&gt;
&lt;br /&gt;
Cette espace doit être vu comme un espace d&#039;échange d&#039;idées. Tout le monde est convié à y participer. Il est préférable d&#039;avoir quelques connaissances en électronique et sur les langages HDL (VHDL ou Verilog), mais ce n&#039;est pas une obligation.&lt;br /&gt;
&lt;br /&gt;
Bonne lecture et merci pour votre participation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les grandes lignes ==&lt;br /&gt;
&lt;br /&gt;
Le FPGA de la carte APF9328 est là pour offrir le maximum de souplesse au projet &#039;&#039;&#039;Armadeus&#039;&#039;&#039; et permettre d&#039;implanter des fonctionnalités coté &#039;&#039;&#039;matériel&#039;&#039;&#039; qui seraient trop pénalisantes ou impossibles à implanter coté &#039;&#039;&#039;logiciel&#039;&#039;&#039;. Bien entendu, pour que cela soit exploitable, il faut également disposer d&#039;un lien entre le FPGA et le processeur i.MX.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser cela, il faut mettre en place un bus de communication entre le FPGA et l&#039;i.MX. Ce bus de communication va permettre le pilotage des fonctionnalités qui seront implantées dans le FPGA. Bref, il faut recréer à l&#039;intérieur du FPGA un bus tel qu&#039;il existe entre l&#039;i.MX et les différents composants de la carte (RAM, Flash, USB, Ethernet, etc.).&lt;br /&gt;
&lt;br /&gt;
Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site &#039;&#039;&#039;[http://www.opencores.com www.opencores.com]&#039;&#039;&#039; plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Le bus Wishbone ==&lt;br /&gt;
&lt;br /&gt;
(add list of the signals of the wishbone bus here)&lt;br /&gt;
&lt;br /&gt;
(add references to documentation)&lt;br /&gt;
&lt;br /&gt;
La spécification Wishbone décrit un certain nombre de composants de base:&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;maitres&#039;&#039;&#039;, ces interfaces sont implantés dans des composants qui seront alors capable d&#039;initier les transferts sur le bus Wishbone&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;esclaves&#039;&#039;&#039;, ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts&lt;br /&gt;
* Un composant &#039;&#039;&#039;syscon&#039;&#039;&#039;, ce composant va générer le signal d&#039;horloge qui sera utilisé par tous les composants/interfaces du bus ainsi que le signal de RESET synchrone.&lt;br /&gt;
* Un macro composant &#039;&#039;&#039;intercon&#039;&#039;&#039;, ce composant va gérer la connexion de toutes les interfaces maitres et esclaves qui composent le bus interne. Il prend en charge :&lt;br /&gt;
** Le décodage/transcodage d&#039;adresse (génération des signaux A0 à A3 selon le mode d&#039;adressage 8/16/32/64 bits)&lt;br /&gt;
** le routage du bus de données entre les différentes interfaces maitres et esclaves (conversion big endian/little endian, etc)&lt;br /&gt;
** le routage/génération des signaux de contrôle du bus (Read, Write, Chip Select, Output Enable, ACK, etc.)&lt;br /&gt;
* Un composant &#039;&#039;&#039;arbitre&#039;&#039;&#039;, ce composant va permettre de partager l&#039;accès au bus ou à un composant de type esclave qui est partagé par plusieurs composants de type maitre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les spécifications du bus Wishbone permettent de créer différents types de bus:&lt;br /&gt;
* &#039;&#039;&#039;Point to Point&#039;&#039;&#039;: C&#039;est le type de bus le plus simple possible, un composant avec une interface type maitre connecté à un composant avec une interface de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Data Flow&#039;&#039;&#039;: C&#039;est un bus en cascade, à un bout on trouve un composant avec une interface de type maître et à l&#039;autre bout un composant avec une interface de type esclave. Entre les deux composant se trouve une chaine d&#039;un ou plusieurs composants avec une interface de type maitre et de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Shared&#039;&#039;&#039;: C&#039;est un bus sur lequel plusieurs composants sont connectés dessus. Tous les composants se partagent ce bus. Si plusieurs &#039;&#039;maitres&#039;&#039; sont connectés sur ce bus, un seul pourra initier un transfert à un instant donné.&lt;br /&gt;
* &#039;&#039;&#039;CrossBar&#039;&#039;&#039;: C&#039;est également un bus de type partagé, par contre dans se cas, on dispose de plusieurs bus. Chaque maitre utilise sont propre bus pour communiquer avec ces esclaves. On peut donc avoir plusieurs transferts en simultané. Le seul cas de blocage/arbitrage est le transfert de plusieurs maitre avec le même esclave.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il existe également un certain nombre de mécanismes dans la spécification Wishbone pour permettre d&#039;optimiser les temps de transferts sur le bus. Ces optimisations sont de plusieurs nature:&lt;br /&gt;
* utilisation de signaux &#039;&#039;&#039;ACK&#039;&#039;&#039;, &#039;&#039;&#039;ERR&#039;&#039;&#039; et &#039;&#039;&#039;RTY&#039;&#039;&#039; pour signaler la fin de transfert&lt;br /&gt;
* les &#039;&#039;&#039;Registered Feedback Bus Cycles&#039;&#039;&#039;, qui permettent de gagner un cycle d&#039;horloge pour des transferts consécutifs&lt;br /&gt;
* les transferts en mode &#039;&#039;&#039;Burst&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Le lien i.MX &amp;lt;=&amp;gt; FPGA ==&lt;br /&gt;
&lt;br /&gt;
(add timing graph here)&lt;br /&gt;
&lt;br /&gt;
La communication entre l&#039;i.MX et le FPGA passe par les signaux suivants (à vérifier):&lt;br /&gt;
* des signaux de contrôle: &amp;lt;strike&amp;gt;RW_n&amp;lt;/strike&amp;gt;, OE_n, EB_n[3..2] et CS1_n&lt;br /&gt;
* le bus de données sur 16 bits (D[15..0])&lt;br /&gt;
* le bus d&#039;adresses sur 12 bits (A[12..1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA qui implémenterons une interface wishbone de type esclave.&lt;br /&gt;
&lt;br /&gt;
Etant donné les erratas du composant i.MX  concernant le signal DTACK, il n&#039;est pas possible d&#039;implanter une interface Wishbone maitre &#039;&#039;classique&#039;&#039;. Ceci entraine les limitations suivantes:&lt;br /&gt;
* Pas possible d&#039;utiliser le signal &#039;&#039;&#039;ACK&#039;&#039;&#039; Wishbone pour terminer le transfert entre FPGA et i.MX.&lt;br /&gt;
* Pas possible de mettre en place des optimisations du temps de transfert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour contrer ce problème, il faudra s&#039;assurer que toutes les interfaces esclaves qui seront connectées à l&#039;interface maitre du composant Wishbone i.MX répondent dans un temps fixe donné.&amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le bus Wishbone est un bus entièrement synchrone, le temps minimal d&#039;un transfert est de 2 cycles de l&#039;horloge Wishbone. Il faut ajouter à cela, un cycle pour la synchronisation des signaux du bus i.MX. Cela nous fait donc un minimum de 3 cycles Wishbone pour un transfert entre le FPGA et l&#039;i.MX.&lt;br /&gt;
&lt;br /&gt;
Etant donné les performances des FPGA actuels, on peut tabler sur une fréquence de fonctionnement d&#039;au moins 100MHz pour le bus Wishbone. Cela nous donne donc un taux de transfert approximatif de 66 Moctets/sec (100MHz * 16bits / 3).&lt;br /&gt;
&lt;br /&gt;
== La composition du système Wishbone ==&lt;br /&gt;
&lt;br /&gt;
[[Image:FPGA_Armadeus.png]]&lt;br /&gt;
&lt;br /&gt;
Le système Wishbone qui sera implanté dans le FPGA se compose des éléments suivants:&lt;br /&gt;
* &#039;&#039;&#039;i.MX Wrapper&#039;&#039;&#039;: L&#039;interface i.MX vers le bus Wishbone&lt;br /&gt;
* &#039;&#039;&#039;Syscon&#039;&#039;&#039;: Ce composant va gérer les signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; (généré par une PLL ou directement issu de l&#039;i.MX) et &#039;&#039;&#039;RESET&#039;&#039;&#039; (synchrone).&lt;br /&gt;
* &#039;&#039;&#039;Intercon&#039;&#039;&#039;: Ce composant devra être généré automatiquement par une moulinette, il va faire le lien entre tous les composants faisant parti du &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Gestionnaire d&#039;interruption&#039;&#039;&#039;: Ce composant est un &#039;&#039;&#039;esclave wishbone&#039;&#039;&#039; et va centraliser toutes les demandes d&#039;interruption et les remonter vers l&#039;i.MX.&lt;br /&gt;
* &#039;&#039;&#039;Esclaves whisbone&#039;&#039;&#039;: Ceci représentent tous les autres composants avec une interface wishbone esclave qui sont accessibles via le wrapper i.MX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sur le diagramme, il manque un certain nombre de choses:&lt;br /&gt;
* Les signaux &#039;&#039;non wishbone&#039;&#039; en entrée ou en sortie sur les &#039;&#039;&#039;esclaves wishbone&#039;&#039;&#039;&lt;br /&gt;
* Le macro composant &#039;&#039;&#039;système wishbone&#039;&#039;&#039;. Ce macro composant est celui qui sera ensuite instancié dans le design du FPGA. Sur ce composant ne seront visibles que les signaux &#039;&#039;externes&#039;&#039; au système:&lt;br /&gt;
** Les signaux issus de l&#039;i.MX&lt;br /&gt;
** &amp;lt;strike&amp;gt;Le signal RESET (en entrée) qui sera synchronisé sur l&#039;horloge système&amp;lt;/strike&amp;gt; Le signal RESET synchrone du bus Wishbone sera directement généré par le composant syscon à l&#039;aide d&#039;une simple machine d&#039;état.&lt;br /&gt;
** Le signal CLK (en entrée) qui sera l&#039;horloge utilisée pour la génération des signaux Wishbone&lt;br /&gt;
** Le signal IRQ (en sortie) qui sera utilisé pour remonter les demandes d&#039;interruption vers l&#039;i.MX&lt;br /&gt;
** Les signaux d&#039;entrée et de sortie spécifiques aux autres composants connectés sur le bus Wishbone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;intérêt de créer le composant &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;, est que cela simplifie la vision dans l&#039;outil conception du FPGA. Il ne suffit plus alors qu&#039;à relier les signaux sur les broches correspondantes du FPGA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i.MX Bridge ===&lt;br /&gt;
&lt;br /&gt;
Ce composant est le point d&#039;accès au bus Wishbone pour l&#039;i.MX et sera le seul à disposer d&#039;une interface Wishbone maitre.&lt;br /&gt;
&lt;br /&gt;
Les fonctions de ce composants sont:&lt;br /&gt;
* synchronisation des signaux issus de l&#039;i.MX. Ceci est primordial pour assurer la stabilité de tout le système Wishbone. De plus, le bus de sortie étant asynchrone (l&#039;horloge de génération des signaux n&#039;est pas véhiculée), la resynchronisation des signaux par rapport à l&#039;horloge du bus s&#039;impose.&lt;br /&gt;
* gestion du bus de données en 3 états.&lt;br /&gt;
* conversion des signaux de contrôle du bus i.MX en signaux Wishbone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syscom ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est le composant le plus simple du système &amp;lt;strike&amp;gt;, il ne fait que synchroniser le signal RESET en entrée avec le signal d&#039;horloge du système&amp;lt;/strike&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il va être en charge de la génération du signal RESET synchrone pour le bus Wishbone.&lt;br /&gt;
&lt;br /&gt;
Le signal d&#039;horloge en entrée du composant &#039;&#039;&#039;syscon&#039;&#039;&#039; sera celui utilisé pour le fonctionnement du bus Wishbone. La fréquence du signal d&#039;horloge devra être assez élevée pour permettre le traitement des signaux issus de l&#039;i.MX. Cela va dépendre de la configuration du chip select utilisé (CS1).&lt;br /&gt;
&lt;br /&gt;
La source du signal d&#039;horloge reste encore à définir, les choix possibles sont:&lt;br /&gt;
* directement issu de l&#039;i.MX&lt;br /&gt;
* utilisation d&#039;un DCM du Spartan 3&lt;br /&gt;
&lt;br /&gt;
Le choix définitif dépendra principalement des essais &#039;&#039;grandeur nature&#039;&#039; lors de la génération des premiers systèmes whisbone durant la phase de mise en place des composants de base.&lt;br /&gt;
&lt;br /&gt;
=== Intercon ===&lt;br /&gt;
&lt;br /&gt;
Ce composant a la particularité qu&#039;il sera créé automatiquement par un outil (script ou programme). &#039;&#039;&#039;Intercom&#039;&#039;&#039; a comme fonctionnalités:&lt;br /&gt;
* Le décodage d&#039;adresse pour la sélection des différents esclaves du système&lt;br /&gt;
* Le routage des bus d&#039;adresses et de données vers les différents esclaves&lt;br /&gt;
* La génération des signaux de contrôle pour les différents esclaves.&lt;br /&gt;
&lt;br /&gt;
Etant donné les limitations induites par les erratas de l&#039;i.MX, le composant &#039;&#039;&#039;intercom&#039;&#039;&#039; remplira les fonctionnalités suivantes:&lt;br /&gt;
* le bus de données est figé sur 16 bits&lt;br /&gt;
* les cycles de lecture et d&#039;écriture sont de longueur fixe (à priori 3 cycles d&#039;horloge &#039;&#039;&#039;à valider&#039;&#039;&#039; lors des essais du système de base)&lt;br /&gt;
* une interruption est générée en cas de dépassement du temps de cycle d&#039;écriture ou de lecture&lt;br /&gt;
* le bus sera de type &#039;&#039;&#039;shared&#039;&#039;&#039; avec un seul maitre (le Wrapper i.MX).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Les composants esclaves ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Suite aux divers discussions issues de ce chapitre. L&#039;organisation et la présences des fichiers dans les répertoires &#039;&#039;&#039;doc&#039;&#039;&#039; et &#039;&#039;&#039;HAL&#039;&#039;&#039; n&#039;est pas encore établie. Ce chapitre sera encore à retravailler.&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;une IP puisse être facilement inclue dans le système, il faut une certaine organisation. Sinon, à moyen ou à long terme cette IP est morte parce qu&#039;elle sera difficilement exploitable et encore plus difficilement maintenable.&lt;br /&gt;
&lt;br /&gt;
Ce sont des notions qui ne sont pas simples à prendre en considération lors du développement d&#039;un nouveau projet, mais lorsque l&#039;on doit se replonger dans un travail fait par quelqu&#039;un d&#039;autre ou un projet qu&#039;on a laissé en sommeil pendant quelque temps, on est content d&#039;avoir quelque chose à quoi se raccrocher.&lt;br /&gt;
&lt;br /&gt;
Pour développer efficacement, il faut assurer une organisation logique, figée et compréhensible, et le plus simple dans ce genre de cas est de se baser sur la notion de répertoire. Voici les répertoires qui doivent être utilisés par une IP:&lt;br /&gt;
* &#039;&#039;&#039;doc&#039;&#039;&#039;: Ce répertoire va contenir toute la documentation nécessaire à l&#039;exploitation de l&#039;IP. On y trouvera une notice (&#039;&#039;&#039;readme.txt&#039;&#039;&#039;), un fichier de suivi de modification (&#039;&#039;&#039;ChangeLog.txt&#039;&#039;&#039;), un fichier contenant les évolutions futures prévues (&#039;&#039;&#039;todo.txt&#039;&#039;&#039;) ainsi que tout autre fichier estimé utile par le(s) créateur(s) de l&#039;IP.&lt;br /&gt;
* &#039;&#039;&#039;hdl&#039;&#039;&#039;: Ce répertoire va contenir tous les fichiers VHDL (ou Verilog) qui auront été développés spécifiquement pour cette IP.&lt;br /&gt;
* &#039;&#039;&#039;inc&#039;&#039;&#039;: Ce répertoire va contenir un fichier d&#039;en-tête ANSI C contenant l&#039;adresse de tous les registres interne de l&#039;IP pour permettre de créer simplement un programme en langage C permettant de contrôler l&#039;IP. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;HAL&#039;&#039;&#039;: Ce répertoire va contenir un drivers ou un exemple de logiciel de base permettant l&#039;utilisation de l&#039;IP par un microprocesseur/contrôleur. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire d&#039;interruption ===&lt;br /&gt;
&lt;br /&gt;
Ce composant esclave est le premier qui sera créé spécifiquement pour le système. Il sera capable de:&lt;br /&gt;
* prendre en compte jusqu&#039;à 16 sources d&#039;interruptions différentes (remark: why 16 ???)&lt;br /&gt;
* réaliser l&#039;acquittement de chaque interruption individuellement&lt;br /&gt;
* masquer/autoriser chaque interruption individuellement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le composant disposera des registres suivants:&lt;br /&gt;
* &#039;&#039;&#039;isr_mask&#039;&#039;&#039;: registre d&#039;autorisation des interruptions. Chaque bit correspond à une interruption (bit0 =&amp;gt; IRQ0, bit1 =&amp;gt; IRQ1, etc.). Ce registre sera accessible en lecture et en écriture. (remark: what is the default value? How are the bits interpreted? What is the meaning of &#039;0&#039;/&#039;1&#039;?&lt;br /&gt;
* &#039;&#039;&#039;isr_pend&#039;&#039;&#039;: ce registre est à double emploi&lt;br /&gt;
** &#039;&#039;&#039;en lecture&#039;&#039;&#039;: Les interruptions en attente de traitement&lt;br /&gt;
** &#039;&#039;&#039;en écriture&#039;&#039;&#039;: Acquittement des interruptions. Chaque bit à 1 va acquitter l&#039;interruption correspondante.&lt;br /&gt;
&lt;br /&gt;
== Le script / programme d&#039;assemblage des IP ==&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant parler du coeur du système, du moins de la partie la plus visible de l&#039;iceberg ;-)&lt;br /&gt;
&lt;br /&gt;
La première des priorités, sera de trouver un nom pour cet outil qui reste un peu dans l&#039;esprit du projet. Voici quelques propositions, à vous de compléter ou de voter pour un nom ou plusieurs noms:&lt;br /&gt;
* Concerto&lt;br /&gt;
* Orchestra&lt;br /&gt;
&lt;br /&gt;
D&#039;après les derniers sondage, &#039;&#039;&#039;Orchestra&#039;&#039;&#039; serait finalement le nom retenu pour ce logiciel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Principe et fonctionnement ===&lt;br /&gt;
&lt;br /&gt;
Afin de de rendre tout ce système utilisable par le plus grand nombre, il faut être capable de proposer des outils qui vont simplifier la vie de l&#039;utilisateur final ainsi que de l&#039;intégrateur.&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faudra créer un outil soit sous forme de script(s), soit sous forme de programme(s) qui va permettre de réaliser les tâches suivantes:&lt;br /&gt;
* Création/gestion d&#039;une bibliothèque de composants &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;une liste de &#039;&#039;&#039;hardware Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Edition d&#039;un &#039;&#039;&#039;système Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;un projet&lt;br /&gt;
* Génération automatique du composant &#039;&#039;&#039;system&#039;&#039;&#039; qui sera implanté dans le FPGA&lt;br /&gt;
* Génération automatique d&#039;un banc de tests pour permettre la validation par ModelSim (ou autre logiciel de simulation HDL)&lt;br /&gt;
* Génération d&#039;un fichier &#039;&#039;&#039;mapping mémoire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La bibliothèque de composants ===&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un composant, c&#039;est-à-dire une IP, soit exploitable par le système, il faut passer par une phase d&#039;intégration qui va permettre de décrire ce composant:&lt;br /&gt;
* Nom de l&#039;IP&lt;br /&gt;
* Description&lt;br /&gt;
* Version&lt;br /&gt;
* Identification des fichiers HDL utilisés (VHDL ou Verilog)&lt;br /&gt;
* Identification du fichier &#039;&#039;&#039;Top&#039;&#039;&#039; (le point d&#039;entrée de l&#039;IP)&lt;br /&gt;
* Identification des paramètres &#039;&#039;&#039;&#039;&#039;GENERIC&#039;&#039;&#039;&#039;&#039; (dans le cas d&#039;une IP en VHDL):&lt;br /&gt;
** Type de paramètre (entier, std_logic, etc)&lt;br /&gt;
** Valeur par défaut&lt;br /&gt;
** Valeurs ou plages de valeurs autorisées&lt;br /&gt;
** Description du paramètre&lt;br /&gt;
* Identification des signaux Wishbone utilisés par le composant&lt;br /&gt;
* Identification du type (maitre ou esclave) et du nombre d&#039;interfaces Wishbone utilisés par ce composant&lt;br /&gt;
* Identification des registres internes&lt;br /&gt;
** Adresse (Offset par rapport à l&#039;adresse de base)&lt;br /&gt;
** Taille (8 ou 16 bits)&lt;br /&gt;
** Nom et/ou description&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront alors sauvegardées dans un fichier, de préférence dans un format compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur de texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chaque composant identifié par le logiciel se trouvera dans un sous-répertoire (ou dans un fichier archive ?!?) placé dans le répertoire &#039;&#039;&#039;Armadeus Components&#039;&#039;&#039;, chaque sous-répertoire (ou archive) de composant contiendra les données suivantes:&lt;br /&gt;
* Le fichier de description du composant &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HDL&#039;&#039;&#039; avec les fichiers VHDL/Verilog de l&#039;IP&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HAL&#039;&#039;&#039; avec les fichiers d&#039;un drivers de base (pour Linux ou &#039;&#039;générique&#039;&#039; ?!?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de composants Armadeus doit être capable de réaliser les opérations suivantes:&lt;br /&gt;
* Importer un composant ou une liste de composants&lt;br /&gt;
* Exporter un composant ou une liste de composants&lt;br /&gt;
* Gérer des versions de composants (à voir si cette fonctionnalité est importante/utile)&lt;br /&gt;
* Permettre l&#039;ajout/création de composants&lt;br /&gt;
* Permettre de supprimer un composant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de plateformes ===&lt;br /&gt;
&lt;br /&gt;
Il faut avoir confiance dans l&#039;avenir, pour l&#039;instant nous ne disposons que d&#039;une seul plateforme de travail, mais ce n&#039;est qu&#039;un début et très certainement d&#039;autres cartes à base de l&#039;i.MX et d&#039;un FPGA vont voir le jour.&lt;br /&gt;
&lt;br /&gt;
Il faut donc prévoir d&#039;ores et déjà cette possibilité et proposer un outil qui va permettre de définir une plateforme. Chaque descripteur de plateforme devra fournir les informations suivantes:&lt;br /&gt;
* Type de FPGA&lt;br /&gt;
* Emplacement (niveau FPGA, c&#039;est-à-dire la broche utilisée), type (sortie i.MX, oscillateur ou quartz) et fréquence (ou plage de fréquence ?!?) des horloges&lt;br /&gt;
* Emplacements/broche du FPGA utilisées ainsi que leur fonctionnalité (signal Wishbone, comme d&#039;un composant externe, signal d&#039;interruption, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront utilisées par la suite lors de la création d&#039;un projet &#039;&#039;&#039;Orchestra/Armadeus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de projet ===&lt;br /&gt;
&lt;br /&gt;
Le rôle du gestionnaire de projet est de permettre de créer, reprendre ou modifier le plus simplement possible une configuration du FPGA pour une carte donnée. Cette configuration sera appelée par la suite un &#039;&#039;&#039;système&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tout &#039;&#039;&#039;système&#039;&#039;&#039; est entièrement décrit par un fichier projet qui contiendra les éléments suivants:&lt;br /&gt;
* Le nom du système (éventuellement le même que le nom du projet ?!?)&lt;br /&gt;
* Une description du système&lt;br /&gt;
* Le type de plateforme utilisé pour ce système&lt;br /&gt;
* La source de la fréquence d&#039;horloge du bus Wishbone (broche du FPGA ou DLL/DCM). On pourra éventuellement imaginer la création d&#039;un &#039;&#039;Wizard&#039;&#039; pour simplifier la configuration du DCM.&lt;br /&gt;
* La liste de tous les composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; inclus dans le système, avec pour chacun de ces composants, les détails suivantes:&lt;br /&gt;
** La référence du composant (par rapport à la bibliothèque de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;)&lt;br /&gt;
** Le nom de l&#039;instance du composant (e.g. UART1, PWM_MOTOR, etc.)&lt;br /&gt;
** La connexion des entrées/sorties (vers une broche du FPGA, non utilisé ou relié &#039;&#039;&#039;manuellement&#039;&#039;&#039;)&lt;br /&gt;
** La valeur de chaque paramètre &#039;&#039;&#039;GENERIC&#039;&#039;&#039; du composant, par exemple l&#039;adresse du base de chacune de ses interfaces esclaves connectées au bus Wishbone&lt;br /&gt;
** L&#039;horloge utilisée (pour l&#039;instant ce sera toujours celle du bus Wishbone mais peut-être que plus tard ce ne sera plus forcément le cas ;-) )&lt;br /&gt;
** Le numéro d&#039;interruption attribué au composant, s&#039;il est capable de généré une demande d&#039;interruption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme pour le fichier de description d&#039;un composant Armadeus, le fichier projet devra être dans un format texte compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le fichier projet est le coeur du système et, à partir de celui-ci ainsi que de la librairie de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; + la librairie de plateforme, toute la partie liée au FPGA doit pouvoir être recrée. Bref c&#039;est le seul fichier dont l&#039;utilisateur final aura à ce soucier (sauvegarde, archivage, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lors de la création d&#039;un nouveau projet, l&#039;utilisateur devra fournir les éléments de base suivants:&lt;br /&gt;
* Le nom du système&lt;br /&gt;
* Une description&lt;br /&gt;
* Le type de plateforme utilisé&lt;br /&gt;
* La source de l&#039;horloge Wishbone (broche du FPGA ou DCM) avec éventuellement un &#039;&#039;wizard&#039;&#039; pour la saisie des informations relatives à la programmation du DCM.&lt;br /&gt;
* La fréquence du bus Wishbone (éventuellement obtenue automatiquement à partir de la sélection de la source de l&#039;horloge)&lt;br /&gt;
* Le nombre de sources d&#039;interruptions autorisées ainsi que l&#039;emplacement en mémoire des registres du gestionnaire d&#039;interruption (par défaut à l&#039;adresse 0x0000).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que le projet aura été créer, les composants suivants seront ajouté automatiquement au système:&lt;br /&gt;
* Un &#039;&#039;&#039;Wrapper i.MX&#039;&#039;&#039; pour faire le lien avec l&#039;i.MX&lt;br /&gt;
* Un &#039;&#039;&#039;syscon&#039;&#039;&#039; pour la générations des signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; et &#039;&#039;&#039;RESET&#039;&#039;&#039; du bus Wishbone&lt;br /&gt;
* Un &#039;&#039;&#039;Gestionnaire d&#039;interruptions&#039;&#039;&#039; si le système doit être capable de remonter des demandes d&#039;interruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite, l&#039;utilisateur pourra modifier le système de base à l&#039;aide des opérations suivantes:&lt;br /&gt;
* choisir dans la librairie un composant pour l&#039;ajouter au système&lt;br /&gt;
* modifier les paramètres d&#039;un composant du système&lt;br /&gt;
* modifier les caractéristiques du projet (nom, fréquence du bus Wishbone, etc.)&lt;br /&gt;
* supprimer un composant du système&lt;br /&gt;
* attribution automatique des adresses de base sur le bus Wishbone&lt;br /&gt;
* attribution automatique des numéros d&#039;interruption&lt;br /&gt;
* annulation des dernières modifications (éventuellement)&lt;br /&gt;
* sauvegarde/restauration d&#039;un fichier projet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Générateur de fichiers ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici que va se trouver la partie la plus ardue du projet &#039;&#039;&#039;Orchestra&#039;&#039;&#039;, et c&#039;est en fonction de ce que l&#039;on sera capable de proposer à l&#039;utilisateur final que se fera l&#039;adhésion au projet ou non.&lt;br /&gt;
&lt;br /&gt;
Une fois que l&#039;on aura créer son projet/système Armadeus, il faut encore pouvoir générer au minimum le fichier &#039;&#039;&#039;bitstream&#039;&#039;&#039; qui va être utiliser pour configurer le FPGA.&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici qu&#039;entre en jeu le générateur de fichiers, qui devra être capable, à l&#039;aide du fichier projet + la librairie de composant + la librairie de plateforme, de générer le fichiers suivants:&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;Intercon&#039;&#039;&#039; reliant tous les composants placés dans le système qui a été créé par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system&#039;&#039;&#039; qui va englober tout le système Wishbone tel qu&#039;il a été défini par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system_tb&#039;&#039;&#039; et un fichier &#039;&#039;&#039;.DO&#039;&#039;&#039; qui vont pouvoir être utilisés pour la simulation à partir de ModelSim&lt;br /&gt;
* un fichier &#039;&#039;&#039;system.h&#039;&#039;&#039; qui va contenir le plan mémoire du système créé&lt;br /&gt;
* un fichier &#039;&#039;&#039;tcl&#039;&#039;&#039; qui va permettre de créer entièrement et de manière automatique le projet dans l&#039;environnement &#039;&#039;&#039;Xilinx ISE&#039;&#039;&#039;, c&#039;est-à-dire:&lt;br /&gt;
** sélection du bon FPGA&lt;br /&gt;
** sélection du bon format de sortie (bitstream)&lt;br /&gt;
** saisie du pinout du FPGA (nom de chaque broche par rapport au nom du signal sur le schéma)&lt;br /&gt;
** programmation du DCM le cas échéant&lt;br /&gt;
** définition des signaux d&#039;horloge&lt;br /&gt;
** inclusion des fichiers HDL nécessaires au projet&lt;br /&gt;
** instanciation du fichier HDL &#039;&#039;&#039;sytem&#039;&#039;&#039;&lt;br /&gt;
** connexion des entrées et sorties du composant &#039;&#039;&#039;system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(remark: an include file for the operating system has to be generated, so that the drivers know the base address of the hardware-modules)&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, le travail pour &#039;&#039;&#039;Orchestra&#039;&#039;&#039; ne manque pas, reste encore la question du mode de développement ainsi que du langage et la bibliothèque graphique.&lt;br /&gt;
&lt;br /&gt;
Mais ceci est encore une autre histoire, qui pourra être débattu lorsque les premières composants système seront prêt à l&#039;emploi... Peut-être très bientôt :-)&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d&#039;interruption ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce chapitre est donné à titre informatif/propositon et ne tiens pas lieu de spécification.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Afin de simplifier la vie des programmeurs systèmes, il faut pouvoir offrir un mécanisme simple de mise en place et de gestion des demandes d&#039;interruption du FPGA.&lt;br /&gt;
&lt;br /&gt;
Pour cela, je propose la solution suivante:&lt;br /&gt;
* Mise en place d&#039;un gestionnaire d&#039;interruption générique pour le FPGA. Ce gestionnaire d&#039;interruption sera capable de lire le registre d&#039;interruption (lecture de &#039;&#039;&#039;isr_pend&#039;&#039;&#039;) et de déterminer les interruptions à traiter (via &#039;&#039;&#039;isr_mask&#039;&#039;&#039;). Il va en suite aiguiller l&#039;exécution de la routine d&#039;interruption vers les routines adéquates pour chaque bit d&#039;interruption valide. L&#039;interruption traitée sera alors acquitée (écriture vers &#039;&#039;&#039;isr_pend&#039;&#039;&#039;).&lt;br /&gt;
* Création d&#039;une routine &#039;&#039;&#039;&#039;&#039;d&#039;enregistrement de vecteur d&#039;interruption&#039;&#039;&#039;&#039;&#039;. Cette routine va permettre d&#039;ajouter une routine de traitement d&#039;interruption pour un bit d&#039;interruption donné. Pour cela il faudra lui fournir les informations suivantes (via une structure ?!?):&lt;br /&gt;
** Le numéro du bit d&#039;interruption (0 à 31)&lt;br /&gt;
** La routine de traitement d&#039;interruption pour ce driver&lt;br /&gt;
** Un paramètre additionnel à fournir à la routine de traitement d&#039;interruption (pointeur de type &#039;&#039;&#039;&#039;&#039;void *&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
** Le nom du drivers (optionnel, permet d&#039;identifier/visualiser les drivers installer éventuellement)&lt;br /&gt;
* Création d&#039;une routine de validation d&#039;une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour masquer une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour désinstaller une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine ou méthode pour visualiser tous les drivers Wishbone installés:&lt;br /&gt;
** Leur numéro&lt;br /&gt;
** Leur nom&lt;br /&gt;
** Leur état (validé/masqué)&lt;br /&gt;
** Le nombre de fois qu&#039;ils ont été appelé&lt;br /&gt;
** etc.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3296</id>
		<title>FpgaArchitecture</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3296"/>
		<updated>2008-01-06T21:55:09Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Le lien i.MX &amp;lt;=&amp;gt; FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spécifications de conception du FPGA =&lt;br /&gt;
&lt;br /&gt;
== Evolutions ==&lt;br /&gt;
&lt;br /&gt;
2006/12/29: MAJ de la partie 1.7 pour décrire plus en détail le programme d&#039;assemblage des IP (Orchestra)&lt;br /&gt;
&lt;br /&gt;
2006/12/21: MAJ en fonction des remarques de tout le monde.&lt;br /&gt;
&lt;br /&gt;
== But ==&lt;br /&gt;
&lt;br /&gt;
Cette page a été créée pour permettre à tous les membres de l&#039;association de discuter de l&#039;architecture qui va être mise en place pour le FPGA présent sur la carte APF9328.&lt;br /&gt;
&lt;br /&gt;
Cette espace doit être vu comme un espace d&#039;échange d&#039;idées. Tout le monde est convié à y participer. Il est préférable d&#039;avoir quelques connaissances en électronique et sur les langages HDL (VHDL ou Verilog), mais ce n&#039;est pas une obligation.&lt;br /&gt;
&lt;br /&gt;
Bonne lecture et merci pour votre participation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les grandes lignes ==&lt;br /&gt;
&lt;br /&gt;
Le FPGA de la carte APF9328 est là pour offrir le maximum de souplesse au projet &#039;&#039;&#039;Armadeus&#039;&#039;&#039; et permettre d&#039;implanter des fonctionnalités coté &#039;&#039;&#039;matériel&#039;&#039;&#039; qui seraient trop pénalisantes ou impossibles à implanter coté &#039;&#039;&#039;logiciel&#039;&#039;&#039;. Bien entendu, pour que cela soit exploitable, il faut également disposer d&#039;un lien entre le FPGA et le processeur i.MX.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser cela, il faut mettre en place un bus de communication entre le FPGA et l&#039;i.MX. Ce bus de communication va permettre le pilotage des fonctionnalités qui seront implantées dans le FPGA. Bref, il faut recréer à l&#039;intérieur du FPGA un bus tel qu&#039;il existe entre l&#039;i.MX et les différents composants de la carte (RAM, Flash, USB, Ethernet, etc.).&lt;br /&gt;
&lt;br /&gt;
Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site &#039;&#039;&#039;[http://www.opencores.com www.opencores.com]&#039;&#039;&#039; plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Le bus Wishbone ==&lt;br /&gt;
&lt;br /&gt;
(add list of the signals of the wishbone bus here)&lt;br /&gt;
&lt;br /&gt;
(add references to documentation)&lt;br /&gt;
&lt;br /&gt;
La spécification Wishbone décrit un certain nombre de composants de base:&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;maitres&#039;&#039;&#039;, ces interfaces sont implantés dans des composants qui seront alors capable d&#039;initier les transferts sur le bus Wishbone&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;esclaves&#039;&#039;&#039;, ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts&lt;br /&gt;
* Un composant &#039;&#039;&#039;syscon&#039;&#039;&#039;, ce composant va générer le signal d&#039;horloge qui sera utilisé par tous les composants/interfaces du bus ainsi que le signal de RESET synchrone.&lt;br /&gt;
* Un macro composant &#039;&#039;&#039;intercon&#039;&#039;&#039;, ce composant va gérer la connexion de toutes les interfaces maitres et esclaves qui composent le bus interne. Il prend en charge :&lt;br /&gt;
** Le décodage/transcodage d&#039;adresse (génération des signaux A0 à A3 selon le mode d&#039;adressage 8/16/32/64 bits)&lt;br /&gt;
** le routage du bus de données entre les différentes interfaces maitres et esclaves (conversion big endian/little endian, etc)&lt;br /&gt;
** le routage/génération des signaux de contrôle du bus (Read, Write, Chip Select, Output Enable, ACK, etc.)&lt;br /&gt;
* Un composant &#039;&#039;&#039;arbitre&#039;&#039;&#039;, ce composant va permettre de partager l&#039;accès au bus ou à un composant de type esclave qui est partagé par plusieurs composants de type maitre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les spécifications du bus Wishbone permettent de créer différents types de bus:&lt;br /&gt;
* &#039;&#039;&#039;Point to Point&#039;&#039;&#039;: C&#039;est le type de bus le plus simple possible, un composant avec une interface type maitre connecté à un composant avec une interface de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Data Flow&#039;&#039;&#039;: C&#039;est un bus en cascade, à un bout on trouve un composant avec une interface de type maître et à l&#039;autre bout un composant avec une interface de type esclave. Entre les deux composant se trouve une chaine d&#039;un ou plusieurs composants avec une interface de type maitre et de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Shared&#039;&#039;&#039;: C&#039;est un bus sur lequel plusieurs composants sont connectés dessus. Tous les composants se partagent ce bus. Si plusieurs &#039;&#039;maitres&#039;&#039; sont connectés sur ce bus, un seul pourra initier un transfert à un instant donné.&lt;br /&gt;
* &#039;&#039;&#039;CrossBar&#039;&#039;&#039;: C&#039;est également un bus de type partagé, par contre dans se cas, on dispose de plusieurs bus. Chaque maitre utilise sont propre bus pour communiquer avec ces esclaves. On peut donc avoir plusieurs transferts en simultané. Le seul cas de blocage/arbitrage est le transfert de plusieurs maitre avec le même esclave.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il existe également un certain nombre de mécanismes dans la spécification Wishbone pour permettre d&#039;optimiser les temps de transferts sur le bus. Ces optimisations sont de plusieurs nature:&lt;br /&gt;
* utilisation de signaux &#039;&#039;&#039;ACK&#039;&#039;&#039;, &#039;&#039;&#039;ERR&#039;&#039;&#039; et &#039;&#039;&#039;RTY&#039;&#039;&#039; pour signaler la fin de transfert&lt;br /&gt;
* les &#039;&#039;&#039;Registered Feedback Bus Cycles&#039;&#039;&#039;, qui permettent de gagner un cycle d&#039;horloge pour des transferts consécutifs&lt;br /&gt;
* les transferts en mode &#039;&#039;&#039;Burst&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Le lien i.MX &amp;lt;=&amp;gt; FPGA ==&lt;br /&gt;
&lt;br /&gt;
(add timing graph here)&lt;br /&gt;
&lt;br /&gt;
La communication entre l&#039;i.MX et le FPGA passe par les signaux suivants (à vérifier):&lt;br /&gt;
* des signaux de contrôle: &amp;lt;strike&amp;gt;RW_n&amp;lt;/strike&amp;gt;, OE_n, EB_n[3..2] et CS1_n&lt;br /&gt;
* le bus de données sur 16 bits (D[15..0])&lt;br /&gt;
* le bus d&#039;adresses sur 12 bits (A[12..1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA qui implémenterons une interface wishbone de type esclave.&lt;br /&gt;
&lt;br /&gt;
Etant donné les erratas du composant i.MX  concernant le signal DTACK, il n&#039;est pas possible d&#039;implanter une interface Wishbone maitre &#039;&#039;classique&#039;&#039;. Ceci entraine les limitations suivantes:&lt;br /&gt;
* Pas possible d&#039;utiliser le signal &#039;&#039;&#039;ACK&#039;&#039;&#039; Wishbone pour terminer le transfert entre FPGA et i.MX.&lt;br /&gt;
* Pas possible de mettre en place des optimisations du temps de transfert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour contrer ce problème, il faudra s&#039;assurer que toutes les interfaces esclaves qui seront connectées à l&#039;interface maitre du composant Wishbone i.MX répondent dans un temps fixe donné.&amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le bus Wishbone est un bus entièrement synchrone, le temps minimal d&#039;un transfert est de 2 cycles de l&#039;horloge Wishbone. Il faut ajouter à cela, un cycle pour la synchronisation des signaux du bus i.MX. Cela nous fait donc un minimum de 3 cycles Wishbone pour un transfert entre le FPGA et l&#039;i.MX.&lt;br /&gt;
&lt;br /&gt;
Etant donné les performances des FPGA actuels, on peut tabler sur une fréquence de fonctionnement d&#039;au moins 100MHz pour le bus Wishbone. Cela nous donne donc un taux de transfert approximatif de 66 Moctets/sec (100MHz * 16bits / 3).&lt;br /&gt;
&lt;br /&gt;
== La composition du système Wishbone ==&lt;br /&gt;
&lt;br /&gt;
[[Image:FPGA_Armadeus.png]]&lt;br /&gt;
&lt;br /&gt;
Le système Wishbone qui sera implanté dans le FPGA se compose des éléments suivants:&lt;br /&gt;
* &#039;&#039;&#039;i.MX Wrapper&#039;&#039;&#039;: L&#039;interface i.MX vers le bus Wishbone&lt;br /&gt;
* &#039;&#039;&#039;Syscon&#039;&#039;&#039;: Ce composant va gérer les signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; (généré par une PLL ou directement issu de l&#039;i.MX) et &#039;&#039;&#039;RESET&#039;&#039;&#039; (synchrone).&lt;br /&gt;
* &#039;&#039;&#039;Intercon&#039;&#039;&#039;: Ce composant devra être généré automatiquement par une moulinette, il va faire le lien entre tous les composants faisant parti du &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Gestionnaire d&#039;interruption&#039;&#039;&#039;: Ce composant est un &#039;&#039;&#039;esclave wishbone&#039;&#039;&#039; et va centraliser toutes les demandes d&#039;interruption et les remonter vers l&#039;i.MX.&lt;br /&gt;
* &#039;&#039;&#039;Esclaves whisbone&#039;&#039;&#039;: Ceci représentent tous les autres composants avec une interface wishbone esclave qui sont accessibles via le wrapper i.MX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sur le diagramme, il manque un certain nombre de choses:&lt;br /&gt;
* Les signaux &#039;&#039;non wishbone&#039;&#039; en entrée ou en sortie sur les &#039;&#039;&#039;esclaves wishbone&#039;&#039;&#039;&lt;br /&gt;
* Le macro composant &#039;&#039;&#039;système wishbone&#039;&#039;&#039;. Ce macro composant est celui qui sera ensuite instancié dans le design du FPGA. Sur ce composant ne seront visibles que les signaux &#039;&#039;externes&#039;&#039; au système:&lt;br /&gt;
** Les signaux issus de l&#039;i.MX&lt;br /&gt;
** &amp;lt;strike&amp;gt;Le signal RESET (en entrée) qui sera synchronisé sur l&#039;horloge système&amp;lt;/strike&amp;gt; Le signal RESET synchrone du bus Wishbone sera directement généré par le composant syscon à l&#039;aide d&#039;une simple machine d&#039;état.&lt;br /&gt;
** Le signal CLK (en entrée) qui sera l&#039;horloge utilisée pour la génération des signaux Wishbone&lt;br /&gt;
** Le signal IRQ (en sortie) qui sera utilisé pour remonter les demandes d&#039;interruption vers l&#039;i.MX&lt;br /&gt;
** Les signaux d&#039;entrée et de sortie spécifiques aux autres composants connectés sur le bus Wishbone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;intérêt de créer le composant &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;, est que cela simplifie la vision dans l&#039;outil conception du FPGA. Il ne suffit plus alors qu&#039;à relier les signaux sur les broches correspondantes du FPGA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i.MX Wrapper ===&lt;br /&gt;
&lt;br /&gt;
Ce composant est le point d&#039;accès au bus Wishbone pour l&#039;i.MX et sera le seul à disposer d&#039;une interface Wishbone maitre.&lt;br /&gt;
&lt;br /&gt;
Les fonctions de ce composants sont:&lt;br /&gt;
* synchronisation des signaux issus de l&#039;i.MX. Ceci est primordial pour assurer la stabilité de tout le système Wishbone. De plus, le bus de sortie étant asynchrone (l&#039;horloge de génération des signaux n&#039;est pas véhiculée), la resynchronisation des signaux par rapport à l&#039;horloge du bus s&#039;impose.&lt;br /&gt;
* gestion du bus de données en 3 états.&lt;br /&gt;
* conversion des signaux de contrôle du bus i.MX en signaux Wishbone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syscom ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est le composant le plus simple du système &amp;lt;strike&amp;gt;, il ne fait que synchroniser le signal RESET en entrée avec le signal d&#039;horloge du système&amp;lt;/strike&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il va être en charge de la génération du signal RESET synchrone pour le bus Wishbone.&lt;br /&gt;
&lt;br /&gt;
Le signal d&#039;horloge en entrée du composant &#039;&#039;&#039;syscon&#039;&#039;&#039; sera celui utilisé pour le fonctionnement du bus Wishbone. La fréquence du signal d&#039;horloge devra être assez élevée pour permettre le traitement des signaux issus de l&#039;i.MX. Cela va dépendre de la configuration du chip select utilisé (CS1).&lt;br /&gt;
&lt;br /&gt;
La source du signal d&#039;horloge reste encore à définir, les choix possibles sont:&lt;br /&gt;
* directement issu de l&#039;i.MX&lt;br /&gt;
* utilisation d&#039;un DCM du Spartan 3&lt;br /&gt;
&lt;br /&gt;
Le choix définitif dépendra principalement des essais &#039;&#039;grandeur nature&#039;&#039; lors de la génération des premiers systèmes whisbone durant la phase de mise en place des composants de base.&lt;br /&gt;
&lt;br /&gt;
=== Intercon ===&lt;br /&gt;
&lt;br /&gt;
Ce composant a la particularité qu&#039;il sera créé automatiquement par un outil (script ou programme). &#039;&#039;&#039;Intercom&#039;&#039;&#039; a comme fonctionnalités:&lt;br /&gt;
* Le décodage d&#039;adresse pour la sélection des différents esclaves du système&lt;br /&gt;
* Le routage des bus d&#039;adresses et de données vers les différents esclaves&lt;br /&gt;
* La génération des signaux de contrôle pour les différents esclaves.&lt;br /&gt;
&lt;br /&gt;
Etant donné les limitations induites par les erratas de l&#039;i.MX, le composant &#039;&#039;&#039;intercom&#039;&#039;&#039; remplira les fonctionnalités suivantes:&lt;br /&gt;
* le bus de données est figé sur 16 bits&lt;br /&gt;
* les cycles de lecture et d&#039;écriture sont de longueur fixe (à priori 3 cycles d&#039;horloge &#039;&#039;&#039;à valider&#039;&#039;&#039; lors des essais du système de base)&lt;br /&gt;
* une interruption est générée en cas de dépassement du temps de cycle d&#039;écriture ou de lecture&lt;br /&gt;
* le bus sera de type &#039;&#039;&#039;shared&#039;&#039;&#039; avec un seul maitre (le Wrapper i.MX).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Les composants esclaves ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Suite aux divers discussions issues de ce chapitre. L&#039;organisation et la présences des fichiers dans les répertoires &#039;&#039;&#039;doc&#039;&#039;&#039; et &#039;&#039;&#039;HAL&#039;&#039;&#039; n&#039;est pas encore établie. Ce chapitre sera encore à retravailler.&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;une IP puisse être facilement inclue dans le système, il faut une certaine organisation. Sinon, à moyen ou à long terme cette IP est morte parce qu&#039;elle sera difficilement exploitable et encore plus difficilement maintenable.&lt;br /&gt;
&lt;br /&gt;
Ce sont des notions qui ne sont pas simples à prendre en considération lors du développement d&#039;un nouveau projet, mais lorsque l&#039;on doit se replonger dans un travail fait par quelqu&#039;un d&#039;autre ou un projet qu&#039;on a laissé en sommeil pendant quelque temps, on est content d&#039;avoir quelque chose à quoi se raccrocher.&lt;br /&gt;
&lt;br /&gt;
Pour développer efficacement, il faut assurer une organisation logique, figée et compréhensible, et le plus simple dans ce genre de cas est de se baser sur la notion de répertoire. Voici les répertoires qui doivent être utilisés par une IP:&lt;br /&gt;
* &#039;&#039;&#039;doc&#039;&#039;&#039;: Ce répertoire va contenir toute la documentation nécessaire à l&#039;exploitation de l&#039;IP. On y trouvera une notice (&#039;&#039;&#039;readme.txt&#039;&#039;&#039;), un fichier de suivi de modification (&#039;&#039;&#039;ChangeLog.txt&#039;&#039;&#039;), un fichier contenant les évolutions futures prévues (&#039;&#039;&#039;todo.txt&#039;&#039;&#039;) ainsi que tout autre fichier estimé utile par le(s) créateur(s) de l&#039;IP.&lt;br /&gt;
* &#039;&#039;&#039;hdl&#039;&#039;&#039;: Ce répertoire va contenir tous les fichiers VHDL (ou Verilog) qui auront été développés spécifiquement pour cette IP.&lt;br /&gt;
* &#039;&#039;&#039;inc&#039;&#039;&#039;: Ce répertoire va contenir un fichier d&#039;en-tête ANSI C contenant l&#039;adresse de tous les registres interne de l&#039;IP pour permettre de créer simplement un programme en langage C permettant de contrôler l&#039;IP. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;HAL&#039;&#039;&#039;: Ce répertoire va contenir un drivers ou un exemple de logiciel de base permettant l&#039;utilisation de l&#039;IP par un microprocesseur/contrôleur. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire d&#039;interruption ===&lt;br /&gt;
&lt;br /&gt;
Ce composant esclave est le premier qui sera créé spécifiquement pour le système. Il sera capable de:&lt;br /&gt;
* prendre en compte jusqu&#039;à 16 sources d&#039;interruptions différentes&lt;br /&gt;
* réaliser l&#039;acquittement de chaque interruption individuellement&lt;br /&gt;
* masquer/autoriser chaque interruption individuellement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le composant disposera des registres suivants:&lt;br /&gt;
* &#039;&#039;&#039;isr_mask&#039;&#039;&#039;: registre d&#039;autorisation des interruptions. Chaque bit correspond à une interruption (bit0 =&amp;gt; IRQ0, bit1 =&amp;gt; IRQ1, etc.). Ce registre sera accessible en lecture et en écriture.&lt;br /&gt;
* &#039;&#039;&#039;isr_pend&#039;&#039;&#039;: ce registre est à double emploi&lt;br /&gt;
** &#039;&#039;&#039;en lecture&#039;&#039;&#039;: Les interruptions en attente de traitement&lt;br /&gt;
** &#039;&#039;&#039;en écriture&#039;&#039;&#039;: Acquittement des interruptions. Chaque bit à 1 va acquitter l&#039;interruption correspondante.&lt;br /&gt;
&lt;br /&gt;
== Le script / programme d&#039;assemblage des IP ==&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant parler du coeur du système, du moins de la partie la plus visible de l&#039;iceberg ;-)&lt;br /&gt;
&lt;br /&gt;
La première des priorités, sera de trouver un nom pour cet outil qui reste un peu dans l&#039;esprit du projet. Voici quelques propositions, à vous de compléter ou de voter pour un nom ou plusieurs noms:&lt;br /&gt;
* Concerto&lt;br /&gt;
* Orchestra&lt;br /&gt;
&lt;br /&gt;
D&#039;après les derniers sondage, &#039;&#039;&#039;Orchestra&#039;&#039;&#039; serait finalement le nom retenu pour ce logiciel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Principe et fonctionnement ===&lt;br /&gt;
&lt;br /&gt;
Afin de de rendre tout ce système utilisable par le plus grand nombre, il faut être capable de proposer des outils qui vont simplifier la vie de l&#039;utilisateur final ainsi que de l&#039;intégrateur.&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faudra créer un outil soit sous forme de script(s), soit sous forme de programme(s) qui va permettre de réaliser les tâches suivantes:&lt;br /&gt;
* Création/gestion d&#039;une bibliothèque de composants &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;une liste de &#039;&#039;&#039;hardware Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Edition d&#039;un &#039;&#039;&#039;système Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;un projet&lt;br /&gt;
* Génération automatique du composant &#039;&#039;&#039;system&#039;&#039;&#039; qui sera implanté dans le FPGA&lt;br /&gt;
* Génération automatique d&#039;un banc de tests pour permettre la validation par ModelSim (ou autre logiciel de simulation HDL)&lt;br /&gt;
* Génération d&#039;un fichier &#039;&#039;&#039;mapping mémoire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La bibliothèque de composants ===&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un composant, c&#039;est-à-dire une IP, soit exploitable par le système, il faut passer par une phase d&#039;intégration qui va permettre de décrire ce composant:&lt;br /&gt;
* Nom de l&#039;IP&lt;br /&gt;
* Description&lt;br /&gt;
* Version&lt;br /&gt;
* Identification des fichiers HDL utilisés (VHDL ou Verilog)&lt;br /&gt;
* Identification du fichier &#039;&#039;&#039;Top&#039;&#039;&#039; (le point d&#039;entrée de l&#039;IP)&lt;br /&gt;
* Identification des paramètres &#039;&#039;&#039;&#039;&#039;GENERIC&#039;&#039;&#039;&#039;&#039; (dans le cas d&#039;une IP en VHDL):&lt;br /&gt;
** Type de paramètre (entier, std_logic, etc)&lt;br /&gt;
** Valeur par défaut&lt;br /&gt;
** Valeurs ou plages de valeurs autorisées&lt;br /&gt;
** Description du paramètre&lt;br /&gt;
* Identification des signaux Wishbone utilisés par le composant&lt;br /&gt;
* Identification du type (maitre ou esclave) et du nombre d&#039;interfaces Wishbone utilisés par ce composant&lt;br /&gt;
* Identification des registres internes&lt;br /&gt;
** Adresse (Offset par rapport à l&#039;adresse de base)&lt;br /&gt;
** Taille (8 ou 16 bits)&lt;br /&gt;
** Nom et/ou description&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront alors sauvegardées dans un fichier, de préférence dans un format compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur de texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chaque composant identifié par le logiciel se trouvera dans un sous-répertoire (ou dans un fichier archive ?!?) placé dans le répertoire &#039;&#039;&#039;Armadeus Components&#039;&#039;&#039;, chaque sous-répertoire (ou archive) de composant contiendra les données suivantes:&lt;br /&gt;
* Le fichier de description du composant &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HDL&#039;&#039;&#039; avec les fichiers VHDL/Verilog de l&#039;IP&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HAL&#039;&#039;&#039; avec les fichiers d&#039;un drivers de base (pour Linux ou &#039;&#039;générique&#039;&#039; ?!?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de composants Armadeus doit être capable de réaliser les opérations suivantes:&lt;br /&gt;
* Importer un composant ou une liste de composants&lt;br /&gt;
* Exporter un composant ou une liste de composants&lt;br /&gt;
* Gérer des versions de composants (à voir si cette fonctionnalité est importante/utile)&lt;br /&gt;
* Permettre l&#039;ajout/création de composants&lt;br /&gt;
* Permettre de supprimer un composant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de plateformes ===&lt;br /&gt;
&lt;br /&gt;
Il faut avoir confiance dans l&#039;avenir, pour l&#039;instant nous ne disposons que d&#039;une seul plateforme de travail, mais ce n&#039;est qu&#039;un début et très certainement d&#039;autres cartes à base de l&#039;i.MX et d&#039;un FPGA vont voir le jour.&lt;br /&gt;
&lt;br /&gt;
Il faut donc prévoir d&#039;ores et déjà cette possibilité et proposer un outil qui va permettre de définir une plateforme. Chaque descripteur de plateforme devra fournir les informations suivantes:&lt;br /&gt;
* Type de FPGA&lt;br /&gt;
* Emplacement (niveau FPGA, c&#039;est-à-dire la broche utilisée), type (sortie i.MX, oscillateur ou quartz) et fréquence (ou plage de fréquence ?!?) des horloges&lt;br /&gt;
* Emplacements/broche du FPGA utilisées ainsi que leur fonctionnalité (signal Wishbone, comme d&#039;un composant externe, signal d&#039;interruption, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront utilisées par la suite lors de la création d&#039;un projet &#039;&#039;&#039;Orchestra/Armadeus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de projet ===&lt;br /&gt;
&lt;br /&gt;
Le rôle du gestionnaire de projet est de permettre de créer, reprendre ou modifier le plus simplement possible une configuration du FPGA pour une carte donnée. Cette configuration sera appelée par la suite un &#039;&#039;&#039;système&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tout &#039;&#039;&#039;système&#039;&#039;&#039; est entièrement décrit par un fichier projet qui contiendra les éléments suivants:&lt;br /&gt;
* Le nom du système (éventuellement le même que le nom du projet ?!?)&lt;br /&gt;
* Une description du système&lt;br /&gt;
* Le type de plateforme utilisé pour ce système&lt;br /&gt;
* La source de la fréquence d&#039;horloge du bus Wishbone (broche du FPGA ou DLL/DCM). On pourra éventuellement imaginer la création d&#039;un &#039;&#039;Wizard&#039;&#039; pour simplifier la configuration du DCM.&lt;br /&gt;
* La liste de tous les composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; inclus dans le système, avec pour chacun de ces composants, les détails suivantes:&lt;br /&gt;
** La référence du composant (par rapport à la bibliothèque de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;)&lt;br /&gt;
** Le nom de l&#039;instance du composant (e.g. UART1, PWM_MOTOR, etc.)&lt;br /&gt;
** La connexion des entrées/sorties (vers une broche du FPGA, non utilisé ou relié &#039;&#039;&#039;manuellement&#039;&#039;&#039;)&lt;br /&gt;
** L&#039;adresse du base de chacune de ses interfaces esclaves connectées au bus Wishbone&lt;br /&gt;
** La valeur de chaque paramètre &#039;&#039;&#039;GENERIC&#039;&#039;&#039; du composant&lt;br /&gt;
** L&#039;horloge utilisée (pour l&#039;instant ce sera toujours celle du bus Wishbone mais peut-être que plus tard ce ne sera plus forcément le cas ;-) )&lt;br /&gt;
** Le numéro d&#039;interruption attribué au composant, s&#039;il est capable de généré une demande d&#039;interruption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme pour le fichier de description d&#039;un composant Armadeus, le fichier projet devra être dans un format texte compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le fichier projet est le coeur du système et, à partir de celui-ci ainsi que de la librairie de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; + la librairie de plateforme, toute la partie liée au FPGA doit pouvoir être recrée. Bref c&#039;est le seul fichier dont l&#039;utilisateur final aura à ce soucier (sauvegarde, archivage, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lors de la création d&#039;un nouveau projet, l&#039;utilisateur devra fournir les éléments de base suivants:&lt;br /&gt;
* Le nom du système&lt;br /&gt;
* Une description&lt;br /&gt;
* Le type de plateforme utilisé&lt;br /&gt;
* La source de l&#039;horloge Wishbone (broche du FPGA ou DCM) avec éventuellement un &#039;&#039;wizard&#039;&#039; pour la saisie des informations relatives à la programmation du DCM.&lt;br /&gt;
* La fréquence du bus Wishbone (éventuellement obtenue automatiquement à partir de la sélection de la source de l&#039;horloge)&lt;br /&gt;
* Le nombre de sources d&#039;interruptions autorisées ainsi que l&#039;emplacement en mémoire des registres du gestionnaire d&#039;interruption (par défaut à l&#039;adresse 0x0000).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que le projet aura été créer, les composants suivants seront ajouté automatiquement au système:&lt;br /&gt;
* Un &#039;&#039;&#039;Wrapper i.MX&#039;&#039;&#039; pour faire le lien avec l&#039;i.MX&lt;br /&gt;
* Un &#039;&#039;&#039;syscon&#039;&#039;&#039; pour la générations des signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; et &#039;&#039;&#039;RESET&#039;&#039;&#039; du bus Wishbone&lt;br /&gt;
* Un &#039;&#039;&#039;Gestionnaire d&#039;interruptions&#039;&#039;&#039; si le système doit être capable de remonter des demandes d&#039;interruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite, l&#039;utilisateur pourra modifier le système de base à l&#039;aide des opérations suivantes:&lt;br /&gt;
* choisir dans la librairie un composant pour l&#039;ajouter au système&lt;br /&gt;
* modifier les paramètres d&#039;un composant du système&lt;br /&gt;
* modifier les caractéristiques du projet (nom, fréquence du bus Wishbone, etc.)&lt;br /&gt;
* supprimer un composant du système&lt;br /&gt;
* attribution automatique des adresses de base sur le bus Wishbone&lt;br /&gt;
* attribution automatique des numéros d&#039;interruption&lt;br /&gt;
* annulation des dernières modifications (éventuellement)&lt;br /&gt;
* sauvegarde/restauration d&#039;un fichier projet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Générateur de fichiers ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici que va se trouver la partie la plus ardue du projet &#039;&#039;&#039;Orchestra&#039;&#039;&#039;, et c&#039;est en fonction de ce que l&#039;on sera capable de proposer à l&#039;utilisateur final que se fera l&#039;adhésion au projet ou non.&lt;br /&gt;
&lt;br /&gt;
Une fois que l&#039;on aura créer son projet/système Armadeus, il faut encore pouvoir générer au minimum le fichier &#039;&#039;&#039;bitstream&#039;&#039;&#039; qui va être utiliser pour configurer le FPGA.&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici qu&#039;entre en jeu le générateur de fichiers, qui devra être capable, à l&#039;aide du fichier projet + la librairie de composant + la librairie de plateforme, de générer le fichiers suivants:&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;Intercon&#039;&#039;&#039; reliant tous les composants placés dans le système qui a été créé par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system&#039;&#039;&#039; qui va englober tout le système Wishbone tel qu&#039;il a été défini par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system_tb&#039;&#039;&#039; et un fichier &#039;&#039;&#039;.DO&#039;&#039;&#039; qui vont pouvoir être utilisés pour la simulation à partir de ModelSim&lt;br /&gt;
* un fichier &#039;&#039;&#039;system.h&#039;&#039;&#039; qui va contenir le plan mémoire du système créé&lt;br /&gt;
* un fichier &#039;&#039;&#039;tcl&#039;&#039;&#039; qui va permettre de créer entièrement et de manière automatique le projet dans l&#039;environnement &#039;&#039;&#039;Xilinx ISE&#039;&#039;&#039;, c&#039;est-à-dire:&lt;br /&gt;
** sélection du bon FPGA&lt;br /&gt;
** sélection du bon format de sortie (bitstream)&lt;br /&gt;
** saisie du pinout du FPGA (nom de chaque broche par rapport au nom du signal sur le schéma)&lt;br /&gt;
** programmation du DCM le cas échéant&lt;br /&gt;
** définition des signaux d&#039;horloge&lt;br /&gt;
** inclusion des fichiers HDL nécessaires au projet&lt;br /&gt;
** instanciation du fichier HDL &#039;&#039;&#039;sytem&#039;&#039;&#039;&lt;br /&gt;
** connexion des entrées et sorties du composant &#039;&#039;&#039;system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, le travail pour &#039;&#039;&#039;Orchestra&#039;&#039;&#039; ne manque pas, reste encore la question du mode de développement ainsi que du langage et la bibliothèque graphique.&lt;br /&gt;
&lt;br /&gt;
Mais ceci est encore une autre histoire, qui pourra être débattu lorsque les premières composants système seront prêt à l&#039;emploi... Peut-être très bientôt :-)&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d&#039;interruption ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce chapitre est donné à titre informatif/propositon et ne tiens pas lieu de spécification.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Afin de simplifier la vie des programmeurs systèmes, il faut pouvoir offrir un mécanisme simple de mise en place et de gestion des demandes d&#039;interruption du FPGA.&lt;br /&gt;
&lt;br /&gt;
Pour cela, je propose la solution suivante:&lt;br /&gt;
* Mise en place d&#039;un gestionnaire d&#039;interruption générique pour le FPGA. Ce gestionnaire d&#039;interruption sera capable de lire le registre d&#039;interruption (lecture de &#039;&#039;&#039;isr_pend&#039;&#039;&#039;) et de déterminer les interruptions à traiter (via &#039;&#039;&#039;isr_mask&#039;&#039;&#039;). Il va en suite aiguiller l&#039;exécution de la routine d&#039;interruption vers les routines adéquates pour chaque bit d&#039;interruption valide. L&#039;interruption traitée sera alors acquitée (écriture vers &#039;&#039;&#039;isr_pend&#039;&#039;&#039;).&lt;br /&gt;
* Création d&#039;une routine &#039;&#039;&#039;&#039;&#039;d&#039;enregistrement de vecteur d&#039;interruption&#039;&#039;&#039;&#039;&#039;. Cette routine va permettre d&#039;ajouter une routine de traitement d&#039;interruption pour un bit d&#039;interruption donné. Pour cela il faudra lui fournir les informations suivantes (via une structure ?!?):&lt;br /&gt;
** Le numéro du bit d&#039;interruption (0 à 31)&lt;br /&gt;
** La routine de traitement d&#039;interruption pour ce driver&lt;br /&gt;
** Un paramètre additionnel à fournir à la routine de traitement d&#039;interruption (pointeur de type &#039;&#039;&#039;&#039;&#039;void *&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
** Le nom du drivers (optionnel, permet d&#039;identifier/visualiser les drivers installer éventuellement)&lt;br /&gt;
* Création d&#039;une routine de validation d&#039;une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour masquer une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour désinstaller une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine ou méthode pour visualiser tous les drivers Wishbone installés:&lt;br /&gt;
** Leur numéro&lt;br /&gt;
** Leur nom&lt;br /&gt;
** Leur état (validé/masqué)&lt;br /&gt;
** Le nombre de fois qu&#039;ils ont été appelé&lt;br /&gt;
** etc.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3295</id>
		<title>FpgaArchitecture</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FpgaArchitecture&amp;diff=3295"/>
		<updated>2008-01-06T21:54:13Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Le bus Wishbone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spécifications de conception du FPGA =&lt;br /&gt;
&lt;br /&gt;
== Evolutions ==&lt;br /&gt;
&lt;br /&gt;
2006/12/29: MAJ de la partie 1.7 pour décrire plus en détail le programme d&#039;assemblage des IP (Orchestra)&lt;br /&gt;
&lt;br /&gt;
2006/12/21: MAJ en fonction des remarques de tout le monde.&lt;br /&gt;
&lt;br /&gt;
== But ==&lt;br /&gt;
&lt;br /&gt;
Cette page a été créée pour permettre à tous les membres de l&#039;association de discuter de l&#039;architecture qui va être mise en place pour le FPGA présent sur la carte APF9328.&lt;br /&gt;
&lt;br /&gt;
Cette espace doit être vu comme un espace d&#039;échange d&#039;idées. Tout le monde est convié à y participer. Il est préférable d&#039;avoir quelques connaissances en électronique et sur les langages HDL (VHDL ou Verilog), mais ce n&#039;est pas une obligation.&lt;br /&gt;
&lt;br /&gt;
Bonne lecture et merci pour votre participation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les grandes lignes ==&lt;br /&gt;
&lt;br /&gt;
Le FPGA de la carte APF9328 est là pour offrir le maximum de souplesse au projet &#039;&#039;&#039;Armadeus&#039;&#039;&#039; et permettre d&#039;implanter des fonctionnalités coté &#039;&#039;&#039;matériel&#039;&#039;&#039; qui seraient trop pénalisantes ou impossibles à implanter coté &#039;&#039;&#039;logiciel&#039;&#039;&#039;. Bien entendu, pour que cela soit exploitable, il faut également disposer d&#039;un lien entre le FPGA et le processeur i.MX.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser cela, il faut mettre en place un bus de communication entre le FPGA et l&#039;i.MX. Ce bus de communication va permettre le pilotage des fonctionnalités qui seront implantées dans le FPGA. Bref, il faut recréer à l&#039;intérieur du FPGA un bus tel qu&#039;il existe entre l&#039;i.MX et les différents composants de la carte (RAM, Flash, USB, Ethernet, etc.).&lt;br /&gt;
&lt;br /&gt;
Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site &#039;&#039;&#039;[http://www.opencores.com www.opencores.com]&#039;&#039;&#039; plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Le bus Wishbone ==&lt;br /&gt;
&lt;br /&gt;
(add list of the signals of the wishbone bus here)&lt;br /&gt;
&lt;br /&gt;
(add references to documentation)&lt;br /&gt;
&lt;br /&gt;
La spécification Wishbone décrit un certain nombre de composants de base:&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;maitres&#039;&#039;&#039;, ces interfaces sont implantés dans des composants qui seront alors capable d&#039;initier les transferts sur le bus Wishbone&lt;br /&gt;
* Des interfaces &#039;&#039;&#039;esclaves&#039;&#039;&#039;, ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts&lt;br /&gt;
* Un composant &#039;&#039;&#039;syscon&#039;&#039;&#039;, ce composant va générer le signal d&#039;horloge qui sera utilisé par tous les composants/interfaces du bus ainsi que le signal de RESET synchrone.&lt;br /&gt;
* Un macro composant &#039;&#039;&#039;intercon&#039;&#039;&#039;, ce composant va gérer la connexion de toutes les interfaces maitres et esclaves qui composent le bus interne. Il prend en charge :&lt;br /&gt;
** Le décodage/transcodage d&#039;adresse (génération des signaux A0 à A3 selon le mode d&#039;adressage 8/16/32/64 bits)&lt;br /&gt;
** le routage du bus de données entre les différentes interfaces maitres et esclaves (conversion big endian/little endian, etc)&lt;br /&gt;
** le routage/génération des signaux de contrôle du bus (Read, Write, Chip Select, Output Enable, ACK, etc.)&lt;br /&gt;
* Un composant &#039;&#039;&#039;arbitre&#039;&#039;&#039;, ce composant va permettre de partager l&#039;accès au bus ou à un composant de type esclave qui est partagé par plusieurs composants de type maitre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les spécifications du bus Wishbone permettent de créer différents types de bus:&lt;br /&gt;
* &#039;&#039;&#039;Point to Point&#039;&#039;&#039;: C&#039;est le type de bus le plus simple possible, un composant avec une interface type maitre connecté à un composant avec une interface de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Data Flow&#039;&#039;&#039;: C&#039;est un bus en cascade, à un bout on trouve un composant avec une interface de type maître et à l&#039;autre bout un composant avec une interface de type esclave. Entre les deux composant se trouve une chaine d&#039;un ou plusieurs composants avec une interface de type maitre et de type esclave.&lt;br /&gt;
* &#039;&#039;&#039;Shared&#039;&#039;&#039;: C&#039;est un bus sur lequel plusieurs composants sont connectés dessus. Tous les composants se partagent ce bus. Si plusieurs &#039;&#039;maitres&#039;&#039; sont connectés sur ce bus, un seul pourra initier un transfert à un instant donné.&lt;br /&gt;
* &#039;&#039;&#039;CrossBar&#039;&#039;&#039;: C&#039;est également un bus de type partagé, par contre dans se cas, on dispose de plusieurs bus. Chaque maitre utilise sont propre bus pour communiquer avec ces esclaves. On peut donc avoir plusieurs transferts en simultané. Le seul cas de blocage/arbitrage est le transfert de plusieurs maitre avec le même esclave.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il existe également un certain nombre de mécanismes dans la spécification Wishbone pour permettre d&#039;optimiser les temps de transferts sur le bus. Ces optimisations sont de plusieurs nature:&lt;br /&gt;
* utilisation de signaux &#039;&#039;&#039;ACK&#039;&#039;&#039;, &#039;&#039;&#039;ERR&#039;&#039;&#039; et &#039;&#039;&#039;RTY&#039;&#039;&#039; pour signaler la fin de transfert&lt;br /&gt;
* les &#039;&#039;&#039;Registered Feedback Bus Cycles&#039;&#039;&#039;, qui permettent de gagner un cycle d&#039;horloge pour des transferts consécutifs&lt;br /&gt;
* les transferts en mode &#039;&#039;&#039;Burst&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Le lien i.MX &amp;lt;=&amp;gt; FPGA ==&lt;br /&gt;
&lt;br /&gt;
La communication entre l&#039;i.MX et le FPGA passe par les signaux suivants (à vérifier):&lt;br /&gt;
* des signaux de contrôle: &amp;lt;strike&amp;gt;RW_n&amp;lt;/strike&amp;gt;, OE_n, EB_n[3..2] et CS1_n&lt;br /&gt;
* le bus de données sur 16 bits (D[15..0])&lt;br /&gt;
* le bus d&#039;adresses sur 12 bits (A[12..1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA qui implémenterons une interface wishbone de type esclave.&lt;br /&gt;
&lt;br /&gt;
Etant donné les erratas du composant i.MX  concernant le signal DTACK, il n&#039;est pas possible d&#039;implanter une interface Wishbone maitre &#039;&#039;classique&#039;&#039;. Ceci entraine les limitations suivantes:&lt;br /&gt;
* Pas possible d&#039;utiliser le signal &#039;&#039;&#039;ACK&#039;&#039;&#039; Wishbone pour terminer le transfert entre FPGA et i.MX.&lt;br /&gt;
* Pas possible de mettre en place des optimisations du temps de transfert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour contrer ce problème, il faudra s&#039;assurer que toutes les interfaces esclaves qui seront connectées à l&#039;interface maitre du composant Wishbone i.MX répondent dans un temps fixe donné.&amp;lt;br /&amp;gt;&lt;br /&gt;
Comme le bus Wishbone est un bus entièrement synchrone, le temps minimal d&#039;un transfert est de 2 cycles de l&#039;horloge Wishbone. Il faut ajouter à cela, un cycle pour la synchronisation des signaux du bus i.MX. Cela nous fait donc un minimum de 3 cycles Wishbone pour un transfert entre le FPGA et l&#039;i.MX.&lt;br /&gt;
&lt;br /&gt;
Etant donné les performances des FPGA actuels, on peut tabler sur une fréquence de fonctionnement d&#039;au moins 100MHz pour le bus Wishbone. Cela nous donne donc un taux de transfert approximatif de 66 Moctets/sec (100MHz * 16bits / 3).&lt;br /&gt;
&lt;br /&gt;
== La composition du système Wishbone ==&lt;br /&gt;
&lt;br /&gt;
[[Image:FPGA_Armadeus.png]]&lt;br /&gt;
&lt;br /&gt;
Le système Wishbone qui sera implanté dans le FPGA se compose des éléments suivants:&lt;br /&gt;
* &#039;&#039;&#039;i.MX Wrapper&#039;&#039;&#039;: L&#039;interface i.MX vers le bus Wishbone&lt;br /&gt;
* &#039;&#039;&#039;Syscon&#039;&#039;&#039;: Ce composant va gérer les signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; (généré par une PLL ou directement issu de l&#039;i.MX) et &#039;&#039;&#039;RESET&#039;&#039;&#039; (synchrone).&lt;br /&gt;
* &#039;&#039;&#039;Intercon&#039;&#039;&#039;: Ce composant devra être généré automatiquement par une moulinette, il va faire le lien entre tous les composants faisant parti du &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Gestionnaire d&#039;interruption&#039;&#039;&#039;: Ce composant est un &#039;&#039;&#039;esclave wishbone&#039;&#039;&#039; et va centraliser toutes les demandes d&#039;interruption et les remonter vers l&#039;i.MX.&lt;br /&gt;
* &#039;&#039;&#039;Esclaves whisbone&#039;&#039;&#039;: Ceci représentent tous les autres composants avec une interface wishbone esclave qui sont accessibles via le wrapper i.MX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sur le diagramme, il manque un certain nombre de choses:&lt;br /&gt;
* Les signaux &#039;&#039;non wishbone&#039;&#039; en entrée ou en sortie sur les &#039;&#039;&#039;esclaves wishbone&#039;&#039;&#039;&lt;br /&gt;
* Le macro composant &#039;&#039;&#039;système wishbone&#039;&#039;&#039;. Ce macro composant est celui qui sera ensuite instancié dans le design du FPGA. Sur ce composant ne seront visibles que les signaux &#039;&#039;externes&#039;&#039; au système:&lt;br /&gt;
** Les signaux issus de l&#039;i.MX&lt;br /&gt;
** &amp;lt;strike&amp;gt;Le signal RESET (en entrée) qui sera synchronisé sur l&#039;horloge système&amp;lt;/strike&amp;gt; Le signal RESET synchrone du bus Wishbone sera directement généré par le composant syscon à l&#039;aide d&#039;une simple machine d&#039;état.&lt;br /&gt;
** Le signal CLK (en entrée) qui sera l&#039;horloge utilisée pour la génération des signaux Wishbone&lt;br /&gt;
** Le signal IRQ (en sortie) qui sera utilisé pour remonter les demandes d&#039;interruption vers l&#039;i.MX&lt;br /&gt;
** Les signaux d&#039;entrée et de sortie spécifiques aux autres composants connectés sur le bus Wishbone&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;intérêt de créer le composant &#039;&#039;&#039;Système Wishbone&#039;&#039;&#039;, est que cela simplifie la vision dans l&#039;outil conception du FPGA. Il ne suffit plus alors qu&#039;à relier les signaux sur les broches correspondantes du FPGA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== i.MX Wrapper ===&lt;br /&gt;
&lt;br /&gt;
Ce composant est le point d&#039;accès au bus Wishbone pour l&#039;i.MX et sera le seul à disposer d&#039;une interface Wishbone maitre.&lt;br /&gt;
&lt;br /&gt;
Les fonctions de ce composants sont:&lt;br /&gt;
* synchronisation des signaux issus de l&#039;i.MX. Ceci est primordial pour assurer la stabilité de tout le système Wishbone. De plus, le bus de sortie étant asynchrone (l&#039;horloge de génération des signaux n&#039;est pas véhiculée), la resynchronisation des signaux par rapport à l&#039;horloge du bus s&#039;impose.&lt;br /&gt;
* gestion du bus de données en 3 états.&lt;br /&gt;
* conversion des signaux de contrôle du bus i.MX en signaux Wishbone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syscom ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est le composant le plus simple du système &amp;lt;strike&amp;gt;, il ne fait que synchroniser le signal RESET en entrée avec le signal d&#039;horloge du système&amp;lt;/strike&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il va être en charge de la génération du signal RESET synchrone pour le bus Wishbone.&lt;br /&gt;
&lt;br /&gt;
Le signal d&#039;horloge en entrée du composant &#039;&#039;&#039;syscon&#039;&#039;&#039; sera celui utilisé pour le fonctionnement du bus Wishbone. La fréquence du signal d&#039;horloge devra être assez élevée pour permettre le traitement des signaux issus de l&#039;i.MX. Cela va dépendre de la configuration du chip select utilisé (CS1).&lt;br /&gt;
&lt;br /&gt;
La source du signal d&#039;horloge reste encore à définir, les choix possibles sont:&lt;br /&gt;
* directement issu de l&#039;i.MX&lt;br /&gt;
* utilisation d&#039;un DCM du Spartan 3&lt;br /&gt;
&lt;br /&gt;
Le choix définitif dépendra principalement des essais &#039;&#039;grandeur nature&#039;&#039; lors de la génération des premiers systèmes whisbone durant la phase de mise en place des composants de base.&lt;br /&gt;
&lt;br /&gt;
=== Intercon ===&lt;br /&gt;
&lt;br /&gt;
Ce composant a la particularité qu&#039;il sera créé automatiquement par un outil (script ou programme). &#039;&#039;&#039;Intercom&#039;&#039;&#039; a comme fonctionnalités:&lt;br /&gt;
* Le décodage d&#039;adresse pour la sélection des différents esclaves du système&lt;br /&gt;
* Le routage des bus d&#039;adresses et de données vers les différents esclaves&lt;br /&gt;
* La génération des signaux de contrôle pour les différents esclaves.&lt;br /&gt;
&lt;br /&gt;
Etant donné les limitations induites par les erratas de l&#039;i.MX, le composant &#039;&#039;&#039;intercom&#039;&#039;&#039; remplira les fonctionnalités suivantes:&lt;br /&gt;
* le bus de données est figé sur 16 bits&lt;br /&gt;
* les cycles de lecture et d&#039;écriture sont de longueur fixe (à priori 3 cycles d&#039;horloge &#039;&#039;&#039;à valider&#039;&#039;&#039; lors des essais du système de base)&lt;br /&gt;
* une interruption est générée en cas de dépassement du temps de cycle d&#039;écriture ou de lecture&lt;br /&gt;
* le bus sera de type &#039;&#039;&#039;shared&#039;&#039;&#039; avec un seul maitre (le Wrapper i.MX).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Les composants esclaves ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Suite aux divers discussions issues de ce chapitre. L&#039;organisation et la présences des fichiers dans les répertoires &#039;&#039;&#039;doc&#039;&#039;&#039; et &#039;&#039;&#039;HAL&#039;&#039;&#039; n&#039;est pas encore établie. Ce chapitre sera encore à retravailler.&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;une IP puisse être facilement inclue dans le système, il faut une certaine organisation. Sinon, à moyen ou à long terme cette IP est morte parce qu&#039;elle sera difficilement exploitable et encore plus difficilement maintenable.&lt;br /&gt;
&lt;br /&gt;
Ce sont des notions qui ne sont pas simples à prendre en considération lors du développement d&#039;un nouveau projet, mais lorsque l&#039;on doit se replonger dans un travail fait par quelqu&#039;un d&#039;autre ou un projet qu&#039;on a laissé en sommeil pendant quelque temps, on est content d&#039;avoir quelque chose à quoi se raccrocher.&lt;br /&gt;
&lt;br /&gt;
Pour développer efficacement, il faut assurer une organisation logique, figée et compréhensible, et le plus simple dans ce genre de cas est de se baser sur la notion de répertoire. Voici les répertoires qui doivent être utilisés par une IP:&lt;br /&gt;
* &#039;&#039;&#039;doc&#039;&#039;&#039;: Ce répertoire va contenir toute la documentation nécessaire à l&#039;exploitation de l&#039;IP. On y trouvera une notice (&#039;&#039;&#039;readme.txt&#039;&#039;&#039;), un fichier de suivi de modification (&#039;&#039;&#039;ChangeLog.txt&#039;&#039;&#039;), un fichier contenant les évolutions futures prévues (&#039;&#039;&#039;todo.txt&#039;&#039;&#039;) ainsi que tout autre fichier estimé utile par le(s) créateur(s) de l&#039;IP.&lt;br /&gt;
* &#039;&#039;&#039;hdl&#039;&#039;&#039;: Ce répertoire va contenir tous les fichiers VHDL (ou Verilog) qui auront été développés spécifiquement pour cette IP.&lt;br /&gt;
* &#039;&#039;&#039;inc&#039;&#039;&#039;: Ce répertoire va contenir un fichier d&#039;en-tête ANSI C contenant l&#039;adresse de tous les registres interne de l&#039;IP pour permettre de créer simplement un programme en langage C permettant de contrôler l&#039;IP. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;HAL&#039;&#039;&#039;: Ce répertoire va contenir un drivers ou un exemple de logiciel de base permettant l&#039;utilisation de l&#039;IP par un microprocesseur/contrôleur. &#039;&#039;&#039;&#039;&#039;Ce répertoire est optionnel et ne s&#039;applique évidement qu&#039;à des IPs ayant une interface de type Wishbone.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire d&#039;interruption ===&lt;br /&gt;
&lt;br /&gt;
Ce composant esclave est le premier qui sera créé spécifiquement pour le système. Il sera capable de:&lt;br /&gt;
* prendre en compte jusqu&#039;à 16 sources d&#039;interruptions différentes&lt;br /&gt;
* réaliser l&#039;acquittement de chaque interruption individuellement&lt;br /&gt;
* masquer/autoriser chaque interruption individuellement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le composant disposera des registres suivants:&lt;br /&gt;
* &#039;&#039;&#039;isr_mask&#039;&#039;&#039;: registre d&#039;autorisation des interruptions. Chaque bit correspond à une interruption (bit0 =&amp;gt; IRQ0, bit1 =&amp;gt; IRQ1, etc.). Ce registre sera accessible en lecture et en écriture.&lt;br /&gt;
* &#039;&#039;&#039;isr_pend&#039;&#039;&#039;: ce registre est à double emploi&lt;br /&gt;
** &#039;&#039;&#039;en lecture&#039;&#039;&#039;: Les interruptions en attente de traitement&lt;br /&gt;
** &#039;&#039;&#039;en écriture&#039;&#039;&#039;: Acquittement des interruptions. Chaque bit à 1 va acquitter l&#039;interruption correspondante.&lt;br /&gt;
&lt;br /&gt;
== Le script / programme d&#039;assemblage des IP ==&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant parler du coeur du système, du moins de la partie la plus visible de l&#039;iceberg ;-)&lt;br /&gt;
&lt;br /&gt;
La première des priorités, sera de trouver un nom pour cet outil qui reste un peu dans l&#039;esprit du projet. Voici quelques propositions, à vous de compléter ou de voter pour un nom ou plusieurs noms:&lt;br /&gt;
* Concerto&lt;br /&gt;
* Orchestra&lt;br /&gt;
&lt;br /&gt;
D&#039;après les derniers sondage, &#039;&#039;&#039;Orchestra&#039;&#039;&#039; serait finalement le nom retenu pour ce logiciel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Principe et fonctionnement ===&lt;br /&gt;
&lt;br /&gt;
Afin de de rendre tout ce système utilisable par le plus grand nombre, il faut être capable de proposer des outils qui vont simplifier la vie de l&#039;utilisateur final ainsi que de l&#039;intégrateur.&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faudra créer un outil soit sous forme de script(s), soit sous forme de programme(s) qui va permettre de réaliser les tâches suivantes:&lt;br /&gt;
* Création/gestion d&#039;une bibliothèque de composants &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;une liste de &#039;&#039;&#039;hardware Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Edition d&#039;un &#039;&#039;&#039;système Armadeus&#039;&#039;&#039;&lt;br /&gt;
* Gestion d&#039;un projet&lt;br /&gt;
* Génération automatique du composant &#039;&#039;&#039;system&#039;&#039;&#039; qui sera implanté dans le FPGA&lt;br /&gt;
* Génération automatique d&#039;un banc de tests pour permettre la validation par ModelSim (ou autre logiciel de simulation HDL)&lt;br /&gt;
* Génération d&#039;un fichier &#039;&#039;&#039;mapping mémoire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La bibliothèque de composants ===&lt;br /&gt;
&lt;br /&gt;
Pour qu&#039;un composant, c&#039;est-à-dire une IP, soit exploitable par le système, il faut passer par une phase d&#039;intégration qui va permettre de décrire ce composant:&lt;br /&gt;
* Nom de l&#039;IP&lt;br /&gt;
* Description&lt;br /&gt;
* Version&lt;br /&gt;
* Identification des fichiers HDL utilisés (VHDL ou Verilog)&lt;br /&gt;
* Identification du fichier &#039;&#039;&#039;Top&#039;&#039;&#039; (le point d&#039;entrée de l&#039;IP)&lt;br /&gt;
* Identification des paramètres &#039;&#039;&#039;&#039;&#039;GENERIC&#039;&#039;&#039;&#039;&#039; (dans le cas d&#039;une IP en VHDL):&lt;br /&gt;
** Type de paramètre (entier, std_logic, etc)&lt;br /&gt;
** Valeur par défaut&lt;br /&gt;
** Valeurs ou plages de valeurs autorisées&lt;br /&gt;
** Description du paramètre&lt;br /&gt;
* Identification des signaux Wishbone utilisés par le composant&lt;br /&gt;
* Identification du type (maitre ou esclave) et du nombre d&#039;interfaces Wishbone utilisés par ce composant&lt;br /&gt;
* Identification des registres internes&lt;br /&gt;
** Adresse (Offset par rapport à l&#039;adresse de base)&lt;br /&gt;
** Taille (8 ou 16 bits)&lt;br /&gt;
** Nom et/ou description&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront alors sauvegardées dans un fichier, de préférence dans un format compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur de texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chaque composant identifié par le logiciel se trouvera dans un sous-répertoire (ou dans un fichier archive ?!?) placé dans le répertoire &#039;&#039;&#039;Armadeus Components&#039;&#039;&#039;, chaque sous-répertoire (ou archive) de composant contiendra les données suivantes:&lt;br /&gt;
* Le fichier de description du composant &#039;&#039;&#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HDL&#039;&#039;&#039; avec les fichiers VHDL/Verilog de l&#039;IP&lt;br /&gt;
* un répertoire &#039;&#039;&#039;HAL&#039;&#039;&#039; avec les fichiers d&#039;un drivers de base (pour Linux ou &#039;&#039;générique&#039;&#039; ?!?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de composants Armadeus doit être capable de réaliser les opérations suivantes:&lt;br /&gt;
* Importer un composant ou une liste de composants&lt;br /&gt;
* Exporter un composant ou une liste de composants&lt;br /&gt;
* Gérer des versions de composants (à voir si cette fonctionnalité est importante/utile)&lt;br /&gt;
* Permettre l&#039;ajout/création de composants&lt;br /&gt;
* Permettre de supprimer un composant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de plateformes ===&lt;br /&gt;
&lt;br /&gt;
Il faut avoir confiance dans l&#039;avenir, pour l&#039;instant nous ne disposons que d&#039;une seul plateforme de travail, mais ce n&#039;est qu&#039;un début et très certainement d&#039;autres cartes à base de l&#039;i.MX et d&#039;un FPGA vont voir le jour.&lt;br /&gt;
&lt;br /&gt;
Il faut donc prévoir d&#039;ores et déjà cette possibilité et proposer un outil qui va permettre de définir une plateforme. Chaque descripteur de plateforme devra fournir les informations suivantes:&lt;br /&gt;
* Type de FPGA&lt;br /&gt;
* Emplacement (niveau FPGA, c&#039;est-à-dire la broche utilisée), type (sortie i.MX, oscillateur ou quartz) et fréquence (ou plage de fréquence ?!?) des horloges&lt;br /&gt;
* Emplacements/broche du FPGA utilisées ainsi que leur fonctionnalité (signal Wishbone, comme d&#039;un composant externe, signal d&#039;interruption, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes ces informations seront utilisées par la suite lors de la création d&#039;un projet &#039;&#039;&#039;Orchestra/Armadeus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gestionnaire de projet ===&lt;br /&gt;
&lt;br /&gt;
Le rôle du gestionnaire de projet est de permettre de créer, reprendre ou modifier le plus simplement possible une configuration du FPGA pour une carte donnée. Cette configuration sera appelée par la suite un &#039;&#039;&#039;système&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tout &#039;&#039;&#039;système&#039;&#039;&#039; est entièrement décrit par un fichier projet qui contiendra les éléments suivants:&lt;br /&gt;
* Le nom du système (éventuellement le même que le nom du projet ?!?)&lt;br /&gt;
* Une description du système&lt;br /&gt;
* Le type de plateforme utilisé pour ce système&lt;br /&gt;
* La source de la fréquence d&#039;horloge du bus Wishbone (broche du FPGA ou DLL/DCM). On pourra éventuellement imaginer la création d&#039;un &#039;&#039;Wizard&#039;&#039; pour simplifier la configuration du DCM.&lt;br /&gt;
* La liste de tous les composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; inclus dans le système, avec pour chacun de ces composants, les détails suivantes:&lt;br /&gt;
** La référence du composant (par rapport à la bibliothèque de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039;)&lt;br /&gt;
** Le nom de l&#039;instance du composant (e.g. UART1, PWM_MOTOR, etc.)&lt;br /&gt;
** La connexion des entrées/sorties (vers une broche du FPGA, non utilisé ou relié &#039;&#039;&#039;manuellement&#039;&#039;&#039;)&lt;br /&gt;
** L&#039;adresse du base de chacune de ses interfaces esclaves connectées au bus Wishbone&lt;br /&gt;
** La valeur de chaque paramètre &#039;&#039;&#039;GENERIC&#039;&#039;&#039; du composant&lt;br /&gt;
** L&#039;horloge utilisée (pour l&#039;instant ce sera toujours celle du bus Wishbone mais peut-être que plus tard ce ne sera plus forcément le cas ;-) )&lt;br /&gt;
** Le numéro d&#039;interruption attribué au composant, s&#039;il est capable de généré une demande d&#039;interruption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme pour le fichier de description d&#039;un composant Armadeus, le fichier projet devra être dans un format texte compréhensible et lisible à l&#039;aide de n&#039;importe quel éditeur texte (XML, &#039;&#039;fichier INI&#039;&#039; ou &#039;&#039;fichier plat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le fichier projet est le coeur du système et, à partir de celui-ci ainsi que de la librairie de composants &#039;&#039;&#039;Armadeus Ready&#039;&#039;&#039; + la librairie de plateforme, toute la partie liée au FPGA doit pouvoir être recrée. Bref c&#039;est le seul fichier dont l&#039;utilisateur final aura à ce soucier (sauvegarde, archivage, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lors de la création d&#039;un nouveau projet, l&#039;utilisateur devra fournir les éléments de base suivants:&lt;br /&gt;
* Le nom du système&lt;br /&gt;
* Une description&lt;br /&gt;
* Le type de plateforme utilisé&lt;br /&gt;
* La source de l&#039;horloge Wishbone (broche du FPGA ou DCM) avec éventuellement un &#039;&#039;wizard&#039;&#039; pour la saisie des informations relatives à la programmation du DCM.&lt;br /&gt;
* La fréquence du bus Wishbone (éventuellement obtenue automatiquement à partir de la sélection de la source de l&#039;horloge)&lt;br /&gt;
* Le nombre de sources d&#039;interruptions autorisées ainsi que l&#039;emplacement en mémoire des registres du gestionnaire d&#039;interruption (par défaut à l&#039;adresse 0x0000).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que le projet aura été créer, les composants suivants seront ajouté automatiquement au système:&lt;br /&gt;
* Un &#039;&#039;&#039;Wrapper i.MX&#039;&#039;&#039; pour faire le lien avec l&#039;i.MX&lt;br /&gt;
* Un &#039;&#039;&#039;syscon&#039;&#039;&#039; pour la générations des signaux &#039;&#039;&#039;CLK&#039;&#039;&#039; et &#039;&#039;&#039;RESET&#039;&#039;&#039; du bus Wishbone&lt;br /&gt;
* Un &#039;&#039;&#039;Gestionnaire d&#039;interruptions&#039;&#039;&#039; si le système doit être capable de remonter des demandes d&#039;interruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par la suite, l&#039;utilisateur pourra modifier le système de base à l&#039;aide des opérations suivantes:&lt;br /&gt;
* choisir dans la librairie un composant pour l&#039;ajouter au système&lt;br /&gt;
* modifier les paramètres d&#039;un composant du système&lt;br /&gt;
* modifier les caractéristiques du projet (nom, fréquence du bus Wishbone, etc.)&lt;br /&gt;
* supprimer un composant du système&lt;br /&gt;
* attribution automatique des adresses de base sur le bus Wishbone&lt;br /&gt;
* attribution automatique des numéros d&#039;interruption&lt;br /&gt;
* annulation des dernières modifications (éventuellement)&lt;br /&gt;
* sauvegarde/restauration d&#039;un fichier projet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Générateur de fichiers ===&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici que va se trouver la partie la plus ardue du projet &#039;&#039;&#039;Orchestra&#039;&#039;&#039;, et c&#039;est en fonction de ce que l&#039;on sera capable de proposer à l&#039;utilisateur final que se fera l&#039;adhésion au projet ou non.&lt;br /&gt;
&lt;br /&gt;
Une fois que l&#039;on aura créer son projet/système Armadeus, il faut encore pouvoir générer au minimum le fichier &#039;&#039;&#039;bitstream&#039;&#039;&#039; qui va être utiliser pour configurer le FPGA.&lt;br /&gt;
&lt;br /&gt;
C&#039;est ici qu&#039;entre en jeu le générateur de fichiers, qui devra être capable, à l&#039;aide du fichier projet + la librairie de composant + la librairie de plateforme, de générer le fichiers suivants:&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;Intercon&#039;&#039;&#039; reliant tous les composants placés dans le système qui a été créé par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system&#039;&#039;&#039; qui va englober tout le système Wishbone tel qu&#039;il a été défini par l&#039;utilisateur&lt;br /&gt;
* un fichier HDL &#039;&#039;&#039;system_tb&#039;&#039;&#039; et un fichier &#039;&#039;&#039;.DO&#039;&#039;&#039; qui vont pouvoir être utilisés pour la simulation à partir de ModelSim&lt;br /&gt;
* un fichier &#039;&#039;&#039;system.h&#039;&#039;&#039; qui va contenir le plan mémoire du système créé&lt;br /&gt;
* un fichier &#039;&#039;&#039;tcl&#039;&#039;&#039; qui va permettre de créer entièrement et de manière automatique le projet dans l&#039;environnement &#039;&#039;&#039;Xilinx ISE&#039;&#039;&#039;, c&#039;est-à-dire:&lt;br /&gt;
** sélection du bon FPGA&lt;br /&gt;
** sélection du bon format de sortie (bitstream)&lt;br /&gt;
** saisie du pinout du FPGA (nom de chaque broche par rapport au nom du signal sur le schéma)&lt;br /&gt;
** programmation du DCM le cas échéant&lt;br /&gt;
** définition des signaux d&#039;horloge&lt;br /&gt;
** inclusion des fichiers HDL nécessaires au projet&lt;br /&gt;
** instanciation du fichier HDL &#039;&#039;&#039;sytem&#039;&#039;&#039;&lt;br /&gt;
** connexion des entrées et sorties du composant &#039;&#039;&#039;system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme on peut le voir, le travail pour &#039;&#039;&#039;Orchestra&#039;&#039;&#039; ne manque pas, reste encore la question du mode de développement ainsi que du langage et la bibliothèque graphique.&lt;br /&gt;
&lt;br /&gt;
Mais ceci est encore une autre histoire, qui pourra être débattu lorsque les premières composants système seront prêt à l&#039;emploi... Peut-être très bientôt :-)&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d&#039;interruption ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce chapitre est donné à titre informatif/propositon et ne tiens pas lieu de spécification.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Afin de simplifier la vie des programmeurs systèmes, il faut pouvoir offrir un mécanisme simple de mise en place et de gestion des demandes d&#039;interruption du FPGA.&lt;br /&gt;
&lt;br /&gt;
Pour cela, je propose la solution suivante:&lt;br /&gt;
* Mise en place d&#039;un gestionnaire d&#039;interruption générique pour le FPGA. Ce gestionnaire d&#039;interruption sera capable de lire le registre d&#039;interruption (lecture de &#039;&#039;&#039;isr_pend&#039;&#039;&#039;) et de déterminer les interruptions à traiter (via &#039;&#039;&#039;isr_mask&#039;&#039;&#039;). Il va en suite aiguiller l&#039;exécution de la routine d&#039;interruption vers les routines adéquates pour chaque bit d&#039;interruption valide. L&#039;interruption traitée sera alors acquitée (écriture vers &#039;&#039;&#039;isr_pend&#039;&#039;&#039;).&lt;br /&gt;
* Création d&#039;une routine &#039;&#039;&#039;&#039;&#039;d&#039;enregistrement de vecteur d&#039;interruption&#039;&#039;&#039;&#039;&#039;. Cette routine va permettre d&#039;ajouter une routine de traitement d&#039;interruption pour un bit d&#039;interruption donné. Pour cela il faudra lui fournir les informations suivantes (via une structure ?!?):&lt;br /&gt;
** Le numéro du bit d&#039;interruption (0 à 31)&lt;br /&gt;
** La routine de traitement d&#039;interruption pour ce driver&lt;br /&gt;
** Un paramètre additionnel à fournir à la routine de traitement d&#039;interruption (pointeur de type &#039;&#039;&#039;&#039;&#039;void *&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
** Le nom du drivers (optionnel, permet d&#039;identifier/visualiser les drivers installer éventuellement)&lt;br /&gt;
* Création d&#039;une routine de validation d&#039;une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour masquer une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine pour désinstaller une &#039;&#039;interruption FPGA&#039;&#039; par son numéro (0 à 31)&lt;br /&gt;
* Création d&#039;une routine ou méthode pour visualiser tous les drivers Wishbone installés:&lt;br /&gt;
** Leur numéro&lt;br /&gt;
** Leur nom&lt;br /&gt;
** Leur état (validé/masqué)&lt;br /&gt;
** Le nombre de fois qu&#039;ils ont été appelé&lt;br /&gt;
** etc.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=2461</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=2461"/>
		<updated>2007-05-21T19:22:21Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Development Software */  italic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
For FPGA development, you need the &#039;&#039;Xilinx ISE WebPack&#039;&#039; from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of &#039;&#039;ModelSim&#039;&#039;, called &#039;&#039;ModelSim Xilinx Edition (MXE)&#039;&#039;. It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
===Licence===&lt;br /&gt;
The firmware for the FPGA has to be licenced under LGPL and BSD. &lt;br /&gt;
&lt;br /&gt;
Please add to each created file a header containing the name of the &amp;quot;company&amp;quot; here it is an association, the maintainer name, the licence.&lt;br /&gt;
&lt;br /&gt;
If a part of a work of an other developper has been reused, please indicate where this part has been found, the author name and keep the original licence. If no licence is specified, assume it is unlicenced.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
See the FPGA loader page [[FPGA loader]] of this wiki for details.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.comelec.enst.fr/hdl&lt;br /&gt;
* http://www.fpga4fun.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]] [[Fr:FPGA|Cette page en français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Domotic&amp;diff=2388</id>
		<title>Domotic</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Domotic&amp;diff=2388"/>
		<updated>2007-05-07T20:31:04Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Building blocks for your armadeus-based home management system=&lt;br /&gt;
*[[Boa|Boa (Embedded Webserver)]]&lt;br /&gt;
*[[GPIO_Driver]]&lt;br /&gt;
*[[ADC_max1027|Analog-Digital Converter]]&lt;br /&gt;
*[[DAC|Digital-Analog Converter]]&lt;br /&gt;
*[[IR_Receiver]]&lt;br /&gt;
*[[Wireless interface]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=2277</id>
		<title>MemberList</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=2277"/>
		<updated>2007-04-01T23:33:38Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Here is the list of the members and their skills==&lt;br /&gt;
&lt;br /&gt;
*0: Novice&lt;br /&gt;
*1: Notions. At least one successfull experiment&lt;br /&gt;
*2: Confirmed&lt;br /&gt;
&lt;br /&gt;
{|border=1 summary=&amp;quot;Member list&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039; || &#039;&#039;&#039;Linux Apps&#039;&#039;&#039;|| &#039;&#039;&#039;Linux Drivers&#039;&#039;&#039;|| &#039;&#039;&#039;FPGA&#039;&#039;&#039; || &#039;&#039;&#039;Board Design&#039;&#039;&#039; || &#039;&#039;&#039;Projet/Domain&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:Salocin68|Nicolas Colombain]] || 1 || 1 || 1 || 2 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienB|Julien Boibessot]] || 2 || 2 || 0 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanBaptisteM|Jean-Baptiste Mayer]] || 2 || 1 || 1 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasA|Nicolas Aguirre]] || 2 || 0 || 1 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BenoitC|Benoît Canet]] || 2 || 0 || 0 || 0 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SonZerro|Sonzerro]] || 0 || 0 || 1 || 2 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:HenriG|Henri Geist]] || 1 || 1 || 0 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BorredonB|Bernard Borredon]] || 2 || 1 || 0 || 1 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=2274</id>
		<title>MemberList</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=2274"/>
		<updated>2007-04-01T21:21:34Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Here is the list of the members and their skills==&lt;br /&gt;
&lt;br /&gt;
*0: Novice&lt;br /&gt;
*1: Notions. At least one successfull experiment&lt;br /&gt;
*2: Confirmed&lt;br /&gt;
&lt;br /&gt;
{|border=1 summary=&amp;quot;Member list&amp;quot;&lt;br /&gt;
|----------------&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039; || &#039;&#039;&#039;Linux Apps&#039;&#039;&#039;|| &#039;&#039;&#039;Linux Drivers&#039;&#039;&#039;|| &#039;&#039;&#039;FPGA&#039;&#039;&#039; || &#039;&#039;&#039;Board Design&#039;&#039;&#039; || &#039;&#039;&#039;Projet/Domain&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:Salocin68|Nicolas Colombain]] || 1 || 1 || 1 || 2 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienB|Julien Boibessot]] || 2 || 2 || 0 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanBaptisteM|Jean-Baptiste Mayer]] || 2 || 1 || 1 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasA|Nicolas Aguirre]] || 2 || 0 || 1 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BenoitC|Benoît Canet]] || 2 || 0 || 0 || 0 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SonZerro|Sonzerro]] || 0 || 0 || 2 || 2 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2244</id>
		<title>MTF-T035</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2244"/>
		<updated>2007-03-26T20:52:13Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* LCD orders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TFT Specifications ==&lt;br /&gt;
The MTF-T035 320x240 3.5&amp;quot; color TFT display from Microtips is the default TFT display supported.&lt;br /&gt;
Two pin compatible versions are available. One with touchscreen (analog outputs) and one without.&lt;br /&gt;
The MTF-T035 is provided with a 4 white led backlight.&lt;br /&gt;
&lt;br /&gt;
The specification can be found here:&lt;br /&gt;
[http://www.microtipsusa.com/product_pdfs/Color%20TFT/MTF-T035DHSLP-A%20(24BIT,%20parallel,%20external%20BL%20control,%20anti-glare,%20TP).pdf]&lt;br /&gt;
&lt;br /&gt;
Some photos are although available here:&lt;br /&gt;
[[Board Pictures]]&lt;br /&gt;
&lt;br /&gt;
== Adapter Board ==&lt;br /&gt;
This kind of LCD requires an adapter board. &lt;br /&gt;
The small board generates the required bias voltages, integrates a white led driver and provides a standard 2.54 connector interface. &lt;br /&gt;
It has to be noted that a simple 3.3V supply must be used.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;schematics&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/schematics.pdf]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;assembly drawings&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/assembly.pdf]&lt;br /&gt;
&lt;br /&gt;
Note that the pin 1 of the connectors are although written in the top layer copper.&lt;br /&gt;
&lt;br /&gt;
== Connections with the DevLight ==&lt;br /&gt;
Just connect signals with same names together. &amp;lt;strong&amp;gt;Use only short wires !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DevLight schematics and specification may be usefull:&lt;br /&gt;
[http://www.armadeus.com/products_APF9328DevLight.html]&lt;br /&gt;
&lt;br /&gt;
Once done verify the connections by means of your multimeter. &lt;br /&gt;
&amp;lt;strong&amp;gt;Do not forget to check the 3.3V supply polarity on the LCD_adapt board before to power up the system !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD orders ==&lt;br /&gt;
Please add your name and the LCD type you want to the list below. &lt;br /&gt;
On order will be placed in two/three weeks.&lt;br /&gt;
The production of the LCD Adapter board has been launched. &lt;br /&gt;
Expected delivery date: Week 17/18&lt;br /&gt;
&lt;br /&gt;
*Rachid Koucha: 1x LCD_Touchscreen&lt;br /&gt;
*ThomasB: 1x LCD (with or without touchscreen)??&lt;br /&gt;
*Sonzerro: 1x LCD_Touchscreen&lt;br /&gt;
*Olivier Coutanceau: 1x LCD_Touchscreen&lt;br /&gt;
*Arnaud Coffinet : 1x LCD_Touchscreen&lt;br /&gt;
*Henri Geist : 1x LCD_Touchscreen&lt;br /&gt;
*JulienB: 1x LCD_Touchscreen&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2243</id>
		<title>MTF-T035</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2243"/>
		<updated>2007-03-26T20:51:35Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* LCD orders */ now it&amp;#039;s clear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TFT Specifications ==&lt;br /&gt;
The MTF-T035 320x240 3.5&amp;quot; color TFT display from Microtips is the default TFT display supported.&lt;br /&gt;
Two pin compatible versions are available. One with touchscreen (analog outputs) and one without.&lt;br /&gt;
The MTF-T035 is provided with a 4 white led backlight.&lt;br /&gt;
&lt;br /&gt;
The specification can be found here:&lt;br /&gt;
[http://www.microtipsusa.com/product_pdfs/Color%20TFT/MTF-T035DHSLP-A%20(24BIT,%20parallel,%20external%20BL%20control,%20anti-glare,%20TP).pdf]&lt;br /&gt;
&lt;br /&gt;
Some photos are although available here:&lt;br /&gt;
[[Board Pictures]]&lt;br /&gt;
&lt;br /&gt;
== Adapter Board ==&lt;br /&gt;
This kind of LCD requires an adapter board. &lt;br /&gt;
The small board generates the required bias voltages, integrates a white led driver and provides a standard 2.54 connector interface. &lt;br /&gt;
It has to be noted that a simple 3.3V supply must be used.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;schematics&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/schematics.pdf]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;assembly drawings&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/assembly.pdf]&lt;br /&gt;
&lt;br /&gt;
Note that the pin 1 of the connectors are although written in the top layer copper.&lt;br /&gt;
&lt;br /&gt;
== Connections with the DevLight ==&lt;br /&gt;
Just connect signals with same names together. &amp;lt;strong&amp;gt;Use only short wires !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DevLight schematics and specification may be usefull:&lt;br /&gt;
[http://www.armadeus.com/products_APF9328DevLight.html]&lt;br /&gt;
&lt;br /&gt;
Once done verify the connections by means of your multimeter. &lt;br /&gt;
&amp;lt;strong&amp;gt;Do not forget to check the 3.3V supply polarity on the LCD_adapt board before to power up the system !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD orders ==&lt;br /&gt;
Please add your name and the LCD type you want to the list below. &lt;br /&gt;
On order will be placed in two/three weeks.&lt;br /&gt;
The production of the LCD Adapter board has been launched. &lt;br /&gt;
Expected delivery date: Week 17/18&lt;br /&gt;
&lt;br /&gt;
*Rachid Koucha: 1x LCD_Touchscreen&lt;br /&gt;
*ThomasB: 1x LCD (with or without touchscreen)??&lt;br /&gt;
*Michael Lerjen: 1x LCD_Touchscreen&lt;br /&gt;
*Olivier Coutanceau: 1x LCD_Touchscreen&lt;br /&gt;
*Arnaud Coffinet : 1x LCD_Touchscreen&lt;br /&gt;
*Henri Geist : 1x LCD_Touchscreen&lt;br /&gt;
*JulienB: 1x LCD_Touchscreen&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2242</id>
		<title>MTF-T035</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2242"/>
		<updated>2007-03-26T20:51:19Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* LCD orders */ order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TFT Specifications ==&lt;br /&gt;
The MTF-T035 320x240 3.5&amp;quot; color TFT display from Microtips is the default TFT display supported.&lt;br /&gt;
Two pin compatible versions are available. One with touchscreen (analog outputs) and one without.&lt;br /&gt;
The MTF-T035 is provided with a 4 white led backlight.&lt;br /&gt;
&lt;br /&gt;
The specification can be found here:&lt;br /&gt;
[http://www.microtipsusa.com/product_pdfs/Color%20TFT/MTF-T035DHSLP-A%20(24BIT,%20parallel,%20external%20BL%20control,%20anti-glare,%20TP).pdf]&lt;br /&gt;
&lt;br /&gt;
Some photos are although available here:&lt;br /&gt;
[[Board Pictures]]&lt;br /&gt;
&lt;br /&gt;
== Adapter Board ==&lt;br /&gt;
This kind of LCD requires an adapter board. &lt;br /&gt;
The small board generates the required bias voltages, integrates a white led driver and provides a standard 2.54 connector interface. &lt;br /&gt;
It has to be noted that a simple 3.3V supply must be used.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;schematics&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/schematics.pdf]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;assembly drawings&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/assembly.pdf]&lt;br /&gt;
&lt;br /&gt;
Note that the pin 1 of the connectors are although written in the top layer copper.&lt;br /&gt;
&lt;br /&gt;
== Connections with the DevLight ==&lt;br /&gt;
Just connect signals with same names together. &amp;lt;strong&amp;gt;Use only short wires !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DevLight schematics and specification may be usefull:&lt;br /&gt;
[http://www.armadeus.com/products_APF9328DevLight.html]&lt;br /&gt;
&lt;br /&gt;
Once done verify the connections by means of your multimeter. &lt;br /&gt;
&amp;lt;strong&amp;gt;Do not forget to check the 3.3V supply polarity on the LCD_adapt board before to power up the system !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD orders ==&lt;br /&gt;
Please add your name and the LCD type you want to the list below. &lt;br /&gt;
On order will be placed in two/three weeks.&lt;br /&gt;
The production of the LCD Adapter board has been launched. &lt;br /&gt;
Expected delivery date: Week 17/18&lt;br /&gt;
&lt;br /&gt;
*Rachid Koucha: 1x LCD_Touchscreen&lt;br /&gt;
*ThomasB: 1x LCD (with or without touchscreen)??&lt;br /&gt;
*Michael Lerjen: 1x LCD_Touchscreen??&lt;br /&gt;
*Olivier Coutanceau: 1x LCD_Touchscreen&lt;br /&gt;
*Arnaud Coffinet : 1x LCD_Touchscreen&lt;br /&gt;
*Henri Geist : 1x LCD_Touchscreen&lt;br /&gt;
*JulienB: 1x LCD_Touchscreen&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2241</id>
		<title>MTF-T035</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MTF-T035&amp;diff=2241"/>
		<updated>2007-03-26T20:50:04Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Adapter Board */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TFT Specifications ==&lt;br /&gt;
The MTF-T035 320x240 3.5&amp;quot; color TFT display from Microtips is the default TFT display supported.&lt;br /&gt;
Two pin compatible versions are available. One with touchscreen (analog outputs) and one without.&lt;br /&gt;
The MTF-T035 is provided with a 4 white led backlight.&lt;br /&gt;
&lt;br /&gt;
The specification can be found here:&lt;br /&gt;
[http://www.microtipsusa.com/product_pdfs/Color%20TFT/MTF-T035DHSLP-A%20(24BIT,%20parallel,%20external%20BL%20control,%20anti-glare,%20TP).pdf]&lt;br /&gt;
&lt;br /&gt;
Some photos are although available here:&lt;br /&gt;
[[Board Pictures]]&lt;br /&gt;
&lt;br /&gt;
== Adapter Board ==&lt;br /&gt;
This kind of LCD requires an adapter board. &lt;br /&gt;
The small board generates the required bias voltages, integrates a white led driver and provides a standard 2.54 connector interface. &lt;br /&gt;
It has to be noted that a simple 3.3V supply must be used.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;schematics&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/schematics.pdf]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;strong&amp;gt;assembly drawings&amp;lt;/strong&amp;gt; can be found here:&lt;br /&gt;
[http://www.armadeus.com/downloads/lcd_adapt_MTFT035/assembly.pdf]&lt;br /&gt;
&lt;br /&gt;
Note that the pin 1 of the connectors are although written in the top layer copper.&lt;br /&gt;
&lt;br /&gt;
== Connections with the DevLight ==&lt;br /&gt;
Just connect signals with same names together. &amp;lt;strong&amp;gt;Use only short wires !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DevLight schematics and specification may be usefull:&lt;br /&gt;
[http://www.armadeus.com/products_APF9328DevLight.html]&lt;br /&gt;
&lt;br /&gt;
Once done verify the connections by means of your multimeter. &lt;br /&gt;
&amp;lt;strong&amp;gt;Do not forget to check the 3.3V supply polarity on the LCD_adapt board before to power up the system !&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LCD orders ==&lt;br /&gt;
Please add your name and the LCD type you want to the list below. &lt;br /&gt;
On order will be placed in two/three weeks.&lt;br /&gt;
The production of the LCD Adapter board has been launched. &lt;br /&gt;
Expected delivery date: Week 17/18&lt;br /&gt;
&lt;br /&gt;
*Rachid Koucha: 1x LCD_Touchscreen&lt;br /&gt;
*ThomasB: 1x LCD (with or without touchscreen)??&lt;br /&gt;
*Michael Lerjen: 1x LCD (with or without touchscreen)??&lt;br /&gt;
*Olivier Coutanceau: 1x LCD_Touchscreen&lt;br /&gt;
*Arnaud Coffinet : 1x LCD_Touchscreen&lt;br /&gt;
*Henri Geist : 1x LCD_Touchscreen&lt;br /&gt;
*JulienB: 1x LCD_Touchscreen&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Members&amp;diff=2240</id>
		<title>Members</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Members&amp;diff=2240"/>
		<updated>2007-03-26T20:47:56Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Here are the places where the swiss members are living */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Here are the places where the french members are living==&lt;br /&gt;
Work in progress !!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative&amp;quot;&amp;gt;[[Image:France.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 350px; top: 250px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Besançon(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 350px; top: 320px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Lyon(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 310px; top: 220px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Dijon(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 400px; top: 180px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Mulhouse(3)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 400px; top: 210px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Montbéliard/Belfort(2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 410px; top: 120px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Strasbourg(2)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 250px; top: 10px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Lille(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 250px; top: 70px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Amiens(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 250px; top: 150px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Paris(13)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 300px; top: 120px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Soisson(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 150px; top: 190px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Angers(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 180px; top: 170px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Le Mans(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 250px; top: 480px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Perpignan(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 350px; top: 450px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Aix/Marseille(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 200px; top: 400px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Toulouse(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 200px; top: 350px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Périgueux(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Here are the places where the swiss members are living==&lt;br /&gt;
Work in progress !!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative&amp;quot;&amp;gt;[[Image:Suisse.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 50px; top: 150px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Lausanne(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 150px; top: 30px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Basel(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; left: 220px; top: 50px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Zürich(1)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Here are the places where the belgian members are living==&lt;br /&gt;
Work in progress !!&lt;br /&gt;
&lt;br /&gt;
==Here are the places where the german members are living==&lt;br /&gt;
* Munich (1)&lt;br /&gt;
Work in progress !!&lt;br /&gt;
&lt;br /&gt;
==Here are the places where the irish members are living==&lt;br /&gt;
* Dublin(1)&lt;br /&gt;
Work in progress !!&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1610</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1610"/>
		<updated>2006-10-31T22:37:38Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: typos&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;
===What is the legal status of the project ?===&lt;br /&gt;
The Armadeus Project is a french non-profit association (loi 1901) held in Mulhouse, France (68). We accept members from everywhere.&lt;br /&gt;
Board production is done by a privately held company.&lt;br /&gt;
&lt;br /&gt;
===What does &amp;quot;Armadeus&amp;quot; mean ?===&lt;br /&gt;
&amp;quot;Armadeus&amp;quot; is the contraction of &amp;quot;ARM&amp;quot; and &amp;quot;Amadeus&amp;quot;. Indeed we choosed ARM architecture for its symplicity and efficiency and our boards are as gifted to run embedded systems as Mozart was for composing music. Moreover, Armadeus project is born in 2006, year of the 250th Mozart&#039;s Birthday.&lt;br /&gt;
 &lt;br /&gt;
===How do I become a member ?===&lt;br /&gt;
You become a member as soon as you purchase at least one main board (here an APF9328). This will ensure that new members will develop on the same basis. After that you will receive your userid and your password to participate to this Wiki and project activities. Everyone is welcome.&lt;br /&gt;
&lt;br /&gt;
===Why become a member ?===&lt;br /&gt;
* Benefit from special prices on the products (the goal of the association is not to make money)&lt;br /&gt;
* Participate to the development of new boards  &lt;br /&gt;
* Increase your experience&lt;br /&gt;
* Enjoy working with other developers.&lt;br /&gt;
&lt;br /&gt;
===Restrictions===&lt;br /&gt;
* The boards provided by the association can not be used in a commercial product unless this product belongs to the association&lt;br /&gt;
* The software/firmware developments realized within the association have to be GPL/LGPL compliant&lt;br /&gt;
* The Armadeus Association can not be blamed of the wrong usage or malfunction of the development performed within the association&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&#039;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 you help. For Swiss members, we can provide help in Basel, Lausanne &amp;amp; Zürich.&lt;br /&gt;
&lt;br /&gt;
===Board prices===&lt;br /&gt;
* APF9328 wihtout FPGA, ADC and DAC: 75 euros&lt;br /&gt;
* FPGA supplement (XC3S200): +20 euros (depending on quantities)&lt;br /&gt;
* APF9328 DevLight: 45 euros &lt;br /&gt;
&lt;br /&gt;
Taxes are included to the price but not the shipment&lt;br /&gt;
A Paypal account is mandatory&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
* No accessory (cable, power supply...) is delivered with the boards. You can purchase them by your favorite distributor for a few $&lt;br /&gt;
* Grouped orders can be organized for some components like LCDs, special connectors...&lt;br /&gt;
&lt;br /&gt;
==Hardware Questions==&lt;br /&gt;
&lt;br /&gt;
===What does an Armadeus APF9328 board contain ?===&lt;br /&gt;
The heart of the APF9328 board is a i.MXL processor from Freescale (ex Motorola) with an ARM920T core running at 200MHz. It has the following integrated peripherals:&lt;br /&gt;
* LCD controller (TFT, CSTN, STN)&lt;br /&gt;
* USB 1.1 device&lt;br /&gt;
* 2 x SPI &lt;br /&gt;
* I2C&lt;br /&gt;
* 2 x Serial&lt;br /&gt;
* MMC/SD controller&lt;br /&gt;
* Serial bootstrap mode (removing the need of JTAG interface)&lt;br /&gt;
* a lot of General Purpose Input/Output, depending on the configured peripherals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Around this processor, the board is equipped with:&lt;br /&gt;
* 16MBytes of high speed SDRAM&lt;br /&gt;
* 8MBytes of NOR Flash&lt;br /&gt;
* 10/100Mbits Ethernet controller&lt;br /&gt;
* Xilinx Spartan3 FPGA (optional)&lt;br /&gt;
* an ADC and a DAC (optional)&lt;br /&gt;
* level converters for serial, USB and Ethernet&lt;br /&gt;
* 2 connectors for accessing main signals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Have a look at this link for more informations: [http://http://www.armadeus.com/downloads/apf9328/documentation/dataSheet_APF9328.pdf]&lt;br /&gt;
&lt;br /&gt;
===What is the DevLight board ?===&lt;br /&gt;
APF9328 boards were designed to be as small as possible and ready to be embedded on any systems. So an APF9328 is not usable alone. You should see it much more like a module you can plug in everywhere.&lt;br /&gt;
To develop for APF9328 boards you can either develop your own &amp;quot;motherboard&amp;quot; and plug the APF9328 into it or use the one we develop for our needs.&lt;br /&gt;
Currently only the DevLight board is available. It contains:&lt;br /&gt;
* a serial connector&lt;br /&gt;
* an USB connector&lt;br /&gt;
* an Ethernet connector&lt;br /&gt;
* a prototype zone to test your developments&lt;br /&gt;
* a DC power regulator&lt;br /&gt;
&lt;br /&gt;
For more informations look at here:&lt;br /&gt;
[http://www.armadeus.com/downloads/apf9328DevLight/documentation/dataSheet_APF9328_DevLight.pdf]&lt;br /&gt;
&lt;br /&gt;
A DevFull board is currently in production and will contain:&lt;br /&gt;
* an AC97 + touchscreen chip&lt;br /&gt;
* 4 more serial ports&lt;br /&gt;
* a MMC connector&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Are the Armadeus boards RoHS compliant ?===&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
==Software Questions==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]][[Fr:FAQ | Cette page en Français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1586</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1586"/>
		<updated>2006-10-25T21:07:24Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: typo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
For FPGA development, you need the Xilinx ISE WebPack from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of ModelSim, with the name ModelSim Xilinx Edition (MXE). It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
This is not yet possible.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1585</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1585"/>
		<updated>2006-10-25T21:05:24Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: Page completed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
For FPGA development, you need the Xilinx ISE WebPack from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of ModelSim, with the name ModelSim Xilinx Edition (MXE). It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
Implement your design with the &#039;&#039;ISE WebPack&#039;&#039; software. If you are new to VHDL, the information on [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language] can give you a first idea. Tutorials for the ISE software can be downloaded from the Xilinx homepage [http://www.xilinx.com/support/techsup/tutorials].&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
When your design is ready and passes the simulation, you can create a &#039;&#039;bitstream file&#039;&#039; that can be downloaded to the FPGA. It contains all the data to configure the FPGA.&lt;br /&gt;
&lt;br /&gt;
In the ISE Project Manager, make sure that a &#039;&#039;Binary Configuration File&#039;&#039; is also created. You can set this option in the properties dialog of the &#039;&#039;Generate Programming file&#039;&#039; process. Activate the option &#039;&#039;Create Binary Configuration File&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file with the ending &#039;&#039;.bin&#039;&#039; is now the file you need to configure the FPGA on the Armadeus module.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
See the the [[InstallTargetSoftware#FPGA_firmware_installation|InstallTargetSoftware]] page of this wiki.&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
This is not yet possible.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1575</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1575"/>
		<updated>2006-10-22T10:44:25Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
==Armadeus Firmware Development Environment==&lt;br /&gt;
===Development Software===&lt;br /&gt;
For FPGA development, you need the Xilinx ISE WebPack from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of ModelSim, with the name ModelSim Xilinx Edition (MXE). It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required in order to receive a license.&lt;br /&gt;
&lt;br /&gt;
===Design Implementation===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Bitstream generation===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from U-Boot===&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
===Configuring the FPGA from Linux===&lt;br /&gt;
todo&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1574</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1574"/>
		<updated>2006-10-22T10:39:47Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==FPGA Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
===Development Software for APF9328===&lt;br /&gt;
For FPGA development, you need the Xilinx ISE WebPack from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of ModelSim, with the name ModelSim Xilinx Edition (MXE). It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required to request the license.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1572</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA&amp;diff=1572"/>
		<updated>2006-10-22T09:50:41Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: New page: FPGA design flow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FPGA on APF9328==&lt;br /&gt;
The APF9328 is optionally equipped with an Xilinx Spartan-3 FPGA (Field Programmable Gate Array). An FPGA is a configurable digital device. Today, large and complex digital circuits and processor cores fit into FPGAs. To find more information about FPGAs, check the Wikipedia: [http://en.wikipedia.org/wiki/FPGA]&lt;br /&gt;
&lt;br /&gt;
The FPGA on APF9328 is connected to the processor bus of the iMX and to the connector of the APF9328. This makes it possible to design your own peripherals and configure them into the FPGA. Because the FPGA can be reconfigured at any time, it allows you to replace these peripherals (or a part of them), if other functionalities are needed. This is possible even at run-time!&lt;br /&gt;
&lt;br /&gt;
==Firmware Development==&lt;br /&gt;
===Digital Hardware Design===&lt;br /&gt;
FPGAs are quite complex digital devices. Modern tools allow to describe the circuits to be implemented an abstract way, which makes it possible to manage the complexity. The trend for new tools is toward higher levels of abstraction in order to be able to manage even more coplex devices in future. Nevertheless, at least basic knowledge of digital circuits and gates is necessary to start designing firmware for FPGAs.&lt;br /&gt;
&lt;br /&gt;
===FPGA Design-Flow===&lt;br /&gt;
The starting point for the implementation flow is a description of the functionality in a Hardware Description Language (HDL). One of the most commonly used HDLs is &#039;&#039;VHDL&#039;&#039; (Very High Speed Integrated Circuit Hardware Description Language). VHDL files are plain text files and editing can be done in any editor. &lt;br /&gt;
&lt;br /&gt;
This VHDL circuit description can be simulated to verify the functionality.&lt;br /&gt;
&lt;br /&gt;
If everything is working fine, a tool called &#039;&#039;synthesizer&#039;&#039; is used to translate this HDL description in a hardware netlist. Then this netlist is &#039;&#039;mapped&#039;&#039; onto the FPGA technology. After &#039;&#039;Place and Route&#039;&#039; and &#039;&#039;Bitstream generation&#039;&#039;, a configuration file for the FPGA is created (&#039;&#039;bitfile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For more informations about VHDL and the design flow, see [http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]. This page also contains many examples that show how to describe simple electronic circuits in VHDL.&lt;br /&gt;
&lt;br /&gt;
===Development Environment for APF9328===&lt;br /&gt;
For FPGA development, you need the Xilinx ISE WebPack from Xilinx. It can be downloaded for free from the Xilinx homepage &lt;br /&gt;
[http://www.xilinx.com/ise/logic_design_prod/webpack.htm]. The WebPack contains all you need to implement a design for the FPGA on the APF9328: Editor, Synthesizer, Mapper, Place and Route Tool, Bitstream generator, and the tools to download a configuration to the FPGA.&lt;br /&gt;
&lt;br /&gt;
For simulation, Xilinx offers a free version of ModelSim, with the name ModelSim Xilinx Edition (MXE). It can also be downloaded from the Xilinx homepage [http://www.xilinx.com/ise/optional_prod/mxe.htm] for free, but registration is required to request the license.&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Help:Contents&amp;diff=1571</id>
		<title>Help:Contents</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Help:Contents&amp;diff=1571"/>
		<updated>2006-10-22T08:49:02Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You are lost/disappointed and require Help ?&lt;br /&gt;
&lt;br /&gt;
* Please first read the [[FAQ]].&lt;br /&gt;
&lt;br /&gt;
* There are some very interesting presentations of Linux usage in embedded context here: http://free-electrons.com&lt;br /&gt;
&lt;br /&gt;
* You can send an email on the mailing list (under construction)&lt;br /&gt;
&lt;br /&gt;
* at last resort, you can contact us directly:  &#039;&#039;&#039;wiki (at) armadeus (dot) com&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=WindowsInstall&amp;diff=1555</id>
		<title>WindowsInstall</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=WindowsInstall&amp;diff=1555"/>
		<updated>2006-10-18T19:46:53Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* Prerequisites for Window$ installation */ put packages in alphabetical order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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, Cygwin (a Linux emulation tool) has to be installed first.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Window$ installation==&lt;br /&gt;
&lt;br /&gt;
Install cygwin: http://www.cygwin.com&lt;br /&gt;
Remark: do not delete the package folder (ftp%xxxx) otherwise the synchronization between the installed packages and the available ones will no more be done ! &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; 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;
* 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;
 $ svn co svn://ericjarrige.homelinux.org/armadeus/trunk armadeus  --username &amp;lt;&amp;lt;YOUR USERNAME&amp;gt;&amp;gt;  --password &amp;lt;&amp;lt;YOUR PASS&amp;gt;&amp;gt;&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;
If not, then download installation archive from SourceForge: http://sourceforge.net/projects/armadeus and detar it (tar -xvf filename).&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;
* Choose GDB version 6.3 if you need a debugger&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;
* compilation crash with uclibc-0.9.28: run make again&lt;br /&gt;
* compilation crash with gdb 6.3: run make again&lt;br /&gt;
* compilation crash with linux 2.6.12: run make again&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;
* &#039;&#039;&#039;u-boot.brec&#039;&#039;&#039; (can be used with the bootstrap, if U-Boot is not installed or not working, see [[BootLoader]] page)&lt;br /&gt;
* &#039;&#039;&#039;u-boot.bin&#039;&#039;&#039; (for download with uboot, see [[BootLoader]] &amp;quot;Update u-boot&amp;quot; page)&lt;br /&gt;
* &#039;&#039;&#039;linux-kernel-2.6.xx-arm.bin&#039;&#039;&#039; (for download with uboot, see InstallLinux)&lt;br /&gt;
* &#039;&#039;&#039;rootfs.arm_nfpu.jffs2&#039;&#039;&#039; (for download with uboot, see InstallFileSystem?)&lt;br /&gt;
* &#039;&#039;&#039;rootfs.arm_nfpu.tar&#039;&#039;&#039; (for an nfsroot, see RootNFS?)&lt;br /&gt;
&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 &#039;&#039;&#039;make&#039;&#039;&#039; 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;
 $ rm -rf software/buildroot&lt;br /&gt;
 $ rm Makefile&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1554</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1554"/>
		<updated>2006-10-18T19:45:00Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* What does an Armadeus APF9328 board contains ? */ rephrased...&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;
===What is the legal status of the project ?===&lt;br /&gt;
The Armadeus Project is a french &amp;quot;non-profit&amp;quot; association (loi 1901) held in Mulhouse, France (68). We accept members from everywhere.&lt;br /&gt;
Board production is done by a privately held company.&lt;br /&gt;
&lt;br /&gt;
===What does &amp;quot;Armadeus&amp;quot; mean ?===&lt;br /&gt;
&amp;quot;Armadeus&amp;quot; is the contraction of &amp;quot;ARM&amp;quot; and &amp;quot;Amadeus&amp;quot;. Indeed we choosed ARM architecture for its symplicity and efficiency and our boards are as gifted to run embedded systems as Mozart was for composing music. Moreover, Armadeus project is born in 2006, year of the 250th Mozart&#039;s Birthday.&lt;br /&gt;
 &lt;br /&gt;
===How do I become a member ?===&lt;br /&gt;
You have to pay a small fee. You will receive an Armadeus board, userid and password to participate to this Wiki and project activities. Everyone is welcome.&lt;br /&gt;
&lt;br /&gt;
===What is the fee for becoming a member ?===&lt;br /&gt;
You will have to pay 150 euros. You will get an APF9328 board (iMXl @ 200Mhz, 16Mbytes SDRAM, 8Mbytes Flash, FPGA), a &amp;quot;DevLight&amp;quot; development board, and all you need to start developping/collaborating.&lt;br /&gt;
You can get a &amp;quot;reduced&amp;quot; APF9328 board (without FPGA, ADC &amp;amp; DAC) for a 130 euros registration fee.&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&#039;t find help contact us directly. If you are located in France, we have members in Besançon, Montbéliard &amp;amp; Mulhouse who can provide you help. For Swiss members, we can provide help in Basel, Lausanne &amp;amp; Zürich.&lt;br /&gt;
&lt;br /&gt;
==Hardware Questions==&lt;br /&gt;
&lt;br /&gt;
===What does an Armadeus APF9328 board contain ?===&lt;br /&gt;
The heart of the APF9328 board is a i.MXL processor from Freescale (ex Motorola) with an ARM920T core running at 200MHz. It has the following integrated peripherals:&lt;br /&gt;
* LCD controller (TFT, CSTN, STN)&lt;br /&gt;
* USB 1.1 device&lt;br /&gt;
* 2 x SPI &lt;br /&gt;
* I2C&lt;br /&gt;
* 2 x Serial&lt;br /&gt;
* MMC/SD controller&lt;br /&gt;
* Serial bootstrap mode (removing the need of JTAG interface)&lt;br /&gt;
* a lot of General Purpose Input/Output, depending on the configured peripherals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Around this processor, the board is equipped with:&lt;br /&gt;
* 16MBytes of high speed SDRAM&lt;br /&gt;
* 8MBytes of NOR Flash&lt;br /&gt;
* 10/100Mbits Ethernet controller&lt;br /&gt;
* Xilinx Spartan3 FPGA (optional)&lt;br /&gt;
* an ADC and a DAC (optional)&lt;br /&gt;
* level converters for serial, USB and Ethernet&lt;br /&gt;
* 2 connectors for accessing main signals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Have a look at this link for more informations: [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MXL&amp;amp;nodeId=0162468rH311432973ZrDR]&lt;br /&gt;
&lt;br /&gt;
===What is the DevLight board ?===&lt;br /&gt;
APF9328 boards were designed to be as small as possible and ready to be embedded on any systems. So an APF9328 is not usable alone. You should see it much more like a module you can plug in everywhere.&lt;br /&gt;
To develop for APF9328 boards you can either develop your own &amp;quot;motherboard&amp;quot; and plug the APF9328 into it or use the one we develop for our needs.&lt;br /&gt;
Currently only the DevLight board is available. It contains:&lt;br /&gt;
* a serial connector&lt;br /&gt;
* an USB connector&lt;br /&gt;
* an Ethernet connector&lt;br /&gt;
* a prototype zone to test your developments&lt;br /&gt;
* a DC power regulator&lt;br /&gt;
&lt;br /&gt;
A DevFull board is currently in production and will contain:&lt;br /&gt;
* an AC97 + touchscreen chip&lt;br /&gt;
* 4 more serial ports&lt;br /&gt;
* a MMC connector&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Are the Armadeus boards RoHS compliant ?===&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
==Software Questions==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]][[Fr:FAQ | Cette page en Français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1553</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FAQ&amp;diff=1553"/>
		<updated>2006-10-18T19:37:48Z</updated>

		<summary type="html">&lt;p&gt;SonZerro: /* What is the legal status of the project ? */ typo&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;
===What is the legal status of the project ?===&lt;br /&gt;
The Armadeus Project is a french &amp;quot;non-profit&amp;quot; association (loi 1901) held in Mulhouse, France (68). We accept members from everywhere.&lt;br /&gt;
Board production is done by a privately held company.&lt;br /&gt;
&lt;br /&gt;
===What does &amp;quot;Armadeus&amp;quot; mean ?===&lt;br /&gt;
&amp;quot;Armadeus&amp;quot; is the contraction of &amp;quot;ARM&amp;quot; and &amp;quot;Amadeus&amp;quot;. Indeed we choosed ARM architecture for its symplicity and efficiency and our boards are as gifted to run embedded systems as Mozart was for composing music. Moreover, Armadeus project is born in 2006, year of the 250th Mozart&#039;s Birthday.&lt;br /&gt;
 &lt;br /&gt;
===How do I become a member ?===&lt;br /&gt;
You have to pay a small fee. You will receive an Armadeus board, userid and password to participate to this Wiki and project activities. Everyone is welcome.&lt;br /&gt;
&lt;br /&gt;
===What is the fee for becoming a member ?===&lt;br /&gt;
You will have to pay 150 euros. You will get an APF9328 board (iMXl @ 200Mhz, 16Mbytes SDRAM, 8Mbytes Flash, FPGA), a &amp;quot;DevLight&amp;quot; development board, and all you need to start developping/collaborating.&lt;br /&gt;
You can get a &amp;quot;reduced&amp;quot; APF9328 board (without FPGA, ADC &amp;amp; DAC) for a 130 euros registration fee.&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&#039;t find help contact us directly. If you are located in France, we have members in Besançon, Montbéliard &amp;amp; Mulhouse who can provide you help. For Swiss members, we can provide help in Basel, Lausanne &amp;amp; Zürich.&lt;br /&gt;
&lt;br /&gt;
==Hardware Questions==&lt;br /&gt;
&lt;br /&gt;
===What does an Armadeus APF9328 board contains ?===&lt;br /&gt;
This board is build around an i.MXl processor from Freescale (ex Motorola). This 32bits processor is an ARM920T core running at 200Mhz and has the following integrated peripherals:&lt;br /&gt;
* LCD controller (TFT, CSTN, STN)&lt;br /&gt;
* USB 1.1 device&lt;br /&gt;
* 2xSPI &lt;br /&gt;
* I2C&lt;br /&gt;
* 2xserial&lt;br /&gt;
* MMC/SD controller&lt;br /&gt;
* Serial bootstrap mode (removing the need of JTAG interface)&lt;br /&gt;
* a lot of General Purpose Input/Output, depending on the configured peripherals&lt;br /&gt;
&lt;br /&gt;
Have a look at this link for more informations: [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MXL&amp;amp;nodeId=0162468rH311432973ZrDR]&lt;br /&gt;
&lt;br /&gt;
On our board it is associated with:&lt;br /&gt;
* 16Mbytes of high speed SDRAM&lt;br /&gt;
* 8Mbytes of NOR Flash&lt;br /&gt;
* 10/100Mbits Ethernet controller&lt;br /&gt;
* Xilinx Spartan3 FPGA (optional)&lt;br /&gt;
* an ADC and a DAC (optional)&lt;br /&gt;
* level converters for serial, USB and Ethernet&lt;br /&gt;
* 2 connector for accessing main signals&lt;br /&gt;
&lt;br /&gt;
===What is the DevLight board ?===&lt;br /&gt;
APF9328 boards were designed to be as small as possible and ready to be embedded on any systems. So an APF9328 is not usable alone. You should see it much more like a module you can plug in everywhere.&lt;br /&gt;
To develop for APF9328 boards you can either develop your own &amp;quot;motherboard&amp;quot; and plug the APF9328 into it or use the one we develop for our needs.&lt;br /&gt;
Currently only the DevLight board is available. It contains:&lt;br /&gt;
* a serial connector&lt;br /&gt;
* an USB connector&lt;br /&gt;
* an Ethernet connector&lt;br /&gt;
* a prototype zone to test your developments&lt;br /&gt;
* a DC power regulator&lt;br /&gt;
&lt;br /&gt;
A DevFull board is currently in production and will contain:&lt;br /&gt;
* an AC97 + touchscreen chip&lt;br /&gt;
* 4 more serial ports&lt;br /&gt;
* a MMC connector&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Are the Armadeus boards RoHS compliant ?===&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
==Software Questions==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:FrenchFlag.png]][[Fr:FAQ | Cette page en Français]]&lt;/div&gt;</summary>
		<author><name>SonZerro</name></author>
	</entry>
</feed>