<?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=FabienM</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=FabienM"/>
	<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Special:Contributions/FabienM"/>
	<updated>2026-11-04T15:24:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15370</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15370"/>
		<updated>2026-10-30T09:10:44Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Agilex5 is a FPGA mounted on Oposa5e_sp. This SoC is composed of hps processor core and FPGA logic zone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|Bridges HPS-FPGA|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) : 256b ACE5-Lite&lt;br /&gt;
* HPS-to-FPGA (H2F) : 32/64/128 bits AXI4 interface&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) : 32 bits AXI4 interface&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) : 256b/128b/64b AXI-4&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
2 bridges can be directly used from HPS to read/write access :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Bridge address&lt;br /&gt;
|-&lt;br /&gt;
! Bridge !! Offset !! size&lt;br /&gt;
|-&lt;br /&gt;
| HPS-to-FPGA (H2F) || 00_4000_0000 || 1 GB&lt;br /&gt;
|-&lt;br /&gt;
| Lightweight HPS-to-FPGA (LWH2F) || 00_2000_0000 ||512 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bridge must be activated before use with `bridge` command in [https://u-boot-project.org/ U-Boot] :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge -h&lt;br /&gt;
bridge - SoCFPGA HPS FPGA bridge control&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bridge enable [mask] - Enable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges &lt;br /&gt;
bridge disable [mask] - Disable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges&lt;br /&gt;
Bit 3, Bit 4 and Bit 5 bridges only available in Stratix 10&lt;br /&gt;
For example:&lt;br /&gt;
1) To enable and disable all bridges (command without mask):&lt;br /&gt;
	a) bridge enable&lt;br /&gt;
	b) bridge disable&lt;br /&gt;
2) To enable and disable HPS-to-FPGA and LWHPS-to-FPGA bridges (command with mask):&lt;br /&gt;
	a) bridge enable 0x3&lt;br /&gt;
	b) bridge disable 0x3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to activate the LWH2F bridge do :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge enable 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accesses can be done in U-Boot with `md.l` and `mw.l` commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # md.l 0x20010060 1  &lt;br /&gt;
20010060: 0000000e                             ....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15369</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15369"/>
		<updated>2026-10-30T09:07:30Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Agilex5 is a FPGA mounted on Oposa5e_sp. This SoC is composed of hps processor core and FPGA logic zone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|Bridges HPS-FPGA|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) : 256b ACE5-Lite&lt;br /&gt;
* HPS-to-FPGA (H2F) : 32/64/128 bits AXI4 interface&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) : 32 bits AXI4 interface&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) : 256b/128b/64b AXI-4&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
2 bridges can be directly used from HPS to read/write access :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Bridge address&lt;br /&gt;
|-&lt;br /&gt;
! Bridge !! Offset !! size&lt;br /&gt;
|-&lt;br /&gt;
| HPS-to-FPGA (H2F) || 00_4000_0000 || 1 GB&lt;br /&gt;
|-&lt;br /&gt;
| Lightweight HPS-to-FPGA (LWH2F) || 00_2000_0000 ||512 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bridge must be activated before use with `bridge` command in uboot :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge -h&lt;br /&gt;
bridge - SoCFPGA HPS FPGA bridge control&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bridge enable [mask] - Enable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges &lt;br /&gt;
bridge disable [mask] - Disable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges&lt;br /&gt;
Bit 3, Bit 4 and Bit 5 bridges only available in Stratix 10&lt;br /&gt;
For example:&lt;br /&gt;
1) To enable and disable all bridges (command without mask):&lt;br /&gt;
	a) bridge enable&lt;br /&gt;
	b) bridge disable&lt;br /&gt;
2) To enable and disable HPS-to-FPGA and LWHPS-to-FPGA bridges (command with mask):&lt;br /&gt;
	a) bridge enable 0x3&lt;br /&gt;
	b) bridge disable 0x3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to activate the LWH2F bridge do :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge enable 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15368</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15368"/>
		<updated>2026-10-30T09:07:04Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Agilex5 is a FPGA mounted on Oposa5e_sp. This SoC is composed of hps processor core and FPGA logic zone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|Bridges HPS-FPGA|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) : 256b ACE5-Lite&lt;br /&gt;
* HPS-to-FPGA (H2F) : 32/64/128 bits AXI4 interface&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) : 32 bits AXI4 interface&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) : 256b/128b/64b AXI-4&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
2 bridges can be directly used from HPS to read/write access :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Bridge address&lt;br /&gt;
|-&lt;br /&gt;
! Bridge !! Offset !! size&lt;br /&gt;
|-&lt;br /&gt;
| HPS-to-FPGA (H2F) || 00_4000_0000 || 1 GB&lt;br /&gt;
|-&lt;br /&gt;
| Lightweight HPS-to-FPGA (LWH2F) || 00_2000_0000 ||512 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bridge must be activated before use :&lt;br /&gt;
&lt;br /&gt;
* With `bridge` command in uboot :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge -h&lt;br /&gt;
bridge - SoCFPGA HPS FPGA bridge control&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bridge enable [mask] - Enable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges &lt;br /&gt;
bridge disable [mask] - Disable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges&lt;br /&gt;
Bit 3, Bit 4 and Bit 5 bridges only available in Stratix 10&lt;br /&gt;
For example:&lt;br /&gt;
1) To enable and disable all bridges (command without mask):&lt;br /&gt;
	a) bridge enable&lt;br /&gt;
	b) bridge disable&lt;br /&gt;
2) To enable and disable HPS-to-FPGA and LWHPS-to-FPGA bridges (command with mask):&lt;br /&gt;
	a) bridge enable 0x3&lt;br /&gt;
	b) bridge disable 0x3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to activate the LWH2F bridge do :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge enable 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15367</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15367"/>
		<updated>2026-10-30T08:59:46Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Agilex5 is a FPGA mounted on Oposa5e_sp. This SoC is composed of hps processor core and FPGA logic zone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|Bridges HPS-FPGA|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) : 256b ACE5-Lite&lt;br /&gt;
* HPS-to-FPGA (H2F) : 32/64/128 bits AXI4 interface&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) : 32 bits AXI4 interface&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) : 256b/128b/64b AXI-4&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
2 bridges can be directly used from HPS to read/write access :&lt;br /&gt;
&lt;br /&gt;
* HPS-to-FPGA (H2F) : 32/64/128 bits AXI4 interface&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) : 32 bits AXI4 interface&lt;br /&gt;
&lt;br /&gt;
Bridge must be activated before use :&lt;br /&gt;
&lt;br /&gt;
* With `bridge` command in uboot :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge -h&lt;br /&gt;
bridge - SoCFPGA HPS FPGA bridge control&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bridge enable [mask] - Enable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges &lt;br /&gt;
bridge disable [mask] - Disable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges&lt;br /&gt;
Bit 3, Bit 4 and Bit 5 bridges only available in Stratix 10&lt;br /&gt;
For example:&lt;br /&gt;
1) To enable and disable all bridges (command without mask):&lt;br /&gt;
	a) bridge enable&lt;br /&gt;
	b) bridge disable&lt;br /&gt;
2) To enable and disable HPS-to-FPGA and LWHPS-to-FPGA bridges (command with mask):&lt;br /&gt;
	a) bridge enable 0x3&lt;br /&gt;
	b) bridge disable 0x3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to activate the LWH2F bridge do :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge enable 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15366</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15366"/>
		<updated>2026-10-30T08:52:07Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Agilex5 is a FPGA mounted on Oposa5e_sp. This SoC is composed of hps processor core and FPGA logic zone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|Bridges HPS-FPGA|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) bridge&lt;br /&gt;
* HPS-to-FPGA (H2F) bridge&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) bridge&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) bridge&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
Bridge must be activated before use :&lt;br /&gt;
&lt;br /&gt;
* With `bridge` command in uboot :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge -h&lt;br /&gt;
bridge - SoCFPGA HPS FPGA bridge control&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bridge enable [mask] - Enable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges &lt;br /&gt;
bridge disable [mask] - Disable HPS-to-FPGA (Bit 0), LWHPS-to-FPGA (Bit 1), FPGA-to-HPS (Bit 2), F2SDRAM0 (Bit 3), F2SDRAM1 (Bit 4), F2SDRAM2 (Bit 5) bridges&lt;br /&gt;
Bit 3, Bit 4 and Bit 5 bridges only available in Stratix 10&lt;br /&gt;
For example:&lt;br /&gt;
1) To enable and disable all bridges (command without mask):&lt;br /&gt;
	a) bridge enable&lt;br /&gt;
	b) bridge disable&lt;br /&gt;
2) To enable and disable HPS-to-FPGA and LWHPS-to-FPGA bridges (command with mask):&lt;br /&gt;
	a) bridge enable 0x3&lt;br /&gt;
	b) bridge disable 0x3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to activate the LWH2F bridge do :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
OPOSA5E_SP # bridge enable 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15365</id>
		<title>File:Oposa5e sp agilex5 bridges.jpg</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15365"/>
		<updated>2026-10-30T08:28:44Z</updated>

		<summary type="html">&lt;p&gt;FabienM: FabienM uploaded a new version of File:Oposa5e sp agilex5 bridges.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15364</id>
		<title>File:Oposa5e sp agilex5 bridges.jpg</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15364"/>
		<updated>2026-10-30T08:26:14Z</updated>

		<summary type="html">&lt;p&gt;FabienM: FabienM uploaded a new version of File:Oposa5e sp agilex5 bridges.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15363</id>
		<title>File:Oposa5e sp agilex5 bridges.jpg</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Oposa5e_sp_agilex5_bridges.jpg&amp;diff=15363"/>
		<updated>2026-10-30T08:23:38Z</updated>

		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15362</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15362"/>
		<updated>2026-10-30T08:23:23Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[[File:oposa5e_sp_agilex5_bridges.jpg|caption]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are 4 bridges connecting the HPS to the FPGA portion of the Agilex5&lt;br /&gt;
&lt;br /&gt;
* FPGA-to-HPS (F2H) bridge&lt;br /&gt;
* HPS-to-FPGA (H2F) bridge&lt;br /&gt;
* Lightweight HPS-to-FPGA (LWH2F) bridge&lt;br /&gt;
* FPGA-to-SDRAM (F2SDRAM) bridge&lt;br /&gt;
&lt;br /&gt;
The full documentation is available on [https://docs.altera.com/r/docs/814346/26.1.1/hard-processor-system-technical-reference-manual-agilex-5-socs/bridges Altera website]&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15360</id>
		<title>FPGA registers access from Linux userspace on APF9328, APF27 SP, APF51 SP and OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15360"/>
		<updated>2026-10-22T09:11:11Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FPGA]]&lt;br /&gt;
[[Category: APF9328]]&lt;br /&gt;
[[Category: APF27]]&lt;br /&gt;
[[Category: APF51]]&lt;br /&gt;
[[Category: OPOS6UL_SP]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;APF9328, APF27, APF51 and OPOS6UL_SP&#039;&#039;&#039;, registers access are done with a memory bus (parallel).&lt;br /&gt;
Access through this bus can be made by two methods:&lt;br /&gt;
* Using &#039;&#039;fpgaregs&#039;&#039; tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning| With defaults wishbone wrappers, FPGA are configured for &#039;&#039;&#039;16 bits accesses&#039;&#039;&#039; for [[APF9328]], [[APF27]], [[APF51]] and [[OPOS6UL_SP]]. To make 32 bits access, (W)EIM bus configuration and HDL wrapper must be modified.}}&lt;br /&gt;
&lt;br /&gt;
== fpgaregs ==&lt;br /&gt;
===Installation===&lt;br /&gt;
If the fpgaregs package is not already installed on your APF (&#039;&#039;/usr/bin/fpgaregs&#039;&#039;), you can select it in the Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt; &lt;br /&gt;
    [*] Hardware handling / blockdevices and filesystem maintenance  ---&amp;gt; &lt;br /&gt;
         [*]   fpgaregs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reflash your rootfs or install it manually.&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fpgaregs&#039;&#039; can be used to do read or write accesses (16 or 32 bits wide) to the FPGA, from Linux userspace/console. &lt;br /&gt;
&lt;br /&gt;
====16 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;address&amp;gt; is an address relative to FPGA&#039;s mapping in hexadecimal value. Example:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====16 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;value&amp;gt; is hexadecimal value to write.&lt;br /&gt;
&lt;br /&gt;
====32 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== the mmap problem ==&lt;br /&gt;
&lt;br /&gt;
{{Note| This problem is corrected with latest Toolchains compilation options}}&lt;br /&gt;
&lt;br /&gt;
First of all, you need to get a file descriptor for &#039;&#039;/dev/mem&#039;&#039; using the &#039;&#039;open()&#039;&#039; function&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ffpga=open(&amp;quot;/dev/mem&amp;quot;,O_RDWR|O_SYNC);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now you have a valid file descriptor to access your FPGA.&lt;br /&gt;
&lt;br /&gt;
The O_SYNC option is recommended to avoid Linux to cache the content of /dev/mem and delay any modification done in this file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access fpga register, fpgaregs use the &#039;&#039;mmap()&#039;&#039; system call :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void * ptr_fpga;&lt;br /&gt;
ptr_fpga = mmap (0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, ffpga, FPGA_ADDRESS);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to this function, fpga registers are accessible directly on memory with pointer ptr_fpga. To read and write in 16bits or in 32 bits we will cast the pointer value in &#039;&#039;unsigned short&#039;&#039; or &#039;&#039;unsigned int&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned short*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned short*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;32 bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned int*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned int*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The problem ===&lt;br /&gt;
&lt;br /&gt;
By default, if the specific &#039;&#039;arm920t&#039;&#039; target is not specified, &#039;&#039;arm-linux-gcc&#039;&#039; will try to generate compatible read/write for all ARM9 model when it access register in 16bits. Indeed it seems that not all ARM9 have 16bits read/write capabilities (&#039;&#039;ldrh&#039;&#039; asm instruction).&lt;br /&gt;
&lt;br /&gt;
As the interface between i.MXL and FPGA on APF9328 has no 8bits read/write capabilities, each 8 bits access is recognized by the FPGA as a 16bits access. So on each 16bits access of the i.MXL, FPGA will process two 16bits access instead of 1. That is a problem when accessing a FIFO for example.&lt;br /&gt;
&lt;br /&gt;
To avoid this painful problem don&#039;t forget the &#039;&#039;-mcpu=arm920t&#039;&#039; option when compiling &#039;&#039;fpgaregs&#039;&#039; for APF9328 and &#039;&#039;-mcpu=arm926ej-s&#039;&#039; for APF27.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://sources.redhat.com/ml/crossgcc/2005-08/msg00120.html : Explanation of the problem.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15359</id>
		<title>FPGA registers access from Linux userspace on APF9328, APF27 SP, APF51 SP and OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15359"/>
		<updated>2026-10-22T09:10:47Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FPGA]]&lt;br /&gt;
[[Category: APF9328]]&lt;br /&gt;
[[Category: APF27]]&lt;br /&gt;
[[Category: APF51]]&lt;br /&gt;
[[Category: OPOS6UL_SP]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;APF9328, APF27, APF51 and OPOS6UL_SP&#039;&#039;&#039;, registers access are done with a memory bus (parallel).&lt;br /&gt;
Access through this bus can be made by two methods:&lt;br /&gt;
* Using &#039;&#039;fpgaregs&#039;&#039; tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning| With defaults wishbone wrappers, FPGA are configured for &#039;&#039;&#039;16 bits accesses&#039;&#039;&#039; for [[APF9328]], [[APF27]], [[APF51]] and [[OPOS6UL_SP]]. To make 32bits access, (W)EIM bus configuration and HDL wrappers must be modified.}}&lt;br /&gt;
&lt;br /&gt;
== fpgaregs ==&lt;br /&gt;
===Installation===&lt;br /&gt;
If the fpgaregs package is not already installed on your APF (&#039;&#039;/usr/bin/fpgaregs&#039;&#039;), you can select it in the Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt; &lt;br /&gt;
    [*] Hardware handling / blockdevices and filesystem maintenance  ---&amp;gt; &lt;br /&gt;
         [*]   fpgaregs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reflash your rootfs or install it manually.&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fpgaregs&#039;&#039; can be used to do read or write accesses (16 or 32 bits wide) to the FPGA, from Linux userspace/console. &lt;br /&gt;
&lt;br /&gt;
====16 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;address&amp;gt; is an address relative to FPGA&#039;s mapping in hexadecimal value. Example:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====16 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;value&amp;gt; is hexadecimal value to write.&lt;br /&gt;
&lt;br /&gt;
====32 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== the mmap problem ==&lt;br /&gt;
&lt;br /&gt;
{{Note| This problem is corrected with latest Toolchains compilation options}}&lt;br /&gt;
&lt;br /&gt;
First of all, you need to get a file descriptor for &#039;&#039;/dev/mem&#039;&#039; using the &#039;&#039;open()&#039;&#039; function&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ffpga=open(&amp;quot;/dev/mem&amp;quot;,O_RDWR|O_SYNC);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now you have a valid file descriptor to access your FPGA.&lt;br /&gt;
&lt;br /&gt;
The O_SYNC option is recommended to avoid Linux to cache the content of /dev/mem and delay any modification done in this file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access fpga register, fpgaregs use the &#039;&#039;mmap()&#039;&#039; system call :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void * ptr_fpga;&lt;br /&gt;
ptr_fpga = mmap (0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, ffpga, FPGA_ADDRESS);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to this function, fpga registers are accessible directly on memory with pointer ptr_fpga. To read and write in 16bits or in 32 bits we will cast the pointer value in &#039;&#039;unsigned short&#039;&#039; or &#039;&#039;unsigned int&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned short*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned short*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;32 bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned int*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned int*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The problem ===&lt;br /&gt;
&lt;br /&gt;
By default, if the specific &#039;&#039;arm920t&#039;&#039; target is not specified, &#039;&#039;arm-linux-gcc&#039;&#039; will try to generate compatible read/write for all ARM9 model when it access register in 16bits. Indeed it seems that not all ARM9 have 16bits read/write capabilities (&#039;&#039;ldrh&#039;&#039; asm instruction).&lt;br /&gt;
&lt;br /&gt;
As the interface between i.MXL and FPGA on APF9328 has no 8bits read/write capabilities, each 8 bits access is recognized by the FPGA as a 16bits access. So on each 16bits access of the i.MXL, FPGA will process two 16bits access instead of 1. That is a problem when accessing a FIFO for example.&lt;br /&gt;
&lt;br /&gt;
To avoid this painful problem don&#039;t forget the &#039;&#039;-mcpu=arm920t&#039;&#039; option when compiling &#039;&#039;fpgaregs&#039;&#039; for APF9328 and &#039;&#039;-mcpu=arm926ej-s&#039;&#039; for APF27.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://sources.redhat.com/ml/crossgcc/2005-08/msg00120.html : Explanation of the problem.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15358</id>
		<title>FPGA registers access from Linux userspace on APF9328, APF27 SP, APF51 SP and OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15358"/>
		<updated>2026-10-22T09:10:13Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FPGA]]&lt;br /&gt;
[[Category: APF9328]]&lt;br /&gt;
[[Category: APF27]]&lt;br /&gt;
[[Category: APF51]]&lt;br /&gt;
[[Category: OPOS6UL_SP]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;APF9328, APF27, APF51 and OPOS6UL_SP&#039;&#039;&#039;, registers access are done with a memory bus (parallel).&lt;br /&gt;
Access through this bus can be made by two methods:&lt;br /&gt;
* Using &#039;&#039;fpgaregs&#039;&#039; tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning| With defaults wishbone wrappers FPGA accesses are configured in &#039;&#039;&#039;16 bits accesses&#039;&#039;&#039; for [[APF9328]], [[APF27]], [[APF51]] and [[OPOS6UL_SP]]. To make 32bits access, (W)EIM bus configuration and HDL wrappers must be modified.}}&lt;br /&gt;
&lt;br /&gt;
== fpgaregs ==&lt;br /&gt;
===Installation===&lt;br /&gt;
If the fpgaregs package is not already installed on your APF (&#039;&#039;/usr/bin/fpgaregs&#039;&#039;), you can select it in the Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt; &lt;br /&gt;
    [*] Hardware handling / blockdevices and filesystem maintenance  ---&amp;gt; &lt;br /&gt;
         [*]   fpgaregs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reflash your rootfs or install it manually.&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fpgaregs&#039;&#039; can be used to do read or write accesses (16 or 32 bits wide) to the FPGA, from Linux userspace/console. &lt;br /&gt;
&lt;br /&gt;
====16 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;address&amp;gt; is an address relative to FPGA&#039;s mapping in hexadecimal value. Example:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====16 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;value&amp;gt; is hexadecimal value to write.&lt;br /&gt;
&lt;br /&gt;
====32 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== the mmap problem ==&lt;br /&gt;
&lt;br /&gt;
{{Note| This problem is corrected with latest Toolchains compilation options}}&lt;br /&gt;
&lt;br /&gt;
First of all, you need to get a file descriptor for &#039;&#039;/dev/mem&#039;&#039; using the &#039;&#039;open()&#039;&#039; function&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ffpga=open(&amp;quot;/dev/mem&amp;quot;,O_RDWR|O_SYNC);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now you have a valid file descriptor to access your FPGA.&lt;br /&gt;
&lt;br /&gt;
The O_SYNC option is recommended to avoid Linux to cache the content of /dev/mem and delay any modification done in this file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access fpga register, fpgaregs use the &#039;&#039;mmap()&#039;&#039; system call :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void * ptr_fpga;&lt;br /&gt;
ptr_fpga = mmap (0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, ffpga, FPGA_ADDRESS);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to this function, fpga registers are accessible directly on memory with pointer ptr_fpga. To read and write in 16bits or in 32 bits we will cast the pointer value in &#039;&#039;unsigned short&#039;&#039; or &#039;&#039;unsigned int&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned short*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned short*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;32 bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned int*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned int*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The problem ===&lt;br /&gt;
&lt;br /&gt;
By default, if the specific &#039;&#039;arm920t&#039;&#039; target is not specified, &#039;&#039;arm-linux-gcc&#039;&#039; will try to generate compatible read/write for all ARM9 model when it access register in 16bits. Indeed it seems that not all ARM9 have 16bits read/write capabilities (&#039;&#039;ldrh&#039;&#039; asm instruction).&lt;br /&gt;
&lt;br /&gt;
As the interface between i.MXL and FPGA on APF9328 has no 8bits read/write capabilities, each 8 bits access is recognized by the FPGA as a 16bits access. So on each 16bits access of the i.MXL, FPGA will process two 16bits access instead of 1. That is a problem when accessing a FIFO for example.&lt;br /&gt;
&lt;br /&gt;
To avoid this painful problem don&#039;t forget the &#039;&#039;-mcpu=arm920t&#039;&#039; option when compiling &#039;&#039;fpgaregs&#039;&#039; for APF9328 and &#039;&#039;-mcpu=arm926ej-s&#039;&#039; for APF27.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://sources.redhat.com/ml/crossgcc/2005-08/msg00120.html : Explanation of the problem.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15357</id>
		<title>FPGA registers access from Linux userspace on APF9328, APF27 SP, APF51 SP and OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP&amp;diff=15357"/>
		<updated>2026-10-22T09:09:28Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FPGA]]&lt;br /&gt;
[[Category: APF9328]]&lt;br /&gt;
[[Category: APF27]]&lt;br /&gt;
[[Category: APF51]]&lt;br /&gt;
[[Category: OPOS6UL_SP]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;APF9328, APF27, APF51 and OPOS6UL_SP&#039;&#039;&#039;, registers access are done with a memory bus (parallel).&lt;br /&gt;
Access through this bus can be made by two methods:&lt;br /&gt;
* Using &#039;&#039;fpgaregs&#039;&#039; tool&lt;br /&gt;
&lt;br /&gt;
{{Warning| With defaults wishbone wrappers FPGA accesses are configured for 16bits accesses for [[APF9328]], [[APF27]], [[APF51]] and [[OPOS6UL_SP]]. To make 32bits access, (W)EIM bus configuration and HDL wrappers must be modified.}}&lt;br /&gt;
&lt;br /&gt;
== fpgaregs ==&lt;br /&gt;
===Installation===&lt;br /&gt;
If the fpgaregs package is not already installed on your APF (&#039;&#039;/usr/bin/fpgaregs&#039;&#039;), you can select it in the Buildroot menuconfig:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;config&amp;quot;&amp;gt;&lt;br /&gt;
Package Selection for the target  ---&amp;gt; &lt;br /&gt;
    [*] Hardware handling / blockdevices and filesystem maintenance  ---&amp;gt; &lt;br /&gt;
         [*]   fpgaregs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reflash your rootfs or install it manually.&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fpgaregs&#039;&#039; can be used to do read or write accesses (16 or 32 bits wide) to the FPGA, from Linux userspace/console. &lt;br /&gt;
&lt;br /&gt;
====16 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;address&amp;gt; is an address relative to FPGA&#039;s mapping in hexadecimal value. Example:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====16 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs w &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;value&amp;gt; is hexadecimal value to write.&lt;br /&gt;
&lt;br /&gt;
====32 bits read====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bits write====&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# fpgaregs l &amp;lt;address&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== the mmap problem ==&lt;br /&gt;
&lt;br /&gt;
{{Note| This problem is corrected with latest Toolchains compilation options}}&lt;br /&gt;
&lt;br /&gt;
First of all, you need to get a file descriptor for &#039;&#039;/dev/mem&#039;&#039; using the &#039;&#039;open()&#039;&#039; function&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
ffpga=open(&amp;quot;/dev/mem&amp;quot;,O_RDWR|O_SYNC);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now you have a valid file descriptor to access your FPGA.&lt;br /&gt;
&lt;br /&gt;
The O_SYNC option is recommended to avoid Linux to cache the content of /dev/mem and delay any modification done in this file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access fpga register, fpgaregs use the &#039;&#039;mmap()&#039;&#039; system call :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void * ptr_fpga;&lt;br /&gt;
ptr_fpga = mmap (0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, ffpga, FPGA_ADDRESS);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to this function, fpga registers are accessible directly on memory with pointer ptr_fpga. To read and write in 16bits or in 32 bits we will cast the pointer value in &#039;&#039;unsigned short&#039;&#039; or &#039;&#039;unsigned int&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned short*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned short*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;32 bits&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;write&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
        *(unsigned int*)(ptr_fpga+(address)) = (unsigned short)value;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;read&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
          value = *(unsigned int*)(ptr_fpga+(address));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The problem ===&lt;br /&gt;
&lt;br /&gt;
By default, if the specific &#039;&#039;arm920t&#039;&#039; target is not specified, &#039;&#039;arm-linux-gcc&#039;&#039; will try to generate compatible read/write for all ARM9 model when it access register in 16bits. Indeed it seems that not all ARM9 have 16bits read/write capabilities (&#039;&#039;ldrh&#039;&#039; asm instruction).&lt;br /&gt;
&lt;br /&gt;
As the interface between i.MXL and FPGA on APF9328 has no 8bits read/write capabilities, each 8 bits access is recognized by the FPGA as a 16bits access. So on each 16bits access of the i.MXL, FPGA will process two 16bits access instead of 1. That is a problem when accessing a FIFO for example.&lt;br /&gt;
&lt;br /&gt;
To avoid this painful problem don&#039;t forget the &#039;&#039;-mcpu=arm920t&#039;&#039; option when compiling &#039;&#039;fpgaregs&#039;&#039; for APF9328 and &#039;&#039;-mcpu=arm926ej-s&#039;&#039; for APF27.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://sources.redhat.com/ml/crossgcc/2005-08/msg00120.html : Explanation of the problem.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP&amp;diff=15351</id>
		<title>OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP&amp;diff=15351"/>
		<updated>2026-10-14T08:44:48Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOS6UL_SP.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OPOS6UL_SP is a [https://en.wikipedia.org/wiki/Single-board_computer Single Board Computer] with a FPGA. This board is mainly pin-to-pin compatible with the APF27. The objective is to replace APF27 with minimum electronic and software refactoring.&lt;br /&gt;
&lt;br /&gt;
Here is a list of the main features:&lt;br /&gt;
* Processor: [https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-6-processors/i.mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL i.MX6ULL] (i.MX6ULL single A7 @ 800 or 900MHz)&lt;br /&gt;
* FPGA: [https://www.xilinx.com/products/silicon-devices/fpga/spartan-6.html Spartan6 LX9]&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Features list==&lt;br /&gt;
&lt;br /&gt;
* [[OPOS6UL_SP Linux kernel status]]&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 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;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* Spartan6 ([[OPOS6UL_SP_Interfaces_description | FPGA Interface description]])&lt;br /&gt;
&lt;br /&gt;
===Video===&lt;br /&gt;
====Video Out====&lt;br /&gt;
* [[LCD]]&lt;br /&gt;
* [[FrameBuffer]]&lt;br /&gt;
&lt;br /&gt;
====Video In====&lt;br /&gt;
*[[Camera interface]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Wired communication===&lt;br /&gt;
* [[Uart|UART]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
* [[USB_Host]]&lt;br /&gt;
* [[USB_Gadget]]&lt;br /&gt;
* [[USB_OTG]]&lt;br /&gt;
* [[CAN_bus_Linux_driver|CAN bus]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Storage===&lt;br /&gt;
&lt;br /&gt;
* [[EMMC OPOS6UL|eMMC]]&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* [[GPIOlib]]&lt;br /&gt;
* [[Linux_Dynamic_Frequency_Scaling|Frequency scaling]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Development boards==&lt;br /&gt;
* [[OPOS6UL_SPDev]]&lt;br /&gt;
* [[APF27Dev]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP&amp;diff=15350</id>
		<title>OPOS6UL SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP&amp;diff=15350"/>
		<updated>2026-10-14T08:44:31Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOS6UL_SP.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OPOS6UL_SP is a [https://en.wikipedia.org/wiki/Single-board_computer Single Board Computer] with a FPGA. This board is mainly pin-to-pin compatible with the APF27. The objective is to replace APF27 with minimum electronic and software refactoring.&lt;br /&gt;
&lt;br /&gt;
Here is a list of the main features:&lt;br /&gt;
* Processor: [https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-6-processors/i.mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL i.MX6ULL] (i.MX6ULL single A7 @ 800 or 900MHz)&lt;br /&gt;
* FPGA: [https://www.xilinx.com/products/silicon-devices/fpga/spartan-6.html Spartan6 LX9]&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Features list==&lt;br /&gt;
&lt;br /&gt;
* [[OPOS6UL_SP Linux kernel status]]&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 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;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOS6UL_SP_Interfaces_description | FPGA Interface description]]&lt;br /&gt;
&lt;br /&gt;
===Video===&lt;br /&gt;
====Video Out====&lt;br /&gt;
* [[LCD]]&lt;br /&gt;
* [[FrameBuffer]]&lt;br /&gt;
&lt;br /&gt;
====Video In====&lt;br /&gt;
*[[Camera interface]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Wired communication===&lt;br /&gt;
* [[Uart|UART]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[I2C]]&lt;br /&gt;
* [[USB_Host]]&lt;br /&gt;
* [[USB_Gadget]]&lt;br /&gt;
* [[USB_OTG]]&lt;br /&gt;
* [[CAN_bus_Linux_driver|CAN bus]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
===Storage===&lt;br /&gt;
&lt;br /&gt;
* [[EMMC OPOS6UL|eMMC]]&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* [[GPIOlib]]&lt;br /&gt;
* [[Linux_Dynamic_Frequency_Scaling|Frequency scaling]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Development boards==&lt;br /&gt;
* [[OPOS6UL_SPDev]]&lt;br /&gt;
* [[APF27Dev]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15342</id>
		<title>OPOSA5E SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15342"/>
		<updated>2026-07-30T08:06:08Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OPOSA5E_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Altera]]&lt;br /&gt;
[[Category:Agilex5]]&lt;br /&gt;
[[Category:FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOSA5E_SP_TOP.png]]&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/en/product-oposa5esp/index.html  OPOSA5E_SP] is a SoM structured arround an [https://www.altera.com/products/fpga/agilex/5 Agilex5] SoC produced by Altera.&lt;br /&gt;
&lt;br /&gt;
Here is a list of the main features:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOSA5E_SP_Interface_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:OPOSA5E_SP_TOP.png&amp;diff=15341</id>
		<title>File:OPOSA5E SP TOP.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:OPOSA5E_SP_TOP.png&amp;diff=15341"/>
		<updated>2026-07-30T08:05:27Z</updated>

		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15340</id>
		<title>OPOSA5E SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15340"/>
		<updated>2026-07-30T08:05:16Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OPOSA5E_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Altera]]&lt;br /&gt;
[[Category:Agilex5]]&lt;br /&gt;
[[Category:FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOSA5E_SP_TOP.png]]&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/en/product-oposa5esp/index.html  OPOSA5E_SP] is a SoM structured arround an [https://www.altera.com/products/fpga/agilex/5 Agilex5] SoC produced by Altera.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOSA5E_SP_Interface_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15339</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15339"/>
		<updated>2026-07-30T08:00:53Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* APFxx and OPOSxx Systems on Module (SoM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Armadeus Boards==&lt;br /&gt;
The following boards are developed by [http://www.armadeus.com Armadeus Systems].&amp;lt;br&amp;gt; Members of the Armadeus Project association can purchase these products at discount prices. Take a look at the [[Association]] page for details.&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 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;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== APFxx and OPOSxx Systems on Module (SoM) ===&lt;br /&gt;
* [[APF9328]]: i.MXL based module&lt;br /&gt;
* [[APF27]]: i.MX27 based module with Spartan3 FPGA&lt;br /&gt;
* [[APF51]]: i.MX51 based module with Spartan6 FPGA&lt;br /&gt;
* [[APF28]]: i.MX28 based module&lt;br /&gt;
* [[APF6]]: i.MX6 based module&lt;br /&gt;
* [[APF6_SP]] : i.MX6 based module with CycloneV FPGA&lt;br /&gt;
* [[OPOS6UL]] : i.MX6UL based module&lt;br /&gt;
* [[OPOS6UL_NANO]] : i.MX6UL based nano module&lt;br /&gt;
* [[OPOS6UL_SP]] : i.MX6ULL based module with a Spartan6 FPGA&lt;br /&gt;
* [[OPOS93]]: i.MX93 based module&lt;br /&gt;
* [[OPOS93_SP]]: i.MX93 based module with a Trion FPGA&lt;br /&gt;
* [[OPOSA5E_SP]]: Agilex5 based module with CPU (HPS) and FPGA included.&lt;br /&gt;
* [[Footprints]] : Footprint available for APFxx module&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Baseboards ===&lt;br /&gt;
* [[OPOS93SPDev]]: full featured development board for the OPOS93_SP&lt;br /&gt;
* [[OPOS93Dev]]: full featured development board for the OPOS93&lt;br /&gt;
* [[OPOS6ULDev used with an OPOS6UL_NANO]]: full featured development board of the [[OPOS6UL]], but used with an [[OPOS6UL_NANO]] SOM (needs a SODIMM adapter&lt;br /&gt;
* [[OPOS6ULDev]]: full featured development board for the [[OPOS6UL]]&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[APF9328DevLight]]: low cost development board for the APF9328&lt;br /&gt;
** [[APF9328DevFull]]: full featured development board for the APF9328&lt;br /&gt;
** [[APF6Dev]]: full featured development board for the APF6&lt;br /&gt;
** [[APF28Dev]]: full featured development board for the APF28&lt;br /&gt;
** [[APF51Dev]]: full featured development board for the APF51&lt;br /&gt;
** [[APF27Dev]]: full featured development board for the APF27 (with several options)&lt;br /&gt;
** [[APF27 PPS]]/PPS: network applications development board for the APF27&lt;br /&gt;
** [[PPS51]]: network applications development board for the APF51&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Extension Boards ===&lt;br /&gt;
* [[Chimei_LW700|LW700AT_Adapt]]: Adapter for the Chimei LW700 TFT LCD&lt;br /&gt;
* [[Wireless_extension_board|APW wireless board]]: Add WiFi &amp;amp; Bluetooth &amp;amp; GPS &amp;amp; GSM to your [[APF27Dev]]&lt;br /&gt;
* [[SP_VISION]]: Extension with Spartan6 FPGA, for video processing&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[LQ043_Adapt]]: Adapter for the Sharp LQ043 TFT LCD&lt;br /&gt;
** [[MTF-T035|MTF-T035_Adapt]]: Adapter for the Microtips MTF-T035 TFT LCD&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Demo Boards ===&lt;br /&gt;
* [[HMS Demo]]: industrial demo platform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [http://kicad-pcb.org/ Kicad EDA tool]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15336</id>
		<title>OPOSA5E SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15336"/>
		<updated>2026-07-28T12:36:29Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OPOSA5E_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Altera]]&lt;br /&gt;
[[Category:Agilex5]]&lt;br /&gt;
[[Category:FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/en/product-oposa5esp/index.html  OPOSA5E_SP] is a SoM structured arround an [https://www.altera.com/products/fpga/agilex/5 Agilex5] SoC produced by Altera.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOSA5E_SP_Interface_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15335</id>
		<title>OPOSA5E SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP&amp;diff=15335"/>
		<updated>2026-07-28T12:35:36Z</updated>

		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;Category:OPOSA5E_SP Category:MainBoards Category:Hardware Category:Altera Category:Agilex5 Category:FPGA   == Description ==   [https://www.opossom.com/en/product-oposa5esp/index.html  OPOSA5E_SP] is a SoM structured arround an [https://www.altera.com/products/fpga/agilex/5 Agilex5] SoC produced by Altera.  === FPGA ===  *  Interface description&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OPOSA5E_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Altera]]&lt;br /&gt;
[[Category:Agilex5]]&lt;br /&gt;
[[Category:FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/en/product-oposa5esp/index.html  OPOSA5E_SP] is a SoM structured arround an [https://www.altera.com/products/fpga/agilex/5 Agilex5] SoC produced by Altera.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOSA5E_SP_Interfaces_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15334</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15334"/>
		<updated>2026-07-28T12:31:30Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15333</id>
		<title>OPOSA5E SP Interface description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOSA5E_SP_Interface_description&amp;diff=15333"/>
		<updated>2026-07-28T12:30:02Z</updated>

		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;Category: OPOSA5E_SP Category: Agilex5 Category: FPGA  == Introduction ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOSA5E_SP]]&lt;br /&gt;
[[Category: Agilex5]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15332</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15332"/>
		<updated>2026-07-28T12:28:17Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&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;
=== FPGA Interfaces ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;APF9328&#039;&#039;&#039;: [[IMX9328-Spartan3 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF27&#039;&#039;&#039;: [[IMX27-Spartan3A interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF51&#039;&#039;&#039;: [[IMX51-Spartan6 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF6_SP&#039;&#039;&#039;: [[APF6_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS6UL_SP&#039;&#039;&#039;: [[OPOS6UL_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS93_SP&#039;&#039;&#039;: [[OPOS93_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOSA5E_SP&#039;&#039;&#039;: [[OPOSA5E_SP Interface description]]&lt;br /&gt;
&lt;br /&gt;
==== Accessing the FPGA address domain from Linux userspace ====&lt;br /&gt;
* [[FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP | APF9328, APF27_SP, APF51_SP and OPOS6UL_SP]]&lt;br /&gt;
* [[FPGA_registers_access_from_Linux_userspace_on_APF6_SP | APF6_SP]]&lt;br /&gt;
* [[FPGA_registers_access_from_Linux_userspace_on_OPOS93_SP | OPOS93_SP]]&lt;br /&gt;
&lt;br /&gt;
==== Accessing the FPGA address domain from Linux kernel ====&lt;br /&gt;
&lt;br /&gt;
* [[FPGA_registers_access_from_Linux_kernel_on_OPOS93_SP | OPOS93_SP]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== FPGA designing on Armadeus platforms ===&lt;br /&gt;
&lt;br /&gt;
These examples give the basis to make VHDL design for FPGA.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;APF9328&#039;&#039;&#039;, &#039;&#039;&#039;APF27&#039;&#039;&#039;, &#039;&#039;&#039;APF51&#039;&#039;&#039;, &#039;&#039;&#039;OPOS6UL_SP&#039;&#039;&#039;:&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;
*&#039;&#039;&#039;APF6_SP&#039;&#039;&#039;&lt;br /&gt;
** [[APF6_SP_FPGA_designing | FPGA designing]]&lt;br /&gt;
*&#039;&#039;&#039;OPOS93_SP&#039;&#039;&#039;&lt;br /&gt;
** [[OPOS93_SP_FPGA_designing | FPGA designing]]&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;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Configuring Armadeus platform&#039;s FPGA ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Platforms&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;APF9328&#039;&#039;&#039;, &#039;&#039;&#039;APF27&#039;&#039;&#039;, &#039;&#039;&#039;APF51&#039;&#039;&#039;, &#039;&#039;&#039;OPOS6UL_SP&#039;&#039;&#039;: [[APF9328_APF27_APF51_OPOS6UL_SP FPGA_configuration | Configure APF9328, APF27, APF51 or OPOS6UL_SP FPGA]]&lt;br /&gt;
* &#039;&#039;&#039;APF6_SP&#039;&#039;&#039;: [[APF6_SP_FPGA_configuration | Configure APF6_SP FPGA]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS93_SP&#039;&#039;&#039;: [[OPOS93_SP_FPGA_configuration | Configure OPOS93_SP FPGA]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[FPGA_loader | FPGA loader Linux driver]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&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;
&#039;&#039;&#039;Xilinx&#039;&#039;&#039;&lt;br /&gt;
* [[ISE WebPack and Vivado]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Altera&#039;&#039;&#039;&lt;br /&gt;
* [[Quartus | Quartus Prime (Altera/Intel&#039;s free devt tool)]]&lt;br /&gt;
* [[Modelsim-Altera | Install Modelsim-Altera (starter edition)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Efinix&#039;&#039;&#039;&lt;br /&gt;
* [[Efinity]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lattice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[IceCube | Install IceCube]]&lt;br /&gt;
* [[Diamond | Install Lattice Diamond]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsemi&#039;&#039;&#039;&lt;br /&gt;
* [http://www.fabienm.eu/flf/installing-libero-on-debian-9/ Install Libero]&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;
=== 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;
==== [[FuseSoC]] ====&lt;br /&gt;
FuseSoC is a builder written in Python used to automatize FPGA constructions&lt;br /&gt;
&lt;br /&gt;
==== CactusII ====&lt;br /&gt;
&lt;br /&gt;
[http://funbase.cs.tut.fi/ Graphical IDE] for managing FPGA/ASIC design with IPX-ACT standard.&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== HDL ===&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;
=== Verilog ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.veripool.org/wiki/verilator Verilator] an High speed verilog simulator&lt;br /&gt;
* [http://iverilog.icarus.com/ Icarus] Famous open-source verilog simulator&lt;br /&gt;
* [https://symbiyosys.readthedocs.io/en/latest/ SymbiYosys] open-source Verilog formal verification&lt;br /&gt;
&lt;br /&gt;
=== Synthesizable Synchronous HDL ===&lt;br /&gt;
==== [[Migen]] ====&lt;br /&gt;
&lt;br /&gt;
With migen, it&#039;s possible to develop FPGA design in Python then generate Verilog for synthezis.&lt;br /&gt;
&lt;br /&gt;
==== [[Chisel]] ====&lt;br /&gt;
With Chisel, it&#039;s possible to develop FPGA design in Scala then generate C++ model for simulation and Verilog model for synthesis. Armadeus system can help you to integrate a Chisel project on Armadeus board. &lt;br /&gt;
&lt;br /&gt;
==== [[SpinalHDL]] ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SpinalHDL/SpinalHDL Another HDL generator] (VHDL) written in Scala.&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;
===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; CycloneV&#039;&#039;&#039;&lt;br /&gt;
* [https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html CycloneV overview from altera]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; OpenSource &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.fabienm.eu/flf/wp-content/uploads/2017/05/fpgamap-1.svg OpenSource FPGA map]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=15331</id>
		<title>Network File System configuration</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Network_File_System_configuration&amp;diff=15331"/>
		<updated>2026-07-27T13:50:43Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Portmap/RPCbind */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
On this page, you will find usefull informations to configure NFS ([[wikipedia:Network_File_System_(protocol)|Network File System]]) on your Host and your Target.&lt;br /&gt;
&lt;br /&gt;
==NFS server on your development Host==&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
* On Fedora, NFS is part of your distribution so you normally don&#039;t need to install it.&lt;br /&gt;
* On Ubuntu/Kubuntu:&lt;br /&gt;
 $ sudo apt-get install nfs-kernel-server&lt;br /&gt;
* On OpenSUSE:&lt;br /&gt;
 $ sudo zypper install yast2-nfs-server&lt;br /&gt;
* On Gentoo: &lt;br /&gt;
 # emerge -av nfs-utils&lt;br /&gt;
&lt;br /&gt;
You can also take a look at the [https://wiki.gentoo.org/wiki/Nfs-utils gentoo wiki]&lt;br /&gt;
===Configuration===&lt;br /&gt;
====/etc/exports====&lt;br /&gt;
* You have to declare the directory where you&#039;re going to store the files you want to share accross the network. For that you have to modify the &#039;&#039;&#039;/etc/exports&#039;&#039;&#039; file with (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/exports&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add it (at the end of the file):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:In that case your Host will authorize all client from the subnet 192.168.*.* to access &#039;&#039;/local/export&#039;&#039; in &#039;&#039;&#039;read only&#039;&#039;&#039; mode. If you want read/write access from your APF to your exported dir, then replace &#039;&#039;ro&#039;&#039; with &#039;&#039;rw&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* In order to use the same folder through TFTP and NFS, using the default U-Boot scripts for example, it recommended to export your /tftpboot folder as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Directory for Armadeus:&lt;br /&gt;
/local/export     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
/tftpboot     192.168.0.0/255.255.255.0(ro,no_root_squash,sync)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* If not existing, create your export directory (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo mkdir -p /local/export&lt;br /&gt;
$ sudo chown -R $USER:$GROUP /local/export/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/etc/hosts====&lt;br /&gt;
* You have to declare your APF/OPOS board in the PC hosts list, to fully support NFS access from U-Boot. For such purpose you have to update the &#039;&#039;/etc/hosts&#039;&#039; file with your preferred editor (as root):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and add the IP address of your board after the localhost definition for example :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
192.168.0.10	apf&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Restart of NFS server====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Restart of NFS server depending on your distribution&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;On Fedora&#039;&#039;&#039; || &#039;&#039;&#039;On Ubuntu/Kubuntu/debian&#039;&#039;&#039;  || &#039;&#039;&#039;On OpenSUSE&#039;&#039;&#039; || &#039;&#039;&#039;On Gentoo&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and if not started then:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /sbin/service nfs start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ sudo /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Next time you boot, you can check your NFS server status with:&lt;br /&gt;
&#039;&#039;System Settings-&amp;gt;System services&#039;&#039;&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfsserver restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 # /etc/init.d/nfs restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NFS usage on your Armadeus board==&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition manually ===&lt;br /&gt;
* check if mount point is existing (for example we will take &#039;&#039;/mnt/nfs&#039;&#039;):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# ls /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if not existing, create the mount point:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mkdir -p /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount it (for example):&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount -t nfs 192.168.0.2:/local/export /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here 192.168.0.2 is your Host IP address and &#039;&#039;/local/export&#039;&#039; the name of your Host directory you want to mount.&lt;br /&gt;
&lt;br /&gt;
{{Note| On some nfs server (for exemple with debian wheezy) there is a warning when we mount nfs partition. But the filesystem is mounted :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount /mnt/nfs/&lt;br /&gt;
svc: failed to register lockdv1 RPC service (errno 97).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Mount the NFS partition automatically at each boot from FLASH===&lt;br /&gt;
&lt;br /&gt;
* login to your Armadeus board as root&lt;br /&gt;
* open the &#039;&#039;&#039;/etc/fstab&#039;&#039;&#039; file and add this line:&lt;br /&gt;
 &amp;lt;host-ip&amp;gt;:/&amp;lt;path-to-shared-folder&amp;gt; /mnt/&amp;lt;path-to-mount-folder&amp;gt; nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
example:&lt;br /&gt;
 192.168.0.2:/local/export /mnt/nfs nfs hard,intr,rsize=8192,wsize=8192 0 0&lt;br /&gt;
* check your modification:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # mount /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot your board&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* and enjoy the result&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # df&lt;br /&gt;
 # ls /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you have a problem, verify that the NFS server is running on the host:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Status of NFS server depending on your distribution&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;On Fedora&#039;&#039;&#039; || &#039;&#039;&#039;On Ubuntu/Kubuntu/debian&#039;&#039;&#039;  || &#039;&#039;&#039;On OpenSUSE&#039;&#039;&#039; || &#039;&#039;&#039;On Gentoo&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| &amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /sbin/service nfs status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||&amp;lt;pre class=&amp;quot;host&amp;quot;&amp;gt;&lt;br /&gt;
 $ /etc/init.d/nfs-kernel-server status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||  &lt;br /&gt;
&lt;br /&gt;
||  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Boot from NFS===&lt;br /&gt;
This boot procedure is usefull to test a modified rootfs and/or a linux kernel keeping safe the original flash memory content of your board.&lt;br /&gt;
* on your Host, expand generated rootfs image to your NFS export dir (for example if your NFS export dir is &#039;&#039;/tftpboot&#039;&#039; on your Host) and you want to boot on it using the U-Boot script nfsboot:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ make shell_env&lt;br /&gt;
 $ source armadeus_env.sh&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot&lt;br /&gt;
 $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /tftpboot/$ARMADEUS_BOARD_NAME-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The copy of the Linux kernel to the NFS &#039;&#039;/boot&#039;&#039; folder, makes possible to also download it with NFS when booting the board:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* With recent (3.10+) kernels, you also have to copy the Device Tree blobs:&lt;br /&gt;
&amp;lt;pre class=host&amp;gt;&lt;br /&gt;
 $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs&lt;br /&gt;
 $ sudo cp $ARMADEUS_BINARIES/*.dtb /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On your board, in U-Boot, check if the &#039;&#039;rootpath&#039;&#039; envt variable is set accordingly:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; printenv rootpath&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If not, then set it (by default U-boot is configured to use the following path &#039;&#039;/tftpboot/apfXXXX-root&#039;&#039;) where apfXXXX may be apf9328, apf27, apf28, apf51, apf6:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; setenv rootpath /tftpboot/${board_name}-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then boot with:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 BIOS&amp;gt; run nfsboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Summary of the required Packages:===&lt;br /&gt;
* portmap (Buildroot)&lt;br /&gt;
* nfs (busybox)&lt;br /&gt;
* nfs support (Linux, activated by default in Armadeus configuration)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===RPC: Program not registered===&lt;br /&gt;
* If &#039;&#039;nfsd&#039;&#039; and &#039;&#039;mountd&#039;&#039; daemons are not running on your Host, then you will get a message like:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: RPC: Program not registered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In that case, restart the NFS service on your Host (see [[Network_File_System_configuration#Restart_of_NFS_server|above]]).&lt;br /&gt;
&lt;br /&gt;
===Portmap/RPCbind===&lt;br /&gt;
* To successfully mount a NFS drive, &#039;&#039;portmap&#039;&#039;/&#039;&#039;rpcbind&#039;&#039; daemon should be running on your APF/OPOS, if not, system will hang during some minutes when you launch the mount !!&lt;br /&gt;
To check if &#039;&#039;portmap&#039;&#039;/&#039;&#039;rpcbind&#039;&#039; is running, look at the running processes:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
 # ps faux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If &#039;&#039;portmap/rpcbind&#039;&#039; is not listed, then launch it manually or install it:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&lt;br /&gt;
 # /etc/init.d/S13portmap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note: &#039;&#039;portmap&#039;&#039; is obsolete since 2017&lt;br /&gt;
&lt;br /&gt;
===Connection refused===&lt;br /&gt;
* If you get this on your APF when trying to mount:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount: mounting 192.168.0.2:/local/export on /mnt/nfs/ failed: Connection refused&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then your kernel might need some extra options:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
mount -o port=2049,nolock,proto=tcp 192.168.0.2:/local/export /mnt/nfs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== errno 111 ===&lt;br /&gt;
&lt;br /&gt;
* If you have &#039;&#039;errno 111&#039;&#039; error:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t nfs 192.168.0.152:/nfsroot /mnt/nfs&lt;br /&gt;
[10577.918887] svc: failed to register lockdv1 RPC service (errno 111).&lt;br /&gt;
[10577.925392] lockd_up: makesock failed, error=-111&lt;br /&gt;
mount: mounting 192.168.0.152:/nfsroot on /mnt/nfs failed: Connection refused&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*  then try version 4 of nfs:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t nfs -o vers=4 192.168.0.152:/nfsroot /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* or nolock option :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# mount -t nfs -o vers=3,nolock 192.168.0.152:/nfsroot /mnt/nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel debug===&lt;br /&gt;
* If none of the above workarounds was successful -&amp;gt; no luck ! :-) You can still activate NFS debugging by recompiling your kernel with CONFIG_SUNRPC_DEBUG options and use &#039;&#039;setenv extrabootargs nfsrootdebug&#039;&#039; in U-Boot. And then you dig...&lt;br /&gt;
&lt;br /&gt;
==NFS Server under Windows==&lt;br /&gt;
For those who want to use the NFS service on Windows, a small and FREE NFS server is available [http://www.freedownloadscenter.com/Utilities/Misc__Utilities/nfsAxe.html here].&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.8.&lt;br /&gt;
&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Quilt&amp;diff=15321</id>
		<title>Quilt</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Quilt&amp;diff=15321"/>
		<updated>2026-07-08T13:29:25Z</updated>

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

		<summary type="html">&lt;p&gt;FabienM: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_SP]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
[[Category: Spartan6]]&lt;br /&gt;
[[Category: ISE]]&lt;br /&gt;
[[Category: XILINX]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describe the bus interface communication between the i.MX6UL(L) and the spartan6. In i.MX6UL(L) the bus used to make communication with the FPGA is named &#039;&#039;&#039;EIM&#039;&#039;&#039; for &#039;&#039;&#039;E&#039;&#039;&#039;xternal &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;M&#039;&#039;&#039;odule. All description of this bus can be found under the i.MX6UL(L) [https://www.nxp.com/webapp/Download?colCode=IMX6ULRM reference manual] in chapter 21 (page 821).&lt;br /&gt;
&lt;br /&gt;
FPGA used on board is an &#039;&#039;&#039;XC6SLX9-2CSG225&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Simplified view ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOS6UL_SP_EIM_FPGA_INTERFACE.png|600px|center|thumb|&#039;&#039;&#039;figure 1&#039;&#039;&#039; - &#039;&#039;i.MX6UL(L)-Spartan6 bus description&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Normal communication between i.MX6UL(L) processor and Spartan6 fpga is done with black following signals :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_BCLK&#039;&#039;&#039; : Clock&lt;br /&gt;
* &#039;&#039;&#039;EIM_DA[15:0]&#039;&#039;&#039;: 16bits data and address bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_LBA (ADV)&#039;&#039;&#039;: Signal used for data/address muxing&lt;br /&gt;
* &#039;&#039;&#039;EIM_RW&#039;&#039;&#039;: Read/Write control signal&lt;br /&gt;
* &#039;&#039;&#039;EIM_CS0&#039;&#039;&#039;: Chip select&lt;br /&gt;
&lt;br /&gt;
Gray following signals can be used by EIM (External Interface Memory), but not used in default configuration :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB0&#039;&#039;&#039;: Select byte 0 on bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB1&#039;&#039;&#039;: Select byte 1 on bus&lt;br /&gt;
* &#039;&#039;&#039;OE&#039;&#039;&#039; : Output enable&lt;br /&gt;
* &#039;&#039;&#039;EIM_CLK0&#039;&#039;&#039;: second clock (EIM_ACLK)&lt;br /&gt;
&lt;br /&gt;
Blue following signals are used for FPGA configuration from imx. Some EIM (black) signals are also used for it.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FPGA_INITB&#039;&#039;&#039;: Initialize FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_PROGRAM&#039;&#039;&#039; : Program (configure) FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_DONE&#039;&#039;&#039;: FPGA configuration is done.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [[opos6ul_sp_fpga_simple_howto | Simple tutorial to make communication]]&lt;br /&gt;
== Default configuration on CSx ==&lt;br /&gt;
&lt;br /&gt;
=== Clocks ===&lt;br /&gt;
&lt;br /&gt;
The clock used to clock the FPGA is EIM_BCLK (IO_L1P_CCLK_2(N12) and IO_L29P_GCLK3_2(N8)) and is configured to &#039;&#039;&#039;99 MHz&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Chip Select ===&lt;br /&gt;
&lt;br /&gt;
The EIM memory space is mapped into 128 MB total memory space in the processor&lt;br /&gt;
memory. This memory space begin at address &#039;&#039;&#039;0x50000000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Size&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Name&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0x5000_0000&lt;br /&gt;
| 0x57FF_FFFF&lt;br /&gt;
| 128 MB&lt;br /&gt;
| EIM (NOR/SRAM)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total 128 MB of memory can be divided among the EIM four chip selects. See reference manual of i.MX6ULL for more information.&lt;br /&gt;
&lt;br /&gt;
=== Timings ===&lt;br /&gt;
&lt;br /&gt;
==== Read ====&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; md.w 50000000 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0......&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b RWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Write ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; mw.w 50000000 CAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16 0xCAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0.1...0&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b WWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== code &amp;amp; mapping ==&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
&lt;br /&gt;
Schematics interfaces is given here :&lt;br /&gt;
&lt;br /&gt;
[[File:Opos6ul_sp_sch_int.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UCF example for interface generated by [https://github.com/Martoni/periphondemand POD] is given here :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; LOC=&amp;quot;N8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; TNM_NET = &amp;quot;rstgen_syscon00_ext_clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_rstgen_syscon00_ext_clk&amp;quot; = PERIOD &amp;quot;rstgen_syscon00_ext_clk&amp;quot; 10.101 ns HIGH 50 %;&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;0&amp;gt;&amp;quot; LOC=&amp;quot;P11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_cs_n&amp;quot; LOC=&amp;quot;R11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_CS0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;1&amp;gt;&amp;quot; LOC=&amp;quot;M11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA1&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;2&amp;gt;&amp;quot; LOC=&amp;quot;N11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA2&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;10&amp;gt;&amp;quot; LOC=&amp;quot;R10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA10&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;11&amp;gt;&amp;quot; LOC=&amp;quot;L9&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA11&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;12&amp;gt;&amp;quot; LOC=&amp;quot;M10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA12&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;13&amp;gt;&amp;quot; LOC=&amp;quot;M8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA13&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;14&amp;gt;&amp;quot; LOC=&amp;quot;K8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA14&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;15&amp;gt;&amp;quot; LOC=&amp;quot;L8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA15&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_adv&amp;quot; LOC=&amp;quot;R7&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_LBA&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;7&amp;gt;&amp;quot; LOC=&amp;quot;N6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA7&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_rw&amp;quot; LOC=&amp;quot;R6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_RW&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;3&amp;gt;&amp;quot; LOC=&amp;quot;P5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA3&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;4&amp;gt;&amp;quot; LOC=&amp;quot;R5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA4&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;5&amp;gt;&amp;quot; LOC=&amp;quot;L6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA5&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;6&amp;gt;&amp;quot; LOC=&amp;quot;L5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA6&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;8&amp;gt;&amp;quot; LOC=&amp;quot;M5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA8&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;9&amp;gt;&amp;quot; LOC=&amp;quot;N5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA9&lt;br /&gt;
NET &amp;quot;irq_mngr00_gls_irq&amp;quot; LOC=&amp;quot;P3&amp;quot; | IOSTANDARD=LVCMOS33; # FPGA_INITB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== APF27 OPOS6UL_SP pin correspondance tables ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APF27      | J2 num | OPOS6UL_SP&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IO_L24P_1  |   22   | IO_L37P_M3DQ0_3&lt;br /&gt;
IO_L24N_1  |   23   | IO_L37N_M3DQ1_3&lt;br /&gt;
IO_L22P_1  |   24   | IO_L40N_M3DQ7_3&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IO_L02N_0  |   26   | IO_L2P_0&lt;br /&gt;
IO_L02P_0  |   27   | IO_L2N_0&lt;br /&gt;
IO_L04N_0  |   28   | IO_L4P_0&lt;br /&gt;
IO_L04P_0  |   29   | IO_L4N_0&lt;br /&gt;
IO_L03N_0  |   30   | IO_L6P_0&lt;br /&gt;
IO_L03P_0  |   31   | IO_L6N_0&lt;br /&gt;
IO_L08N_0  |   32   | IO_L33P_0&lt;br /&gt;
IO_L08P_0  |   33   | IO_L33N_0&lt;br /&gt;
IO_L10N_0  |   34   | IO_L35P_GCLK17_0&lt;br /&gt;
IO_L10P_0  |   35   | IO_L35N_GCLK16_0&lt;br /&gt;
IO_L12N_0  |   36   | IO_L37P_GCLK13_0&lt;br /&gt;
IO_L12P_0  |   37   | IO_L37N_GCLK12_0&lt;br /&gt;
IO_L15N_0  |   38   | IO_L63P_SCP7_0&lt;br /&gt;
IO_L15P_0  |   39   | IO_L63N_SCP6_0&lt;br /&gt;
IO_L18N_0  |   40   | IO_L65P_SCP3_0&lt;br /&gt;
IO_L18P_0  |   41   | IO_L65N_SCP2_0&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IO_L24P_3  |   43   | IO_L1P_A25_1&lt;br /&gt;
IO_L23P_3  |   44   | IO_L1N_A24_VREF_1&lt;br /&gt;
IO_L22N_3  |   45   | IO_L33P_A15_M1A10_1&lt;br /&gt;
IO_L20N_3  |   46   | IO_L33N_A14_M1A4_1&lt;br /&gt;
IO_L20P_3  |   47   | IO_L37P_A7_M1A0_1  &lt;br /&gt;
IO_L12P_3  |   48   | IO_L37N_A6_M1A1_1&lt;br /&gt;
IO_L15N_3  |   49   | IO_L39P_M1A3_1&lt;br /&gt;
IO_L14N_3  |   50   | IO_L39N_M1ODT_1&lt;br /&gt;
IO_L11N_3  |   51   | IO_L41P_GCLK9_IRDY1_M1RASN_1&lt;br /&gt;
IO_L08N_3  |   52   | IO_L41N_GCLK8_M1CASN_1&lt;br /&gt;
IO_L08P_3  |   53   | IO_L43P_GCLK5_M1DQ4_1&lt;br /&gt;
IO_L03N_3  |   54   | IO_L43N_GCLK4_M1DQ5_1&lt;br /&gt;
IO_L03P_3  |   55   | IO_L45P_A1_M1LDQS_1&lt;br /&gt;
IO_L01N_3  |   56   | IO_L45N_A0_M1LDQSN_1&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IO_L20N_1  |   99   | IO_L38P_M3DQ2_3&lt;br /&gt;
IO_L20P_1  |   98   | IO_L38N_M3DQ3_3&lt;br /&gt;
IO_L23N_1  |   97   | IO_L39P_M3LDQS_3&lt;br /&gt;
IO_L23P_1  |   96   | IO_L39N_M3LDQSN_3&lt;br /&gt;
IO_L22N_1  |   95   | IO_L40P_M3DQ6_3&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IO_L01N_0  |   91   | IO_L3P_0&lt;br /&gt;
IO_L01P_0  |   90   | IO_L3N_0   &lt;br /&gt;
IO_L07N_0  |   89   | IO_L5P_0_NOTLX4&lt;br /&gt;
IO_L07P_0  |   88   | IO_L5N_0_NOTLX4&lt;br /&gt;
IO_L09N_0  |   87   | IO_L7P_0_NOTLX4&lt;br /&gt;
IO_L09P_0  |   86   | IO_L7N_0_NOTLX4&lt;br /&gt;
IO_L11N_0  |   85   | IO_L34P_GCLK19_0&lt;br /&gt;
IO_L11P_0  |   84   | IO_L34N_GCLK18_0&lt;br /&gt;
IO_L16N_0  |   83   | IO_L36P_GCLK15_0 &lt;br /&gt;
IO_L16P_0  |   82   | IO_L36N_GCLK14_0&lt;br /&gt;
IO_L17N_0  |   81   | IO_L38P_0_NOTLX4&lt;br /&gt;
IO_L17P_0  |   80   | IO_L38N_VREF_0_NOTLX4&lt;br /&gt;
IO_L19N_0  |   79   | IO_L40P_0&lt;br /&gt;
IO_L19P_0  |   78   | IO_L40N_0&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
IP_L25N_3  |   75   | IO_L38P_A5_M1CLK_1&lt;br /&gt;
IO_L24N_3  |   74   | IO_L38N_A4_M1CLKN_1&lt;br /&gt;
IO_L23N_3  |   73   | IO_L40P_GCLK11_M1A5_1&lt;br /&gt;
IO_L22P_3  |   72   | IO_L40N_GCLK10_M1A6_1&lt;br /&gt;
IO_L12N_3  |   71   | IO_L42P_GCLK7_M1UDM_1&lt;br /&gt;
IO_L15P_3  |   70   | IO_L42N_GCLK6_TRDY1_M1LDM_1&lt;br /&gt;
IO_L14P_3  |   69   | IO_L44P_A3_M1DQ6_1&lt;br /&gt;
IO_L11P_3  |   68   | IO_L44N_A2_M1DQ7_1&lt;br /&gt;
IO_L04N_3  |   67   | IO_L46P_FCS_B_M1DQ2_1&lt;br /&gt;
IO_L02P_3  |   66   | IO_L46N_FOE_B_M1DQ3_1&lt;br /&gt;
IO_L02N_3  |   65   | IO_L47P_FWE_B_M1DQ0_1&lt;br /&gt;
IO_L01P_3  |   64   | IO_L47N_LDC_M1DQ1_1&lt;br /&gt;
-----------|--------|-----------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Simulation model ===&lt;br /&gt;
&lt;br /&gt;
Some simulation model has been written to test eim in VHDL and in python with cocotb.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
imx_read and imx_write simulation fonctions are included in POD (Peripheral On Demand) library. Available in [https://github.com/Martoni/pod_lib/blob/master/platforms/opos6ulsp/simulation/opos6ul_test_pkg.vhd platform/opos6ulsp] directory.&lt;br /&gt;
&lt;br /&gt;
==== Cocotb ====&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to simulate eim access with [https://cocotb.readthedocs.io/en/latest/introduction.html cocotb] module named [https://github.com/Martoni/cocotbext-imxeim cocotbext-imxeim].&lt;br /&gt;
&lt;br /&gt;
=== HDL bus wrapper ===&lt;br /&gt;
&lt;br /&gt;
Bus wrapper has been written in VHDL and chisel to convert EIM protocol to Wishbone bus protocol.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
A 16 bits multiplexed EIM to 16bits wishbone master bus is available in [https://github.com/Martoni/periphondemand POD] library. The VHDL sources are available following [https://github.com/Martoni/pod_lib/blob/master/library/wrappers/imx6ul_wb16_wrapper/hdl/imx6ul_wb16_wrapper.vhd this link].&lt;br /&gt;
&lt;br /&gt;
==== Chisel ====&lt;br /&gt;
&lt;br /&gt;
A chisel package is available in module [https://github.com/Martoni/ChisArmadeus chisArmadeus] to drive Wishbone master bus with EIM bus [https://github.com/Martoni/ChisArmadeus/blob/master/src/main/scala/chisarmadeus/op6sp/op6sp.scala here].&lt;br /&gt;
&lt;br /&gt;
=== FPGA Interrupt ===&lt;br /&gt;
&lt;br /&gt;
To generate an IRQ from the FPGA to the i.MX, the pin FPGA_INITB is used by default. It correspond to [[GPIOlib#Datasheet_GPIO_number_correspondance | GPIO4_IO16]] on i.MX.&lt;br /&gt;
&lt;br /&gt;
=== FPGA J2 connector mapping ===&lt;br /&gt;
&lt;br /&gt;
Mapping of FPGA pin is given in following [[op6spJ2pinout | csv file]].&lt;br /&gt;
&lt;br /&gt;
== FPGA configuration protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.nxp.com/docs/en/reference-manual/IMX6ULLRM.pdf i.MX6UL(L) reference manual] (PDF chapter 21 page 821)&lt;br /&gt;
* [https://www.nxp.com/docs/en/data-sheet/IMX6ULLIEC.pdf i.MX6UL(L) Datasheet] (PDF)&lt;br /&gt;
* [https://www.xilinx.com/support/documentation/user_guides/ug380.pdf Spartan6 configuration] (PDF)&lt;br /&gt;
* [https://github.com/Martoni/pod_lib/tree/master/platforms/opos6ulsp Peripheral On Demand configuration files]&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP_Interfaces_description&amp;diff=15305</id>
		<title>OPOS6UL SP Interfaces description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP_Interfaces_description&amp;diff=15305"/>
		<updated>2026-06-09T09:34:14Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_SP]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
[[Category: Spartan6]]&lt;br /&gt;
[[Category: ISE]]&lt;br /&gt;
[[Category: XILINX]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describe the bus interface communication between the i.MX6UL(L) and the spartan6. In i.MX6UL(L) the bus used to make communication with the FPGA is named &#039;&#039;&#039;EIM&#039;&#039;&#039; for &#039;&#039;&#039;E&#039;&#039;&#039;xternal &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;M&#039;&#039;&#039;odule. All description of this bus can be found under the i.MX6UL(L) [https://www.nxp.com/webapp/Download?colCode=IMX6ULRM reference manual] in chapter 21 (page 821).&lt;br /&gt;
&lt;br /&gt;
FPGA used on board is an &#039;&#039;&#039;XC6SLX9-2CSG225&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Simplified view ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOS6UL_SP_EIM_FPGA_INTERFACE.png|600px|center|thumb|&#039;&#039;&#039;figure 1&#039;&#039;&#039; - &#039;&#039;i.MX6UL(L)-Spartan6 bus description&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Normal communication between i.MX6UL(L) processor and Spartan6 fpga is done with black following signals :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_BCLK&#039;&#039;&#039; : Clock&lt;br /&gt;
* &#039;&#039;&#039;EIM_DA[15:0]&#039;&#039;&#039;: 16bits data and address bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_LBA (ADV)&#039;&#039;&#039;: Signal used for data/address muxing&lt;br /&gt;
* &#039;&#039;&#039;EIM_RW&#039;&#039;&#039;: Read/Write control signal&lt;br /&gt;
* &#039;&#039;&#039;EIM_CS0&#039;&#039;&#039;: Chip select&lt;br /&gt;
&lt;br /&gt;
Gray following signals can be used by EIM (External Interface Memory), but not used in default configuration :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB0&#039;&#039;&#039;: Select byte 0 on bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB1&#039;&#039;&#039;: Select byte 1 on bus&lt;br /&gt;
* &#039;&#039;&#039;OE&#039;&#039;&#039; : Output enable&lt;br /&gt;
* &#039;&#039;&#039;EIM_CLK0&#039;&#039;&#039;: second clock (EIM_ACLK)&lt;br /&gt;
&lt;br /&gt;
Blue following signals are used for FPGA configuration from imx. Some EIM (black) signals are also used for it.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FPGA_INITB&#039;&#039;&#039;: Initialize FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_PROGRAM&#039;&#039;&#039; : Program (configure) FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_DONE&#039;&#039;&#039;: FPGA configuration is done.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [[opos6ul_sp_fpga_simple_howto | Simple tutorial to make communication]]&lt;br /&gt;
== Default configuration on CSx ==&lt;br /&gt;
&lt;br /&gt;
=== Clocks ===&lt;br /&gt;
&lt;br /&gt;
The clock used to clock the FPGA is EIM_BCLK (IO_L1P_CCLK_2(N12) and IO_L29P_GCLK3_2(N8)) and is configured to &#039;&#039;&#039;99 MHz&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Chip Select ===&lt;br /&gt;
&lt;br /&gt;
The EIM memory space is mapped into 128 MB total memory space in the processor&lt;br /&gt;
memory. This memory space begin at address &#039;&#039;&#039;0x50000000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Size&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Name&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0x5000_0000&lt;br /&gt;
| 0x57FF_FFFF&lt;br /&gt;
| 128 MB&lt;br /&gt;
| EIM (NOR/SRAM)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total 128 MB of memory can be divided among the EIM four chip selects. See reference manual of i.MX6ULL for more information.&lt;br /&gt;
&lt;br /&gt;
=== Timings ===&lt;br /&gt;
&lt;br /&gt;
==== Read ====&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; md.w 50000000 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0......&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b RWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Write ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; mw.w 50000000 CAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16 0xCAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0.1...0&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b WWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== code &amp;amp; mapping ==&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
&lt;br /&gt;
Schematics interfaces is given here :&lt;br /&gt;
&lt;br /&gt;
[[File:Opos6ul_sp_sch_int.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UCF example for interface generated by [https://github.com/Martoni/periphondemand POD] is given here :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; LOC=&amp;quot;N8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; TNM_NET = &amp;quot;rstgen_syscon00_ext_clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_rstgen_syscon00_ext_clk&amp;quot; = PERIOD &amp;quot;rstgen_syscon00_ext_clk&amp;quot; 10.101 ns HIGH 50 %;&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;0&amp;gt;&amp;quot; LOC=&amp;quot;P11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_cs_n&amp;quot; LOC=&amp;quot;R11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_CS0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;1&amp;gt;&amp;quot; LOC=&amp;quot;M11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA1&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;2&amp;gt;&amp;quot; LOC=&amp;quot;N11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA2&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;10&amp;gt;&amp;quot; LOC=&amp;quot;R10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA10&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;11&amp;gt;&amp;quot; LOC=&amp;quot;L9&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA11&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;12&amp;gt;&amp;quot; LOC=&amp;quot;M10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA12&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;13&amp;gt;&amp;quot; LOC=&amp;quot;M8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA13&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;14&amp;gt;&amp;quot; LOC=&amp;quot;K8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA14&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;15&amp;gt;&amp;quot; LOC=&amp;quot;L8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA15&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_adv&amp;quot; LOC=&amp;quot;R7&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_LBA&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;7&amp;gt;&amp;quot; LOC=&amp;quot;N6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA7&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_rw&amp;quot; LOC=&amp;quot;R6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_RW&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;3&amp;gt;&amp;quot; LOC=&amp;quot;P5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA3&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;4&amp;gt;&amp;quot; LOC=&amp;quot;R5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA4&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;5&amp;gt;&amp;quot; LOC=&amp;quot;L6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA5&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;6&amp;gt;&amp;quot; LOC=&amp;quot;L5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA6&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;8&amp;gt;&amp;quot; LOC=&amp;quot;M5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA8&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;9&amp;gt;&amp;quot; LOC=&amp;quot;N5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA9&lt;br /&gt;
NET &amp;quot;irq_mngr00_gls_irq&amp;quot; LOC=&amp;quot;P3&amp;quot; | IOSTANDARD=LVCMOS33; # FPGA_INITB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- APF27 OPOS6UL_SP pin correspondance tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Simulation model ===&lt;br /&gt;
&lt;br /&gt;
Some simulation model has been written to test eim in VHDL and in python with cocotb.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
imx_read and imx_write simulation fonctions are included in POD (Peripheral On Demand) library. Available in [https://github.com/Martoni/pod_lib/blob/master/platforms/opos6ulsp/simulation/opos6ul_test_pkg.vhd platform/opos6ulsp] directory.&lt;br /&gt;
&lt;br /&gt;
==== Cocotb ====&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to simulate eim access with [https://cocotb.readthedocs.io/en/latest/introduction.html cocotb] module named [https://github.com/Martoni/cocotbext-imxeim cocotbext-imxeim].&lt;br /&gt;
&lt;br /&gt;
=== HDL bus wrapper ===&lt;br /&gt;
&lt;br /&gt;
Bus wrapper has been written in VHDL and chisel to convert EIM protocol to Wishbone bus protocol.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
A 16 bits multiplexed EIM to 16bits wishbone master bus is available in [https://github.com/Martoni/periphondemand POD] library. The VHDL sources are available following [https://github.com/Martoni/pod_lib/blob/master/library/wrappers/imx6ul_wb16_wrapper/hdl/imx6ul_wb16_wrapper.vhd this link].&lt;br /&gt;
&lt;br /&gt;
==== Chisel ====&lt;br /&gt;
&lt;br /&gt;
A chisel package is available in module [https://github.com/Martoni/ChisArmadeus chisArmadeus] to drive Wishbone master bus with EIM bus [https://github.com/Martoni/ChisArmadeus/blob/master/src/main/scala/chisarmadeus/op6sp/op6sp.scala here].&lt;br /&gt;
&lt;br /&gt;
=== FPGA Interrupt ===&lt;br /&gt;
&lt;br /&gt;
To generate an IRQ from the FPGA to the i.MX, the pin FPGA_INITB is used by default. It correspond to [[GPIOlib#Datasheet_GPIO_number_correspondance | GPIO4_IO16]] on i.MX.&lt;br /&gt;
&lt;br /&gt;
=== FPGA J2 connector mapping ===&lt;br /&gt;
&lt;br /&gt;
Mapping of FPGA pin is given in following [[op6spJ2pinout | csv file]].&lt;br /&gt;
&lt;br /&gt;
== FPGA configuration protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.nxp.com/docs/en/reference-manual/IMX6ULLRM.pdf i.MX6UL(L) reference manual] (PDF chapter 21 page 821)&lt;br /&gt;
* [https://www.nxp.com/docs/en/data-sheet/IMX6ULLIEC.pdf i.MX6UL(L) Datasheet] (PDF)&lt;br /&gt;
* [https://www.xilinx.com/support/documentation/user_guides/ug380.pdf Spartan6 configuration] (PDF)&lt;br /&gt;
* [https://github.com/Martoni/pod_lib/tree/master/platforms/opos6ulsp Peripheral On Demand configuration files]&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15180</id>
		<title>OPOS93 SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15180"/>
		<updated>2025-09-23T12:59:12Z</updated>

		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS93_SP]]&lt;br /&gt;
[[Category:MainBoards]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Efinix]]&lt;br /&gt;
[[Category:Trion]]&lt;br /&gt;
[[Category:FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/english/product-opos93sp/index.html  OPOS93SP] is a SoM derivated from [https://www.opossom.com/english/product-opos93sp/index.html  OPOS93] with a FPGA [https://www.efinixinc.com/shop/t20.php Trion T20] produced by Efinix.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOS93_SP_Interfaces_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15179</id>
		<title>OPOS93 SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15179"/>
		<updated>2025-09-23T12:57:40Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/english/product-opos93sp/index.html  OPOS93SP] is a SoM derivated from [https://www.opossom.com/english/product-opos93sp/index.html  OPOS93] with a FPGA [https://www.efinixinc.com/shop/t20.php Trion T20] produced by Efinix.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOS93_SP_Interfaces_description | Interface description]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15178</id>
		<title>OPOS93 SP</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP&amp;diff=15178"/>
		<updated>2025-09-23T12:57:27Z</updated>

		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;== Description ==   [https://www.opossom.com/english/product-opos93sp/index.html  OPOS93SP] is a SoM derivated from [https://www.opossom.com/english/product-opos93sp/index.html  OPOS93] with a FPGA [https://www.efinixinc.com/shop/t20.php Trion T20] produced by Efinix.  === FPGA ===  *  Trion T20&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.opossom.com/english/product-opos93sp/index.html  OPOS93SP] is a SoM derivated from [https://www.opossom.com/english/product-opos93sp/index.html  OPOS93] with a FPGA [https://www.efinixinc.com/shop/t20.php Trion T20] produced by Efinix.&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
&lt;br /&gt;
* [[OPOS93_SP_Interfaces_description | Trion T20]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15177</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15177"/>
		<updated>2025-09-23T12:47:25Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Baseboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Armadeus Boards==&lt;br /&gt;
The following boards are developed by [http://www.armadeus.com Armadeus Systems].&amp;lt;br&amp;gt; Members of the Armadeus Project association can purchase these products at discount prices. Take a look at the [[Association]] page for details.&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 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;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== APFxx and OPOSxx Systems on Module (SoM) ===&lt;br /&gt;
* [[APF9328]]: i.MXL based module&lt;br /&gt;
* [[APF27]]: i.MX27 based module with Spartan3 FPGA&lt;br /&gt;
* [[APF51]]: i.MX51 based module with Spartan6 FPGA&lt;br /&gt;
* [[APF28]]: i.MX28 based module&lt;br /&gt;
* [[APF6]]: i.MX6 based module&lt;br /&gt;
* [[APF6_SP]] : i.MX6 based module with CycloneV FPGA&lt;br /&gt;
* [[OPOS6UL]] : i.MX6UL based module&lt;br /&gt;
* [[OPOS6UL_NANO]] : i.MX6UL based nano module&lt;br /&gt;
* [[OPOS6UL_SP]] : i.MX6ULL based module with a Spartan6 FPGA&lt;br /&gt;
* [[OPOS93]]: i.MX93 based module&lt;br /&gt;
* [[OPOS93_SP]]: i.MX93 based module with a Trion FPGA&lt;br /&gt;
* [[Footprints]] : Footprint available for APFxx module&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Baseboards ===&lt;br /&gt;
* [[OPOS93SPDev]]: full featured development board for the OPOS93_SP&lt;br /&gt;
* [[OPOS93Dev]]: full featured development board for the OPOS93&lt;br /&gt;
* [[OPOS6ULDev used with an OPOS6UL_NANO]]: full featured development board of the [[OPOS6UL]], but used with an [[OPOS6UL_NANO]] SOM (needs a SODIMM adapter&lt;br /&gt;
* [[OPOS6ULDev]]: full featured development board for the [[OPOS6UL]]&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[APF9328DevLight]]: low cost development board for the APF9328&lt;br /&gt;
** [[APF9328DevFull]]: full featured development board for the APF9328&lt;br /&gt;
** [[APF6Dev]]: full featured development board for the APF6&lt;br /&gt;
** [[APF28Dev]]: full featured development board for the APF28&lt;br /&gt;
** [[APF51Dev]]: full featured development board for the APF51&lt;br /&gt;
** [[APF27Dev]]: full featured development board for the APF27 (with several options)&lt;br /&gt;
** [[APF27 PPS]]/PPS: network applications development board for the APF27&lt;br /&gt;
** [[PPS51]]: network applications development board for the APF51&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Extension Boards ===&lt;br /&gt;
* [[Chimei_LW700|LW700AT_Adapt]]: Adapter for the Chimei LW700 TFT LCD&lt;br /&gt;
* [[Wireless_extension_board|APW wireless board]]: Add WiFi &amp;amp; Bluetooth &amp;amp; GPS &amp;amp; GSM to your [[APF27Dev]]&lt;br /&gt;
* [[SP_VISION]]: Extension with Spartan6 FPGA, for video processing&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[LQ043_Adapt]]: Adapter for the Sharp LQ043 TFT LCD&lt;br /&gt;
** [[MTF-T035|MTF-T035_Adapt]]: Adapter for the Microtips MTF-T035 TFT LCD&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Demo Boards ===&lt;br /&gt;
* [[HMS Demo]]: industrial demo platform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [http://kicad-pcb.org/ Kicad EDA tool]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15176</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15176"/>
		<updated>2025-09-23T12:46:13Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Baseboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Armadeus Boards==&lt;br /&gt;
The following boards are developed by [http://www.armadeus.com Armadeus Systems].&amp;lt;br&amp;gt; Members of the Armadeus Project association can purchase these products at discount prices. Take a look at the [[Association]] page for details.&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 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;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== APFxx and OPOSxx Systems on Module (SoM) ===&lt;br /&gt;
* [[APF9328]]: i.MXL based module&lt;br /&gt;
* [[APF27]]: i.MX27 based module with Spartan3 FPGA&lt;br /&gt;
* [[APF51]]: i.MX51 based module with Spartan6 FPGA&lt;br /&gt;
* [[APF28]]: i.MX28 based module&lt;br /&gt;
* [[APF6]]: i.MX6 based module&lt;br /&gt;
* [[APF6_SP]] : i.MX6 based module with CycloneV FPGA&lt;br /&gt;
* [[OPOS6UL]] : i.MX6UL based module&lt;br /&gt;
* [[OPOS6UL_NANO]] : i.MX6UL based nano module&lt;br /&gt;
* [[OPOS6UL_SP]] : i.MX6ULL based module with a Spartan6 FPGA&lt;br /&gt;
* [[OPOS93]]: i.MX93 based module&lt;br /&gt;
* [[OPOS93_SP]]: i.MX93 based module with a Trion FPGA&lt;br /&gt;
* [[Footprints]] : Footprint available for APFxx module&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Baseboards ===&lt;br /&gt;
* [[OPOS6ULDev used with an OPOS6UL_NANO]]: full featured development board of the [[OPOS6UL]], but used with an [[OPOS6UL_NANO]] SOM (needs a SODIMM adapter&lt;br /&gt;
* [[OPOS6ULDev]]: full featured development board for the [[OPOS6UL]]&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[APF9328DevLight]]: low cost development board for the APF9328&lt;br /&gt;
** [[APF9328DevFull]]: full featured development board for the APF9328&lt;br /&gt;
** [[APF6Dev]]: full featured development board for the APF6&lt;br /&gt;
** [[APF28Dev]]: full featured development board for the APF28&lt;br /&gt;
** [[APF51Dev]]: full featured development board for the APF51&lt;br /&gt;
** [[APF27Dev]]: full featured development board for the APF27 (with several options)&lt;br /&gt;
** [[APF27 PPS]]/PPS: network applications development board for the APF27&lt;br /&gt;
** [[PPS51]]: network applications development board for the APF51&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Extension Boards ===&lt;br /&gt;
* [[Chimei_LW700|LW700AT_Adapt]]: Adapter for the Chimei LW700 TFT LCD&lt;br /&gt;
* [[Wireless_extension_board|APW wireless board]]: Add WiFi &amp;amp; Bluetooth &amp;amp; GPS &amp;amp; GSM to your [[APF27Dev]]&lt;br /&gt;
* [[SP_VISION]]: Extension with Spartan6 FPGA, for video processing&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[LQ043_Adapt]]: Adapter for the Sharp LQ043 TFT LCD&lt;br /&gt;
** [[MTF-T035|MTF-T035_Adapt]]: Adapter for the Microtips MTF-T035 TFT LCD&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Demo Boards ===&lt;br /&gt;
* [[HMS Demo]]: industrial demo platform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [http://kicad-pcb.org/ Kicad EDA tool]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15169</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Hardware&amp;diff=15169"/>
		<updated>2025-08-25T08:32:18Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* APFxx and OPOSxx Systems on Module (SoM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Armadeus Boards==&lt;br /&gt;
The following boards are developed by [http://www.armadeus.com Armadeus Systems].&amp;lt;br&amp;gt; Members of the Armadeus Project association can purchase these products at discount prices. Take a look at the [[Association]] page for details.&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 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;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
=== APFxx and OPOSxx Systems on Module (SoM) ===&lt;br /&gt;
* [[APF9328]]: i.MXL based module&lt;br /&gt;
* [[APF27]]: i.MX27 based module with Spartan3 FPGA&lt;br /&gt;
* [[APF51]]: i.MX51 based module with Spartan6 FPGA&lt;br /&gt;
* [[APF28]]: i.MX28 based module&lt;br /&gt;
* [[APF6]]: i.MX6 based module&lt;br /&gt;
* [[APF6_SP]] : i.MX6 based module with CycloneV FPGA&lt;br /&gt;
* [[OPOS6UL]] : i.MX6UL based module&lt;br /&gt;
* [[OPOS6UL_NANO]] : i.MX6UL based nano module&lt;br /&gt;
* [[OPOS6UL_SP]] : i.MX6ULL based module with a Spartan6 FPGA&lt;br /&gt;
* [[OPOS93]]: i.MX93 based module&lt;br /&gt;
* [[OPOS93_SP]]: i.MX93 based module with a Trion FPGA&lt;br /&gt;
* [[Footprints]] : Footprint available for APFxx module&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Baseboards ===&lt;br /&gt;
* [[OPOS6ULDev used with an OPOS6UL_NANO]]: full featured development board of the [[OPOS6UL]], but used with an [[OPOS6UL_NANO]] SOM (needs a SODIMM adapter&lt;br /&gt;
* [[OPOS6ULDev]]: full featured development board for the [[OPOS6UL]]&lt;br /&gt;
* [[APF6Dev]]: full featured development board for the APF6&lt;br /&gt;
* [[APF28Dev]]: full featured development board for the APF28&lt;br /&gt;
* [[APF51Dev]]: full featured development board for the APF51&lt;br /&gt;
* [[APF27Dev]]: full featured development board for the APF27 (with several options)&lt;br /&gt;
* [[APF27 PPS]]/PPS: network applications development board for the APF27&lt;br /&gt;
* [[PPS51]]: network applications development board for the APF51&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[APF9328DevLight]]: low cost development board for the APF9328&lt;br /&gt;
** [[APF9328DevFull]]: full featured development board for the APF9328&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Extension Boards ===&lt;br /&gt;
* [[Chimei_LW700|LW700AT_Adapt]]: Adapter for the Chimei LW700 TFT LCD&lt;br /&gt;
* [[Wireless_extension_board|APW wireless board]]: Add WiFi &amp;amp; Bluetooth &amp;amp; GPS &amp;amp; GSM to your [[APF27Dev]]&lt;br /&gt;
* [[SP_VISION]]: Extension with Spartan6 FPGA, for video processing&lt;br /&gt;
* No more available:&lt;br /&gt;
** [[LQ043_Adapt]]: Adapter for the Sharp LQ043 TFT LCD&lt;br /&gt;
** [[MTF-T035|MTF-T035_Adapt]]: Adapter for the Microtips MTF-T035 TFT LCD&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
=== Demo Boards ===&lt;br /&gt;
* [[HMS Demo]]: industrial demo platform&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [http://kicad-pcb.org/ Kicad EDA tool]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93&amp;diff=15168</id>
		<title>OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93&amp;diff=15168"/>
		<updated>2025-08-25T08:29:01Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS93]]&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The [https://www.opossom.com/english/product-opos93/index.html  OPOS93] is a high-end [https://en.wikipedia.org/wiki/Single-board_computer Single Board Computer] targeted for advanced GUI, intensive AI computation and extended connectivity.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93&amp;diff=15167</id>
		<title>OPOS93</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93&amp;diff=15167"/>
		<updated>2025-08-25T08:28:51Z</updated>

		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;Category: OPOS93  {{Under_Construction}}  ==Description==  The[https://www.opossom.com/english/product-opos93/index.html  OPOS93] is a high-end [https://en.wikipedia.org/wiki/Single-board_computer Single Board Computer] targeted for advanced GUI, intensive AI computation and extended connectivity.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS93]]&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The[https://www.opossom.com/english/product-opos93/index.html  OPOS93] is a high-end [https://en.wikipedia.org/wiki/Single-board_computer Single Board Computer] targeted for advanced GUI, intensive AI computation and extended connectivity.&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP_Interfaces_description&amp;diff=15165</id>
		<title>OPOS93 SP Interfaces description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP_Interfaces_description&amp;diff=15165"/>
		<updated>2025-04-10T06:09:10Z</updated>

		<summary type="html">&lt;p&gt;FabienM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS93_SP]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP_Interfaces_description&amp;diff=15164</id>
		<title>OPOS6UL SP Interfaces description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS6UL_SP_Interfaces_description&amp;diff=15164"/>
		<updated>2025-04-10T06:09:00Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS6UL_SP]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
[[Category: Spartan6]]&lt;br /&gt;
[[Category: ISE]]&lt;br /&gt;
[[Category: XILINX]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describe the bus interface communication between the i.MX6UL(L) and the spartan6. In i.MX6UL(L) the bus used to make communication with the FPGA is named &#039;&#039;&#039;EIM&#039;&#039;&#039; for &#039;&#039;&#039;E&#039;&#039;&#039;xternal &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;M&#039;&#039;&#039;odule. All description of this bus can be found under the i.MX6UL(L) [https://www.nxp.com/webapp/Download?colCode=IMX6ULRM reference manual] in chapter 21 (page 821).&lt;br /&gt;
&lt;br /&gt;
FPGA used on board is an &#039;&#039;&#039;XC6SLX9-2CSG225&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Simplified view ==&lt;br /&gt;
&lt;br /&gt;
[[File:OPOS6UL_SP_EIM_FPGA_INTERFACE.png|600px|center|thumb|&#039;&#039;&#039;figure 1&#039;&#039;&#039; - &#039;&#039;i.MX6UL(L)-Spartan6 bus description&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Normal communication between i.MX6UL(L) processor and Spartan6 fpga is done with black following signals :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_BCLK&#039;&#039;&#039; : Clock&lt;br /&gt;
* &#039;&#039;&#039;EIM_DA[15:0]&#039;&#039;&#039;: 16bits data and address bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_LBA (ADV)&#039;&#039;&#039;: Signal used for data/address muxing&lt;br /&gt;
* &#039;&#039;&#039;EIM_RW&#039;&#039;&#039;: Read/Write control signal&lt;br /&gt;
* &#039;&#039;&#039;EIM_CS0&#039;&#039;&#039;: Chip select&lt;br /&gt;
&lt;br /&gt;
Gray following signals can be used by EIM (External Interface Memory), but not used in default configuration :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB0&#039;&#039;&#039;: Select byte 0 on bus&lt;br /&gt;
* &#039;&#039;&#039;EIM_EB1&#039;&#039;&#039;: Select byte 1 on bus&lt;br /&gt;
* &#039;&#039;&#039;OE&#039;&#039;&#039; : Output enable&lt;br /&gt;
* &#039;&#039;&#039;EIM_CLK0&#039;&#039;&#039;: second clock (EIM_ACLK)&lt;br /&gt;
&lt;br /&gt;
Blue following signals are used for FPGA configuration from imx. Some EIM (black) signals are also used for it.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FPGA_INITB&#039;&#039;&#039;: Initialize FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_PROGRAM&#039;&#039;&#039; : Program (configure) FPGA&lt;br /&gt;
* &#039;&#039;&#039;FPGA_DONE&#039;&#039;&#039;: FPGA configuration is done.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [[opos6ul_sp_fpga_simple_howto | Simple tutorial to make communication]]&lt;br /&gt;
== Default configuration on CSx ==&lt;br /&gt;
&lt;br /&gt;
=== Clocks ===&lt;br /&gt;
&lt;br /&gt;
The clock used to clock the FPGA is EIM_BCLK (IO_L1P_CCLK_2(N12) and IO_L29P_GCLK3_2(N8)) and is configured to &#039;&#039;&#039;99 MHz&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Chip Select ===&lt;br /&gt;
&lt;br /&gt;
The EIM memory space is mapped into 128 MB total memory space in the processor&lt;br /&gt;
memory. This memory space begin at address &#039;&#039;&#039;0x50000000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End address&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Size&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Name&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0x5000_0000&lt;br /&gt;
| 0x57FF_FFFF&lt;br /&gt;
| 128 MB&lt;br /&gt;
| EIM (NOR/SRAM)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total 128 MB of memory can be divided among the EIM four chip selects. See reference manual of i.MX6ULL for more information.&lt;br /&gt;
&lt;br /&gt;
=== Timings ===&lt;br /&gt;
&lt;br /&gt;
==== Read ====&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; md.w 50000000 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To read one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0......&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b RWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Write ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* U-Boot: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
BIOS&amp;gt; mw.w 50000000 CAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Linux: To write one 16 bits value in 0 (0x50000000 in i.MX) do :&lt;br /&gt;
&amp;lt;pre class=&amp;quot;apf&amp;quot;&amp;gt;&lt;br /&gt;
# devmem 0x50000000 16 0xCAFE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Bus timings are following :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;wavedrom&amp;gt;&lt;br /&gt;
{ signal: [&lt;br /&gt;
  { name: &amp;quot;BCLK&amp;quot;,  wave: &amp;quot;P......&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;DA&amp;quot;,  wave: &amp;quot;x34...x&amp;quot;,   data: &amp;quot;addr data&amp;quot;, node:&amp;quot;..c...d.&amp;quot; },&lt;br /&gt;
  { name: &amp;quot;ADV&amp;quot;, wave: &amp;quot;101....&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;RW&amp;quot;, wave: &amp;quot;0.1...0&amp;quot;},&lt;br /&gt;
  { name: &amp;quot;CS0&amp;quot;, wave: &amp;quot;1.0...1&amp;quot;},&lt;br /&gt;
  {                               node:&amp;quot;..a...b.&amp;quot; }&lt;br /&gt;
],&lt;br /&gt;
  edge: [&#039;a&amp;lt;-|-&amp;gt;b WWSC=4&#039;, &#039;c-a&#039;, &#039;d-b&#039;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/wavedrom&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== code &amp;amp; mapping ==&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
&lt;br /&gt;
Schematics interfaces is given here :&lt;br /&gt;
&lt;br /&gt;
[[File:Opos6ul_sp_sch_int.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UCF example for interface generated by [https://github.com/Martoni/periphondemand POD] is given here :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; LOC=&amp;quot;N8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_BCLK&lt;br /&gt;
NET &amp;quot;rstgen_syscon00_ext_clk&amp;quot; TNM_NET = &amp;quot;rstgen_syscon00_ext_clk&amp;quot;;&lt;br /&gt;
TIMESPEC &amp;quot;TS_rstgen_syscon00_ext_clk&amp;quot; = PERIOD &amp;quot;rstgen_syscon00_ext_clk&amp;quot; 10.101 ns HIGH 50 %;&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;0&amp;gt;&amp;quot; LOC=&amp;quot;P11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_cs_n&amp;quot; LOC=&amp;quot;R11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_CS0&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;1&amp;gt;&amp;quot; LOC=&amp;quot;M11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA1&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;2&amp;gt;&amp;quot; LOC=&amp;quot;N11&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA2&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;10&amp;gt;&amp;quot; LOC=&amp;quot;R10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA10&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;11&amp;gt;&amp;quot; LOC=&amp;quot;L9&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA11&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;12&amp;gt;&amp;quot; LOC=&amp;quot;M10&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA12&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;13&amp;gt;&amp;quot; LOC=&amp;quot;M8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA13&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;14&amp;gt;&amp;quot; LOC=&amp;quot;K8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA14&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;15&amp;gt;&amp;quot; LOC=&amp;quot;L8&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA15&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_adv&amp;quot; LOC=&amp;quot;R7&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_LBA&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;7&amp;gt;&amp;quot; LOC=&amp;quot;N6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA7&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_rw&amp;quot; LOC=&amp;quot;R6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_RW&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;3&amp;gt;&amp;quot; LOC=&amp;quot;P5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA3&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;4&amp;gt;&amp;quot; LOC=&amp;quot;R5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA4&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;5&amp;gt;&amp;quot; LOC=&amp;quot;L6&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA5&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;6&amp;gt;&amp;quot; LOC=&amp;quot;L5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA6&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;8&amp;gt;&amp;quot; LOC=&amp;quot;M5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA8&lt;br /&gt;
NET &amp;quot;imx6ul_wb16_wrapper00_imx_da&amp;lt;9&amp;gt;&amp;quot; LOC=&amp;quot;N5&amp;quot; | IOSTANDARD=LVCMOS33; # EIM_DA9&lt;br /&gt;
NET &amp;quot;irq_mngr00_gls_irq&amp;quot; LOC=&amp;quot;P3&amp;quot; | IOSTANDARD=LVCMOS33; # FPGA_INITB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation model ===&lt;br /&gt;
&lt;br /&gt;
Some simulation model has been written to test eim in VHDL and in python with cocotb.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
imx_read and imx_write simulation fonctions are included in POD (Peripheral On Demand) library. Available in [https://github.com/Martoni/pod_lib/blob/master/platforms/opos6ulsp/simulation/opos6ul_test_pkg.vhd platform/opos6ulsp] directory.&lt;br /&gt;
&lt;br /&gt;
==== Cocotb ====&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to simulate eim access with [https://cocotb.readthedocs.io/en/latest/introduction.html cocotb] module named [https://github.com/Martoni/cocotbext-imxeim cocotbext-imxeim].&lt;br /&gt;
&lt;br /&gt;
=== HDL bus wrapper ===&lt;br /&gt;
&lt;br /&gt;
Bus wrapper has been written in VHDL and chisel to convert EIM protocol to Wishbone bus protocol.&lt;br /&gt;
&lt;br /&gt;
==== VHDL ====&lt;br /&gt;
&lt;br /&gt;
A 16 bits multiplexed EIM to 16bits wishbone master bus is available in [https://github.com/Martoni/periphondemand POD] library. The VHDL sources are available following [https://github.com/Martoni/pod_lib/blob/master/library/wrappers/imx6ul_wb16_wrapper/hdl/imx6ul_wb16_wrapper.vhd this link].&lt;br /&gt;
&lt;br /&gt;
==== Chisel ====&lt;br /&gt;
&lt;br /&gt;
A chisel package is available in module [https://github.com/Martoni/ChisArmadeus chisArmadeus] to drive Wishbone master bus with EIM bus [https://github.com/Martoni/ChisArmadeus/blob/master/src/main/scala/chisarmadeus/op6sp/op6sp.scala here].&lt;br /&gt;
&lt;br /&gt;
=== FPGA Interrupt ===&lt;br /&gt;
&lt;br /&gt;
To generate an IRQ from the FPGA to the i.MX, the pin FPGA_INITB is used by default. It correspond to [[GPIOlib#Datasheet_GPIO_number_correspondance | GPIO4_IO16]] on i.MX.&lt;br /&gt;
&lt;br /&gt;
=== FPGA J2 connector mapping ===&lt;br /&gt;
&lt;br /&gt;
Mapping of FPGA pin is given in following [[op6spJ2pinout | csv file]].&lt;br /&gt;
&lt;br /&gt;
== FPGA configuration protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.nxp.com/docs/en/reference-manual/IMX6ULLRM.pdf i.MX6UL(L) reference manual] (PDF chapter 21 page 821)&lt;br /&gt;
* [https://www.nxp.com/docs/en/data-sheet/IMX6ULLIEC.pdf i.MX6UL(L) Datasheet] (PDF)&lt;br /&gt;
* [https://www.xilinx.com/support/documentation/user_guides/ug380.pdf Spartan6 configuration] (PDF)&lt;br /&gt;
* [https://github.com/Martoni/pod_lib/tree/master/platforms/opos6ulsp Peripheral On Demand configuration files]&lt;br /&gt;
&lt;br /&gt;
[[Using_FPGA| &amp;lt;&amp;lt; FPGA general page]]&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP_Interfaces_description&amp;diff=15163</id>
		<title>OPOS93 SP Interfaces description</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=OPOS93_SP_Interfaces_description&amp;diff=15163"/>
		<updated>2025-04-10T06:08:40Z</updated>

		<summary type="html">&lt;p&gt;FabienM: Created page with &amp;quot;Category: OPOS93_SP Category: FPGA   {{Under_Construction}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: OPOS93_SP]]&lt;br /&gt;
[[Category: FPGA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Under_Construction}}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15162</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15162"/>
		<updated>2025-04-09T13:23:08Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* Developing on the APF FPGA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&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;
=== FPGA Interfaces ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;APF9328&#039;&#039;&#039;: [[IMX9328-Spartan3 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF27&#039;&#039;&#039;: [[IMX27-Spartan3A interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF51&#039;&#039;&#039;: [[IMX51-Spartan6 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF6_SP&#039;&#039;&#039;: [[APF6_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS6UL_SP&#039;&#039;&#039;: [[OPOS6UL_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS93_SP&#039;&#039;&#039;: [[OPOS93_SP Interfaces description]]&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 FPGA from Armadeus distribution.&lt;br /&gt;
&lt;br /&gt;
* Configure the FPGA [[FPGA_loader | from Linux]], [[Target_Software_Installation#FPGA_firmware_test | from U-Boot]], [[PCIe_fpga_load | from PCIe]].&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;
&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Design Tools===&lt;br /&gt;
Description of tools used to simulate, to synthesize, and to download/configure FGPA.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Xilinx&#039;&#039;&#039;&lt;br /&gt;
* [[ISE WebPack and Vivado]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Altera&#039;&#039;&#039;&lt;br /&gt;
* [[Quartus | Quartus Prime (Altera/Intel&#039;s free devt tool)]]&lt;br /&gt;
* [[Modelsim-Altera | Install Modelsim-Altera (starter edition)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lattice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[IceCube | Install IceCube]]&lt;br /&gt;
* [[Diamond | Install Lattice Diamond]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsemi&#039;&#039;&#039;&lt;br /&gt;
* [http://www.fabienm.eu/flf/installing-libero-on-debian-9/ Install Libero]&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;
=== 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;
==== [[FuseSoC]] ====&lt;br /&gt;
FuseSoC is a builder written in Python used to automatize FPGA constructions&lt;br /&gt;
&lt;br /&gt;
==== CactusII ====&lt;br /&gt;
&lt;br /&gt;
[http://funbase.cs.tut.fi/ Graphical IDE] for managing FPGA/ASIC design with IPX-ACT standard.&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== HDL ===&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;
=== Verilog ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.veripool.org/wiki/verilator Verilator] an High speed verilog simulator&lt;br /&gt;
* [http://iverilog.icarus.com/ Icarus] Famous open-source verilog simulator&lt;br /&gt;
* [https://symbiyosys.readthedocs.io/en/latest/ SymbiYosys] open-source Verilog formal verification&lt;br /&gt;
&lt;br /&gt;
=== Synthesizable Synchronous HDL ===&lt;br /&gt;
==== [[Migen]] ====&lt;br /&gt;
&lt;br /&gt;
With migen, it&#039;s possible to develop FPGA design in Python then generate Verilog for synthezis.&lt;br /&gt;
&lt;br /&gt;
==== [[Chisel]] ====&lt;br /&gt;
With Chisel, it&#039;s possible to develop FPGA design in Scala then generate C++ model for simulation and Verilog model for synthesis. Armadeus system can help you to integrate a Chisel project on Armadeus board. &lt;br /&gt;
&lt;br /&gt;
==== [[SpinalHDL]] ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SpinalHDL/SpinalHDL Another HDL generator] (VHDL) written in Scala.&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;
===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; CycloneV&#039;&#039;&#039;&lt;br /&gt;
* [https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html CycloneV overview from altera]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; OpenSource &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.fabienm.eu/flf/wp-content/uploads/2017/05/fpgamap-1.svg OpenSource FPGA map]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15161</id>
		<title>Using FPGA</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Using_FPGA&amp;diff=15161"/>
		<updated>2025-04-09T13:16:48Z</updated>

		<summary type="html">&lt;p&gt;FabienM: /* FPGA Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&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;
=== FPGA Interfaces ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;APF9328&#039;&#039;&#039;: [[IMX9328-Spartan3 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF27&#039;&#039;&#039;: [[IMX27-Spartan3A interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF51&#039;&#039;&#039;: [[IMX51-Spartan6 interface description]]&lt;br /&gt;
* &#039;&#039;&#039;APF6_SP&#039;&#039;&#039;: [[APF6_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS6UL_SP&#039;&#039;&#039;: [[OPOS6UL_SP Interfaces description]]&lt;br /&gt;
* &#039;&#039;&#039;OPOS93_SP&#039;&#039;: [[OPOS93_SP Interfaces description]]&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 FPGA from Armadeus distribution.&lt;br /&gt;
&lt;br /&gt;
* Configure the FPGA [[FPGA_loader | from Linux]], [[Target_Software_Installation#FPGA_firmware_test | from U-Boot]], [[PCIe_fpga_load | from PCIe]].&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;
&lt;br /&gt;
|----------------&lt;br /&gt;
|- style=&amp;quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 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;
=== Design Tools===&lt;br /&gt;
Description of tools used to simulate, to synthesize, and to download/configure FGPA.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Xilinx&#039;&#039;&#039;&lt;br /&gt;
* [[ISE WebPack and Vivado]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Altera&#039;&#039;&#039;&lt;br /&gt;
* [[Quartus | Quartus Prime (Altera/Intel&#039;s free devt tool)]]&lt;br /&gt;
* [[Modelsim-Altera | Install Modelsim-Altera (starter edition)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lattice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[IceCube | Install IceCube]]&lt;br /&gt;
* [[Diamond | Install Lattice Diamond]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsemi&#039;&#039;&#039;&lt;br /&gt;
* [http://www.fabienm.eu/flf/installing-libero-on-debian-9/ Install Libero]&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;
=== 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;
==== [[FuseSoC]] ====&lt;br /&gt;
FuseSoC is a builder written in Python used to automatize FPGA constructions&lt;br /&gt;
&lt;br /&gt;
==== CactusII ====&lt;br /&gt;
&lt;br /&gt;
[http://funbase.cs.tut.fi/ Graphical IDE] for managing FPGA/ASIC design with IPX-ACT standard.&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== HDL ===&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;
=== Verilog ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.veripool.org/wiki/verilator Verilator] an High speed verilog simulator&lt;br /&gt;
* [http://iverilog.icarus.com/ Icarus] Famous open-source verilog simulator&lt;br /&gt;
* [https://symbiyosys.readthedocs.io/en/latest/ SymbiYosys] open-source Verilog formal verification&lt;br /&gt;
&lt;br /&gt;
=== Synthesizable Synchronous HDL ===&lt;br /&gt;
==== [[Migen]] ====&lt;br /&gt;
&lt;br /&gt;
With migen, it&#039;s possible to develop FPGA design in Python then generate Verilog for synthezis.&lt;br /&gt;
&lt;br /&gt;
==== [[Chisel]] ====&lt;br /&gt;
With Chisel, it&#039;s possible to develop FPGA design in Scala then generate C++ model for simulation and Verilog model for synthesis. Armadeus system can help you to integrate a Chisel project on Armadeus board. &lt;br /&gt;
&lt;br /&gt;
==== [[SpinalHDL]] ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SpinalHDL/SpinalHDL Another HDL generator] (VHDL) written in Scala.&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;
===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; CycloneV&#039;&#039;&#039;&lt;br /&gt;
* [https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html CycloneV overview from altera]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; OpenSource &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.fabienm.eu/flf/wp-content/uploads/2017/05/fpgamap-1.svg OpenSource FPGA map]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FabienM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Armadeus_3&amp;diff=15108</id>
		<title>Armadeus 3</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Armadeus_3&amp;diff=15108"/>
		<updated>2022-06-30T12:12:18Z</updated>

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

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

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

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

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

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

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

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

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