<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.mediawiki.compulab.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita</id>
	<title>Compulab Mediawiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mediawiki.compulab.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita"/>
	<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Special:Contributions/Nikita"/>
	<updated>2026-04-30T09:04:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Testupload&amp;diff=3997</id>
		<title>Testupload</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Testupload&amp;diff=3997"/>
		<updated>2018-06-14T11:41:19Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a test article for the new upload system.&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
5&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3985</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3985"/>
		<updated>2018-05-22T06:47:12Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Example run */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and Preparations ==&lt;br /&gt;
This article provides a usage guide for the various FreeRTOS demo images that come with the CL-SOM-iMX7 BSP.&amp;lt;br&amp;gt;&lt;br /&gt;
To run a demo:&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the A7 core.&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the M4 core.&lt;br /&gt;
* Obtain an [[#SD-card media|SD-card]] formatted with a FAT or EXT filesystem.&lt;br /&gt;
* (optional) Install the [[#Linux installation|Linux BSP]].&lt;br /&gt;
&lt;br /&gt;
=== Serial connections ===&lt;br /&gt;
The FreeRTOS demos for CL-SOM-iMX7 were setup so that the M4 serial connection is set to the P4-31 (RX) and P4-33 (TX) pins on the carrier baseboard, using UART2.&lt;br /&gt;
The A7 core serial port is using UART1, and is located on the P8 connector of the carrier baseboard.&lt;br /&gt;
For more information about the A7 serial port, please see the [[SB-SOM: HOWTO: RS-232 Console|HOWTO: RS-232 Console]] article.&lt;br /&gt;
&lt;br /&gt;
To communicate with both the M4 and A7 cores using the serial interface, start a terminal emulation program (such as HyperTerminal) for each serial port, with the following port settings:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SD-card media ===&lt;br /&gt;
In this article, all the demos are loaded using U-Boot from a filesystem formatted SD-card.&lt;br /&gt;
The SD card must be FAT or EXT filesystems formatted.&lt;br /&gt;
For other methods of loading the demo images, see the [[#See also|See also section]].&lt;br /&gt;
&lt;br /&gt;
=== Linux installation ===&lt;br /&gt;
Some of the demos require a Linux installation.&lt;br /&gt;
In order to boot Linux alongside FreeRTOS, a special device tree blob must be used to prevent Linux and FreeRTOS from interfering with one another.&lt;br /&gt;
* Follow the automatic installation procedure in the [[#See also|see also]] section.&lt;br /&gt;
* Copy the precompiled {{filename|imx7d-sbc-imx7-m4.dtb}} device tree blob to the SD-card (or use your own modified dtb).&lt;br /&gt;
* Run the following commands to make sure that U-Boot {{cmd|boot}} command will load the special device tree blob:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtaddr 0x83000000&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtfile imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
CL-SOM-iMX7 # setenv loadfdt 'mmc rescan; load mmc 0 ${fdtaddr} ${fdtfile}'&lt;br /&gt;
CL-SOM-iMX7 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Demos usage examples ==&lt;br /&gt;
=== Blinking LED with GPT demo ===&lt;br /&gt;
The blinking GPT demo utilizes GPT to blink the CL-SOM-iMX7 LED at variable intervals.&lt;br /&gt;
The length of the interval can be changed by sending anykey presses into the M4 console.&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 blinking_imx_demo_gpt.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================= Blinking Demo ==================&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 100ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 200ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 300ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 400ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 500ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World demo ===&lt;br /&gt;
The various hello world demos simply output &amp;quot;Hello World!&amp;quot; on the M4 console, and echo any keypresses made by the user.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
* To run the hello_world application in TCM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 hello_world.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in DDR memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 9FF00000 hello_world_ddr.bin &amp;amp;&amp;amp; dcache flush; bootaux 9FF00000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in OCRAM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 910000 hello_world_ocram.bin &amp;amp;&amp;amp; dcache flush; bootaux 910000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
These words were typed by the user and echoed back!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rand WFI demo ===&lt;br /&gt;
In this demo a GPT will change the M4 Power Mode with random period.&lt;br /&gt;
The power mode changes do not happen until Linux boot is initiated.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot, and then boot linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rand_wfi_imx7d.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
...&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
 *          i.MX 7Dual Dual Core Low Power Demo - M4 side               *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 *        A GPT will change the M4 Power Mode with random period        *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
&lt;br /&gt;
Low Power Demo&lt;br /&gt;
********************************&lt;br /&gt;
Please wait :&lt;br /&gt;
    1) A7 peer is ready&lt;br /&gt;
Then press &amp;quot;S&amp;quot; to start the demo&lt;br /&gt;
********************************&lt;br /&gt;
&lt;br /&gt;
Press &amp;quot;S&amp;quot; to start the demo : s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 18s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 36s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 53s&lt;br /&gt;
GPT will triggle interrupt in 19s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 72s&lt;br /&gt;
GPT will triggle interrupt in 15s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 87s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 105s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 122s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 138s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SEMA4 demo ===&lt;br /&gt;
This demo demonstrates locking and unlocking of the SEMA4 lock.&lt;br /&gt;
The user can initiate locking manually or set M4 to lock the SEMA4 every 5 seconds.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 sema4_demo.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================== SEMA4 demo ==================&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
a&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RPMSG ping-pong demo ===&lt;br /&gt;
This demo demonstrates synchronization between the A7 and M4 cores by printing a series of messages, with an incrementing index, such that even messages are printed on one core, and odd messages on another core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver. It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initiate an edit of the kernel bootargs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # editenv bootargs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
...and append &amp;quot;mem=255M&amp;quot; to the end of the bootargs.&lt;br /&gt;
&lt;br /&gt;
Boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the below messages can be seen on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG PingPong Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After Linux finished booting, run the ping pong rpmsg driver.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_pingpong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With both A7 and M4 terminals side by side, the following output can be observed (A7 to the left, M4 to the right):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                        Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
get 1 (src: 0x0)                        Get Data From Master Side : 0&lt;br /&gt;
get 3 (src: 0x0)                        Get Data From Master Side : 2&lt;br /&gt;
get 5 (src: 0x0)                        Get Data From Master Side : 4&lt;br /&gt;
get 7 (src: 0x0)                        Get Data From Master Side : 6&lt;br /&gt;
get 9 (src: 0x0)                        Get Data From Master Side : 8&lt;br /&gt;
get 11 (src: 0x0)                       Get Data From Master Side : 10&lt;br /&gt;
...                                     ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial communication demo ===&lt;br /&gt;
This demo sets up a communication channel between the A7 and M4 cores, allowing the user to type characters from the A7 core, and make them appear on M4 core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver, and configure the serial tty connection between the cores.&lt;br /&gt;
It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initiate an edit of the kernel bootargs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # editenv bootargs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
...and append &amp;quot;mem=255M&amp;quot; to the end of the bootargs.&lt;br /&gt;
&lt;br /&gt;
Boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the following will appear on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG String Echo Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After booting into Linux, load the imx_rpmsg_tty driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_tty&lt;br /&gt;
imx_rpmsg_tty rpmsg0: new channel: 0x400 -&amp;gt; 0x0!&lt;br /&gt;
Install rpmsg tty driver!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A {{filename|/dev/ttyRPMSG}} device file will appear in Linux.&lt;br /&gt;
Configure it for serial communication using {{cmd|stty}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# stty -F /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send a message from Linux to M4 core:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# echo hello &amp;gt; /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get Message From Master Side : &amp;quot;hello&amp;quot; [len : 5]&lt;br /&gt;
Get New Line From Master Side&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC driver demo ===&lt;br /&gt;
The demo demonstrates the usage of the ADC driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 adc_imx7d_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------- ADC imx7d driver example --------------&lt;br /&gt;
&lt;br /&gt;
This example demonstrates usage of ADC driver on i.MX processor.&lt;br /&gt;
It Continuous convert Analog Input, and print the result to terminal &lt;br /&gt;
Current analog value: 1.33v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.29v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan loopback demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver, when the CAN bus is set to loopback mode.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_loopback_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN LOOPBACK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 13 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; LoopBack&lt;br /&gt;
*****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x6 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x7 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x8 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x9 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0xa &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan network demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver. It is designed to be paired with another M4 core, running a modified version of this demo.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
* Prepare 2 versions of the flexcan_network_example demo image, one configured for NODE1, and another configured for NODE2. Both variations can be found in the {{filename|images}} folder.&lt;br /&gt;
* Obtain another CL-SOM-iMX7 eval board and connect the two boards to the CAN Bus.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot on both devices:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example_nodeX.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After boot succeeds, the serial output of M4 will display the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN NETWORK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 8 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; Normal&lt;br /&gt;
****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NODE is 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After both modules loaded and booted the demo image, CAN bus communication between the boards will commence.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPIO driver. It is setup to toggle a GPIO on and off using key presses into the M4 serial connection. On CL-SOM-iMX7 the GPIO controls the CL-SOM-iMX7 LED.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpio_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses are not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
====================== GPIO Example ========================&lt;br /&gt;
&lt;br /&gt;
============ Use key to simulate GPIO button ==============&lt;br /&gt;
Input any data from terminal 3 times to continues.&lt;br /&gt;
&lt;br /&gt;
Button pressed 1 time. &lt;br /&gt;
Button pressed 2 time. &lt;br /&gt;
Button pressed 3 time. &lt;br /&gt;
&lt;br /&gt;
================= GPIO Functionality==================&lt;br /&gt;
The button state is now polled.&lt;br /&gt;
Press the button to switch LED on or off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point sending keypresses into the M4 terminal toggles the CL-SOM-iMX7 LED on and off.&lt;br /&gt;
&lt;br /&gt;
=== GPT driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPT driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPT timer will now start&lt;br /&gt;
counter/freq ratio should be close to 0.0 or 1.0 ...&lt;br /&gt;
	GPT A freq 6000000, counter 6.&lt;br /&gt;
	GPT B freq 49090907, counter 18.&lt;br /&gt;
	GPT A freq 6000000, counter 2.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 1.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 0.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
	GPT A freq 6000000, counter 6000000.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
GPT example finished...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UART driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the UART driver in both interrupt and polling modes of operation.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the interrupt driven version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_interrupt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the polling version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_polling_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for interrupt driven example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Interrupt Driven Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for polling driven example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Polling Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Watchdog driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 wdog_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3963</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3963"/>
		<updated>2018-04-10T13:22:16Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IssueCategory|Booting multiple images|&lt;br /&gt;
* Booting more than one FreeRTOS image in the same power-on session will likely not work, with only the first boot being successful. Occasionally, booting multiple images may result in a data abort.&lt;br /&gt;
:'''Workaround :''' Reset the module between image boots.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{IssueCategory|DRAM configuration support|&lt;br /&gt;
* The FreeRTOS images are that use RPMSG only work on 1GB DRAM configurations. This is caused by two factors: the location of the msg buffer has to be hardcoded in FreeRTOS images, and the Linux drivers don't have full freedom to choose the location of the msg buffer. The result is that both sides can only agree on the location of the msg buffer if the memory configuration is 1GB.&lt;br /&gt;
:'''Workaround :''' Update the location of RPMSG buffer in the FreeRTOS images by editing the values of '''VRING0_BASE''' and '''VRING1_BASE''' in ''middleware/multicore/open-amp/porting/imx7d_m4/platform_info.c'', and update the location of RPMSG buffer on the linux side by modifying '''rpmsg''' entry in the Linux device tree (''arch/arm/boot/dts/imx7d-sbc-imx7-m4.dts'').&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3964</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3964"/>
		<updated>2018-03-22T14:50:27Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Example run */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and Preparations ==&lt;br /&gt;
This article provides a usage guide for the various FreeRTOS demo images that come with the CL-SOM-iMX7 BSP.&amp;lt;br&amp;gt;&lt;br /&gt;
To run a demo:&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the A7 core.&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the M4 core.&lt;br /&gt;
* Obtain an [[#SD-card media|SD-card]] formatted with a FAT or EXT filesystem.&lt;br /&gt;
* (optional) Install the [[#Linux installation|Linux BSP]].&lt;br /&gt;
&lt;br /&gt;
=== Serial connections ===&lt;br /&gt;
The FreeRTOS demos for CL-SOM-iMX7 were setup so that the M4 serial connection is set to the P4-31 (RX) and P4-33 (TX) pins on the carrier baseboard, using UART2.&lt;br /&gt;
The A7 core serial port is using UART1, and is located on the P8 connector of the carrier baseboard.&lt;br /&gt;
For more information about the A7 serial port, please see the [[SB-SOM: HOWTO: RS-232 Console|HOWTO: RS-232 Console]] article.&lt;br /&gt;
&lt;br /&gt;
To communicate with both the M4 and A7 cores using the serial interface, start a terminal emulation program (such as HyperTerminal) for each serial port, with the following port settings:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SD-card media ===&lt;br /&gt;
In this article, all the demos are loaded using U-Boot from a filesystem formatted SD-card.&lt;br /&gt;
The SD card must be FAT or EXT filesystems formatted.&lt;br /&gt;
For other methods of loading the demo images, see the [[#See also|See also section]].&lt;br /&gt;
&lt;br /&gt;
=== Linux installation ===&lt;br /&gt;
Some of the demos require a Linux installation.&lt;br /&gt;
In order to boot Linux alongside FreeRTOS, a special device tree blob must be used to prevent Linux and FreeRTOS from interfering with one another.&lt;br /&gt;
* Follow the automatic installation procedure in the [[#See also|see also]] section.&lt;br /&gt;
* Copy the precompiled {{filename|imx7d-sbc-imx7-m4.dtb}} device tree blob to the SD-card (or use your own modified dtb).&lt;br /&gt;
* Run the following commands to make sure that U-Boot {{cmd|boot}} command will load the special device tree blob:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtaddr 0x83000000&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtfile imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
CL-SOM-iMX7 # setenv loadfdt 'mmc rescan; load mmc 0 ${fdtaddr} ${fdtfile}'&lt;br /&gt;
CL-SOM-iMX7 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Demos usage examples ==&lt;br /&gt;
=== Blinking LED with GPT demo ===&lt;br /&gt;
The blinking GPT demo utilizes GPT to blink the CL-SOM-iMX7 LED at variable intervals.&lt;br /&gt;
The length of the interval can be changed by sending anykey presses into the M4 console.&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 blinking_imx_demo_gpt.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================= Blinking Demo ==================&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 100ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 200ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 300ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 400ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 500ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World demo ===&lt;br /&gt;
The various hello world demos simply output &amp;quot;Hello World!&amp;quot; on the M4 console, and echo any keypresses made by the user.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
* To run the hello_world application in TCM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 hello_world.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in DDR memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 9FF00000 hello_world_ddr.bin &amp;amp;&amp;amp; dcache flush; bootaux 9FF00000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in OCRAM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 910000 hello_world_ocram.bin &amp;amp;&amp;amp; dcache flush; bootaux 910000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
These words were typed by the user and echoed back!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rand WFI demo ===&lt;br /&gt;
In this demo a GPT will change the M4 Power Mode with random period.&lt;br /&gt;
The power mode changes do not happen until Linux boot is initiated.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot, and then boot linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rand_wfi_imx7d.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
...&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
 *          i.MX 7Dual Dual Core Low Power Demo - M4 side               *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 *        A GPT will change the M4 Power Mode with random period        *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
&lt;br /&gt;
Low Power Demo&lt;br /&gt;
********************************&lt;br /&gt;
Please wait :&lt;br /&gt;
    1) A7 peer is ready&lt;br /&gt;
Then press &amp;quot;S&amp;quot; to start the demo&lt;br /&gt;
********************************&lt;br /&gt;
&lt;br /&gt;
Press &amp;quot;S&amp;quot; to start the demo : s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 18s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 36s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 53s&lt;br /&gt;
GPT will triggle interrupt in 19s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 72s&lt;br /&gt;
GPT will triggle interrupt in 15s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 87s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 105s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 122s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 138s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SEMA4 demo ===&lt;br /&gt;
This demo demonstrates locking and unlocking of the SEMA4 lock.&lt;br /&gt;
The user can initiate locking manually or set M4 to lock the SEMA4 every 5 seconds.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 sema4_demo.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================== SEMA4 demo ==================&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
a&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RPMSG ping-pong demo ===&lt;br /&gt;
This demo demonstrates synchronization between the A7 and M4 cores by printing a series of messages, with an incrementing index, such that even messages are printed on one core, and odd messages on another core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver. It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the below messages can be seen on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG PingPong Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After Linux finished booting, run the ping pong rpmsg driver.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_pingpong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With both A7 and M4 terminals side by side, the following output can be observed (A7 to the left, M4 to the right):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                        Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
get 1 (src: 0x0)                        Get Data From Master Side : 0&lt;br /&gt;
get 3 (src: 0x0)                        Get Data From Master Side : 2&lt;br /&gt;
get 5 (src: 0x0)                        Get Data From Master Side : 4&lt;br /&gt;
get 7 (src: 0x0)                        Get Data From Master Side : 6&lt;br /&gt;
get 9 (src: 0x0)                        Get Data From Master Side : 8&lt;br /&gt;
get 11 (src: 0x0)                       Get Data From Master Side : 10&lt;br /&gt;
...                                     ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial communication demo ===&lt;br /&gt;
This demo sets up a communication channel between the A7 and M4 cores, allowing the user to type characters from the A7 core, and make them appear on M4 core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver, and configure the serial tty connection between the cores.&lt;br /&gt;
It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the following will appear on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG String Echo Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After booting into Linux, load the imx_rpmsg_tty driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_tty&lt;br /&gt;
imx_rpmsg_tty rpmsg0: new channel: 0x400 -&amp;gt; 0x0!&lt;br /&gt;
Install rpmsg tty driver!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A {{filename|/dev/ttyRPMSG}} device file will appear in Linux.&lt;br /&gt;
Configure it for serial communication using {{cmd|stty}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# stty -F /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send a message from Linux to M4 core:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# echo hello &amp;gt; /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get Message From Master Side : &amp;quot;hello&amp;quot; [len : 5]&lt;br /&gt;
Get New Line From Master Side&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC driver demo ===&lt;br /&gt;
The demo demonstrates the usage of the ADC driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 adc_imx7d_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------- ADC imx7d driver example --------------&lt;br /&gt;
&lt;br /&gt;
This example demonstrates usage of ADC driver on i.MX processor.&lt;br /&gt;
It Continuous convert Analog Input, and print the result to terminal &lt;br /&gt;
Current analog value: 1.33v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.29v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan loopback demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver, when the CAN bus is set to loopback mode.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_loopback_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN LOOPBACK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 13 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; LoopBack&lt;br /&gt;
*****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x6 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x7 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x8 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x9 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0xa &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan network demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver. It is designed to be paired with another M4 core, running a modified version of this demo.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
* Prepare 2 versions of the flexcan_network_example demo image, one configured for NODE1, and another configured for NODE2. Both variations can be found in the {{filename|images}} folder.&lt;br /&gt;
* Obtain another CL-SOM-iMX7 eval board and connect the two boards to the CAN Bus.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot on both devices:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example_nodeX.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After boot succeeds, the serial output of M4 will display the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN NETWORK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 8 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; Normal&lt;br /&gt;
****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NODE is 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After both modules loaded and booted the demo image, CAN bus communication between the boards will commence.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPIO driver. It is setup to toggle a GPIO on and off using key presses into the M4 serial connection. On CL-SOM-iMX7 the GPIO controls the CL-SOM-iMX7 LED.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpio_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses are not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
====================== GPIO Example ========================&lt;br /&gt;
&lt;br /&gt;
============ Use key to simulate GPIO button ==============&lt;br /&gt;
Input any data from terminal 3 times to continues.&lt;br /&gt;
&lt;br /&gt;
Button pressed 1 time. &lt;br /&gt;
Button pressed 2 time. &lt;br /&gt;
Button pressed 3 time. &lt;br /&gt;
&lt;br /&gt;
================= GPIO Functionality==================&lt;br /&gt;
The button state is now polled.&lt;br /&gt;
Press the button to switch LED on or off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point sending keypresses into the M4 terminal toggles the CL-SOM-iMX7 LED on and off.&lt;br /&gt;
&lt;br /&gt;
=== GPT driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPT driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPT timer will now start&lt;br /&gt;
counter/freq ratio should be close to 0.0 or 1.0 ...&lt;br /&gt;
	GPT A freq 6000000, counter 6.&lt;br /&gt;
	GPT B freq 49090907, counter 18.&lt;br /&gt;
	GPT A freq 6000000, counter 2.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 1.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 0.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
	GPT A freq 6000000, counter 6000000.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
GPT example finished...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UART driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the UART driver in both interrupt and polling modes of operation.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the interrupt driven version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_interrupt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the polling version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_polling_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for interrupt driven example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Interrupt Driven Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for polling driven example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Polling Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Watchdog driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 wdog_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3965</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3965"/>
		<updated>2018-03-04T12:16:54Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Package contents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Package contents ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cl-som-imx-freertos/&lt;br /&gt;
├── freertos&lt;br /&gt;
│   └── freertos.tar.bz2&lt;br /&gt;
├── images&lt;br /&gt;
│   ├── adc_imx7d_example.bin&lt;br /&gt;
│   ├── blinking_imx_demo_gpt.bin&lt;br /&gt;
│   ├── flexcan_loopback_example.bin&lt;br /&gt;
│   ├── flexcan_network_example_node1.bin&lt;br /&gt;
│   ├── flexcan_network_example_node2.bin&lt;br /&gt;
│   ├── gpio_imx_example.bin&lt;br /&gt;
│   ├── gpt_example.bin&lt;br /&gt;
│   ├── hello_world.bin&lt;br /&gt;
│   ├── hello_world_ddr.bin&lt;br /&gt;
│   ├── hello_world_ocram.bin&lt;br /&gt;
│   ├── rand_wfi_imx7d.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_freertos_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_freertos_example.bin&lt;br /&gt;
│   ├── sema4_demo.bin&lt;br /&gt;
│   ├── uart_imx_interrupt_example.bin&lt;br /&gt;
│   ├── uart_imx_polling_example.bin&lt;br /&gt;
│   └── wdog_imx_example.bin&lt;br /&gt;
├── linux&lt;br /&gt;
│   ├── imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
│   └── imx7d-sbc-imx7-m4.dts&lt;br /&gt;
├── readme.txt&lt;br /&gt;
├── utilities&lt;br /&gt;
│   └── get_freertos_version.sh&lt;br /&gt;
└── version.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== version.txt ===&lt;br /&gt;
The contents of the {{filename|version.txt}} identifies the package version.&lt;br /&gt;
&lt;br /&gt;
=== readme.txt ===&lt;br /&gt;
A file describing the package.&lt;br /&gt;
&lt;br /&gt;
=== freertos ===&lt;br /&gt;
* {{filename|freertos.tar.bz2}} - Full source code of the FreeRTOS BSP from which the demo images in this release were compiled. Based on NXP's FreeRTOS BSP for iMX7.&lt;br /&gt;
&lt;br /&gt;
=== images ===&lt;br /&gt;
* {{filename|adc_imx7d_example.bin}} - Driver functionality example for adc driver.&lt;br /&gt;
* {{filename|blinking_imx_demo_gpt.bin}} - Example application demonstrating gpt + gpio functionality.&lt;br /&gt;
* {{filename|flexcan_loopback_example.bin}} - Driver functionality example for canbus driver in loopback mode.&lt;br /&gt;
* {{filename|flexcan_network_example_node1.bin}} - Driver functionality example for canbus driver with outbound network connection. Node 1 configuration.&lt;br /&gt;
* {{filename|flexcan_network_example_node2.bin}} - Driver functionality example for canbus driver with outbound network connection. Node 2 configuration.&lt;br /&gt;
* {{filename|gpio_imx_example.bin}} - Driver functionality example for gpio driver.&lt;br /&gt;
* {{filename|gpt_example.bin}} - Driver functionality example for gpt driver.&lt;br /&gt;
* {{filename|hello_world.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for TCM memory.&lt;br /&gt;
* {{filename|hello_world_ddr.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for DDR memory.&lt;br /&gt;
* {{filename|hello_world_ocram.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for OCRAM memory.&lt;br /&gt;
* {{filename|rand_wfi_imx7d.bin}} - Example application demonstrating GPT usage and changing of power modes on M4 core.&lt;br /&gt;
* {{filename|rpmsg_pingpong_bm_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_pingpong_freertos_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_bm_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_freertos_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|sema4_demo.bin}} - Example application demonstrating SEMA4 usage.&lt;br /&gt;
* {{filename|uart_imx_interrupt_example.bin}} - Driver functionality example for UART driver, using interrupt mode.&lt;br /&gt;
* {{filename|uart_imx_polling_example.bin}} - Driver functionality example for UART driver, using polling mode.&lt;br /&gt;
* {{filename|wdog_imx_example.bin}} - Driver functionality example for Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
=== linux ===&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dtb}} - Device tree blob for booting [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]] while M4 is running.&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dts}} - Source code for {{filename|imx7d-sbc-imx7-m4.dtb}}, meant to be used with the source code of the [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]].&lt;br /&gt;
&lt;br /&gt;
=== utilities ===&lt;br /&gt;
* {{filename|get_freertos_version.sh}} - A script for printing the FreeRTOS binary version.&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3875</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7 NXP i.MX7 FreeRTOS</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3875"/>
		<updated>2017-11-19T13:09:00Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{summary2|content=&lt;br /&gt;
This page contains links to information about FreeRTOS kernels, packages and software development for the CompuLab IOT-GATE-iMX7 and SBC-IOT-iMX7. CompuLab FreeRTOS support for IOT-GATE-iMX7 and SBC-IOT-iMX7 includes modifications of FreeRTOS kernel and example demos based on NXP FreeRTOS packages. IOT-GATE-iMX7 and SBC-IOT-iMX7 is provided with comprehensive documentation and full ready-to-run SW support for Linux operating system.&lt;br /&gt;
|image1=Iot-gate-imx7.png&lt;br /&gt;
|image2=Sbc-iot-imx7 single board computer.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Resources Linux&lt;br /&gt;
|* [[IOT-GATE-iMX7: Getting Started|IOT-GATE-iMX7: Getting Started]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Hardware Configuration|FreeRTOS Hardware Configuration]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Package contents|FreeRTOS package contents]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Running_Demos|Running FreeRTOS demo images]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Demos Usage Guide|FreeRTOS Demos Usage Guide]]&lt;br /&gt;
|* [[ Linux: Setting up a development environment | Setting up a development environment]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to NXP FreeRTOS development]]&lt;br /&gt;
|*[[Support]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Known Issues|Known Issues]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{ChangelogRss| content=&lt;br /&gt;
&lt;br /&gt;
===== 16-Jul-2017, CL-SOM-iMX7 FreeRTOS release 1.0 =====&lt;br /&gt;
: Initial release of FreeRTOS 8.0 for CL-SOM-iMX7 with 1G DRAM and higher&lt;br /&gt;
: - GPIO support&lt;br /&gt;
: - Flexcan support&lt;br /&gt;
: - UART support&lt;br /&gt;
: - I2C support&lt;br /&gt;
: - Open-AMP stack for rpmsg communication between the cores&lt;br /&gt;
: Documentation&lt;br /&gt;
: - Initial FreeRTOS documentation for IOT-GATE-iMX7 and SBC-IOT-iMX7 support&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3876</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Hardware Configuration</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3876"/>
		<updated>2017-11-19T13:08:19Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the default hardware configuration of FreeRTOS for IOT-GATE-iMX7 and SBC-IOT-iMX7.&lt;br /&gt;
&lt;br /&gt;
For more information see the board file {{filename|examples/cl_som_imx7_m4/board.h}} in the BSP source code and the pinmux config file {{filename|examples/cl_som_imx7_m4/pin_mux.c}}.&lt;br /&gt;
&lt;br /&gt;
== I/O pinout ==&lt;br /&gt;
FreeRTOS is setup to use UART2, CAN2, ADC1, I2C3, and GPIO6 signals with the following pinout:&lt;br /&gt;
&lt;br /&gt;
=== UART2 ===&lt;br /&gt;
* P7-12 (TX)&lt;br /&gt;
* P7-13 (RX)&lt;br /&gt;
These signals can be found on the embedded I/O connector.&lt;br /&gt;
&lt;br /&gt;
=== FlexCAN2 ===&lt;br /&gt;
* P1-15 (TX)&lt;br /&gt;
* P1-17 (RX)&lt;br /&gt;
These signals are not available for use via one of IOT-GATE-iMX7's connectors. A remuxing of the signals is required.&lt;br /&gt;
See [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to FreeRTOS development]] article for information on rebuilding FreeRTOS.&lt;br /&gt;
&lt;br /&gt;
=== ADC1 ===&lt;br /&gt;
* P1-167 (IN0)&lt;br /&gt;
* P1-169 (IN1)&lt;br /&gt;
* P1-173 (IN2)&lt;br /&gt;
* P1-175 (IN3)&lt;br /&gt;
These signals are not connected on IOT-GATE-iMX7. A remuxing of the signals is required.&lt;br /&gt;
See [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to FreeRTOS development]] article for information on rebuilding FreeRTOS.&lt;br /&gt;
&lt;br /&gt;
=== GPIO6 ===&lt;br /&gt;
* GPIO6_14 (LED control)&lt;br /&gt;
The LED is not exposed externally. A remuxing of the signal is recommended.&lt;br /&gt;
See [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to FreeRTOS development]] article for information on rebuilding FreeRTOS.&lt;br /&gt;
&lt;br /&gt;
=== I2C3 ===&lt;br /&gt;
* P1-43 (SCL)&lt;br /&gt;
* P1-49 (SDA)&lt;br /&gt;
These signals are not available for use via one of IOT-GATE-iMX7's connectors. A remuxing of the signals is required.&lt;br /&gt;
See [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to FreeRTOS development]] article for information on rebuilding FreeRTOS.&lt;br /&gt;
&lt;br /&gt;
== Internal systems ==&lt;br /&gt;
&lt;br /&gt;
=== GPT ===&lt;br /&gt;
FreeRTOS demos use GPT3 and GPT4.&lt;br /&gt;
&lt;br /&gt;
=== Watchdog ===&lt;br /&gt;
FreeRTOS demos use Watchdog3.&lt;br /&gt;
&lt;br /&gt;
=== MU ===&lt;br /&gt;
FreeRTOS works with messaging unit MU_B.&lt;br /&gt;
&lt;br /&gt;
=== RDC ===&lt;br /&gt;
FreeRTOS demos use RDC Domain 1.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3872</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3872"/>
		<updated>2017-11-18T20:00:30Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Undo revision 18837 by Nikita (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and Preparations ==&lt;br /&gt;
This article provides a usage guide for the various FreeRTOS demo images that come with the CL-SOM-iMX7 BSP.&amp;lt;br&amp;gt;&lt;br /&gt;
To run a demo:&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the A7 core.&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the M4 core.&lt;br /&gt;
* Obtain an [[#SD-card media|SD-card]] formatted with a FAT or EXT filesystem.&lt;br /&gt;
* (optional) Install the [[#Linux installation|Linux BSP]].&lt;br /&gt;
&lt;br /&gt;
=== Serial connections ===&lt;br /&gt;
The FreeRTOS demos for CL-SOM-iMX7 were setup so that the M4 serial connection is set to the P4-31 (RX) and P4-33 (TX) pins on the carrier baseboard, using UART2.&lt;br /&gt;
The A7 core serial port is using UART1, and is located on the P8 connector of the carrier baseboard.&lt;br /&gt;
For more information about the A7 serial port, please see the [[SB-SOM: HOWTO: RS-232 Console|HOWTO: RS-232 Console]] article.&lt;br /&gt;
&lt;br /&gt;
To communicate with both the M4 and A7 cores using the serial interface, start a terminal emulation program (such as HyperTerminal) for each serial port, with the following port settings:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SD-card media ===&lt;br /&gt;
In this article, all the demos are loaded using U-Boot from a filesystem formatted SD-card.&lt;br /&gt;
The SD card must be FAT or EXT filesystems formatted.&lt;br /&gt;
For other methods of loading the demo images, see the [[#See also|See also section]].&lt;br /&gt;
&lt;br /&gt;
=== Linux installation ===&lt;br /&gt;
Some of the demos require a Linux installation.&lt;br /&gt;
In order to boot Linux alongside FreeRTOS, a special device tree blob must be used to prevent Linux and FreeRTOS from interfering with one another.&lt;br /&gt;
* Follow the automatic installation procedure in the [[#See also|see also]] section.&lt;br /&gt;
* Copy the precompiled {{filename|imx7d-sbc-imx7-m4.dtb}} device tree blob to the SD-card (or use your own modified dtb).&lt;br /&gt;
* Run the following commands to make sure that U-Boot {{cmd|boot}} command will load the special device tree blob:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtaddr 0x83000000&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtfile imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
CL-SOM-iMX7 # setenv loadfdt 'mmc rescan; load mmc 0 ${fdtaddr} ${fdtfile}'&lt;br /&gt;
CL-SOM-iMX7 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Demos usage examples ==&lt;br /&gt;
=== Blinking LED with GPT demo ===&lt;br /&gt;
The blinking GPT demo utilizes GPT to blink the CL-SOM-iMX7 LED at variable intervals.&lt;br /&gt;
The length of the interval can be changed by sending anykey presses into the M4 console.&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 blinking_imx_demo_gpt.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================= Blinking Demo ==================&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 100ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 200ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 300ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 400ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 500ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World demo ===&lt;br /&gt;
The various hello world demos simply output &amp;quot;Hello World!&amp;quot; on the M4 console, and echo any keypresses made by the user.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
* To run the hello_world application in TCM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 hello_world.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in DDR memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 9FF00000 hello_world_ddr.bin &amp;amp;&amp;amp; dcache flush; bootaux 9FF00000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in OCRAM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 910000 hello_world_ocram.bin &amp;amp;&amp;amp; dcache flush; bootaux 910000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
These words were typed by the user and echoed back!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rand WFI demo ===&lt;br /&gt;
In this demo a GPT will change the M4 Power Mode with random period.&lt;br /&gt;
The power mode changes do not happen until Linux boot is initiated.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot, and then boot linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rand_wfi_imx7d.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
...&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
 *          i.MX 7Dual Dual Core Low Power Demo - M4 side               *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 *        A GPT will change the M4 Power Mode with random period        *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
&lt;br /&gt;
Low Power Demo&lt;br /&gt;
********************************&lt;br /&gt;
Please wait :&lt;br /&gt;
    1) A7 peer is ready&lt;br /&gt;
Then press &amp;quot;S&amp;quot; to start the demo&lt;br /&gt;
********************************&lt;br /&gt;
&lt;br /&gt;
Press &amp;quot;S&amp;quot; to start the demo : s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 18s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 36s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 53s&lt;br /&gt;
GPT will triggle interrupt in 19s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 72s&lt;br /&gt;
GPT will triggle interrupt in 15s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 87s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 105s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 122s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 138s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SEMA4 demo ===&lt;br /&gt;
This demo demonstrates locking and unlocking of the SEMA4 lock.&lt;br /&gt;
The user can initiate locking manually or set M4 to lock the SEMA4 every 5 seconds.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 sema4_demo.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================== SEMA4 demo ==================&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
a&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RPMSG ping-pong demo ===&lt;br /&gt;
This demo demonstrates synchronization between the A7 and M4 cores by printing a series of messages, with an incrementing index, such that even messages are printed on one core, and odd messages on another core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver. It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the below messages can be seen on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG PingPong Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After Linux finished booting, run the ping pong rpmsg driver.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_pingpong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With both A7 and M4 terminals side by side, the following output can be observed (A7 to the left, M4 to the right):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                        Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
get 1 (src: 0x0)                        Get Data From Master Side : 0&lt;br /&gt;
get 3 (src: 0x0)                        Get Data From Master Side : 2&lt;br /&gt;
get 5 (src: 0x0)                        Get Data From Master Side : 4&lt;br /&gt;
get 7 (src: 0x0)                        Get Data From Master Side : 6&lt;br /&gt;
get 9 (src: 0x0)                        Get Data From Master Side : 8&lt;br /&gt;
get 11 (src: 0x0)                       Get Data From Master Side : 10&lt;br /&gt;
...                                     ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial communication demo ===&lt;br /&gt;
This demo sets up a communication channel between the A7 and M4 cores, allowing the user to type characters from the A7 core, and make them appear on M4 core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver, and configure the serial tty connection between the cores.&lt;br /&gt;
It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the following will appear on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG String Echo Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After booting into Linux, load the imx_rpmsg_tty driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_tty&lt;br /&gt;
imx_rpmsg_tty rpmsg0: new channel: 0x400 -&amp;gt; 0x0!&lt;br /&gt;
Install rpmsg tty driver!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A {{filename|/dev/ttyRPMSG}} device file will appear in Linux.&lt;br /&gt;
Configure it for serial communication using {{cmd|stty}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# stty -F /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send a message from Linux to M4 core:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# echo hello &amp;gt; /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get Message From Master Side : &amp;quot;hello&amp;quot; [len : 5]&lt;br /&gt;
Get New Line From Master Side&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC driver demo ===&lt;br /&gt;
The demo demonstrates the usage of the ADC driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 adc_imx7d_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------- ADC imx7d driver example --------------&lt;br /&gt;
&lt;br /&gt;
This example demonstrates usage of ADC driver on i.MX processor.&lt;br /&gt;
It Continuous convert Analog Input, and print the result to terminal &lt;br /&gt;
Current analog value: 1.33v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.29v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan loopback demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver, when the CAN bus is set to loopback mode.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_loopback_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN LOOPBACK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 13 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; LoopBack&lt;br /&gt;
*****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x6 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x7 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x8 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x9 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0xa &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan network demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver. It is designed to be paired with another M4 core, running a modified version of this demo.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
* Prepare 2 versions of the flexcan_network_example demo image, one configured for NODE1, and another configured for NODE2:&lt;br /&gt;
** The precompiled image in the CL-SOM-iMX7 BSP is compiled for NODE 1. No need to do anything further.&lt;br /&gt;
** Set the Node configuration in main.c to NODE 2 (#define NODE 2).&lt;br /&gt;
** Build project with the modified NODE configuration. See [[CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | FreeRTOS: Introduction to NXP FreeRTOS development]] for more information.&lt;br /&gt;
* Obtain another CL-SOM-iMX7 eval board and connect the two boards to the CAN Bus.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot on both devices:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After boot succeeds, the serial output of M4 will display the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN NETWORK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 8 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; Normal&lt;br /&gt;
****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NODE is 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After both modules loaded and booted the demo image, CAN bus communication between the boards will commence.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPIO driver. It is setup to toggle a GPIO on and off using key presses into the M4 serial connection. On CL-SOM-iMX7 the GPIO controls the CL-SOM-iMX7 LED.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses are not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
====================== GPIO Example ========================&lt;br /&gt;
&lt;br /&gt;
============ Use key to simulate GPIO button ==============&lt;br /&gt;
Input any data from terminal 3 times to continues.&lt;br /&gt;
&lt;br /&gt;
Button pressed 1 time. &lt;br /&gt;
Button pressed 2 time. &lt;br /&gt;
Button pressed 3 time. &lt;br /&gt;
&lt;br /&gt;
================= GPIO Functionality==================&lt;br /&gt;
The button state is now polled.&lt;br /&gt;
Press the button to switch LED on or off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point sending keypresses into the M4 terminal toggles the CL-SOM-iMX7 LED on and off.&lt;br /&gt;
&lt;br /&gt;
=== GPT driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPT driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPT timer will now start&lt;br /&gt;
counter/freq ratio should be close to 0.0 or 1.0 ...&lt;br /&gt;
	GPT A freq 6000000, counter 6.&lt;br /&gt;
	GPT B freq 49090907, counter 18.&lt;br /&gt;
	GPT A freq 6000000, counter 2.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 1.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 0.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
	GPT A freq 6000000, counter 6000000.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
GPT example finished...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UART driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the UART driver in both interrupt and polling modes of operation.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the interrupt driven version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_interrupt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the polling version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_polling_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for interrupt driven example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Interrupt Driven Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for polling driven example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Polling Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Watchdog driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 wdog_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3873</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3873"/>
		<updated>2017-11-18T19:44:33Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: FreeRTOS: Introduction to NXP FreeRTOS development}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [http://www.compulab.com/products/iot-gateways/iot-gate-imx7-nxp-i-mx-7-internet-of-things-gateway/#devres IOT-GATE-iMX7 FreeRTOS BSP download]&lt;br /&gt;
* [[Linux: Setting up a development environment]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3871</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3871"/>
		<updated>2017-11-18T19:23:08Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: Linux: Automatic Installation|IOT-GATE-iMX7 automatic installation procedure]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development|FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [[Linux: Setting up a development environment|Setting up a development environment]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3870</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Running Demos</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3870"/>
		<updated>2017-11-18T19:22:24Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Running Demos}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Package_contents&amp;diff=3869</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Package_contents&amp;diff=3869"/>
		<updated>2017-11-18T19:17:04Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Package contents}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3874</id>
		<title>IOT-GATE-iMX7 and SBC-IOT-iMX7: FreeRTOS: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=IOT-GATE-iMX7_and_SBC-IOT-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3874"/>
		<updated>2017-11-18T19:00:42Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Known Issues}}&lt;br /&gt;
&lt;br /&gt;
[[Category:IOT-GATE-iMX7]]&lt;br /&gt;
[[Category:SBC-IOT-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3863</id>
		<title>CL-SOM-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3863"/>
		<updated>2017-10-23T10:46:38Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[CL-SOM-iMX7: Linux: Automatic Installation|CL-SOM-iMX7 automatic installation procedure]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development|FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [[Linux: Setting up a development environment|Setting up a development environment]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3864</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Demos Usage Guide</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3864"/>
		<updated>2017-10-23T10:46:19Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Linux installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and Preparations ==&lt;br /&gt;
This article provides a usage guide for the various FreeRTOS demo images that come with the CL-SOM-iMX7 BSP.&amp;lt;br&amp;gt;&lt;br /&gt;
To run a demo:&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the A7 core.&lt;br /&gt;
* Open a [[#Serial connections|serial connection]] to the M4 core.&lt;br /&gt;
* Obtain an [[#SD-card media|SD-card]] formatted with a FAT or EXT filesystem.&lt;br /&gt;
* (optional) Install the [[#Linux installation|Linux BSP]].&lt;br /&gt;
&lt;br /&gt;
=== Serial connections ===&lt;br /&gt;
The FreeRTOS demos for CL-SOM-iMX7 were setup so that the M4 serial connection is set to the P4-31 (RX) and P4-33 (TX) pins on the SB-SOM baseboard, using UART2.&lt;br /&gt;
The A7 core serial port is using UART1, and is located on the P8 connector of the SB-SOM baseboard.&lt;br /&gt;
For more information about the A7 serial port, please see the [[SB-SOM: HOWTO: RS-232 Console|SB-SOM RS-232 Console]] article.&lt;br /&gt;
&lt;br /&gt;
To communicate with both the M4 and A7 cores using the serial interface, start a terminal emulation program (such as HyperTerminal) for each serial port, with the following port settings:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SD-card media ===&lt;br /&gt;
In this article, all the demos are loaded using U-Boot from a filesystem formatted SD-card.&lt;br /&gt;
The SD card must be FAT or EXT filesystems formatted.&lt;br /&gt;
For other methods of loading the demo images, see the [[#See also|See also section]].&lt;br /&gt;
&lt;br /&gt;
=== Linux installation ===&lt;br /&gt;
Some of the demos require a Linux installation.&lt;br /&gt;
In order to boot Linux alongside FreeRTOS, a special device tree blob must be used to prevent Linux and FreeRTOS from interfering with one another.&lt;br /&gt;
* Follow the automatic installation procedure in the [[#See also|see also]] section.&lt;br /&gt;
* Copy the precompiled {{filename|imx7d-sbc-imx7-m4.dtb}} device tree blob to the SD-card (or use your own modified dtb).&lt;br /&gt;
* Run the following commands to make sure that U-Boot {{cmd|boot}} command will load the special device tree blob:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtaddr 0x83000000&lt;br /&gt;
CL-SOM-iMX7 # setenv fdtfile imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
CL-SOM-iMX7 # setenv loadfdt 'mmc rescan; load mmc 0 ${fdtaddr} ${fdtfile}'&lt;br /&gt;
CL-SOM-iMX7 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Demos usage examples ==&lt;br /&gt;
=== Blinking LED with GPT demo ===&lt;br /&gt;
The blinking GPT demo utilizes GPT to blink the CL-SOM-iMX7 LED at variable intervals.&lt;br /&gt;
The length of the interval can be changed by sending anykey presses into the M4 console.&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 blinking_imx_demo_gpt.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================= Blinking Demo ==================&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 100ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 200ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 300ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 400ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&lt;br /&gt;
====== Blinking interval 500ms ======&lt;br /&gt;
&lt;br /&gt;
====== Press any key to change blinking interval ======&lt;br /&gt;
&lt;br /&gt;
Wait 5 seconds to switch blinking frequency:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World demo ===&lt;br /&gt;
The various hello world demos simply output &amp;quot;Hello World!&amp;quot; on the M4 console, and echo any keypresses made by the user.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
* To run the hello_world application in TCM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 hello_world.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in DDR memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 9FF00000 hello_world_ddr.bin &amp;amp;&amp;amp; dcache flush; bootaux 9FF00000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the hello_world application in OCRAM memory:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 910000 hello_world_ocram.bin &amp;amp;&amp;amp; dcache flush; bootaux 910000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
These words were typed by the user and echoed back!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rand WFI demo ===&lt;br /&gt;
In this demo a GPT will change the M4 Power Mode with random period.&lt;br /&gt;
The power mode changes do not happen until Linux boot is initiated.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot, and then boot linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rand_wfi_imx7d.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
...&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
 *          i.MX 7Dual Dual Core Low Power Demo - M4 side               *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 *        A GPT will change the M4 Power Mode with random period        *&lt;br /&gt;
 *                                                                      *&lt;br /&gt;
 ************************************************************************&lt;br /&gt;
&lt;br /&gt;
Low Power Demo&lt;br /&gt;
********************************&lt;br /&gt;
Please wait :&lt;br /&gt;
    1) A7 peer is ready&lt;br /&gt;
Then press &amp;quot;S&amp;quot; to start the demo&lt;br /&gt;
********************************&lt;br /&gt;
&lt;br /&gt;
Press &amp;quot;S&amp;quot; to start the demo : s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 18s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 36s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 53s&lt;br /&gt;
GPT will triggle interrupt in 19s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 72s&lt;br /&gt;
GPT will triggle interrupt in 15s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 87s&lt;br /&gt;
GPT will triggle interrupt in 18s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
GPT Event! Total time 105s&lt;br /&gt;
GPT will triggle interrupt in 17s&lt;br /&gt;
go to mode WAIT&lt;br /&gt;
GPT Event! Total time 122s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode STOP&lt;br /&gt;
GPT Event! Total time 138s&lt;br /&gt;
GPT will triggle interrupt in 16s&lt;br /&gt;
go to mode RUN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SEMA4 demo ===&lt;br /&gt;
This demo demonstrates locking and unlocking of the SEMA4 lock.&lt;br /&gt;
The user can initiate locking manually or set M4 to lock the SEMA4 every 5 seconds.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Running the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 sema4_demo.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
================== SEMA4 demo ==================&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
m&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Enter command:&lt;br /&gt;
----- 'm' to manually trigger a SEMA4 lock&lt;br /&gt;
----- 'a' to automatically trigger SEMA4 lock every 5 seconds&lt;br /&gt;
a&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&lt;br /&gt;
...SEMA4 mutex lock successfully!&lt;br /&gt;
Wait for 5 seconds......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RPMSG ping-pong demo ===&lt;br /&gt;
This demo demonstrates synchronization between the A7 and M4 cores by printing a series of messages, with an incrementing index, such that even messages are printed on one core, and odd messages on another core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver. It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_pingpong_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the below messages can be seen on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG PingPong Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After Linux finished booting, run the ping pong rpmsg driver.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_pingpong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With both A7 and M4 terminals side by side, the following output can be observed (A7 to the left, M4 to the right):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                        Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
get 1 (src: 0x0)                        Get Data From Master Side : 0&lt;br /&gt;
get 3 (src: 0x0)                        Get Data From Master Side : 2&lt;br /&gt;
get 5 (src: 0x0)                        Get Data From Master Side : 4&lt;br /&gt;
get 7 (src: 0x0)                        Get Data From Master Side : 6&lt;br /&gt;
get 9 (src: 0x0)                        Get Data From Master Side : 8&lt;br /&gt;
get 11 (src: 0x0)                       Get Data From Master Side : 10&lt;br /&gt;
...                                     ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial communication demo ===&lt;br /&gt;
This demo sets up a communication channel between the A7 and M4 cores, allowing the user to type characters from the A7 core, and make them appear on M4 core.&lt;br /&gt;
This demo requires booting into Linux and loading a special driver, and configure the serial tty connection between the cores.&lt;br /&gt;
It is available in two configurations: the &amp;quot;bare metal&amp;quot; (bm) configuration, which implements the demo functionality without FreeRTOS kernel code, and the freertos version, which does use freertos kernel code.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the bare metal version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the freertos kernel version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 rpmsg_str_echo_freertos_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and then boot into Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Linux boots, the following will appear on the M4 core terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RPMSG String Echo Bare Metal Demo...&lt;br /&gt;
RPMSG Init as Remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After booting into Linux, load the imx_rpmsg_tty driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:~# modprobe imx_rpmsg_tty&lt;br /&gt;
imx_rpmsg_tty rpmsg0: new channel: 0x400 -&amp;gt; 0x0!&lt;br /&gt;
Install rpmsg tty driver!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name service handshake is done, M4 has setup a rpmsg channel [0 ---&amp;gt; 1024]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A {{filename|/dev/ttyRPMSG}} device file will appear in Linux.&lt;br /&gt;
Configure it for serial communication using {{cmd|stty}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# stty -F /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send a message from Linux to M4 core:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# echo hello &amp;gt; /dev/ttyRPMSG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On M4 serial terminal the following output is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Get Message From Master Side : &amp;quot;hello&amp;quot; [len : 5]&lt;br /&gt;
Get New Line From Master Side&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADC driver demo ===&lt;br /&gt;
The demo demonstrates the usage of the ADC driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 adc_imx7d_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------------- ADC imx7d driver example --------------&lt;br /&gt;
&lt;br /&gt;
This example demonstrates usage of ADC driver on i.MX processor.&lt;br /&gt;
It Continuous convert Analog Input, and print the result to terminal &lt;br /&gt;
Current analog value: 1.33v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.29v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.32v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.31v&lt;br /&gt;
Current analog value: 1.30v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan loopback demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver, when the CAN bus is set to loopback mode.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_loopback_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN LOOPBACK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 13 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; LoopBack&lt;br /&gt;
*****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x6 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x7 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x8 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x9 &lt;br /&gt;
&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0xa &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flexcan network demo ===&lt;br /&gt;
This demo demonstrates the usage of the Flexcan driver. It is designed to be paired with another M4 core, running a modified version of this demo.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
* Prepare 2 versions of the flexcan_network_example demo image, one configured for NODE1, and another configured for NODE2:&lt;br /&gt;
** The precompiled image in the CL-SOM-iMX7 BSP is compiled for NODE 1. No need to do anything further.&lt;br /&gt;
** Set the Node configuration in main.c to NODE 2 (#define NODE 2).&lt;br /&gt;
** Build project with the modified NODE configuration. See [[CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | FreeRTOS: Introduction to NXP FreeRTOS development]] for more information.&lt;br /&gt;
* Obtain another CL-SOM-iMX7 eval board and connect the two boards to the CAN Bus.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot on both devices:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After boot succeeds, the serial output of M4 will display the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
********* FLEXCAN NETWORK TEST *********&lt;br /&gt;
   Message format: Standard (11 bit id)&lt;br /&gt;
   Message buffer 9 used for Rx.&lt;br /&gt;
   Message buffer 8 used for Tx.&lt;br /&gt;
   Interrupt Mode: Enabled&lt;br /&gt;
   Operating Mode: TX and RX --&amp;gt; Normal&lt;br /&gt;
****************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NODE is 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After both modules loaded and booted the demo image, CAN bus communication between the boards will commence.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x0&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x1&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x2&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x3&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x4&lt;br /&gt;
DLC=1, mb_idx=0x123&lt;br /&gt;
RX MB data: 0x5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPIO driver. It is setup to toggle a GPIO on and off using key presses into the M4 serial connection. On CL-SOM-iMX7 the GPIO controls the CL-SOM-iMX7 LED.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 flexcan_network_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output (key presses are not echoed back):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
====================== GPIO Example ========================&lt;br /&gt;
&lt;br /&gt;
============ Use key to simulate GPIO button ==============&lt;br /&gt;
Input any data from terminal 3 times to continues.&lt;br /&gt;
&lt;br /&gt;
Button pressed 1 time. &lt;br /&gt;
Button pressed 2 time. &lt;br /&gt;
Button pressed 3 time. &lt;br /&gt;
&lt;br /&gt;
================= GPIO Functionality==================&lt;br /&gt;
The button state is now polled.&lt;br /&gt;
Press the button to switch LED on or off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point sending keypresses into the M4 terminal toggles the CL-SOM-iMX7 LED on and off.&lt;br /&gt;
&lt;br /&gt;
=== GPT driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the GPT driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 gpt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPT timer will now start&lt;br /&gt;
counter/freq ratio should be close to 0.0 or 1.0 ...&lt;br /&gt;
	GPT A freq 6000000, counter 6.&lt;br /&gt;
	GPT B freq 49090907, counter 18.&lt;br /&gt;
	GPT A freq 6000000, counter 2.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 1.&lt;br /&gt;
	GPT B freq 49090907, counter 52.&lt;br /&gt;
	GPT A freq 6000000, counter 0.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
	GPT A freq 6000000, counter 6000000.&lt;br /&gt;
	GPT B freq 49090907, counter 53.&lt;br /&gt;
GPT example finished...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UART driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the UART driver in both interrupt and polling modes of operation.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
* To run the interrupt driven version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_interrupt_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* To run the polling version:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 uart_imx_polling_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for interrupt driven example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Interrupt Driven Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output for polling driven example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
++++++++++++++++ UART Send/Receive Polling Example +++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Type characters from keyboard, the board will receive and then echo them to terminal screen&lt;br /&gt;
This was typed by the user!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Watchdog driver demo ===&lt;br /&gt;
This demo demonstrates the usage of the Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
==== Example run ====&lt;br /&gt;
Run the demo via U-Boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan &amp;amp;&amp;amp; load mmc 0 7F8000 wdog_imx_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M4 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
WDOG with timeout 1.5 seconds will now start&lt;br /&gt;
WDOG was refreshed 4&lt;br /&gt;
WDOG was refreshed 3&lt;br /&gt;
WDOG was refreshed 2&lt;br /&gt;
WDOG was refreshed 1&lt;br /&gt;
WDOG was refreshed 0&lt;br /&gt;
Counter down to 0, WDOG is starved now...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3862</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Running Demos</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3862"/>
		<updated>2017-10-23T10:09:36Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the process of loading FreeRTOS images into memory, and running the in-memory images. For quick evaluation, the FreeRTOS BSP comes with precompiled images that can be found under the {{filename|images}} folder.&lt;br /&gt;
&lt;br /&gt;
== Loading FreeRTOS into memory ==&lt;br /&gt;
A FreeRTOS image must be run from TCM, DDR, or OCRAM, depending on how it was built. Consult the following table for the right &amp;lt;'''load_addr'''&amp;gt; to use:&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image name&lt;br /&gt;
! Must run from&lt;br /&gt;
! load_addr&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;.bin&lt;br /&gt;
| TCM&lt;br /&gt;
| 7F8000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ocram.bin&lt;br /&gt;
| OCRAM&lt;br /&gt;
| 910000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ddr.bin&lt;br /&gt;
| DDR&lt;br /&gt;
| 9FF00000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Power on the module and stop U-Boot from booting Linux by holding Ctrl-c.&lt;br /&gt;
* Place the demo image into USB drive or SD-card, and connect it into the evaluation board.&lt;br /&gt;
* Use the following U-Boot commands to load the demo image from USB storage: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # usb start&lt;br /&gt;
CL-SOM-iMX7 # load usb 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use the following U-Boot commands to load the demo image from SD-card:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc dev 0&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan&lt;br /&gt;
CL-SOM-iMX7 # load mmc 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Booting FreeRTOS from memory ==&lt;br /&gt;
* Run the image using the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # dcache flush&lt;br /&gt;
CL-SOM-iMX7 # bootaux &amp;lt;load_addr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3868</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3868"/>
		<updated>2017-10-22T15:08:43Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IssueCategory|Booting multiple images|&lt;br /&gt;
* Booting more than one FreeRTOS image in the same power-on session will likely not work, with only the first boot being successful. Occasionally, booting multiple images may result in a data abort.&lt;br /&gt;
:'''Workaround :''' Reset the module between image boots.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{IssueCategory|I2C3 muxing|&lt;br /&gt;
* I2C3 is muxed incorrectly.&lt;br /&gt;
:'''Workaround :''' Update file cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/pin_mux.c at lines #112 and #114 to use MUX_MODE(4) instead of MUX_MODE(5) and rebuild the I2C demos.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3861</id>
		<title>CL-SOM-iMX7: FreeRTOS: Running Demos</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3861"/>
		<updated>2017-10-22T14:23:32Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Running Demos}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development|FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3858</id>
		<title>CL-SOM-iMX7: FreeRTOS: Hardware Configuration</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3858"/>
		<updated>2017-10-22T14:23:16Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the default hardware configuration of FreeRTOS for CL-SOM-iMX7.&lt;br /&gt;
&lt;br /&gt;
For more information see the board file {{filename|examples/cl_som_imx7_m4/board.h}} in the BSP source code and the pinmux config file {{filename|examples/cl_som_imx7_m4/pin_mux.c}}.&lt;br /&gt;
&lt;br /&gt;
== I/O pinout ==&lt;br /&gt;
FreeRTOS is setup to use UART2, CAN2, ADC1, I2C3, and GPIO6 signals with the following pinout:&lt;br /&gt;
&lt;br /&gt;
=== UART2 ===&lt;br /&gt;
* P4-31 (RX)&lt;br /&gt;
* P4-33 (TX)&lt;br /&gt;
&lt;br /&gt;
=== FlexCAN2 ===&lt;br /&gt;
* P4-32 (RX)&lt;br /&gt;
* P4-34 (TX)&lt;br /&gt;
&lt;br /&gt;
=== ADC1 ===&lt;br /&gt;
* P4-24 (IN0)&lt;br /&gt;
* P4-26 (IN1)&lt;br /&gt;
* P4-28 (IN2)&lt;br /&gt;
* P4-30 (IN3)&lt;br /&gt;
&lt;br /&gt;
=== GPIO6 ===&lt;br /&gt;
* GPIO6_14 (LED control)&lt;br /&gt;
&lt;br /&gt;
=== I2C3 ===&lt;br /&gt;
* P4-21 (SCL)&lt;br /&gt;
* P4-23 (SDA)&lt;br /&gt;
&lt;br /&gt;
== Internal systems ==&lt;br /&gt;
&lt;br /&gt;
=== GPT ===&lt;br /&gt;
FreeRTOS demos use GPT3 and GPT4.&lt;br /&gt;
&lt;br /&gt;
=== Watchdog ===&lt;br /&gt;
FreeRTOS demos use Watchdog3.&lt;br /&gt;
&lt;br /&gt;
=== MU ===&lt;br /&gt;
FreeRTOS works with messaging unit MU_B.&lt;br /&gt;
&lt;br /&gt;
=== RDC ===&lt;br /&gt;
FreeRTOS demos use RDC Domain 1.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development|FreeRTOS: Introduction to NXP FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3857</id>
		<title>CL-SOM-iMX7 NXP i.MX7 FreeRTOS</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3857"/>
		<updated>2017-10-22T14:18:33Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{summary|&lt;br /&gt;
This page contains links to information about FreeRTOS kernels, packages and software development for the CompuLab CL-SOM-iMX7 System-on-Module / Computer-on-Module.&lt;br /&gt;
CompuLab FreeRTOS support for CL-SOM-iMX7 includes modifications of FreeRTOS kernel and example demos based on [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-7-processors/i.mx-7dual-processors-heterogeneous-processing-with-dual-arm-cortex-a7-cores-and-cortex-m4-core:i.MX7D NXP FreeRTOS packages]. CL-SOM-iMX7 is provided with comprehensive documentation and full ready-to-run SW support for Linux operating system.&amp;lt;br&amp;gt; &lt;br /&gt;
|cl-som-imx7-top.jpg|thumb}}&lt;br /&gt;
{{Resources Linux&lt;br /&gt;
|* [[CL-SOM-iMX7: Evaluation Kit: Getting Started|Getting started with CL-SOM-iMX7 Evaluation Kit]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Hardware Configuration|FreeRTOS Hardware Configuration]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Package contents|FreeRTOS package contents]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos|Running FreeRTOS demo images]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide|FreeRTOS Demos Usage Guide]]&lt;br /&gt;
|* [[ Linux: Setting up a development environment | Setting up a development environment]]&lt;br /&gt;
* [[ CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development | Introduction to NXP FreeRTOS development]]&lt;br /&gt;
|*[[Support]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Known Issues|Known Issues]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{ChangelogRss| content=&lt;br /&gt;
&lt;br /&gt;
===== 16-Jul-2017, CL-SOM-iMX7 FreeRTOS release 1.0 =====&lt;br /&gt;
: Initial release of FreeRTOS 8.0 for CL-SOM-iMX7 with 1G DRAM and higher&lt;br /&gt;
: - GPIO support&lt;br /&gt;
: - Flexcan support&lt;br /&gt;
: - UART support&lt;br /&gt;
: - I2C support&lt;br /&gt;
: - Open-AMP stack for rpmsg communication between the cores&lt;br /&gt;
: Documentation&lt;br /&gt;
: - Initial FreeRTOS documentation for CL-SOM-iMX7 support&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3865</id>
		<title>CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3865"/>
		<updated>2017-10-22T14:17:52Z</updated>

		<summary type="html">&lt;p&gt;Nikita: FreeRTOS: Introduction to NXP FreeRTOS development moved to CL-SOM-iMX7: FreeRTOS: Introduction to NXP FreeRTOS development&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: FreeRTOS: Introduction to NXP FreeRTOS development}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [http://www.compulab.com/products/computer-on-modules/cl-som-imx7-freescale-i-mx-7-system-on-module/#devres CL-SOM-iMX7 FreeRTOS BSP download]&lt;br /&gt;
* [[Linux: Setting up a development environment]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3866</id>
		<title>Transclusion: FreeRTOS: Introduction to NXP FreeRTOS development</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_FreeRTOS:_Introduction_to_NXP_FreeRTOS_development&amp;diff=3866"/>
		<updated>2017-10-22T14:15:27Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The FreeRTOS operating system is designed to be compact and task specific. As such, instead of the popular kernel/driver/filesystem/userspace division used by general purpose operating systems, FreeRTOS is just one binary that contains an application and all the relevant kernel code that is necessary to support it. This includes startup code, code that accesses SoC subsystems (drivers), as well as standard kernel functionality such as multitasking, which allows the single-application-per-image model to spawn multiple tasks. In addition to this standard functionality, middleware libraries can be added to the core OS to augment its functionality. For example, the CL-SOM-iMX7 FreeRTOS BSP is augmented with the Open-AMP software stack, which allows the M4 and A7 cores to communicate.&lt;br /&gt;
&lt;br /&gt;
== Project architecture ==&lt;br /&gt;
FreeRTOS consists of multiple modular parts:&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unit&lt;br /&gt;
! Description&lt;br /&gt;
! Location&lt;br /&gt;
|-&lt;br /&gt;
| kernel&lt;br /&gt;
| FreeRTOS kernel&lt;br /&gt;
| rtos/FreeRTOS/Source&lt;br /&gt;
|-&lt;br /&gt;
| CMSIS headers and libraries&lt;br /&gt;
| Cortex-M specific support&lt;br /&gt;
| platform/CMSIS&lt;br /&gt;
|-&lt;br /&gt;
| SOC specific definitions&lt;br /&gt;
| This BSP only has MCIMX7D definitions&lt;br /&gt;
| platform/devices&lt;br /&gt;
|-&lt;br /&gt;
| Drivers&lt;br /&gt;
| All the drivers in the FreeRTOS BSP are stateless&lt;br /&gt;
| platform/drivers&lt;br /&gt;
|-&lt;br /&gt;
| Middleware libraries&lt;br /&gt;
| Open-AMP stack, including RPmsg support&lt;br /&gt;
| middleware/multicore/open-amp&lt;br /&gt;
|-&lt;br /&gt;
| Additional utilities&lt;br /&gt;
| Contains some printing functions&lt;br /&gt;
| platform/utilities&lt;br /&gt;
|-&lt;br /&gt;
| App code&lt;br /&gt;
| Application code and project files&lt;br /&gt;
| examples/cl-som-imx7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For development, the focal point is the apps projects, which pick and choose the various pieces of FreeRTOS and combine them with the app code into a single project. A good starting point is to pick an example project and start adding functionality.&lt;br /&gt;
&lt;br /&gt;
== FreeRTOS API reference ==&lt;br /&gt;
The CL-SOM-iMX7 FreeRTOS BSP is based on the NXP FreeRTOS BSP. The NXP BSP has some useful documents in the BSP archive, one of which provides a comprehensive documentation of FreeRTOS API. The NXP BSP can be downloaded [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-7-processors/i.mx-7dual-processors-heterogeneous-processing-with-dual-arm-cortex-a7-cores-and-cortex-m4-core:i.MX7D?tab=Design_Tools_Tab here] in the Board Support Packages section.&lt;br /&gt;
&lt;br /&gt;
== Multicore development and coexisting with Linux ==&lt;br /&gt;
Since Cortex-A7 and Cortex-M4 share both memory and peripherals, it is necessary to isolate or synchronize between these cores to prevent them from interfering with one another. The RDC (Resource Domain Controller) subsystem of iMX7 provides ways to implement this isolation/synchronization on the hardware level, and RDC support is part of the FreeRTOS API. Nevertheless, the general purpose OS that runs on the Cortex-A7 may not be prepared to handle the possibility that a bus or subsystem may be locked from it, or concurrently used by somebody else, and so disabling functionality on the Cortex-A7 OS may be necessary. In the case of Linux, a special device tree can be used to tell Linux not to touch iMX7 subsystems that we expect to be used by FreeRTOS. Such a device tree is provided in the CL-SOM-iMX7 FreeRTOS BSP.&lt;br /&gt;
&lt;br /&gt;
== Building FreeRTOS ==&lt;br /&gt;
=== Setup development tools ===&lt;br /&gt;
For FreeRTOS development it is possible to use either the [https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads GNU ARM Embedded toolchain], or the [https://developer.arm.com/products/software-development-tools/ds-5-development-studio/downloads ARM DS5 IDE] suite. The FreeRTOS BSP has build scripts/project files for both tools.&lt;br /&gt;
==== GNU ARM Embedded toolchain ====&lt;br /&gt;
* Create a directory for downloading.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Download the [https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads GNU ARM Embedded toolchain] to the toolchain directory.&lt;br /&gt;
* Extract the toolchain archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/toolchain&lt;br /&gt;
tar xvf gcc-arm-none-eabi-6-2017-q1-update-linux.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Let the host system know where the toolchain is located&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;export ARMGCC_DIR=~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ARM DS5 IDE ====&lt;br /&gt;
* Create a directory for downloading.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Download [https://developer.arm.com/products/software-development-tools/ds-5-development-studio/downloads ARM DS5 IDE] to the toolchain directory.&lt;br /&gt;
* Extract the downloaded archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/toolchain&lt;br /&gt;
tar xvf DS500-BN-00019-r5p0-27rel1.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Run the installation script and follow the instructions&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;./install.sh&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Getting FreeRTOS BSP sources ===&lt;br /&gt;
* Create a directory for development.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/development&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* [[#See also|Download]] the FreeRTOS BSP to the development directory.&lt;br /&gt;
* Extract the FreeRTOS BSP archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/development&lt;br /&gt;
unzip cl-som-imx7_freertos.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Extract the BSP source archive inside the BSP package:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd cl-som-imx7-freertos/freertos&lt;br /&gt;
tar xvf freertos.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building FreeRTOS ===&lt;br /&gt;
In this example we will use the {{cmd|hello_world}} demo project as reference.&lt;br /&gt;
==== Invoking build ====&lt;br /&gt;
===== GNU ARM Embedded toolchain =====&lt;br /&gt;
* Go to the {{filename|armgcc}} folder inside the {{filename|hello_world}} project directory&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;cd ~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/armgcc&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Run the build script for either of build configurations:&lt;br /&gt;
** For Debug configuration:&amp;lt;pre&amp;gt;./build_debug.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For Release configuration:&amp;lt;pre&amp;gt;./build_release.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For Both (debug and release) configurations:&amp;lt;pre&amp;gt;./build_all.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ARM DS5 IDE =====&lt;br /&gt;
* Open DS5 IDE&lt;br /&gt;
* Go to File-&amp;gt;Import&lt;br /&gt;
* Select General-&amp;gt;Existing Projects into Workspace&lt;br /&gt;
* Click Browse and go to {{filename|~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/armgcc}} and click OK&lt;br /&gt;
* Click Finish&lt;br /&gt;
&lt;br /&gt;
Now you can right click on the project and select the build option.&lt;br /&gt;
&lt;br /&gt;
=== Image location ===&lt;br /&gt;
Depending on the tool used, and the selected build target, the built binary will reside in {{filename|~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/{armgcc,ds5}/{debug,release}/hello_world.bin}}.&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3859</id>
		<title>CL-SOM-iMX7: FreeRTOS: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3859"/>
		<updated>2017-10-22T12:23:44Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Transclusion: CL-SOM-iMX7: FreeRTOS: Package contents}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3860</id>
		<title>Transclusion: CL-SOM-iMX7: FreeRTOS: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Transclusion:_CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3860"/>
		<updated>2017-10-22T12:23:29Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Package contents ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cl-som-imx-freertos/&lt;br /&gt;
├── freertos&lt;br /&gt;
│   └── freertos.tar.bz2&lt;br /&gt;
├── images&lt;br /&gt;
│   ├── adc_imx7d_example.bin&lt;br /&gt;
│   ├── blinking_imx_demo_gpt.bin&lt;br /&gt;
│   ├── flexcan_loopback_example.bin&lt;br /&gt;
│   ├── flexcan_network_example.bin&lt;br /&gt;
│   ├── gpio_imx_example.bin&lt;br /&gt;
│   ├── gpt_example.bin&lt;br /&gt;
│   ├── hello_world.bin&lt;br /&gt;
│   ├── hello_world_ddr.bin&lt;br /&gt;
│   ├── hello_world_ocram.bin&lt;br /&gt;
│   ├── rand_wfi_imx7d.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_freertos_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_freertos_example.bin&lt;br /&gt;
│   ├── sema4_demo.bin&lt;br /&gt;
│   ├── uart_imx_interrupt_example.bin&lt;br /&gt;
│   ├── uart_imx_polling_example.bin&lt;br /&gt;
│   └── wdog_imx_example.bin&lt;br /&gt;
├── linux&lt;br /&gt;
│   ├── imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
│   └── imx7d-sbc-imx7-m4.dts&lt;br /&gt;
├── readme.txt&lt;br /&gt;
├── utilities&lt;br /&gt;
│   └── get_freertos_version.sh&lt;br /&gt;
└── version.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== version.txt ===&lt;br /&gt;
The contents of the {{filename|version.txt}} identifies the package version.&lt;br /&gt;
&lt;br /&gt;
=== readme.txt ===&lt;br /&gt;
A file describing the package.&lt;br /&gt;
&lt;br /&gt;
=== freertos ===&lt;br /&gt;
* {{filename|freertos.tar.bz2}} - Full source code of the FreeRTOS BSP from which the demo images in this release were compiled. Based on NXP's FreeRTOS BSP for iMX7.&lt;br /&gt;
&lt;br /&gt;
=== images ===&lt;br /&gt;
* {{filename|adc_imx7d_example.bin}} - Driver functionality example for adc driver.&lt;br /&gt;
* {{filename|blinking_imx_demo_gpt.bin}} - Example application demonstrating gpt + gpio functionality.&lt;br /&gt;
* {{filename|flexcan_loopback_example.bin}} - Driver functionality example for canbus driver in loopback mode.&lt;br /&gt;
* {{filename|flexcan_network_example.bin}} - Driver functionality example for canbus driver with outbound network connection.&lt;br /&gt;
* {{filename|gpio_imx_example.bin}} - Driver functionality example for gpio driver.&lt;br /&gt;
* {{filename|gpt_example.bin}} - Driver functionality example for gpt driver.&lt;br /&gt;
* {{filename|hello_world.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for TCM memory.&lt;br /&gt;
* {{filename|hello_world_ddr.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for DDR memory.&lt;br /&gt;
* {{filename|hello_world_ocram.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for OCRAM memory.&lt;br /&gt;
* {{filename|rand_wfi_imx7d.bin}} - Example application demonstrating GPT usage and changing of power modes on M4 core.&lt;br /&gt;
* {{filename|rpmsg_pingpong_bm_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_pingpong_freertos_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_bm_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_freertos_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|sema4_demo.bin}} - Example application demonstrating SEMA4 usage.&lt;br /&gt;
* {{filename|uart_imx_interrupt_example.bin}} - Driver functionality example for UART driver, using interrupt mode.&lt;br /&gt;
* {{filename|uart_imx_polling_example.bin}} - Driver functionality example for UART driver, using polling mode.&lt;br /&gt;
* {{filename|wdog_imx_example.bin}} - Driver functionality example for Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
=== linux ===&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dtb}} - Device tree blob for booting [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]] while M4 is running.&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dts}} - Source code for {{filename|imx7d-sbc-imx7-m4.dtb}}, meant to be used with the source code of the [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]].&lt;br /&gt;
&lt;br /&gt;
=== utilities ===&lt;br /&gt;
* {{filename|get_freertos_version.sh}} - A script for printing the FreeRTOS binary version.&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Package_contents&amp;diff=3808</id>
		<title>CM-T43: Yocto Linux: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Package_contents&amp;diff=3808"/>
		<updated>2017-10-11T18:23:46Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Package contents ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm-t43-yocto-linux/&lt;br /&gt;
├── development&lt;br /&gt;
│   ├── readme.html&lt;br /&gt;
│   └── yocto-cm-t43-2.0.patch&lt;br /&gt;
├── install&lt;br /&gt;
│   ├── am437x-sb-som-t43.dtb&lt;br /&gt;
│   ├── bootscr.img&lt;br /&gt;
│   ├── install.ext2&lt;br /&gt;
│   ├── install.sh&lt;br /&gt;
│   ├── kernel.img&lt;br /&gt;
│   ├── ramdisk.dtb&lt;br /&gt;
│   ├── ramdisk.img&lt;br /&gt;
│   ├── rootfs.tar.bz2&lt;br /&gt;
│   └── zImage-cm-t43&lt;br /&gt;
├── kernel&lt;br /&gt;
│   ├── dtb&lt;br /&gt;
│   │   ├── am437x-cm-t43.dtb&lt;br /&gt;
│   │   └── am437x-sb-som-t43.dtb&lt;br /&gt;
│   ├── dts&lt;br /&gt;
│   │   ├── am437x-cm-t43.dts&lt;br /&gt;
│   │   ├── am437x-sb-som-t43.dts&lt;br /&gt;
│   │   └── compulab-sb-som.dtsi                                                                                                                                                                                                             &lt;br /&gt;
│   ├── modules-cm-t43-yocto-2.0.tgz                                                                                                                                                                                                         &lt;br /&gt;
│   └── zImage-cm-t43-yocto-2.0                                                                                                                                                                                                              &lt;br /&gt;
├── readme.txt                                                                                                                                                                                                                               &lt;br /&gt;
├── u-boot                                                                                                                                                                                                                                   &lt;br /&gt;
│   ├── MLO-yocto-2.0                                                                                                                                                                                                                        &lt;br /&gt;
│   └── u-boot-yocto-2.0.img                                                                                                                                                                                                                 &lt;br /&gt;
├── utilities                                                                                                                                                                                                                                &lt;br /&gt;
│   ├── bootscr.src                                                                                                                                                                                                                          &lt;br /&gt;
│   ├── eeprom-util                                                                                                                                                                                                                          &lt;br /&gt;
│   │   ├── eeprom-util                                                                                                                                                                                                                      &lt;br /&gt;
│   │   ├── eeprom-util-static                                                                                                                                                                                                               &lt;br /&gt;
│   │   └── eeprom-util-v2.1-sources.tar.gz                                                                                                                                                                                                  &lt;br /&gt;
│   └── tftpd32.zip                                                                                                                                                                                                                          &lt;br /&gt;
└── version.txt                                                       &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== version.txt ===&lt;br /&gt;
The contents of the {{filename|version.txt}} identifies the versions of the various package contents.&lt;br /&gt;
&lt;br /&gt;
=== readme.txt ===&lt;br /&gt;
A file describing the package.&lt;br /&gt;
&lt;br /&gt;
=== development ===&lt;br /&gt;
* {{filename|readme.html }} - development links&lt;br /&gt;
* {{filename|yocto-cm-t43-2.0.patch}} - CM-T43 Yocto Linux patch&lt;br /&gt;
&lt;br /&gt;
=== install ===&lt;br /&gt;
* {{filename|ramdisk.dtb}} - SB-SOM-T43 Device Tree binary for installation kernel&lt;br /&gt;
* {{filename|kernel.img}} - Kernel image required for installation onto the eMMC/NAND/SD-Card&lt;br /&gt;
* {{filename|ramdisk.img}} - Ramdisk image required for installation onto the eMMC/NAND/SD-Card&lt;br /&gt;
* {{filename|bootscr.img}} - U-Boot script used for starting the installation environment&lt;br /&gt;
* {{filename|am437x-sb-som-t43.dtb}} - SB-SOM-T43 Device Tree binary for Yocto Linux kernel&lt;br /&gt;
* {{filename|zImage-cm-t43}} - Yocto Linux kernel image&lt;br /&gt;
* {{filename|rootfs.tar.bz2}} - Yocto Linux rootfs&lt;br /&gt;
* {{filename|install.sh}} - An installation script for automatic installation environment&lt;br /&gt;
* {{filename|install.ext2}} - A filesystem for automatic installation environment&lt;br /&gt;
&lt;br /&gt;
=== kernel ===&lt;br /&gt;
* {{filename|zImage-cm-t43-yocto-2.0}} - ready to run Linux kernel image binary for CM-T43&lt;br /&gt;
* {{filename|modules-cm-t43-yocto-2.0.tgz}} - archive of pre-compiled modules for Linux kernel used with Yocto Linux for CM-T43&lt;br /&gt;
==== dtb ====&lt;br /&gt;
* {{filename|am437x-cm-t43.dtb}} - CM-T43 Device Tree binary&lt;br /&gt;
* {{filename|am437x-sb-som-t43.dtb}} - SBC-T43 Device Tree binary&lt;br /&gt;
==== dts ====&lt;br /&gt;
* {{filename|am437x-cm-t43.dts}} - CM-T43 Device Tree source&lt;br /&gt;
* {{filename|am437x-sb-som-t43.dts}} - SBC-T43 Device Tree source&lt;br /&gt;
* {{filename|compulab-sb-som.dtsi}} - SB-SOM Device Tree source&lt;br /&gt;
&lt;br /&gt;
=== u-boot ===&lt;br /&gt;
* {{filename|MLO-yocto-2.0}} - SPL binary&lt;br /&gt;
* {{filename|u-boot-yocto-2.0.img}} - U-Boot binary&lt;br /&gt;
&lt;br /&gt;
=== utilities ===&lt;br /&gt;
The {{filename|utilities}} directory contains miscellaneous utilities useful for development&lt;br /&gt;
* {{filename|eeprom-util}} - CompuLab EEPROM utility for reading information found inside the EEPROM on CompuLab boards&lt;br /&gt;
* {{filename|bootscr.src}} - U-Boot script source used for loading kernel and ramdisk images from MMC/SD card or USB storage device&lt;br /&gt;
* {{filename|tftpd32.zip}} - A utility for serial communication&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[CM-T43: Evaluation Kit: Getting Started]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Automatic Installation]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Manual Installation]]&lt;br /&gt;
* [[CM-T43: Yocto_Linux: Building]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Yocto]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Building&amp;diff=3809</id>
		<title>CM-T43: Yocto Linux: Building</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Building&amp;diff=3809"/>
		<updated>2017-10-11T18:23:29Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This article describes how to install and build the Yocto Linux release for CM-T43 SOM on a development machine.&lt;br /&gt;
&lt;br /&gt;
= Preparation steps =&lt;br /&gt;
&lt;br /&gt;
* Obtain a Linux PC host development station running '''''Ubuntu 14.04''''' or '''''Ubuntu 16.04'''''.&lt;br /&gt;
* Download the Linux Yocto package for CM-T43 from [http://www.compulab.com/products/computer-on-modules/cm-t43/#devres CompuLab website]. Unzip the package to a directory on your host workstation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir cm-t43-yocto-dev&lt;br /&gt;
cd cm-t43-yocto-dev&lt;br /&gt;
unzip /path/to/downloaded/cm-t43_yocto-linux.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install development tools:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install git build-essential python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Reconfigure dash&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure dash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be sure to select &amp;quot;No&amp;quot; when you are asked to use dash as the default system shell. &lt;br /&gt;
* Install the Arago toolchain&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz&lt;br /&gt;
sudo tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz -C $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download and install Yocto Linux development source code ==&lt;br /&gt;
&lt;br /&gt;
Type the following commands to download and install the TI Yocto Linux source code on the development station:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk&lt;br /&gt;
cd tisdk&lt;br /&gt;
./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-03.03.00.04-config.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Apply the CM-T43 support patch ===&lt;br /&gt;
Once the Yocto Linux source code is installed on the host Ubuntu machine, apply the CM-T43 patch, as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
patch -d sources -p1 &amp;lt; ../cm-t43-yocto-linux/development/yocto-cm-t43-2.0.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At this point, CompuLab Yocto support has been installed over the Yocto Linux source code and can be built.&lt;br /&gt;
&lt;br /&gt;
== local.conf customizations ==&lt;br /&gt;
For local builds customization, edit you build/conf/local.conf file with any favorite text editor.&lt;br /&gt;
&lt;br /&gt;
=== Parallel build ===&lt;br /&gt;
Set the build parameters to fully utilize your host machine &lt;br /&gt;
BB_NUMBER_THREADS = '4'&amp;lt;br&amp;gt;PARALLEL_MAKE = '-j 6' &lt;br /&gt;
BB_NUMBER_THREADS should be your host machine's number of threads minus 2 or same. &lt;br /&gt;
PARALLEL_MAKE should be the number of threads your host machine has plus two.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Building the CM-T43 Yocto image =&lt;br /&gt;
Change directory to the build directory of Yocto and set up the build environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd build&lt;br /&gt;
source conf/setenv&lt;br /&gt;
export PATH=$HOME/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The {{parameter|tisdk-rootfs-image}} can be built as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MACHINE=cm-t43 bitbake tisdk-rootfs-image&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the image is built, all images are located in: {{filename|/path/to/cm-t43-yocto-dev/tisdk/build/arago-tmp-external-linaro-toolchain/deploy/images/cm-t43}}&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [[CM-T43: Evaluation Kit: Getting Started]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Automatic Installation]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Manual Installation]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Package contents]]&lt;br /&gt;
* [http://www.yoctoproject.org/docs/2.3/mega-manual/mega-manual.html Yocto Project Mega-Manual]&lt;br /&gt;
* [https://www.yoctoproject.org/docs/2.3/bitbake-user-manual/bitbake-user-manual.html BitBake User Manual]&lt;br /&gt;
* [http://git.yoctoproject.org/cgit.cgi Yocto Project Source Repositories]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Yocto]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3412</id>
		<title>CL-SOM-iMX7: FreeRTOS: Running Demos</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3412"/>
		<updated>2017-07-17T16:02:00Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Loading FreeRTOS into memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the process of loading FreeRTOS images into memory, and running the in-memory images. For quick evaluation, the FreeRTOS BSP for CL-SOM-iMX7 comes with precompiled images that can be found under the {{filename|images}} folder.&lt;br /&gt;
&lt;br /&gt;
== Loading FreeRTOS into memory ==&lt;br /&gt;
A FreeRTOS image must be run from TCM, DDR, or OCRAM, depending on how it was built. Consult the following table for the right &amp;lt;'''load_addr'''&amp;gt; to use:&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image name&lt;br /&gt;
! Must run from&lt;br /&gt;
! load_addr&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;.bin&lt;br /&gt;
| TCM&lt;br /&gt;
| 7F8000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ocram.bin&lt;br /&gt;
| OCRAM&lt;br /&gt;
| 910000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ddr.bin&lt;br /&gt;
| DDR&lt;br /&gt;
| 9FF00000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Power on the module and stop U-Boot from booting Linux by holding Ctrl-c.&lt;br /&gt;
* Place the demo image into USB drive or SD-card, and connect it into the evaluation board.&lt;br /&gt;
* Use the following U-Boot commands to load the demo image from USB storage: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # usb start&lt;br /&gt;
CL-SOM-iMX7 # load usb 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use the following U-Boot commands to load the demo image from SD-card:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc dev 0&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan&lt;br /&gt;
CL-SOM-iMX7 # load mmc 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Booting FreeRTOS from memory ==&lt;br /&gt;
* Run the image using the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # dcache flush&lt;br /&gt;
CL-SOM-iMX7 # bootaux &amp;lt;load_addr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[FreeRTOS: Introduction to FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3402</id>
		<title>CL-SOM-iMX7 NXP i.MX7 FreeRTOS</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7_NXP_i.MX7_FreeRTOS&amp;diff=3402"/>
		<updated>2017-07-17T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{summary|&lt;br /&gt;
This page contains links to information about FreeRTOS kernels, packages and software development for the CompuLab CL-SOM-iMX7 System-on-Module / Computer-on-Module.&lt;br /&gt;
CompuLab FreeRTOS support for CL-SOM-iMX7 includes modifications of FreeRTOS kernel and example demos based on [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-7-processors/i.mx-7dual-processors-heterogeneous-processing-with-dual-arm-cortex-a7-cores-and-cortex-m4-core:i.MX7D NXP FreeRTOS packages]. CL-SOM-iMX7 is provided with comprehensive documentation and full ready-to-run SW support for Linux operating system.&amp;lt;br&amp;gt; &lt;br /&gt;
|cl-som-imx7-top.jpg|thumb}}&lt;br /&gt;
{{Resources Linux&lt;br /&gt;
|* [[CL-SOM-iMX7: Evaluation Kit: Getting Started|Getting started with CL-SOM-iMX7 Evaluation Kit]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Hardware Configuration|FreeRTOS Hardware Configuration]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Package contents|FreeRTOS package contents]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos|Running FreeRTOS demo images]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide|FreeRTOS Demos Usage Guide]]&lt;br /&gt;
|* [[ Linux: Setting up a development environment | Setting up a development environment]]&lt;br /&gt;
* [[ FreeRTOS: Introduction to FreeRTOS development | Introduction to FreeRTOS development]]&lt;br /&gt;
|*[[Support]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Known Issues|Known Issues]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{ChangelogRss| content=&lt;br /&gt;
&lt;br /&gt;
===== 16-Jul-2017, CL-SOM-iMX7 FreeRTOS release 1.0 =====&lt;br /&gt;
: Initial release of FreeRTOS 8.0 for CL-SOM-iMX7 with 1G DRAM and higher&lt;br /&gt;
: - GPIO support&lt;br /&gt;
: - Flexcan support&lt;br /&gt;
: - UART support&lt;br /&gt;
: - I2C support&lt;br /&gt;
: - Open-AMP stack for rpmsg communication between the cores&lt;br /&gt;
: Documentation&lt;br /&gt;
: - Initial FreeRTOS documentation for CL-SOM-iMX7 support&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=FreeRTOS:_Introduction_to_FreeRTOS_development&amp;diff=3407</id>
		<title>FreeRTOS: Introduction to FreeRTOS development</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=FreeRTOS:_Introduction_to_FreeRTOS_development&amp;diff=3407"/>
		<updated>2017-07-17T09:50:47Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Image location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The FreeRTOS operating system is designed to be compact and task specific. As such, instead of the popular kernel/driver/filesystem/userspace division used by general purpose operating systems, FreeRTOS is just one binary that contains an application and all the relevant kernel code that is necessary to support it. This includes startup code, code that accesses SoC subsystems (drivers), as well as standard kernel functionality such as multitasking, which allows the single-application-per-image model to spawn multiple tasks. In addition to this standard functionality, the CL-SOM-iMX7 FreeRTOS BSP is augmented with the Open-AMP software stack, which allows the M4 and A7 cores to communicate.&lt;br /&gt;
&lt;br /&gt;
== Project architecture ==&lt;br /&gt;
FreeRTOS consists of multiple modular parts:&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unit&lt;br /&gt;
! Description&lt;br /&gt;
! Location&lt;br /&gt;
|-&lt;br /&gt;
| kernel&lt;br /&gt;
| FreeRTOS kernel&lt;br /&gt;
| rtos/FreeRTOS/Source&lt;br /&gt;
|-&lt;br /&gt;
| CMSIS headers and libraries&lt;br /&gt;
| Cortex-M specific support&lt;br /&gt;
| platform/CMSIS&lt;br /&gt;
|-&lt;br /&gt;
| SOC specific definitions&lt;br /&gt;
| This BSP only has MCIMX7D definitions&lt;br /&gt;
| platform/devices&lt;br /&gt;
|-&lt;br /&gt;
| Drivers&lt;br /&gt;
| All the drivers in the FreeRTOS BSP are stateless&lt;br /&gt;
| platform/drivers&lt;br /&gt;
|-&lt;br /&gt;
| Middleware libraries&lt;br /&gt;
| Open-AMP stack, including RPmsg support&lt;br /&gt;
| middleware/multicore/open-amp&lt;br /&gt;
|-&lt;br /&gt;
| Additional utilities&lt;br /&gt;
| Contains some printing functions&lt;br /&gt;
| platform/utilities&lt;br /&gt;
|-&lt;br /&gt;
| App code&lt;br /&gt;
| Application code and project files&lt;br /&gt;
| examples/cl-som-imx7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For development, the focal point is the apps projects, which pick and choose the various pieces of FreeRTOS and combine them with the app code into a single project. A good starting point is to pick an example project and start adding functionality.&lt;br /&gt;
&lt;br /&gt;
== FreeRTOS API reference ==&lt;br /&gt;
The CL-SOM-iMX7 FreeRTOS BSP is based on the NXP FreeRTOS BSP. The NXP BSP has some useful documents in the BSP archive, one of which provides a comprehensive documentation of FreeRTOS API. The NXP BSP can be downloaded [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-7-processors/i.mx-7dual-processors-heterogeneous-processing-with-dual-arm-cortex-a7-cores-and-cortex-m4-core:i.MX7D?tab=Design_Tools_Tab here] in the Board Support Packages section.&lt;br /&gt;
&lt;br /&gt;
== Multicore development and coexisting with Linux ==&lt;br /&gt;
Since Cortex-A7 and Cortex-M4 share both memory and peripherals, it is necessary to isolate or synchronize between these cores to prevent them from interfering with one another. The RDC (Resource Domain Controller) subsystem of iMX7 provides ways to implement this isolation/synchronization on the hardware level, and RDC support is part of the FreeRTOS API. Nevertheless, the general purpose OS that runs on the Cortex-A7 may not be prepared to handle the possibility that a bus or subsystem may be locked from it, or concurrently used by somebody else, and so disabling functionality on the Cortex-A7 OS may be necessary. In the case of Linux, a special device tree can be used to tell Linux not to touch iMX7 subsystems that we expect to be used by FreeRTOS. Such a device tree is provided in the CL-SOM-iMX7 FreeRTOS BSP.&lt;br /&gt;
&lt;br /&gt;
== Building FreeRTOS ==&lt;br /&gt;
=== Setup development tools ===&lt;br /&gt;
For FreeRTOS development it is possible to use either the [https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads GNU ARM Embedded toolchain], or the [https://developer.arm.com/products/software-development-tools/ds-5-development-studio/downloads ARM DS5 IDE] suite. The FreeRTOS BSP for CL-SOM-iMX7 has build scripts/project files for both tools.&lt;br /&gt;
==== GNU ARM Embedded toolchain ====&lt;br /&gt;
* Create a directory for downloading.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Download the [https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads GNU ARM Embedded toolchain] to the toolchain directory.&lt;br /&gt;
* Extract the toolchain archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/toolchain&lt;br /&gt;
tar xvf gcc-arm-none-eabi-6-2017-q1-update-linux.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Let the host system know where the toolchain is located&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;export ARMGCC_DIR=~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ARM DS5 IDE ====&lt;br /&gt;
* Create a directory for downloading.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/toolchain&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Download [https://developer.arm.com/products/software-development-tools/ds-5-development-studio/downloads ARM DS5 IDE] to the toolchain directory.&lt;br /&gt;
* Extract the downloaded archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/toolchain&lt;br /&gt;
tar xvf DS500-BN-00019-r5p0-27rel1.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Run the installation script and follow the instructions&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;./install.sh&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Getting FreeRTOS BSP sources ===&lt;br /&gt;
* Create a directory for development.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;mkdir -p ~/development&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Download the [http://www.compulab.com/products/computer-on-modules/cl-som-imx7-freescale-i-mx-7-system-on-module/#devres CL-SOM-iMX7 FreeRTOS BSP] to the development directory.&lt;br /&gt;
* Extract the FreeRTOS BSP archive:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/development&lt;br /&gt;
unzip cl-som-imx7_freertos.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Extract the BSP source archive inside the BSP package:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cd cl-som-imx7-freertos/freertos&lt;br /&gt;
tar xvf freertos.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building FreeRTOS ===&lt;br /&gt;
In this example we will use the {{cmd|hello_world}} demo project as reference.&lt;br /&gt;
==== Invoking build ====&lt;br /&gt;
===== GNU ARM Embedded toolchain =====&lt;br /&gt;
* Go to the {{filename|armgcc}} folder inside the {{filename|hello_world}} project directory&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;cd ~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/armgcc&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Run the build script for either of build configurations:&lt;br /&gt;
** For Debug configuration:&amp;lt;pre&amp;gt;./build_debug.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For Release configuration:&amp;lt;pre&amp;gt;./build_release.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For Both (debug and release) configurations:&amp;lt;pre&amp;gt;./build_all.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== ARM DS5 IDE =====&lt;br /&gt;
* Open DS5 IDE&lt;br /&gt;
* Go to File-&amp;gt;Import&lt;br /&gt;
* Select General-&amp;gt;Existing Projects into Workspace&lt;br /&gt;
* Click Browse and go to {{filename|~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/armgcc}} and click OK&lt;br /&gt;
* Click Finish&lt;br /&gt;
&lt;br /&gt;
Now you can right click on the project and select the build option.&lt;br /&gt;
&lt;br /&gt;
=== Image location ===&lt;br /&gt;
Depending on the tool used, and the selected build target, the built binary will reside in {{filename|~/development/cl-som-imx7-freertos/freertos/freertos_source/examples/cl_som_imx7_m4/demo_apps/hello_world/{armgcc,ds5}/{debug,release}/hello_world.bin}}.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[Linux: Setting up a development environment]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3408</id>
		<title>CL-SOM-iMX7: FreeRTOS: Running Demos</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Running_Demos&amp;diff=3408"/>
		<updated>2017-07-17T08:32:52Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Loading from TFTP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the process of loading FreeRTOS images into memory, and running the in-memory images. For quick evaluation, the FreeRTOS BSP for CL-SOM-iMX7 comes with precompiled images that can be found under the {{filename|images}} folder.&lt;br /&gt;
&lt;br /&gt;
== Loading FreeRTOS into memory ==&lt;br /&gt;
A FreeRTOS image must be run from TCM, DDR, or OCRAM, depending on how it was built. Consult the following table for the right &amp;lt;'''load_addr'''&amp;gt; to use:&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image name&lt;br /&gt;
! Must run from&lt;br /&gt;
! load_addr&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;.bin&lt;br /&gt;
| TCM&lt;br /&gt;
| 7F8000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ocram.bin&lt;br /&gt;
| OCRAM&lt;br /&gt;
| 910000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;image_name&amp;gt;_ddr.bin&lt;br /&gt;
| DDR&lt;br /&gt;
| 9FF00000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loading from USB ===&lt;br /&gt;
* Power on the module and stop U-Boot from booting Linux by holding Ctrl-c.&lt;br /&gt;
* Place image into USB drive, and insert the USB drive into the P6 or P26 USB connector.&lt;br /&gt;
* Load image into memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # usb start&lt;br /&gt;
CL-SOM-iMX7 # load usb 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To boot the image, go to [[CL-SOM-iMX7: FreeRTOS: Demos#Booting FreeRTOS from memory | Booting FreeRTOS from memory]].&lt;br /&gt;
&lt;br /&gt;
=== Loading from MMC ===&lt;br /&gt;
* Power on the module and stop U-Boot from booting Linux by holding Ctrl-c.&lt;br /&gt;
* Place image into SD-card, and insert the SD-card into the P9 connector.&lt;br /&gt;
* Load image into memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # mmc dev 0&lt;br /&gt;
CL-SOM-iMX7 # mmc rescan&lt;br /&gt;
CL-SOM-iMX7 # load mmc 0 &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To boot the image, go to [[CL-SOM-iMX7: FreeRTOS: Demos#Booting FreeRTOS from memory | Booting FreeRTOS from memory]].&lt;br /&gt;
&lt;br /&gt;
=== Loading from TFTP ===&lt;br /&gt;
* Power on the module and stop U-Boot from booting Linux by holding Ctrl-c.&lt;br /&gt;
* Setup TFTP as described in the [[Linux: Setting up a development environment]] article, and place the image into the TFTP folder on your workstation.&lt;br /&gt;
* Connect CL-SOM-iMX7 to a network using connector P21.&lt;br /&gt;
* Load image into memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # setenv autoload no&lt;br /&gt;
CL-SOM-iMX7 # dhcp&lt;br /&gt;
CL-SOM-iMX7 # setenv serverip &amp;lt;your_workstation_ip&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # tftp &amp;lt;load_addr&amp;gt; &amp;lt;image_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To boot the image, go to [[CL-SOM-iMX7: FreeRTOS: Demos#Booting FreeRTOS from memory | Booting FreeRTOS from memory]].&lt;br /&gt;
&lt;br /&gt;
== Booting FreeRTOS from memory ==&lt;br /&gt;
* Run the image using the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CL-SOM-iMX7 # dcache flush&lt;br /&gt;
CL-SOM-iMX7 # bootaux &amp;lt;load_addr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[FreeRTOS: Introduction to FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Building&amp;diff=3398</id>
		<title>CM-T43: Yocto Linux: Building</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Building&amp;diff=3398"/>
		<updated>2017-07-16T14:26:13Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Preparation steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This article describes how to install and build the Yocto Linux release for CM-T43 SOM on a development machine.&lt;br /&gt;
&lt;br /&gt;
= Preparation steps =&lt;br /&gt;
&lt;br /&gt;
* Obtain a Linux PC host development station running '''''Ubuntu 14.04''''' or '''''Ubuntu 16.04'''''.&lt;br /&gt;
* Download the Linux Yocto package for CM-T43 from [http://www.compulab.com/products/computer-on-modules/cm-t43/#devres CompuLab website]. Unzip the package to a directory on your host workstation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir cm-t43-yocto-dev&lt;br /&gt;
cd cm-t43-yocto-dev&lt;br /&gt;
unzip /path/to/downloaded/cm-t43_yocto-linux.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install development tools:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install git build-essential python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Reconfigure dash&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo dpkg-reconfigure dash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be sure to select &amp;quot;No&amp;quot; when you are asked to use dash as the default system shell. &lt;br /&gt;
* Install the Arago toolchain&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz&lt;br /&gt;
sudo tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz -C $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download and install Yocto Linux development source code ==&lt;br /&gt;
&lt;br /&gt;
Type the following commands to download and install the TI Yocto Linux source code on the development station:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk&lt;br /&gt;
cd tisdk&lt;br /&gt;
./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-03.03.00.04-config.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Apply the CM-T43 support patch ===&lt;br /&gt;
Once the Yocto Linux source code is installed on the host Ubuntu machine, apply the CM-T43 patch, as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
patch -d sources -p1 &amp;lt; ../cm-t43-yocto-linux/development/yocto-cm-t43-2.0.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
At this point, CompuLab Yocto support has been installed over the Yocto Linux source code and can be built.&lt;br /&gt;
&lt;br /&gt;
== local.conf customizations ==&lt;br /&gt;
For local builds customization, edit you build/conf/local.conf file with any favorite text editor.&lt;br /&gt;
&lt;br /&gt;
=== Parallel build ===&lt;br /&gt;
Set the build parameters to fully utilize your host machine &lt;br /&gt;
BB_NUMBER_THREADS = '4'&amp;lt;br&amp;gt;PARALLEL_MAKE = '-j 6' &lt;br /&gt;
BB_NUMBER_THREADS should be your host machine's number of threads minus 2 or same. &lt;br /&gt;
PARALLEL_MAKE should be the number of threads your host machine has plus two.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Building the CM-T43 Yocto image =&lt;br /&gt;
Change directory to the build directory of Yocto and set up the build environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd build&lt;br /&gt;
source conf/setenv&lt;br /&gt;
export PATH=$HOME/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The {{parameter|tisdk-rootfs-image}} can be built as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MACHINE=cm-t43 bitbake tisdk-rootfs-image&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After the image is built, all images are located in: {{filename|/path/to/cm-t43-yocto-dev/tisdk/build/arago-tmp-external-linaro-toolchain/deploy/images/cm-t43}}&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [[CM-T43: Yocto Linux: Getting started]]&lt;br /&gt;
* [[CM-T43: Yocto Linux: Package contents]]&lt;br /&gt;
* [http://www.yoctoproject.org/docs/2.3/mega-manual/mega-manual.html Yocto Project Mega-Manual]&lt;br /&gt;
* [https://www.yoctoproject.org/docs/2.3/bitbake-user-manual/bitbake-user-manual.html BitBake User Manual]&lt;br /&gt;
* [http://git.yoctoproject.org/cgit.cgi Yocto Project Source Repositories]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Yocto]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Known_Issues&amp;diff=3399</id>
		<title>CM-T43: Yocto Linux: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Yocto_Linux:_Known_Issues&amp;diff=3399"/>
		<updated>2017-07-16T14:24:14Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IssueCategory|Default touchscreen calibration|&lt;br /&gt;
* In the initial touchscreen settings, one axis is reverse.&lt;br /&gt;
:'''Workaround:'''&lt;br /&gt;
:* Perform touchscreen calibration on first boot. See [[CM-T43: Yocto Linux: User Space]] for information on rerunning touchscreen calibration if needed.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3405</id>
		<title>CL-SOM-iMX7: FreeRTOS: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Package_contents&amp;diff=3405"/>
		<updated>2017-07-13T14:18:28Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Package contents ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cl-som-imx-freertos/&lt;br /&gt;
├── freertos&lt;br /&gt;
│   └── freertos.tar.bz2&lt;br /&gt;
├── images&lt;br /&gt;
│   ├── adc_imx7d_example.bin&lt;br /&gt;
│   ├── blinking_imx_demo_gpt.bin&lt;br /&gt;
│   ├── flexcan_loopback_example.bin&lt;br /&gt;
│   ├── flexcan_network_example.bin&lt;br /&gt;
│   ├── gpio_imx_example.bin&lt;br /&gt;
│   ├── gpt_example.bin&lt;br /&gt;
│   ├── hello_world.bin&lt;br /&gt;
│   ├── hello_world_ddr.bin&lt;br /&gt;
│   ├── hello_world_ocram.bin&lt;br /&gt;
│   ├── rand_wfi_imx7d.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_pingpong_freertos_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_bm_example.bin&lt;br /&gt;
│   ├── rpmsg_str_echo_freertos_example.bin&lt;br /&gt;
│   ├── sema4_demo.bin&lt;br /&gt;
│   ├── uart_imx_interrupt_example.bin&lt;br /&gt;
│   ├── uart_imx_polling_example.bin&lt;br /&gt;
│   └── wdog_imx_example.bin&lt;br /&gt;
├── linux&lt;br /&gt;
│   ├── imx7d-sbc-imx7-m4.dtb&lt;br /&gt;
│   └── imx7d-sbc-imx7-m4.dts&lt;br /&gt;
├── readme.txt&lt;br /&gt;
├── utilities&lt;br /&gt;
│   └── get_freertos_version.sh&lt;br /&gt;
└── version.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== version.txt ===&lt;br /&gt;
The contents of the {{filename|version.txt}} identifies the package version.&lt;br /&gt;
&lt;br /&gt;
=== readme.txt ===&lt;br /&gt;
A file describing the package.&lt;br /&gt;
&lt;br /&gt;
=== freertos ===&lt;br /&gt;
* {{filename|freertos.tar.bz2}} - Full source code of the FreeRTOS BSP from which the demo images in this release were compiled. Based on NXP's FreeRTOS BSP for iMX7.&lt;br /&gt;
&lt;br /&gt;
=== images ===&lt;br /&gt;
* {{filename|adc_imx7d_example.bin}} - Driver functionality example for adc driver.&lt;br /&gt;
* {{filename|blinking_imx_demo_gpt.bin}} - Example application demonstrating gpt + gpio functionality.&lt;br /&gt;
* {{filename|flexcan_loopback_example.bin}} - Driver functionality example for canbus driver in loopback mode.&lt;br /&gt;
* {{filename|flexcan_network_example.bin}} - Driver functionality example for canbus driver with outbound network connection.&lt;br /&gt;
* {{filename|gpio_imx_example.bin}} - Driver functionality example for gpio driver.&lt;br /&gt;
* {{filename|gpt_example.bin}} - Driver functionality example for gpt driver.&lt;br /&gt;
* {{filename|hello_world.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for TCM memory.&lt;br /&gt;
* {{filename|hello_world_ddr.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for DDR memory.&lt;br /&gt;
* {{filename|hello_world_ocram.bin}} - Example application demonstrating a simple &amp;quot;Hello World&amp;quot; functionality, compiled for OCRAM memory.&lt;br /&gt;
* {{filename|rand_wfi_imx7d.bin}} - Example application demonstrating GPT usage and changing of power modes on M4 core.&lt;br /&gt;
* {{filename|rpmsg_pingpong_bm_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_pingpong_freertos_example.bin}} - Example application demonstrating synchronous operation between M4 and A7 cores, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_bm_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built without FreeRTOS facilities.&lt;br /&gt;
* {{filename|rpmsg_str_echo_freertos_example.bin}} - Example application demonstrating message passing from A7 to M4 core, built using FreeRTOS facilities.&lt;br /&gt;
* {{filename|sema4_demo.bin}} - Example application demonstrating SEMA4 usage.&lt;br /&gt;
* {{filename|uart_imx_interrupt_example.bin}} - Driver functionality example for UART driver, using interrupt mode.&lt;br /&gt;
* {{filename|uart_imx_polling_example.bin}} - Driver functionality example for UART driver, using polling mode.&lt;br /&gt;
* {{filename|wdog_imx_example.bin}} - Driver functionality example for Watchdog driver.&lt;br /&gt;
&lt;br /&gt;
=== linux ===&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dtb}} - Device tree blob for booting [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]] while M4 is running.&lt;br /&gt;
* {{filename|imx7d-sbc-imx7-m4.dts}} - Source code for {{filename|imx7d-sbc-imx7-m4.dtb}}, meant to be used with the source code of the [[CL-SOM-iMX7 Freescale i.MX7 Linux|Compulab Linux for CL-SOM-iMX7]].&lt;br /&gt;
&lt;br /&gt;
=== utilities ===&lt;br /&gt;
* {{filename|get_freertos_version.sh}} - A script for printing the FreeRTOS binary version.&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3406</id>
		<title>CL-SOM-iMX7: FreeRTOS: Hardware Configuration</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Hardware_Configuration&amp;diff=3406"/>
		<updated>2017-07-11T16:48:51Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Internal systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the default hardware configuration of FreeRTOS for CL-SOM-iMX7.&lt;br /&gt;
&lt;br /&gt;
For more information see the board file {{filename|examples/cl_som_imx7_m4/board.h}} in the BSP source code and the pinmux config file {{filename|examples/cl_som_imx7_m4/pin_mux.c}}.&lt;br /&gt;
&lt;br /&gt;
== I/O pinout ==&lt;br /&gt;
FreeRTOS is setup to use UART2, CAN2, ADC1, I2C3, and GPIO6 signals with the following pinout:&lt;br /&gt;
&lt;br /&gt;
=== UART2 ===&lt;br /&gt;
* P4-31 (RX)&lt;br /&gt;
* P4-33 (TX)&lt;br /&gt;
&lt;br /&gt;
=== FlexCAN2 ===&lt;br /&gt;
* P4-32 (RX)&lt;br /&gt;
* P4-34 (TX)&lt;br /&gt;
&lt;br /&gt;
=== ADC1 ===&lt;br /&gt;
* P4-24 (IN0)&lt;br /&gt;
* P4-26 (IN1)&lt;br /&gt;
* P4-28 (IN2)&lt;br /&gt;
* P4-30 (IN3)&lt;br /&gt;
&lt;br /&gt;
=== GPIO6 ===&lt;br /&gt;
* GPIO6_14 (LED control)&lt;br /&gt;
&lt;br /&gt;
=== I2C3 ===&lt;br /&gt;
* P4-21 (SCL)&lt;br /&gt;
* P4-23 (SDA)&lt;br /&gt;
&lt;br /&gt;
== Internal systems ==&lt;br /&gt;
&lt;br /&gt;
=== GPT ===&lt;br /&gt;
FreeRTOS demos use GPT3 and GPT4.&lt;br /&gt;
&lt;br /&gt;
=== Watchdog ===&lt;br /&gt;
FreeRTOS demos use Watchdog3.&lt;br /&gt;
&lt;br /&gt;
=== MU ===&lt;br /&gt;
FreeRTOS works with messaging unit MU_B.&lt;br /&gt;
&lt;br /&gt;
=== RDC ===&lt;br /&gt;
FreeRTOS demos use RDC Domain 1.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Demos Usage Guide]]&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[FreeRTOS: Introduction to FreeRTOS development]]&lt;br /&gt;
* [http://www.freertos.org/ FreeRTOS website]&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_Evaluation_Kit:_Getting_Started&amp;diff=3400</id>
		<title>CL-SOM-iMX7: Evaluation Kit: Getting Started</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_Evaluation_Kit:_Getting_Started&amp;diff=3400"/>
		<updated>2017-07-11T15:37:57Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* What Next? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:CL-SOM-iMX7-eval-kit-quick-setup.jpg|800px]]&lt;br /&gt;
[[Image:SB_SOM_topview2.jpg|thumb|right|alt=SB-SOM top view|&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;SB-SOM top view&amp;lt;/div&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== System setup ==&lt;br /&gt;
[[Image:SB_SOM_bottomview2.jpg|thumb|right|alt=SB-SOM bottom view|&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;SB-SOM bottom view&amp;lt;/div&amp;gt;]]&lt;br /&gt;
CL-SOM-iMX7 evaluation kit is preloaded with [[CL-SOM-iMX7: Linux: Debian|Debian Linux image for CL-SOM-iMX7]].&lt;br /&gt;
# Connect a DVI/HDMI Display to HDMI connector '''J5''' using a standard HDMI/DVI cable.&lt;br /&gt;
# Connect a USB Keyboard to USB connector '''P6'''.&lt;br /&gt;
# Make sure jumpers '''E7''', '''E3''' and '''E1''' are not populated (default state).&lt;br /&gt;
# Connect the standard USB cable (included) between your host PC and the evaluation kit micro-USB2.0 connector '''P7'''.&lt;br /&gt;
# On your computer, start a terminal emulation program (such as HyperTerminal) with the following serial port settings:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''More Details:''' ''[[SB-SOM:_Connectors:_P6|Connector P6]]'', ''[[SB-SOM:_Connectors:_J5|Connector J5]]'', ''[[SB-SOM:_Connectors:_P7|Connector P7]]''&amp;lt;!--, ''[[SB-SOM:_Jumpers:_E3|E3]]'', ''[[SB-SOM:_Jumpers:_E7|E7]]'', ''[[SB-SOM:_Jumpers:_E1|E1]]''--&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Starting the system ==&lt;br /&gt;
# Connect the DC 12V power supply adapter (included) to main DC power connector - '''J6'''.&lt;br /&gt;
# Follow the messages in your terminal emulator program until you see the linux login prompt. &lt;br /&gt;
# Use the credentials below to login.&lt;br /&gt;
:* username: root&lt;br /&gt;
:* password: 111111&lt;br /&gt;
{{note|In case no messages appear in your terminal emulation program, please refer to the detailed [[SB-SOM: HOWTO: USB Console|USB console]] guide.}}&lt;br /&gt;
&lt;br /&gt;
'''More Details:''' ''[[SB-SOM: Connectors: J6 and J8|Connector J6]]''.&lt;br /&gt;
&lt;br /&gt;
== What Next? ==&lt;br /&gt;
* [[CL-SOM-iMX7 NXP i.MX7 U-Boot|CL-SOM-iMX7 U-Boot guide]]&lt;br /&gt;
* [[CL-SOM-iMX7 Freescale i.MX7 Linux|CL-SOM-iMX7 Linux guide]]&lt;br /&gt;
* [[CL-SOM-iMX7 NXP i.MX7 Yocto Linux|CL-SOM-iMX7 Yocto guide]]&lt;br /&gt;
* [[CL-SOM-iMX7 NXP i.MX7 FreeRTOS|CL-SOM-iMX7 FreeRTOS guide]]&lt;br /&gt;
* [[CL-SOM-iMX7: Evaluation Kit: Hardware Guide|CL-SOM-iMX7 evaluation kit hardware guide]]&lt;br /&gt;
* [http://www.compulab.com/products/computer-on-modules/cl-som-imx7-freescale-i-mx-7-system-on-module/#devres CL-SOM-iMX7 development resources]&lt;br /&gt;
&lt;br /&gt;
[[Category:SB-SOM]]&lt;br /&gt;
[[Category:CL-SOM-iMX7]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Category:FreeRTOS&amp;diff=3404</id>
		<title>Category:FreeRTOS</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Category:FreeRTOS&amp;diff=3404"/>
		<updated>2017-07-11T15:29:50Z</updated>

		<summary type="html">&lt;p&gt;Nikita: New page: FreeRTOS related pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeRTOS related pages&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3403</id>
		<title>CL-SOM-iMX7: FreeRTOS: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Known_Issues&amp;diff=3403"/>
		<updated>2017-07-11T15:29:16Z</updated>

		<summary type="html">&lt;p&gt;Nikita: New page: {{IssueCategory|Booting multiple images| * Booting more than one FreeRTOS image in the same power-on session will likely not work, with only the first boot being successful. Occasionally, ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IssueCategory|Booting multiple images|&lt;br /&gt;
* Booting more than one FreeRTOS image in the same power-on session will likely not work, with only the first boot being successful. Occasionally, booting multiple images may result in a data abort.&lt;br /&gt;
:'''Workaround :''' Reset the module between image boots.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FreeRTOS|Known issues]]&lt;br /&gt;
[[Category:CL-SOM-iMX7|FreeRTOS: Known issues]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Debian&amp;diff=2983</id>
		<title>CM-T43: Linux: Debian</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Debian&amp;diff=2983"/>
		<updated>2016-06-29T12:33:44Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The example run-time Linux filesystem image for the CompuLab CM-T43 System-on-Module / Computer-on-Module is based on Debian GNU/Linux Jessie.&lt;br /&gt;
The CompuLab Linux package for CM-T43 includes ready to run Linux kernel binary, root filesystem demo image archive, Linux kernel configuration and source code patches.&lt;br /&gt;
&lt;br /&gt;
The default Debian Jessie Linux image includes more than 400 software packages. Among them:&lt;br /&gt;
&lt;br /&gt;
* Core system&lt;br /&gt;
* Debian package management system&lt;br /&gt;
* X11 Windowing System&lt;br /&gt;
* Fluxbox desktop manager&lt;br /&gt;
* Netsurf browser&lt;br /&gt;
* Samba connectivity suite&lt;br /&gt;
* SSH server and client&lt;br /&gt;
* ALSA configuration and usage utilities&lt;br /&gt;
* Bluetooth 5.0 tools and daemons&lt;br /&gt;
&lt;br /&gt;
The [[CM-T43: Linux: Manual Installation]] page provides a brief introduction on how to install the run-time Linux image.&lt;br /&gt;
&lt;br /&gt;
== Using Debian Linux on CM-T43 ==&lt;br /&gt;
&lt;br /&gt;
=== Connection and Logging In ===&lt;br /&gt;
Use the following username and password to login:&lt;br /&gt;
&lt;br /&gt;
Account with administrative privileges:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm-debian login: root&lt;br /&gt;
Password: 111111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Regular user account:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm-debian login: user	&lt;br /&gt;
Password: 111111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To login into the Linux system, you may use a serial console (ttyO0) at 115200 bps, or connect through the network.&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
CM-T43 can operate in two modes: dual MAC mode, or as a 3 port ethernet switch. The default mode of operation is dual MAC mode.&lt;br /&gt;
A user guide for both operation modes can be found in the [http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User%27s_Guide Linux Core CPSW User's Guide] article in the TI wiki.&lt;br /&gt;
To configure networking, edit {{filename|/etc/network/interfaces}}, {{filename|/etc/resolv.conf}}, {{filename|/etc/hostname}} and {{filename|/etc/hosts}}. For more information about Debian Linux network configuration read [http://www.debian.org/doc/manuals/reference/ch05.en.html Network setup] chapter in the [http://www.debian.org/doc/manuals/reference/index.en.html Debian Reference].&lt;br /&gt;
&lt;br /&gt;
==== Switching to 3-port switch mode ====&lt;br /&gt;
To enable 3-port switch mode, the device tree blob must be modified to remove the dual_emac property before Linux boots. This can be done using the following U-Boot commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# fdt addr &amp;lt;address fdt was loaded to&amp;gt;&lt;br /&gt;
# fdt rm /ocp/ethernet@4a100000 dual_emac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X Windows system ===&lt;br /&gt;
CompuLab Debian Jessie Linux demo image contains full featured X Windows system with Fluxbox window manager.&lt;br /&gt;
Before starting X Windows, connect USB mouse and keyboard to the system.&lt;br /&gt;
You can run X Windows by typing {{cmd|startx}}.&lt;br /&gt;
&lt;br /&gt;
=== Fluxbox window manager ===&lt;br /&gt;
&lt;br /&gt;
CM-T43 Debian Linux features installed Fluxbox package - a lightweight window manager for the X Windowing System.&lt;br /&gt;
&lt;br /&gt;
* Fluxbox provides configurable window decorations, a root menu to launch applications and a toolbar that shows the current workspace name, a set of application names and the current time. There is also a workspace menu which allows you to add or remove workspaces. The {{parameter|slit}} can be used to dock small applications, e.g. most of the bbtools can use slit. &lt;br /&gt;
* Fluxbox can iconify windows to the toolbar, in addition to adding the window to the Icons submenu of the workspace menu.&lt;br /&gt;
&lt;br /&gt;
Visit [http://fluxbox-wiki.org Fluxbox Wiki] and [http://fluxbox.org/ Official home page] for more details.&lt;br /&gt;
&lt;br /&gt;
=== Software Management ===&lt;br /&gt;
&lt;br /&gt;
Debian Linux image for CM-T43 includes all the information required to use Debian package management utilities. You can use [http://linux.die.net/man/8/apt-get apt-get] and [http://www.wlug.org.nz/dpkg(8) dpkg] out of the box.&lt;br /&gt;
&lt;br /&gt;
=== MMC/SD ===&lt;br /&gt;
The support for MMC/SD card on CM-T43 is built into the Linux kernel.&lt;br /&gt;
To mount the memory card, monitor ''/proc/partitions'' to see what partitions were detected on the MMC/SD card. For example, suppose MMC/SD partition you'd like to mount is ''mmcblk0p1'' then:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /mnt/mmcblk0p1 &amp;amp;&amp;amp; mount /dev/mmcblk0p1 /mnt/mmcblk0p1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display options ===&lt;br /&gt;
CM-T43 evaluation platform has three video output interfaces: LCD, DVI, and LVDS. Default configuration of Debian Linux for CM-T43 uses LCD as primary video output.&lt;br /&gt;
&lt;br /&gt;
=== USB Dual-Role-Device ===&lt;br /&gt;
&lt;br /&gt;
CM-T43 has USB DWC3 based controller. It features USB 2.0 Dual-Role-Device (DRD) subsystem with integrated HS/FS (USB2.0) PHY.&lt;br /&gt;
CM-T43 DRD port is USB host and USB device (gadget) capable. USB Device Gadget drivers are compiled as modules with default CM-T43 kernel configuration.&lt;br /&gt;
Current Linux kernel support of DWC3 features does not allow dynamic role (host/device) switching during runtime. By default, ''host'' role is assigned to CM-T43 DRD port.&lt;br /&gt;
&lt;br /&gt;
Device mode can be enabled by running the following U-Boot commands before boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# fdt addr &amp;lt;address fdt was loaded to&amp;gt;&lt;br /&gt;
# fdt resize&lt;br /&gt;
# fdt set /ocp/omap_dwc3@48380000/usb@48390000 dr_mode peripheral&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Testing Device (gadget) mode ====&lt;br /&gt;
&lt;br /&gt;
Default CM-T43 kernel configuration enables {{filename|g_serial}}, {{filename|g_mass_storage}}, {{filename|g_ether}}, {{filename|g_audio}}, and {{filename|g_hid}} gadget drivers.&lt;br /&gt;
More gadget drivers can be enabled in the kernel configuration.&lt;br /&gt;
&lt;br /&gt;
* Connect USB OTG micro B-cable (ID pin Float) to P3 USB DRD port of SB-SOM baseboard.&lt;br /&gt;
* Connect other side Standard-A connector to Linux Host PC USB Host port.&lt;br /&gt;
&lt;br /&gt;
===== Emulate a serial link =====&lt;br /&gt;
&lt;br /&gt;
* Load gadget driver on CM-T43 Eval board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# modprobe g_serial&lt;br /&gt;
[  114.805045] g_serial gadget: Gadget Serial v2.4&lt;br /&gt;
[  114.809968] g_serial gadget: g_serial ready&lt;br /&gt;
[  115.306074] g_serial gadget: high-speed config #2: CDC ACM config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ensure the connection is established on the Host PC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@linux-host:~$ dmesg&lt;br /&gt;
...&lt;br /&gt;
[72415.607738] cdc_acm 2-1.8.2:2.0: ttyACM0: USB ACM device&lt;br /&gt;
[72415.608446] usbcore: registered new interface driver cdc_acm&lt;br /&gt;
[72415.608447] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Receive data on CM-T43 Eval board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# cat /dev/ttyGS0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Send data from Host PC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@linux-host:~$ echo &amp;quot;Test message&amp;quot; &amp;gt; /dev/ttyACM0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth ===&lt;br /&gt;
==== Host Controller Interface (HCI) Initialization ==== &lt;br /&gt;
* HCI requires no user interaction for being configured. The driver gets loaded automatically unless this option has been disabled by putting a black list rule for this device.&amp;lt;br&amp;gt;&lt;br /&gt;
Make sure that the Bluetooth driver is loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# lsmod | grep btmrvl&lt;br /&gt;
btmrvl_sdio            14294  0 &lt;br /&gt;
btmrvl                  9612  1 btmrvl_sdio&lt;br /&gt;
bluetooth             304454  22 bnep,btmrvl,btmrvl_sdio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* HCI device configuration utility can be run to retrieve detailed information about the Bluetooth interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# hciconfig -a&lt;br /&gt;
hci0:	Type: BR/EDR  Bus: SDIO&lt;br /&gt;
	BD Address: 4C:AA:16:66:C4:E0  ACL MTU: 1021:7  SCO MTU: 120:6&lt;br /&gt;
	UP RUNNING PSCAN &lt;br /&gt;
	RX bytes:1136 acl:0 sco:0 events:40 errors:0&lt;br /&gt;
	TX bytes:1546 acl:0 sco:0 commands:39 errors:0&lt;br /&gt;
	Features: 0xff 0xee 0x8f 0xfe 0x9b 0xff 0x79 0x87&lt;br /&gt;
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3 &lt;br /&gt;
	Link policy: RSWITCH HOLD SNIFF &lt;br /&gt;
	Link mode: SLAVE ACCEPT &lt;br /&gt;
	Name: 'cm-debian-0'&lt;br /&gt;
	Class: 0x4a0100&lt;br /&gt;
	Service Classes: Networking, Capturing, Telephony&lt;br /&gt;
	Device Class: Computer, Uncategorized&lt;br /&gt;
	HCI Version: 2.1 (0x4)  Revision: 0x8300&lt;br /&gt;
	LMP Version: 2.1 (0x5)  Subversion: 0x810&lt;br /&gt;
	Manufacturer: Marvell Technology Group Ltd. (72)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the HCI device is not running, use the below command to enable the HCI device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bluez5 &amp;amp; PulseAudio ====&lt;br /&gt;
Debian jessie is using BlueZ 5 and PluseAudio 5, which are fairly new.&amp;lt;br&amp;gt;&lt;br /&gt;
BlueZ 5 dropped support for alsa, so the solution for now is to use PulseAudio.&amp;lt;br&amp;gt;&lt;br /&gt;
PulseAudio 5 only supports the A2DP profile and not HSP/HFP. &amp;lt;br&amp;gt;&lt;br /&gt;
* Software to install {{filename|'''pulseaudio'''}}, {{filename|'''pulseaudio-module-bluetooth'''}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt-get install --no-install-recommends pulseaudio pulseaudio-module-bluetooth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a systemd service for running pulseaudio as the pulse user.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat &amp;lt;&amp;lt; eof &amp;gt; /etc/systemd/system/pulseaudio.service&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Pulse Audio&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
eof&lt;br /&gt;
&lt;br /&gt;
# chown pulse:pulse /etc/systemd/system/pulseaudio.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create a dbus configuration file for running pulseaudio. Give the pulse user permission to use Bluetooth.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat &amp;lt;&amp;lt; eof &amp;gt; /etc/dbus-1/system.d/pulseaudio-bluetooth.conf&lt;br /&gt;
&amp;lt;busconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;policy user=&amp;quot;pulse&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/busconfig&amp;gt;&lt;br /&gt;
eof&lt;br /&gt;
# chmod 0666 /etc/dbus-1/system.d/pulseaudio-bluetooth.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Paste the following lines to the end of /etc/pulse/system.pa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat &amp;lt;&amp;lt; eof &amp;gt;&amp;gt; /etc/pulse/system.pa&lt;br /&gt;
### Automatically load driver modules for Bluetooth hardware&lt;br /&gt;
.ifexists module-bluetooth-policy.so&lt;br /&gt;
load-module module-bluetooth-policy&lt;br /&gt;
.endif&lt;br /&gt;
&lt;br /&gt;
.ifexists module-bluetooth-discover.so&lt;br /&gt;
load-module module-bluetooth-discover&lt;br /&gt;
.endif&lt;br /&gt;
eof&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create {{filename|/var/run/pulse/.config/pulse}} directory. Change its ownership.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mkdir -p /var/run/pulse/.config/pulse&lt;br /&gt;
# chown -R pulse:pulse /var/run/pulse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Make the root belong to the pulse-access,audio groups&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usermod -a -G pulse-access,audio root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Start PulseAudio service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl daemon-reload&lt;br /&gt;
# systemctl start pulseaudio.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Make sure that the service is active, running and reports no errors.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl status pulseaudio.service&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/pulseaudio.service; disabled)&lt;br /&gt;
   Active: active (running) since Mon 2015-07-20 12:00:13 UTC; 1min 34s ago&lt;br /&gt;
 Main PID: 805 (pulseaudio)&lt;br /&gt;
   CGroup: /system.slice/pulseaudio.service&lt;br /&gt;
           └─805 /usr/bin/pulseaudio --system --disallow-exit --disable-shm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bluez5 pairing ====&lt;br /&gt;
PulseAudio 5.x supports A2DP per default.&amp;lt;br&amp;gt;&lt;br /&gt;
Make sure the following packages are installed:&lt;br /&gt;
pulseaudio pulseaudio-module-bluetooth pulseaudio-utils, bluez, bluez-tools.&lt;br /&gt;
{{Note|Without {{filename|pulseaudio-module-bluetooth}} package it will be impossible to connect after the next pairing and there will be no usable error messages.}}&lt;br /&gt;
&lt;br /&gt;
* Start the Bluetooth system:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl start bluetooth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now we can use the {{filename|bluetoothctl}} command line utility to pair and connect. Run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# bluetoothctl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to be greeted by its internal command prompt. Then enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# power on&lt;br /&gt;
# agent on&lt;br /&gt;
# default-agent&lt;br /&gt;
# scan on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now make sure that the headset is in pairing mode. It should be discovered shortly. For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[NEW] Device 00:07:A4:F2:B3:CB Motorola HT820&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
shows a device that calls itself &amp;quot;Motorola HT820&amp;quot; and has MAC address 00:07:A4:F2:B3:CB.&lt;br /&gt;
We will now use that MAC address to initiate the pairing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# pair 00:07:A4:F2:B3:CB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After pairing, connect to the device explicitly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# connect 00:07:A4:F2:B3:CB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A new PulseAudio output device is ready.&amp;lt;br&amp;gt;&lt;br /&gt;
Disable the scanning and exit the program:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# scan off&lt;br /&gt;
# exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Playback using PulseAudio ====&lt;br /&gt;
{{Note|Next examples assume that the device mac address is '''00_07_A4_F2_B3_CB'''}}&lt;br /&gt;
* Show the PulseAudio device &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# pactl list cards  | awk '/00_07_A4_F2_B3_CB/' RS=&amp;quot;&amp;quot;&lt;br /&gt;
Card #1&lt;br /&gt;
	Name: bluez_card.00_07_A4_F2_B3_CB&lt;br /&gt;
	Driver: module-bluez5-device.c&lt;br /&gt;
	Owner Module: 16&lt;br /&gt;
	Properties:&lt;br /&gt;
		device.description = &amp;quot;Motorola HT820&amp;quot;&lt;br /&gt;
		device.string = &amp;quot;00:07:A4:F2:B3:CB&amp;quot;&lt;br /&gt;
		device.api = &amp;quot;bluez&amp;quot;&lt;br /&gt;
		device.class = &amp;quot;sound&amp;quot;&lt;br /&gt;
		device.bus = &amp;quot;bluetooth&amp;quot;&lt;br /&gt;
		device.form_factor = &amp;quot;headset&amp;quot;&lt;br /&gt;
		bluez.path = &amp;quot;/org/bluez/hci0/dev_00_07_A4_F2_B3_CB&amp;quot;&lt;br /&gt;
		bluez.class = &amp;quot;0x240404&amp;quot;&lt;br /&gt;
		bluez.alias = &amp;quot;Motorola HT820&amp;quot;&lt;br /&gt;
		device.icon_name = &amp;quot;audio-headset-bluetooth&amp;quot;&lt;br /&gt;
		device.intended_roles = &amp;quot;phone&amp;quot;&lt;br /&gt;
	Profiles:&lt;br /&gt;
		a2dp: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)&lt;br /&gt;
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)&lt;br /&gt;
	Active Profile: a2dp&lt;br /&gt;
	Ports:&lt;br /&gt;
		headset-output: Headset (priority: 0, latency offset: 0 usec)&lt;br /&gt;
			Part of profile(s): a2dp&lt;br /&gt;
		headset-input: Headset (priority: 0, latency offset: 0 usec, not available)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Switch the active card profile to A2DP&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# pactl set-card-profile 1 a2dp_sink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Show the PulseAudio sink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# pactl list sinks | awk '/00_07_A4_F2_B3_CB/' RS=&amp;quot;&amp;quot;&lt;br /&gt;
Sink #2&lt;br /&gt;
	State: SUSPENDED&lt;br /&gt;
	Name: bluez_sink.00_07_A4_F2_B3_CB&lt;br /&gt;
	Description: Motorola HT820&lt;br /&gt;
	Driver: module-bluez5-device.c&lt;br /&gt;
	Sample Specification: s16le 2ch 44100Hz&lt;br /&gt;
	Channel Map: front-left,front-right&lt;br /&gt;
	Owner Module: 16&lt;br /&gt;
	Mute: no&lt;br /&gt;
	Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB&lt;br /&gt;
	        balance 0.00&lt;br /&gt;
	Base Volume: 65536 / 100% / 0.00 dB&lt;br /&gt;
	Monitor Source: bluez_sink.00_07_A4_F2_B3_CB.monitor&lt;br /&gt;
	Latency: 0 usec, configured 0 usec&lt;br /&gt;
	Flags: HARDWARE DECIBEL_VOLUME LATENCY &lt;br /&gt;
	Properties:&lt;br /&gt;
		bluetooth.protocol = &amp;quot;a2dp_sink&amp;quot;&lt;br /&gt;
		device.description = &amp;quot;Motorola HT820&amp;quot;&lt;br /&gt;
		device.string = &amp;quot;00:07:A4:F2:B3:CB&amp;quot;&lt;br /&gt;
		device.api = &amp;quot;bluez&amp;quot;&lt;br /&gt;
		device.class = &amp;quot;sound&amp;quot;&lt;br /&gt;
		device.bus = &amp;quot;bluetooth&amp;quot;&lt;br /&gt;
		device.form_factor = &amp;quot;headset&amp;quot;&lt;br /&gt;
		bluez.path = &amp;quot;/org/bluez/hci0/dev_00_07_A4_F2_B3_CB&amp;quot;&lt;br /&gt;
		bluez.class = &amp;quot;0x240404&amp;quot;&lt;br /&gt;
		bluez.alias = &amp;quot;Motorola HT820&amp;quot;&lt;br /&gt;
		device.icon_name = &amp;quot;audio-headset-bluetooth&amp;quot;&lt;br /&gt;
		device.intended_roles = &amp;quot;phone&amp;quot;&lt;br /&gt;
	Ports:&lt;br /&gt;
		headset-output: Headset (priority: 0)&lt;br /&gt;
	Active Port: headset-output&lt;br /&gt;
	Formats:&lt;br /&gt;
		pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Play sound using {{filename|paplay}}. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# paplay -d bluez_sink.00_07_A4_F2_B3_CB /mnt/media/vegas.wav&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ObexFTP transfers ====&lt;br /&gt;
&lt;br /&gt;
* To transfer files between CM-T43 and a remote device, make sure that the remote device supports ObexFTP transfers by running the ObexFTP daemon on the remote device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@linux-host:~$ obexftpd -b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To send a file from CM-T43 to a target device, run the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# obexftp -b &amp;lt;MAC_address_of_device&amp;gt; -p &amp;lt;filename&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To download a file from a target device to CM-T43, run the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# obexftp -b &amp;lt;MAC_address_of_device&amp;gt; -g &amp;lt;filename&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen ===&lt;br /&gt;
&lt;br /&gt;
CM-T43 Evaluation Kit is equipped with Startek KD050C LCD 800x480 LCD touch panel.&lt;br /&gt;
&lt;br /&gt;
The X Windows system of CM-T43 uses EVDEV X server input driver to get the input from the touchscreen.&lt;br /&gt;
&lt;br /&gt;
==== Touchscreen calibration ====&lt;br /&gt;
A touchscreen device can be calibrated using {{cmd|xinput_calibrator}} utility.&lt;br /&gt;
&lt;br /&gt;
To calibrate the touchscreen:&lt;br /&gt;
* Run X Server by issuing {{cmd|startx}} command&lt;br /&gt;
* Make sure the touchscreen driver is loaded as described in [[CM-T54: Linux: Debian#Touchscreen|Touchscreen]] section&lt;br /&gt;
* Set the {{parameter|DISPLAY}} environment variable:  &amp;lt;pre&amp;gt; export DISPLAY=:0&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Run {{cmd|xinput_calibrator}} utility. For proper calibration you are required to touch the touchscreen at the displayed markers.&lt;br /&gt;
* Create a file {{filename|/usr/share/X11/xorg.conf.d/99-calibration.conf}} and paste there a snippet with the calibration results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xinput_calibrator &lt;br /&gt;
Calibrating EVDEV driver for &amp;quot;ti-tsc&amp;quot; id=6&lt;br /&gt;
	current calibration values (from XInput): min_x=0, max_x=4095 and min_y=0, max_y=4095&lt;br /&gt;
&lt;br /&gt;
Doing dynamic recalibration:&lt;br /&gt;
	Setting calibration data: 105, 3975, 3763, 174&lt;br /&gt;
	--&amp;gt; Making the calibration permanent &amp;lt;--&lt;br /&gt;
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
	Identifier	&amp;quot;calibration&amp;quot;&lt;br /&gt;
	MatchProduct	&amp;quot;ti-tsc&amp;quot;&lt;br /&gt;
	Option	&amp;quot;Calibration&amp;quot;	&amp;quot;105 3975 3763 174&amp;quot;&lt;br /&gt;
	Option	&amp;quot;SwapAxes&amp;quot;	&amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RTC ===&lt;br /&gt;
==== Accessing and setting the RTC ====&lt;br /&gt;
To access the RTC time and date run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# hwclock&lt;br /&gt;
Sat Jan 1 00:00:00 2000 -10.011159 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To set the date and write it into the RTC do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# date -s &amp;quot;31 JUL 2015 10:00:00&amp;quot;&lt;br /&gt;
Fri Jul 31 10:00:00 UTC 2015&lt;br /&gt;
root@cm-debian:~# hwclock -w&lt;br /&gt;
root@cm-debian:~# hwclock&lt;br /&gt;
Fri Jul 31 10:00:13 2015  -1.066224 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN bus ===&lt;br /&gt;
&lt;br /&gt;
Install can-utils using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt-get install can-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CAN interface configuration ====&lt;br /&gt;
* Load the can bus modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# modprobe can-raw&lt;br /&gt;
can: controller area network core (rev 20120528 abi 9)&lt;br /&gt;
NET: Registered protocol family 29&lt;br /&gt;
can: raw protocol (rev 20120528)&lt;br /&gt;
# modprobe can-bcm&lt;br /&gt;
can: broadcast manager protocol (rev 20120528 t)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommended configure the CAN interface, with the {{filename|iproute2}} utilities.&lt;br /&gt;
&lt;br /&gt;
* To make sure the right {{filename|ip}} utility is used, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ip -V&lt;br /&gt;
ip utility, iproute2-ss140804&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configure the CAN interface bit-rate to 125 Kbits/sec (values of up to 1Mbit/sec are supported):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ip link set can0 type can bitrate 125000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Enable the CAN interface:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ip link set can0 up&lt;br /&gt;
c_can_platform 481d0000.can can0: setting BTR=0518 BRPE=0000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Send/Receive packets =====&lt;br /&gt;
&lt;br /&gt;
Use {{filename|cansend}} and {{filename|candump}} utilities to send and receive packets via CAN interface.&lt;br /&gt;
&lt;br /&gt;
* Send standard CAN frame (on the first device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cansend can0 111#1122334455667788&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Send extended CAN frame (on the first device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cansend can0 11111111#1122334455667788&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dump all received data frames as well as error frames (on the second device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# candump any,0:0,#FFFFFFFF&lt;br /&gt;
  can0  111  [8] 11 22 33 44 55 66 77 88&lt;br /&gt;
  can0  11111111  [8] 11 22 33 44 55 66 77 88&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
To use a GPIO:&lt;br /&gt;
* Select a pin you wish to use as GPIO by consulting the [http://www.compulab.co.il/wp-content/uploads/2016/02/cm-t43_reference-guide_2016-02-17.pdf CM-T43 reference manual]. The reference manual contains a list of pins and the possible functions each pin can support, many of which include GPIO signals as one of the possible functions.&lt;br /&gt;
* Setup the pinmux so that the GPIO function is selected for the pin you chose in the previous step. This may require you to edit the device tree for CM-T43. Consult the [[Linux: Introduction to device trees | device tree article]] in the CM-T43 Linux wiki.&lt;br /&gt;
* Export the GPIO in Linux sysfs and cd into it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo &amp;lt;gpio_num&amp;gt; &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# cd gpio&amp;lt;gpio_num&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Select GPIO input/output function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo in &amp;gt; direction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo out &amp;gt; direction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To read GPIO input (or determine what value is being output):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat value&lt;br /&gt;
0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To output a value on the GPIO pin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo 1 &amp;gt; value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: Linux: Manual Installation]]&lt;br /&gt;
* [[CM-T43: Linux: Kernel]]&lt;br /&gt;
* [[Linux: Development for ARM modules]]&lt;br /&gt;
* [[Linux: Debian: Minimal ARM filesystem]]&lt;br /&gt;
* [http://www.debian.org/doc/manuals/reference/index.en.html Debian Reference].&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux|Debian]]&lt;br /&gt;
[[Category:CM-T43|Linux: Debian]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Kernel&amp;diff=2984</id>
		<title>CM-T43: Linux: Kernel</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Kernel&amp;diff=2984"/>
		<updated>2016-06-29T11:27:23Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Linux kernel for the CompuLab CM-T43 System-on-Module / Computer-on-Module provides support for on-board peripherals and abstracts the functionality provided by the hardware.&lt;br /&gt;
CompuLab provides ready-to-run binary kernel images, and source code of the modifications and additions made to the Linux kernel to work properly with CM-T43 modules.&lt;br /&gt;
&lt;br /&gt;
== Building kernel for CM-T43 ==&lt;br /&gt;
&lt;br /&gt;
=== Getting kernel sources ===&lt;br /&gt;
There are various ways to get Linux kernel sources that can be used as a baseline for CM-T43 kernel.&lt;br /&gt;
For instance, a copy of linux-stable git tree can be created or a Linux kernel sources snapshot can be downloaded.&lt;br /&gt;
&lt;br /&gt;
Assuming that the {{filename|/home/development/cm-t43/kernel}} directory structure has been created for CM-T43 kernel development.&lt;br /&gt;
&lt;br /&gt;
==== Snapshot download ====&lt;br /&gt;
* Download [https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.13.tar.gz v4.4.13] snapshot with a web browser.&lt;br /&gt;
* Extract the downloaded archive {{filename|linux-4.4.13.tar.gz}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/kernel&lt;br /&gt;
tar xvf /path/to/downloaded/linux-4.4.13.tar.gz&lt;br /&gt;
mv linux-4.4.13 linux-cm-t43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: This will create {{filename|/home/development/cm-t43/kernel/linux-cm-t43}} directory containing linux kernel tree.&lt;br /&gt;
* Apply the CM-T43 patch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/kernel/linux-cm-t43&lt;br /&gt;
patch -p1 &amp;lt; /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Git clone ====&lt;br /&gt;
* Install [http://git-scm.com/ git] version control system.&lt;br /&gt;
* Create a clone of linux kernel tree&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/kernel&lt;br /&gt;
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-cm-t43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a branch for CM-T43 development. The CM-T43 patches are generated vs. v4.4.13 tag (ba760d4302e4fce130007b8bdbce7fcafc9bd9a9 commit) in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/kernel/linux-cm-t43&lt;br /&gt;
git checkout -b cm-t43-dev v4.4.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Apply the CM-T43 patch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git apply /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Future stable kernel versions of 4.4.13 can also be used by adding the Linux kernel stable repository as a remote and checking out any later tag of the v4.4.y stable kernel branch.}}&lt;br /&gt;
&lt;br /&gt;
=== Building the kernel ===&lt;br /&gt;
* Run the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ARCH=arm&lt;br /&gt;
export CROSS_COMPILE=arm-none-linux-eabi-&lt;br /&gt;
make cm_t43_defconfig &amp;amp;&amp;amp; make menuconfig&lt;br /&gt;
make &amp;amp;&amp;amp; INSTALL_MOD_PATH=/home/development/cm-t43/rootfs make modules_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above:&lt;br /&gt;
&lt;br /&gt;
* The Linux kernel image {{filename|zImage}} will be created in {{filename|/home/development/cm-t43/kernel/linux-cm-t43/arch/arm/boot}}&lt;br /&gt;
* The Device Tree binary {{filename|am437x-sb-som-t43.dtb}} will be created in {{filename|/home/development/cm-t43/kernel/linux-cm-t43/arch/arm/boot/dts}}&lt;br /&gt;
* The loadable kernel modules will be installed into the {{filename|/home/development/cm-t43/rootfs/lib/modules}} directory.&lt;br /&gt;
&lt;br /&gt;
When the CM-T43 is booted with the kernel image and Device Tree binary created as described above and with networked root filesystem at {{filename|/home/development/cm-t43/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.&lt;br /&gt;
&lt;br /&gt;
== Basic platform support ==&lt;br /&gt;
The CM-T43 basic platform support is implemented in device tree files located in {{filename|arch/arm/boot/dts/}} folder of Linux kernel source tree.&lt;br /&gt;
&lt;br /&gt;
=== Device Tree ===&lt;br /&gt;
Device Tree (DT), is a data structure and language for describing hardware. More specifically, it is a description of hardware that is readable by an operating system so that the operating system doesn't need to hard code details of the machine.&lt;br /&gt;
&lt;br /&gt;
A device tree file, named *.dts, is a text file that describes the hardware platform. It is compiled into a device tree blob, *.dtb, which is loaded into memory before the Linux kernel is started. The Linux kernel then uses that device tree blob to initialize itself at runtime.&lt;br /&gt;
&lt;br /&gt;
==== CM-T43 device tree organization ====&lt;br /&gt;
The SBC-T43 product is built from 3 major components:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌───────────────────────────────┐&lt;br /&gt;
│ SB-SOM baseboard     	        │&lt;br /&gt;
│      	       	       	   	│&lt;br /&gt;
│   ┌─────────────────────┐  	│&lt;br /&gt;
│   │ CM-T43 SoM       	  │    	│&lt;br /&gt;
│   │  	       		  │	│&lt;br /&gt;
│   │  	┌─────────────┐	  │	│&lt;br /&gt;
│   │ 	│TI AM437x SoC│	  │	│&lt;br /&gt;
│   │	└─────────────┘	  │	│&lt;br /&gt;
│   └─────────────────────┘	│&lt;br /&gt;
└───────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The SB-SOM baseboard is a general purpose baseboard, capable of supporting multiple CompuLab SoMs, including: CM-T43, CM-T54, CM-QS600. This leads us to the following device tree division:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       	   am4372.dtsi&lt;br /&gt;
		∧&lt;br /&gt;
		│&lt;br /&gt;
		│&lt;br /&gt;
        am437x-cm-t43.dts           compulab-sb-som.dtsi&lt;br /&gt;
	       	∧		            ∧&lt;br /&gt;
	     	│			    │&lt;br /&gt;
       	       	└───────┐      	    ┌───────┘&lt;br /&gt;
		       	│      	    │&lt;br /&gt;
		    am437x-sb-som-t43.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
			     &lt;br /&gt;
* {{filename | am4372.dtsi}} is the SoC vendor device tree describing the AM437x SoC.&lt;br /&gt;
* {{filename | am437x-cm-t43.dts}} is the SoM vendor device tree describing the CM-T43 SoM.&lt;br /&gt;
* {{filename | compulab-sb-som.dtsi}} describes the SB-SOM baseboard. Only hardware properties that remain constant regardless of which SoM is installed on the baseboard are described here.&lt;br /&gt;
* {{filename | am437x-sb-som-t43.dts}} describes the integration between CM-T43 SoM and the SB-SOM baseboard. Everything that is related to the SB-SOM baseboard and would change if we were to swap the CM-T43 module with another SoM is described here. For example: SB-SOM contains TFP410, an RGB-to-DVI encoder. The encoder is located on an I2C bus, but depending on the installed SoC it might be i2c1, i2c2, or i2c3. Therefore, it is not described in the generic {{filename | compulab-sb-som.dtsi}} device tree, but in the device tree describing the SB-SOM/CM-T43 combination. On the other hand, in order to describe the DVI connector on SB-SOM, there is no need to reference any SoM specific information, and therefore it is described in the generic {{filename | compulab-sb-som.dtsi}} file.&lt;br /&gt;
&lt;br /&gt;
For more details visit official [http://devicetree.org/Device_Tree_Usage Device Tree WiKi] pages and make an overview of a [http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf  Device Tree tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Kernel configuration ===&lt;br /&gt;
&lt;br /&gt;
==== USB support ====&lt;br /&gt;
CM-T43 features a DRD USB 2.0 controller. A DRD (Dual Role Device) controller is similar to an OTG controller in the sense that it supports both host and slave modes, but it lacks the ability to dynamically switch between them based on which USB plug is connected to it. CM-T43 defaults to running the USB controller as a host, but enables support for both so that a switch to device mode could be accomplished by editing the device tree.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; USB support''' submenu and enable:&lt;br /&gt;
* Support for Host-side USB&lt;br /&gt;
* EHCI HCD (USB 2.0) support&lt;br /&gt;
* DesignWare USB3 DRD Core Support&lt;br /&gt;
** Set DWC3 Mode Selection to Dual Role mode&lt;br /&gt;
* Texas Instruments OMAP5 and similar Platforms&lt;br /&gt;
  ┌───────────────────────────────────── USB support ──────────────────────────────────────┐&lt;br /&gt;
  │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │       --- USB support                                                              │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;   Support for Host-side USB                                              │ │  &lt;br /&gt;
  │ │       [*]     USB announce new devices                                             │ │  &lt;br /&gt;
  │ │               *** Miscellaneous USB options ***                                    │ │  &lt;br /&gt;
  │ │       [*]     Enable USB persist by default                                        │ │  &lt;br /&gt;
  │ │       [ ]     Dynamic USB minor allocation                                         │ │  &lt;br /&gt;
  │ │       [*]     OTG support                                                          │ │  &lt;br /&gt;
  │ │       [ ]     Rely on OTG and EH Targeted Peripherals List                         │ │  &lt;br /&gt;
  │ │       [ ]     Disable external hubs                                                │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB 2.0 OTG FSM implementation                                       │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB ULPI PHY interface support                                       │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Monitor                                                          │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     Support WUSB Cable Based Association (CBA)                           │ │  &lt;br /&gt;
  │ │               *** USB Host Controller Drivers ***                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     Cypress C67x00 HCD support                                           │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;     xHCI HCD (USB 3.0) support                                           │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;     EHCI HCD (USB 2.0) support                                           │ │  &lt;br /&gt;
  │ │       [*]       Root Hub Transaction Translators                                   │ │  &lt;br /&gt;
  │ │       [*]       Improved Transaction Translator scheduling                         │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     EHCI support for OMAP3 and later chips                               │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;     Generic EHCI driver for a platform device                            │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     OXU210HP HCD support                                                 │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     ISP116X HCD support                                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     ISP1362 HCD support                                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     FUSBH200 HCD support                                                 │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     FOTG210 HCD support                                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     MAX3421 HCD (USB-over-SPI) support                                   │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     OHCI HCD (USB 1.1) support                                           │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     SL811HS HCD support                                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     R8A66597 HCD support                                                 │ │  &lt;br /&gt;
  │ │       [ ]     HCD test mode support                                                │ │  &lt;br /&gt;
  │ │               *** USB Device Class drivers ***                                     │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Modem (CDC ACM) support                                          │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Printer support                                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Wireless Device Management support                               │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Test and Measurement Class support                               │ │  &lt;br /&gt;
  │ │               *** NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ***         │ │  &lt;br /&gt;
  │ │               *** also be needed; see USB_STORAGE Help for more info ***           │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;     USB Mass Storage support                                             │ │  &lt;br /&gt;
  │ │       [ ]       USB Mass Storage verbose debug                                     │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Realtek Card Reader support                                        │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Datafab Compact Flash Reader support                               │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Freecom USB/ATAPI Bridge support                                   │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       ISD-200 USB/ATA Bridge support                                     │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       USBAT/USBAT02-based storage support                                │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       SanDisk SDDR-09 (and other SmartMedia, including DPCM) support     │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       SanDisk SDDR-55 SmartMedia support                                 │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Lexar Jumpshot Compact Flash Reader                                │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Olympus MAUSB-10/Fuji DPC-R1 support                               │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Support OneTouch Button on Maxtor Hard Drives                      │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       Support for Rio Karma music player                                 │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       SAT emulation on Cypress USB/ATA Bridge with ATACB                 │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       USB ENE card reader support                                        │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;       USB Attached SCSI                                                  │ │  &lt;br /&gt;
  │ │               *** USB Imaging devices ***                                          │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB Mustek MDC800 Digital Camera support                             │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     Microtek X6USB scanner support                                       │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;     USB/IP support                                                       │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   Inventra Highspeed Dual Role Controller (TI, ADI, ...)                 │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;   DesignWare USB3 DRD Core Support                                       │ │  &lt;br /&gt;
  │ │               DWC3 Mode Selection (Dual Role mode)  ---&amp;gt;                           │ │  &lt;br /&gt;
  │ │               *** Platform Glue Driver Support ***                                 │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;     Texas Instruments OMAP5 and similar Platforms                        │ │  &lt;br /&gt;
  │ │               *** Debugging features ***                                           │ │  &lt;br /&gt;
  │ │       [ ]     Enable Debugging Messages                                            │ │  &lt;br /&gt;
  │ └───────┴(+)─────────────────────────────────────────────────────────────────────────┘ │ &lt;br /&gt;
  ├────────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │                &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;                │  &lt;br /&gt;
  └────────────────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; PHY subsystem''' submenu and enable:&lt;br /&gt;
* OMAP USB2 PHY Driver&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌────────────────────────────── PHY Subsystem ──────────────────────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    -*- PHY Core                                                       │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; TI dm816x USB PHY driver                                       │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Marvell USB HSIC 28nm PHY Driver                               │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Marvell USB 2.0 28nm PHY Driver                                │ │  &lt;br /&gt;
  │ │    -*- OMAP CONTROL PHY Driver                                        │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt; OMAP USB2 PHY Driver                                           │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; TI PIPE3 PHY Driver                                            │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Broadcom Kona USB2 PHY Driver                                  │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MMC/SDIO support ====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; MMC/SD/SDIO card support''' submenu and enable:&lt;br /&gt;
* TI OMAP High Speed Multimedia Card Interface support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────────── MMC/SD/SDIO card support ───────────────────────────────┐&lt;br /&gt;
  │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │       --- MMC/SD/SDIO card support                                                 │ │  &lt;br /&gt;
  │ │       [ ]   MMC debugging                                                          │ │  &lt;br /&gt;
  │ │       [ ]   MMC host clock gating                                                  │ │  &lt;br /&gt;
  │ │             *** MMC/SD/SDIO Card Drivers ***                                       │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;   MMC block device driver                                                │ │  &lt;br /&gt;
  │ │       (8)     Number of minors per block device                                    │ │  &lt;br /&gt;
  │ │       [*]     Use bounce buffer for simple hosts                                   │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;   SDIO UART/GPS class support                                            │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   MMC host test driver                                                   │ │  &lt;br /&gt;
  │ │             *** MMC/SD/SDIO Host Controller Drivers ***                            │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   Secure Digital Host Controller Interface support                       │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   TI OMAP Multimedia Card Interface support                              │ │  &lt;br /&gt;
  │ │       &amp;lt;*&amp;gt;   TI OMAP High Speed Multimedia Card Interface support                   │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   Synopsys DesignWare Memory Card Interface                              │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   VUB300 USB to SDIO/SD/MMC Host Controller support                      │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   USB SD Host Controller (USHC) support                                  │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   Renesas USDHI6ROL0 SD/SDIO Host Controller support                     │ │  &lt;br /&gt;
  │ │       &amp;lt; &amp;gt;   MediaTek SD/MMC Card Interface support                                 │ │  &lt;br /&gt;
  │ │                                                                                    │ │  &lt;br /&gt;
  │ └────────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├────────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │                &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;                │  &lt;br /&gt;
  └────────────────────────────────────────────────────────────────────────────────────────┘ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== NAND support ====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Memory Technology Device (MTD) support ---&amp;gt; NAND Device Support''' submenu and enable:&lt;br /&gt;
* NAND Flash device on OMAP2, OMAP3 and OMAP4&lt;br /&gt;
* Support hardware based BCH error correction&lt;br /&gt;
* Support software BCH ECC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────── NAND Device Support ───────────────────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    --- NAND Device Support                                            │ │  &lt;br /&gt;
  │ │    [*]   Support software BCH ECC                                     │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Support Denali NAND controller                               │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   GPIO assisted NAND Flash driver                              │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   NAND Flash device on OMAP2, OMAP3 and OMAP4                  │ │  &lt;br /&gt;
  │ │    [*]     Support hardware based BCH error correction                │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   DiskOnChip 2000, Millennium and Millennium Plus (NAND reimple│ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Support for DiskOnChip G4                                    │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Support for NAND Flash Simulator                             │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Broadcom STB NAND controller                                 │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Support for generic platform NAND driver                     │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Support for NAND controller on Hisilicon SoC Hip04           │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SPI support ====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; SPI support''' submenu and enable:&lt;br /&gt;
* McSPI driver for OMAP&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────────── SPI support ───────────────────────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    --- SPI support                                                    │ │  &lt;br /&gt;
  │ │          *** SPI Master Controller Drivers ***                        │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Altera SPI Controller                                        │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Utilities for Bitbanging SPI masters                         │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Cadence SPI controller                                       │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   GPIO-based bitbanging SPI Master                             │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Freescale SPI controller and Aeroflex Gaisler GRLIB SPI contr│ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   OpenCores tiny SPI                                           │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   McSPI driver for OMAP                                        │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   DRA7xxx QSPI controller support                              │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Rockchip SPI controller driver                               │ │  &lt;br /&gt;
  │ └────┴(+)───────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SPI-flash support =====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Memory Technology Device (MTD) support''' submenu and enable:&lt;br /&gt;
* SPI-NOR device support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌───────────────── Memory Technology Device (MTD) support ──────────────────┐&lt;br /&gt;
  │ ┌────^(-)───────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    [ ]   Retain master device when partitioned                        │ │  &lt;br /&gt;
  │ │          RAM/ROM/Flash chip drivers  ---&amp;gt;                             │ │  &lt;br /&gt;
  │ │          Mapping drivers for chip access  ---&amp;gt;                        │ │  &lt;br /&gt;
  │ │          Self-contained MTD device drivers  ---&amp;gt;                      │ │  &lt;br /&gt;
  │ │    [ ]   NAND ECC Smart Media byte order                              │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   NAND Device Support  ---&amp;gt;                                    │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   OneNAND Device Support  ---&amp;gt;                                 │ │  &lt;br /&gt;
  │ │          LPDDR &amp;amp; LPDDR2 PCM memory drivers  ---&amp;gt;                      │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   SPI-NOR device support  ---&amp;gt;                                 │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   Enable UBI - Unsorted block images  ---&amp;gt;                     │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Memory Technology Device (MTD) support ---&amp;gt; Self-contained MTD device drivers''' submenu and enable:&lt;br /&gt;
* Support most SPI Flash chips (AT26DF, M25P, W25X, ...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌──────────────────── Self-contained MTD device drivers ────────────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Support for AT45xxx DataFlash                                  │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt; Support most SPI Flash chips (AT26DF, M25P, W25X, ...)         │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Support SST25L (non JEDEC) SPI Flash chips                     │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Uncached system RAM                                            │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Physical system RAM                                            │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Test driver using RAM                                          │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; MTD using block device                                         │ │  &lt;br /&gt;
  │ │        *** Disk-On-Chip Device Drivers ***                            │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; M-Systems Disk-On-Chip G3                                      │ │  &lt;br /&gt;
  │ │                                                                       │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART support ====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Character devices ---&amp;gt; Serial drivers''' submenu and enable:&lt;br /&gt;
* OMAP serial port support&lt;br /&gt;
* Console on OMAP serial port&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────────────── Serial drivers ───────────────────────────────────┐&lt;br /&gt;
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; MAX3100 support                                                         │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; MAX310X support                                                         │ │  &lt;br /&gt;
  │ │      &amp;lt;*&amp;gt; Serial port on Open Firmware platform bus                               │ │  &lt;br /&gt;
  │ │      &amp;lt;*&amp;gt; OMAP serial port support                                                │ │  &lt;br /&gt;
  │ │      [*]   Console on OMAP serial port                                           │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; SCCNXP serial port support                                              │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; SC16IS7xx serial support                                                │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Broadcom BCM63xx/BCM33xx UART support                                   │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Altera JTAG UART support                                                │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Altera UART support                                                     │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; SPI protocol driver for Infineon 6x60 modem (EXPERIMENTAL)              │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Cadence (Xilinx Zynq) UART support                                      │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; ARC UART driver support                                                 │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Freescale lpuart serial port support                                    │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; Conexant Digicolor CX92xxx USART serial port support                    │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; ST ASC serial port support                                              │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt; STMicroelectronics STM32 serial port support                            │ │  &lt;br /&gt;
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├──────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │               &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ethernet support ====&lt;br /&gt;
CM-T43 features an ethernet controller that can operate as a Layer-2 3-port ethernet switch. Alternatively, the ethernet controller can be setup in dualEMAC mode, which is the default on CM-T43. The mode of operation can be changed to ethernet switch by editing the device tree.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Network device support ---&amp;gt; Ethernet driver support''' submenu and enable:&lt;br /&gt;
* Texas Instruments (TI) devices&lt;br /&gt;
* TI DaVinci MDIO Support&lt;br /&gt;
* TI DaVinci CPDMA Support&lt;br /&gt;
* TI CPSW Switch Phy sel Support&lt;br /&gt;
* TI CPSW ALE Support&lt;br /&gt;
* TI CPSW Switch Support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌────────────────────────────── Ethernet driver support ───────────────────────────────┐&lt;br /&gt;
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │      [*]   Rocker devices                                                        │ │  &lt;br /&gt;
  │ │      [ ]   Samsung Ethernet devices                                              │ │  &lt;br /&gt;
  │ │      [ ]   SEEQ devices                                                          │ │  &lt;br /&gt;
  │ │      [*]   SMC (SMSC)/Western Digital devices                                    │ │  &lt;br /&gt;
  │ │      &amp;lt;*&amp;gt;     SMC 91C9x/91C1xxx support                                           │ │  &lt;br /&gt;
  │ │      &amp;lt; &amp;gt;     SMSC LAN911[5678] support                                           │ │  &lt;br /&gt;
  │ │      &amp;lt;*&amp;gt;     SMSC LAN911x/LAN921x families embedded ethernet support             │ │  &lt;br /&gt;
  │ │      [ ]   STMicroelectronics devices                                            │ │  &lt;br /&gt;
  │ │      [*]   Texas Instruments (TI) devices                                        │ │  &lt;br /&gt;
  │ │      -*-     TI DaVinci MDIO Support                                             │ │  &lt;br /&gt;
  │ │      -*-     TI DaVinci CPDMA Support                                            │ │  &lt;br /&gt;
  │ │      -*-     TI CPSW Switch Phy sel Support                                      │ │  &lt;br /&gt;
  │ │      -*-     TI CPSW ALE Support                                                 │ │  &lt;br /&gt;
  │ │      &amp;lt;*&amp;gt;     TI CPSW Switch Support                                              │ │  &lt;br /&gt;
  │ │      [ ]       TI Common Platform Time Sync (CPTS) Support                       │ │  &lt;br /&gt;
  │ │      [ ]   VIA devices                                                           │ │  &lt;br /&gt;
  │ │      [ ]   WIZnet devices                                                        │ │  &lt;br /&gt;
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├──────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │               &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └──────────────────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Network device support ---&amp;gt; PHY Device support and infrastructure''' submenu and enable:&lt;br /&gt;
* Drivers for Atheros AT803X PHYs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌────────────── PHY Device support and infrastructure ──────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    --- PHY Device support and infrastructure                  │ │  &lt;br /&gt;
  │ │          *** MII PHY device drivers ***                       │ │  &lt;br /&gt;
  │ │    &amp;lt;*&amp;gt;   Drivers for Atheros AT803X PHYs                      │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for the AMD PHYs                             │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for Marvell PHYs                             │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for Davicom PHYs                             │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for Quality Semiconductor PHYs               │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for the Intel LXT PHYs                       │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for the Cicada PHYs                          │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt;   Drivers for the Vitesse PHYs                         │ │  &lt;br /&gt;
  │ └────┴(+)───────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │     &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;      │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Display support ====&lt;br /&gt;
CM-T43 has a single parallel RGB display interface which drives multiple display connectors, including: a parallel RGP LCD + touchscreen connector, a DVI connector, and an LVDS connector. Since all 3 connectors are driven by the same interface, they cannot simultaneously output images at different resolutions.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Graphics support ---&amp;gt; Frame buffer Devices ---&amp;gt; OMAP2+ Display Subsystem support''' submenu and enable:&lt;br /&gt;
* DPI support&lt;br /&gt;
* OMAP2+ frame buffer support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌──────────────────── OMAP2+ Display Subsystem support ─────────────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    --- OMAP2+ Display Subsystem support                               │ │  &lt;br /&gt;
  │ │    [ ]   Debug support                                                │ │  &lt;br /&gt;
  │ │    [*]   Debugfs filesystem support                                   │ │  &lt;br /&gt;
  │ │    [ ]     Collect DSS IRQ statistics                                 │ │  &lt;br /&gt;
  │ │    [*]   DPI support                                                  │ │  &lt;br /&gt;
  │ │    [ ]   VENC support                                                 │ │  &lt;br /&gt;
  │ │    [ ]   HDMI support for OMAP4                                       │ │  &lt;br /&gt;
  │ │    [ ]   HDMI support for OMAP5                                       │ │  &lt;br /&gt;
  │ │    [ ]   SDI support                                                  │ │  &lt;br /&gt;
  │ │    [ ]   DSI support                                                  │ │  &lt;br /&gt;
  │ │    (0)   Minimum FCK/PCK ratio (for scaling)                          │ │  &lt;br /&gt;
  │ │    [ ]   Sleep 20ms after VENC reset                                  │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt;   OMAP2+ frame buffer support  ---&amp;gt;                            │ │  &lt;br /&gt;
  │ │          OMAP Display Device Drivers (new device model)  ---&amp;gt;         │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Graphics support ---&amp;gt; Frame buffer Devices ---&amp;gt; OMAP2+ Display Subsystem support --- OMAP Display Device Driver''' submenu and enable:&lt;br /&gt;
* TFP410 DPI to DVI Encoder&lt;br /&gt;
* DVI Connector&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌───────────── OMAP Display Device Drivers (new device model) ──────────────┐&lt;br /&gt;
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; OPA362 external analog amplifier                               │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; TFP410 DPI to DVI Encoder                                      │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; TPD12S015 HDMI ESD protection and level shifter                │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; DVI Connector                                                  │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; HDMI Connector                                                 │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Analog TV Connector                                            │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; Generic DPI panel                                              │ │  &lt;br /&gt;
  │ │    &amp;lt; &amp;gt; Generic DSI Command Mode Panel                                 │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; ACX565AKM Panel                                                │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; LG.Philips LB035Q02 LCD Panel                                  │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; Sharp LS037V7DW01 LCD Panel                                    │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; TPO TD028TTEC1 LCD Panel                                       │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; TPO TD043MTEA1 LCD Panel                                       │ │  &lt;br /&gt;
  │ │    &amp;lt;M&amp;gt; NEC NL8048HL11 Panel                                           │ │  &lt;br /&gt;
  │ └───────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├───────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │         &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;          │  &lt;br /&gt;
  └───────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Wifi support ====&lt;br /&gt;
The WiFi chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure wireless support is turned on under '''Network support'''.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Network device support ---&amp;gt; Wireless LAN''' submenu and enable:&lt;br /&gt;
* Marvell WiFi-Ex Driver&lt;br /&gt;
* Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────────────────── Wireless LAN ───────────────────────────────────────┐&lt;br /&gt;
  │ ┌─────────^(-)───────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;   Marvell 8xxx Libertas WLAN driver support                                │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;     Marvell Libertas 8388 USB 802.11b/g cards                              │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;     Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards                   │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;     Marvell Libertas 8686 SPI 802.11b/g cards                              │ │  &lt;br /&gt;
  │ │         [*]     Enable full debugging output in the Libertas module.                   │ │  &lt;br /&gt;
  │ │         [ ]     Enable mesh support                                                    │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;   Softmac Prism54 support                                                  │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;   Ralink driver support  ----                                              │ │  &lt;br /&gt;
  │ │         [ ]   Mediatek Wireless LAN support  ----                                      │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;   Realtek rtlwifi family of devices  ---&amp;gt;                                  │ │  &lt;br /&gt;
  │ │         [*]   TI Wireless LAN support  ---&amp;gt;                                            │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;   ZyDAS ZD1211/ZD1211B USB-wireless support                                │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;   Marvell WiFi-Ex Driver                                                   │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;     Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897          │ │  &lt;br /&gt;
  │ │         &amp;lt;M&amp;gt;     Marvell WiFi-Ex Driver for USB8766/8797/8897                           │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;   CW1200 WLAN support                                                      │ │  &lt;br /&gt;
  │ │         &amp;lt; &amp;gt;   Redpine Signals Inc 91x WLAN driver support                              │ │  &lt;br /&gt;
  │ └────────────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├────────────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │                  &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;                  │  &lt;br /&gt;
  └────────────────────────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth support ====&lt;br /&gt;
The Bluetooth chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure bluetooth support is turned on under '''Network support ---&amp;gt; Bluetooth subsystem support'''.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Networking support ---&amp;gt; Bluetooth subsystem support ---&amp;gt; Bluetooth device drivers''' submenu and enable:&lt;br /&gt;
* HCI SDIO driver&lt;br /&gt;
* HCI UART driver&lt;br /&gt;
* Marvell Bluetooth driver support&lt;br /&gt;
* Marvell BT-over-SDIO driver&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌───────────────────────────── Bluetooth device drivers ──────────────────────────────┐&lt;br /&gt;
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; HCI USB driver                                                          │ │  &lt;br /&gt;
  │ │     [*]   Broadcom protocol support                                             │ │  &lt;br /&gt;
  │ │     [*]   Realtek protocol support                                              │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; HCI SDIO driver                                                         │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; HCI UART driver                                                         │ │  &lt;br /&gt;
  │ │     [*]   UART (H4) protocol support                                            │ │  &lt;br /&gt;
  │ │     [*]   BCSP protocol support                                                 │ │  &lt;br /&gt;
  │ │     [ ]   Atheros AR300x serial support                                         │ │  &lt;br /&gt;
  │ │     [*]   HCILL protocol support                                                │ │  &lt;br /&gt;
  │ │     [ ]   Three-wire UART (H5) protocol support                                 │ │  &lt;br /&gt;
  │ │     [ ]   Intel protocol support                                                │ │  &lt;br /&gt;
  │ │     [ ]   Broadcom protocol support                                             │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; HCI BCM203x USB driver                                                  │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; HCI BPA10x USB driver                                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; HCI BlueFRITZ! USB driver                                               │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; HCI VHCI (Virtual HCI device) driver                                    │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; Marvell Bluetooth driver support                                        │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   Marvell BT-over-SDIO driver                                           │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; Atheros firmware download driver                                        │ │  &lt;br /&gt;
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├─────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │              &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └─────────────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Audio support ====&lt;br /&gt;
In the kernel configuration menu choose '''Device Drivers ---&amp;gt; Sound card support ---&amp;gt; Advanced Linux Sound Architecture ---&amp;gt; ALSA for SoC audio support''' submenu and enable:&lt;br /&gt;
* SoC Audio for Texas Instruments chips using eDMA&lt;br /&gt;
* Multichannel Audio Serial Port (McASP) support&lt;br /&gt;
* SoC Audio for the Texas Instruments OMAP chips&lt;br /&gt;
* ASoC Simple sound card support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌──────────────────────────── ALSA for SoC audio support ─────────────────────────────┐&lt;br /&gt;
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │     --- ALSA for SoC audio support                                              │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   SoC Audio for the Atmel System-on-Chip                                │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   SoC Audio for Texas Instruments chips using eDMA                      │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   Multichannel Audio Serial Port (McASP) support                        │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   SoC Audio for the AM33XX chip based boards                            │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Synopsys I2S Device Driver                                            │ │  &lt;br /&gt;
  │ │           SoC Audio for Freescale CPUs  ---&amp;gt;                                    │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   SoC Audio for the Texas Instruments OMAP chips                        │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   HDMI audio support for OMAP4+ based SoCs                              │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   SoC Audio support for Nokia N900 (RX-51)                              │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   SoC Audio support for TI SoC based boards with twl4030 codec          │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   ASoC support for QCOM platforms                                       │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   XTFPGA I2S master                                                     │ │  &lt;br /&gt;
  │ │           CODEC drivers  ---&amp;gt;                                                   │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   ASoC Simple sound card support                                        │ │  &lt;br /&gt;
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├─────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │              &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └─────────────────────────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under the '''CODEC drivers''' submenu of the same section enable:&lt;br /&gt;
* Wolfson Microelectronics WM8731 CODEC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌─────────────────────────────────── CODEC drivers ───────────────────────────────────┐&lt;br /&gt;
  │ ┌─────^(-)────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8523 CODEC                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8711 CODEC                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8728 DAC                                     │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; Wolfson Microelectronics WM8731 CODEC                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8737 ADC                                     │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8737 DAC                                     │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8750 CODEC                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8753 CODEC                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Wolfson Microelectronics WM8770 CODEC                                   │ │  &lt;br /&gt;
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├─────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │              &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └─────────────────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CAN bus support ====&lt;br /&gt;
Make sure to enable generic CAN bus support under '''Networking support ---&amp;gt; CAN bus subsystem support'''.&lt;br /&gt;
&lt;br /&gt;
In the kernel configuration menu choose '''Networking support ---&amp;gt; CAN bus subsystem support ---&amp;gt; CAN Device Drivers''' submenu and enable:&lt;br /&gt;
* Platform CAN drivers with Netlink support&lt;br /&gt;
* Bosch C_CAN/D_CAN devices&lt;br /&gt;
** Generic Platform Bus based C_CAN/D_CAN driver&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ┌──────────────────────────────── CAN Device Drivers ─────────────────────────────────┐&lt;br /&gt;
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Virtual Local CAN Interface (vcan)                                      │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt; Serial / USB serial CAN Adaptors (slcan)                                │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt; Platform CAN drivers with Netlink support                               │ │  &lt;br /&gt;
  │ │     [*]   CAN bit-timing calculation                                            │ │  &lt;br /&gt;
  │ │     [ ]   Enable LED triggers for Netlink based drivers                         │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   TI High End CAN Controller                                            │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Support for Freescale FLEXCAN based chips                             │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Aeroflex Gaisler GRCAN and GRHCAN CAN devices                         │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Renesas R-Car CAN controller                                          │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Philips/NXP SJA1000 devices  ----                                     │ │  &lt;br /&gt;
  │ │     &amp;lt;M&amp;gt;   Bosch C_CAN/D_CAN devices  ---&amp;gt;                                       │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Bosch M_CAN devices                                                   │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Bosch CC770 and Intel AN82527 devices  ----                           │ │  &lt;br /&gt;
  │ │           CAN SPI interfaces  ---&amp;gt;                                              │ │  &lt;br /&gt;
  │ │           CAN USB interfaces  ---&amp;gt;                                              │ │  &lt;br /&gt;
  │ │     &amp;lt; &amp;gt;   Softing Gmbh CAN generic support                                      │ │  &lt;br /&gt;
  │ │     [ ] CAN devices debugging messages                                          │ │  &lt;br /&gt;
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  &lt;br /&gt;
  ├─────────────────────────────────────────────────────────────────────────────────────┤  &lt;br /&gt;
  │              &amp;lt;Select&amp;gt;    &amp;lt; Exit &amp;gt;    &amp;lt; Help &amp;gt;    &amp;lt; Save &amp;gt;    &amp;lt; Load &amp;gt;               │  &lt;br /&gt;
  └─────────────────────────────────────────────────────────────────────────────────────┘  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[CM-T43: Linux: Manual Installation]]&lt;br /&gt;
* [[CM-T43: Linux: Debian]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Package_contents&amp;diff=2980</id>
		<title>CM-T43: Linux: Package contents</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Package_contents&amp;diff=2980"/>
		<updated>2016-06-29T11:26:09Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* utilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Layout ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm-t43-linux&lt;br /&gt;
├── images&lt;br /&gt;
│   ├── bootscr.img&lt;br /&gt;
│   ├── debian-image.tar.bz2&lt;br /&gt;
│   ├── am437x-sb-som-t43.dtb&lt;br /&gt;
│   ├── kernel.img&lt;br /&gt;
│   ├── ramdisk.img&lt;br /&gt;
│   └── zImage-cm-t43&lt;br /&gt;
├── kernel&lt;br /&gt;
│   ├── linux-4.4.13-cm-t43-5.config&lt;br /&gt;
│   ├── linux-4.4.13-cm-t43-5.patch&lt;br /&gt;
│   ├── modules-4.4.13-cm-t43-5.tar.bz2&lt;br /&gt;
│   ├── zImage-4.4.13-cm-t43-5.bin&lt;br /&gt;
│   ├── patches&lt;br /&gt;
│   │   ├── 0001-ARM-dts-cm-t43-add-support-for-cm-t43.patch&lt;br /&gt;
│   │   ├── ...&lt;br /&gt;
│   │   └── 0027-Linux-v4.4.13-cm-t43-5.patch&lt;br /&gt;
│   └── zImage-4.1.15-cl-som-imx7-2.0.bin&lt;br /&gt;
├── README.txt&lt;br /&gt;
├── utilities&lt;br /&gt;
│   ├── bootscr.src&lt;br /&gt;
│   ├── eeprom-util&lt;br /&gt;
│   │   ├── eeprom-util&lt;br /&gt;
│   │   ├── eeprom-util-static&lt;br /&gt;
│   │   └── eeprom-util-v2.1-sources.tar.gz&lt;br /&gt;
│   └── tftpd32.zip&lt;br /&gt;
└── version.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== version.txt ==&lt;br /&gt;
The contents of the {{filename|version.txt}} identifies the package version.&lt;br /&gt;
&lt;br /&gt;
== images ==&lt;br /&gt;
* {{filename|debian-image.tar.bz2}} - archive of the Debian root file system&lt;br /&gt;
* {{filename|bootscr.img}} - U-Boot script used for image installation&lt;br /&gt;
* {{filename|am437x-sb-som-t43.dtb}} - SB-SOM-T43 Device Tree binary&lt;br /&gt;
* {{filename|kernel.img}} - Kernel image required for installation onto the eMMC&lt;br /&gt;
* {{filename|ramdisk.img}} - Ramdisk image required for installation onto the eMMC&lt;br /&gt;
* {{filename|zImage-cm-t43}} - ready to run Linux kernel image binary for CM-T43&lt;br /&gt;
&lt;br /&gt;
== kernel ==&lt;br /&gt;
* {{filename|linux-4.4.13-cm-t43-5.config}} - Linux kernel 4.4.13-cm-t43-5 configuration file&lt;br /&gt;
* {{filename|linux-4.4.13-cm-t43-5.patch}} - patch vs. [http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=ba760d4302e4fce130007b8bdbce7fcafc9bd9a9 Linux kernel 4.4.13] with support for CM-T43 peripherals&lt;br /&gt;
* {{filename|modules-4.4.13-cm-t43-5.tar.bz2}} - archive of pre-compiled modules for Linux kernel version 4.4.13-cm-t43-5&lt;br /&gt;
* {{filename|zImage-4.4.13-cm-t43-5.bin}} - ready to run Linux kernel version 4.4.13-cm-t43-5 for CM-T43&lt;br /&gt;
* {{filename|patches}} - ordered collection of patches, that form the single patch above ({{filename|linux-4.4.13-cm-t43-5.patch}})&lt;br /&gt;
&lt;br /&gt;
== utilities ==&lt;br /&gt;
The {{filename|utilities}} directory contains miscellaneous utilities useful for development&lt;br /&gt;
* {{filename|bootscr.src}} - U-Boot script source used for loading kernel and ramdisk images from MMC/SD card or USB storage device&lt;br /&gt;
* {{filename|eeprom-util}} - CompuLab EEPROM utility for reading information found inside the EEPROM on CompuLab boards&lt;br /&gt;
* {{filename|tftpd32.zip}} - TFTP server for Windows users&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux|Getting started]]&lt;br /&gt;
[[Category:CM-T43|Linux: Getting started]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Getting_started&amp;diff=2982</id>
		<title>CM-T43: Linux: Getting started</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Getting_started&amp;diff=2982"/>
		<updated>2016-06-29T11:23:02Z</updated>

		<summary type="html">&lt;p&gt;Nikita: CM-T43: Linux: Getting started moved to CM-T43: Linux: Manual Installation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CM-T43: Linux: Manual Installation]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Manual_Installation&amp;diff=2981</id>
		<title>CM-T43: Linux: Manual Installation</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Manual_Installation&amp;diff=2981"/>
		<updated>2016-06-29T11:23:02Z</updated>

		<summary type="html">&lt;p&gt;Nikita: CM-T43: Linux: Getting started moved to CM-T43: Linux: Manual Installation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article provides an introduction on how to install the Debian example root filesystem image on the CompuLab CM-T43 System-on-Module / Computer-on-Module internal storage.&lt;br /&gt;
&lt;br /&gt;
== Preparation steps ==&lt;br /&gt;
* Obtain a PC workstation with a serial communication port.&lt;br /&gt;
* For networked installation you need to install a TFTP server on the host PC. For Windows machines we recommend [http://tftpd32.jounin.net/ TFTPD32] included in the Linux package for CM-T43 (link below).&lt;br /&gt;
* Download the Linux package for CM-T43 from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres CompuLab website]. Unzip the package to a directory on your host workstation.&lt;br /&gt;
* All image files mentioned below can be found in the {{filename|images}} subdirectory.&lt;br /&gt;
* Connect the host PC to the SB-SOM-T43 base-board (connector P8) via the serial cable supplied with the evaluation kit.&lt;br /&gt;
* Start terminal emulation software on your PC. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.&lt;br /&gt;
* Turn on the CM-T43 evaluation system. The U-Boot boot-loader will start and you will get a command prompt.&lt;br /&gt;
*: {{Note|If the boot settings of your CM-T43 are different than default, you may need to press and hold '''Ctrl-C''' while turning the CM-T43 on, in order to get command prompt.}}&lt;br /&gt;
&lt;br /&gt;
== Boot into the installation environment (ramdisk) ==&lt;br /&gt;
The first step in CM-T43 Linux installation is starting the installation environment (Linux kernel and Ramdisk image). &lt;br /&gt;
This can be done using one of the following media:&lt;br /&gt;
* [[#Using installation environment on MMC/SD card|MMC/SD card]]&lt;br /&gt;
* [[#Using installation environment from USB storage device|USB storage device]]&lt;br /&gt;
* [[#Using installation environment from TFTP server|Network TFTP server]]&lt;br /&gt;
&lt;br /&gt;
=== Using installation environment on MMC/SD card ===&lt;br /&gt;
* Copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory on the first partition of the MMC/SD card.&lt;br /&gt;
* Insert the MMC/SD card into the MMC/SD socket (P9) on the SB-SOM-T43 baseboard.&lt;br /&gt;
Use the following U-Boot commands to start installation environment boot: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # mmc dev 0&lt;br /&gt;
CM-T43 # mmc rescan&lt;br /&gt;
CM-T43 # load mmc 0 0x82000000 bootscr.img&lt;br /&gt;
CM-T43 # source 0x82000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.&lt;br /&gt;
&lt;br /&gt;
=== Using installation environment from USB storage device ===&lt;br /&gt;
* Copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory on the first partition of the USB storage device.&lt;br /&gt;
&lt;br /&gt;
* Insert USB storage device into SB-SOM-T43 USB port (P6 or P26).&lt;br /&gt;
* Remove MMC/SD card from the MMC/SD socket (P9) on the SB-SOM-T43 baseboard.&lt;br /&gt;
* Use the following U-Boot commands to start installation environment boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # usb start&lt;br /&gt;
CM-T43 # load usb 0 0x88000000 am437x-sb-som-t43.dtb&lt;br /&gt;
CM-T43 # load usb 0 0x82000000 kernel.img&lt;br /&gt;
CM-T43 # load usb 0 0x88080000 ramdisk.img&lt;br /&gt;
CM-T43 # setenv bootargs &amp;quot;root=/dev/ram0 rw ramdisk_size=16384 console=ttyO0,115200n8 vram=16M ip=dhcp&amp;quot;&lt;br /&gt;
CM-T43 # bootz 0x82000000 0x88080000 0x88000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.&lt;br /&gt;
&lt;br /&gt;
=== Using installation environment from TFTP server ===&lt;br /&gt;
* Connect the SB-SOM-T43 Ethernet port (P21) to your local network.&lt;br /&gt;
* Put {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to a location accessible by the TFTP server:&lt;br /&gt;
*: - On Windows machine: copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} to the same folder and point the TFTP server to that folder.&lt;br /&gt;
*: - On Linux machine: copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} to TFTP server root directory, usually {{filename|/tftpboot}} or {{filename|/tftproot}}.&lt;br /&gt;
&lt;br /&gt;
* You can use U-Boot {{cmd|dhcp}} command to obtain IP address&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:or manually set {{parameter|ipaddr}} environment variable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv ipaddr &amp;lt;CM-T43 ip address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use the following U-Boot commands to start installation environment boot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv bootargs &amp;quot;root=/dev/ram0 rw ramdisk_size=16384 console=ttyO0,115200n8 vram=16M ip=dhcp&amp;quot;&lt;br /&gt;
CM-T43 # tftpboot 0x88000000 am437x-sb-som-t43.dtb&lt;br /&gt;
CM-T43 # tftpboot 0x82000000 kernel.img&lt;br /&gt;
CM-T43 # tftpboot 0x88080000 ramdisk.img&lt;br /&gt;
CM-T43 # bootz 0x82000000 0x88080000 0x88000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.&lt;br /&gt;
&lt;br /&gt;
=== Install Kernel and Debian Linux Images ===&lt;br /&gt;
After the ramdisk image is loaded the Linux login prompt will appear. Login as {{parameter|root}} into the system.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compulab login: root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mount the installation source media ====&lt;br /&gt;
&lt;br /&gt;
The next step is installing the kernel and Debian Linux images.&lt;br /&gt;
One of the following media can be used as a source for installation:&lt;br /&gt;
* [[#Mount an MMC/SD Card|MMC/SD Card]]&lt;br /&gt;
* [[#Mount a USB Storage Device|USB storage device]]&lt;br /&gt;
* [[#Mount an NFS drive|NFS drive]]&lt;br /&gt;
&lt;br /&gt;
===== Mount an MMC/SD Card =====&lt;br /&gt;
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from the [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory of any partition on the MMC/SD card. The partition can be formatted either ext2/3/4 or FAT file system.&lt;br /&gt;
* Insert the MMC/SD card into the SD socket (P9) on the SB-SOM-T43.&lt;br /&gt;
* The MMC/SD card is mounted automatically under /media/mmcblk0pX. Where X is the partition number.&lt;br /&gt;
* If for some reason the MMC/SD card hasn't been mounted automatically, use the following mount command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkdir -p /media/mmcblk0pX &amp;amp;&amp;amp; mount /dev/mmcblk0pX /media/mmcblk0pX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Continue to the [[#Install Images on eMMC | Install Images on eMMC]] section.&lt;br /&gt;
&lt;br /&gt;
===== Mount a USB Storage Device =====&lt;br /&gt;
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory of any partition on the USB storage device.&lt;br /&gt;
* Plug the USB storage device to any USB host port (P6 or P26) on the SB-SOM-T43.&lt;br /&gt;
* The USB device is mounted automatically under /media/sdXY. Where X is the device letter and Y is the partition number.&lt;br /&gt;
* If for some reason the USB storage device hasn't been mounted automatically, use the following mount command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkdir -p /media/sdXY &amp;amp;&amp;amp; mount /dev/sdXY /media/sdXY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Continue to the [[#Install Images on eMMC | Install Images on eMMC]] section.&lt;br /&gt;
&lt;br /&gt;
===== Mount an NFS drive =====&lt;br /&gt;
* Connect the SB-SOM-T43 Ethernet port (P21) to your local network.&lt;br /&gt;
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from the [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to a directory exported through NFS.&lt;br /&gt;
* During Ramdisk image booting the CM-T43 attempts to obtain an IP address using DHCP. If from some reason the IP address has not been obtained, use the following commands to obtain IP address for the CM-T43:&lt;br /&gt;
** Obtain IP using DHCP:&amp;lt;pre&amp;gt;root@compulab:~# ifup eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
** If there is no DHCP server on the network, you can set a static IP address using {{cmd|ifconfig}}:&amp;lt;pre&amp;gt;root@compulab:~# ifconfig eth0 &amp;lt;ip address&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Mount the NFS share containing the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mount -o nolock &amp;lt;host ip&amp;gt;:/path/to/nfs/share /mnt/net&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Images ====&lt;br /&gt;
* In this subsection the term {{filename|/mount/point}} can be:&lt;br /&gt;
** {{filename|/mnt/net}} if NFS is used&lt;br /&gt;
** {{filename|/media/mmcblk0pY}} if an MMC/SD card is used, where Y is the partition number.&lt;br /&gt;
** {{filename|/media/sdXY}} if USB storage is used, where X is the USB drive letter and Y is the partition number.&lt;br /&gt;
&lt;br /&gt;
===== Install Images on eMMC =====&lt;br /&gt;
* Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on the eMMC.&lt;br /&gt;
*: {{note|If an SD-Card is inserted in the SD card socket, eMMC will be enumerated as /dev/mmcblk1.&amp;lt;br&amp;gt;If an SD-Card is not inserted in the SD card socket, eMMC will be enumerated as /dev/mmcblk0. In the following instructions /dev/mmcblkX(p1,p2) refers to the eMMC.}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# echo -e &amp;quot;n\np\n1\n2048\n204800\na\n1\nt\nc\nn\np\n2\n204801\n\nw\neof\n&amp;quot; | fdisk -u /dev/mmcblkX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Refresh the device nodes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mdev -s &amp;amp;&amp;amp; umount /dev/mmcblkXp1 &amp;amp;&amp;amp; umount /dev/mmcblkXp2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Format the first partition with FAT32 file system:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkfs.vfat -n boot /dev/mmcblkXp1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Format the second partition with EXT4 file system:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkfs.ext4 /dev/mmcblkXp2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Mount both partitions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkdir -p /media/mmcblkXp1 &amp;amp;&amp;amp; mount /dev/mmcblkXp1 /media/mmcblkXp1&lt;br /&gt;
root@compulab:~# mkdir -p /media/mmcblkXp2 &amp;amp;&amp;amp; mount /dev/mmcblkXp2 /media/mmcblkXp2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy the {{filename|zImage-cm-t43}} and the {{filename|am437x-sb-som-t43.dtb}} to the first (FAT) partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# cp /mount/point/zImage-cm-t43 /mount/point/am437x-sb-som-t43.dtb /media/mmcblkXp1 &amp;amp;&amp;amp; sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Extract the content of {{filename|debian-image.tar.bz2}} onto the second partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-image.tar.bz2 -C /media/mmcblkXp2 &amp;amp;&amp;amp; sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Remove MMC/SD card from SB-SOM-T43 MMC/SD card socket (if used for installation) and reboot the module.&lt;br /&gt;
&lt;br /&gt;
===== Install Images on NAND =====&lt;br /&gt;
* Format the NAND flash kernel partition and write the kernel image onto it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# flash_erase /dev/mtd3 0 0&lt;br /&gt;
root@compulab:~# nandwrite -p /dev/mtd3 /mount/point/zImage-cm-t43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Format the NAND flash dtb partition and write the device tree image onto it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# flash_erase /dev/mtd4 0 0&lt;br /&gt;
root@compulab:~# nandwrite -p /dev/mtd4 /mount/point/am437x-sb-som-t43.dtb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Format the NAND flash root filesystem partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# ubiformat /dev/mtd5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Attach the NAND flash root filesystem partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# ubiattach -m 5 -d 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a ubi volume and name it &amp;quot;rootfs&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# ubimkvol /dev/ubi0 -m -N rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Mount the ubi volume:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# mkdir -p /media/rootfs &amp;amp;&amp;amp; mount -t ubifs ubi0:rootfs /media/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Extract the content of {{filename|debian-image.tar.bz2}} onto the /media/rootfs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# tar --numeric-owner -xpf /mount/point/debian-image.tar.bz2 -C /media/rootfs &amp;amp;&amp;amp; sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unmount the ubi volume:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@compulab:~# umount /media/rootfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Reboot the CM-T43 Evaluation system.&lt;br /&gt;
&lt;br /&gt;
== After Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Boot from eMMC ===&lt;br /&gt;
* Set the {{parameter|bootargs}} environment variable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv bootargs &amp;quot;root=/dev/mmcblkXp2 rw rootfstype=ext4 rootwait console=ttyO0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the {{parameter|bootcmd}} environment variable and save the environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv bootcmd 'mmc dev 1 &amp;amp;&amp;amp; mmc rescan &amp;amp;&amp;amp; load mmc 1 ${loadaddr} zimage-cm-t43 &amp;amp;&amp;amp; load mmc 1 ${fdtaddr} am437x-sb-som-t43.dtb &amp;amp;&amp;amp; bootz ${loadaddr} - ${fdtaddr}'&lt;br /&gt;
CM-T43 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To boot Linux, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Boot from NAND ===&lt;br /&gt;
* Set the {{parameter|bootargs}} environment variable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv bootargs &amp;quot;console=ttyO0,115200n8 root=ubi0:rootfs rw rootfstype=ubifs ubi.mtd=rootfs&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the {{parameter|bootcmd}} environment variable and save the environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # setenv bootcmd 'nand read ${loadaddr} 0 980000 &amp;amp;&amp;amp; nand read ${fdtaddr} 980000 80000 &amp;amp;&amp;amp; bootz ${loadaddr} - ${fdtaddr}'&lt;br /&gt;
CM-T43 # saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To boot Linux, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CM-T43 # boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: Linux: Debian]]&lt;br /&gt;
* [[CM-T43: Linux: Kernel]]&lt;br /&gt;
* [[Linux: Development for ARM modules]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux|Getting started]]&lt;br /&gt;
[[Category:CM-T43|Linux: Getting started]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Known_Issues&amp;diff=2977</id>
		<title>CM-T43: Linux: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Known_Issues&amp;diff=2977"/>
		<updated>2016-06-29T08:27:25Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{IssueCategory|Package Manager|&lt;br /&gt;
* Public key problem is reported while retrieving new lists of packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# apt-get update&lt;br /&gt;
Get:1 http://ftp.debian.org jessie Release.gpg [2390 B]&lt;br /&gt;
Get:2 http://ftp.debian.org jessie Release [168 kB]&lt;br /&gt;
...&lt;br /&gt;
Fetched 16.0 MB in 24s (662 kB/s)                                                                                                                                          &lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
W: There is no public key available for the following key IDs:&lt;br /&gt;
7638D0442B90D010&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:'''Solution :''' Install ''debian-keyring'' and ''debian-archive-keyring'' packages.&lt;br /&gt;
: '''Note :''' This operation requires ~50MB of additional disk space.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cm-debian:~# apt-get install debian-keyring debian-archive-keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Overview&amp;diff=2856</id>
		<title>CM-T43: U-Boot: Firmware Overview</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Overview&amp;diff=2856"/>
		<updated>2016-02-23T08:34:48Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the firmware for CM-T43 system-on-module.&lt;br /&gt;
CM-T43 firmware consists of two components: Secondary Program Loader (SPL) and U-Boot.&lt;br /&gt;
SPL is the bootstrap utility invoked by the CPU internal boot ROM code of the AM437x SoC.&lt;br /&gt;
The AM437x boot ROM tries to boot SPL from either SD card, or SPI flash, as determined by the hardware boot selector).&lt;br /&gt;
SPL performs minimal hardware initializations and loads U-Boot from the same boot storage device.&lt;br /&gt;
U-Boot initializes hardware modules necessary for system boot and loads the operating system.&lt;br /&gt;
&lt;br /&gt;
=== Package contents ===&lt;br /&gt;
&lt;br /&gt;
==== images ====&lt;br /&gt;
* {{filename|cm-t43-firmware}} - U-Boot and SPL (normal and byteswapped) binaries combined to a single binary&lt;br /&gt;
* {{filename|MLO}} - SPL binary&lt;br /&gt;
* {{filename|u-boot.img}} - U-Boot binary&lt;br /&gt;
&lt;br /&gt;
==== u-boot ====&lt;br /&gt;
* {{filename|spl-2016.01-cm-t43-1.bin}} - SPL binary&lt;br /&gt;
* {{filename|spl-2016.01-cm-t43-1.bin.byteswap}} - Byteswapped SPL binary for SPI-flash installation&lt;br /&gt;
* {{filename|u-boot-2016.01-cm-t43-1.bin}} - U-Boot binary&lt;br /&gt;
* {{filename|u-boot-2016.01-cm-t43-1.patch}} - patch vs. v2016.01 mainline U-Boot&lt;br /&gt;
* {{filename|patches}} - ordered collection of patches, that form the single patch above (u-boot-2016.01-cm-t43-1.patch)&lt;br /&gt;
&lt;br /&gt;
== SPL ==&lt;br /&gt;
SPL is responsible for initial clock setup, DDR initialization and boot media controller initialization.&lt;br /&gt;
It is loaded into the CPU internal SRAM immediately after system reset.&lt;br /&gt;
After basic hardware setup, SPL loads the U-Boot bootloader into the system RAM and transfers control to the U-Boot bootloader.&lt;br /&gt;
SPL resides at offsets 0x0, 0x10000, 0x20000, (a total of 3 copies) from the start of the SPI flash, and at offset 0x80000 from the start of an SD-card.&lt;br /&gt;
&lt;br /&gt;
== U-Boot ==&lt;br /&gt;
U-Boot is the bootloader used on CM-T43. It allows flexible selection of operating system boot modes, provides scripting facilities and command line interface through a serial port.&lt;br /&gt;
U-Boot allows booting operating system from the on-board NAND flash, the on-board eMMC, or the network (TFTP/NFS server).&lt;br /&gt;
U-Boot resides at offset 0x40000 from the start of the SPI flash, and at offset 0x80000 from the start of an SD-card.&lt;br /&gt;
&lt;br /&gt;
Please consult [[U-Boot quick reference]] and [http://www.denx.de/wiki/U-Boot/Documentation U-Boot project documentation] for U-Boot features and commands description.&lt;br /&gt;
&lt;br /&gt;
=== U-Boot environment ===&lt;br /&gt;
U-Boot environment resides on the SPI flash, regardless of the boot source. The environment resides at offset 0xC0000 from the start of SPI flash, and its size is 16KiB.&lt;br /&gt;
&lt;br /&gt;
== Boot sources ==&lt;br /&gt;
CM-T43 can boot from either a micro SD card, or the on-board SPI flash.&lt;br /&gt;
&lt;br /&gt;
The following sections describe the layout of each storage type.&lt;br /&gt;
&lt;br /&gt;
=== Default SPI flash mapping ===&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Description&lt;br /&gt;
! Size&lt;br /&gt;
|-&lt;br /&gt;
| 0KB&lt;br /&gt;
| SPL&lt;br /&gt;
| 256KB&lt;br /&gt;
|-&lt;br /&gt;
| 256KB&lt;br /&gt;
| U-Boot&lt;br /&gt;
| 448KB&lt;br /&gt;
|-&lt;br /&gt;
| 704KB&lt;br /&gt;
| Reserved&lt;br /&gt;
| 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 768KB&lt;br /&gt;
| U-Boot environment&lt;br /&gt;
| 256KB&lt;br /&gt;
|-&lt;br /&gt;
| 1MB&lt;br /&gt;
| Splash image&lt;br /&gt;
| Remaining SPI flash space&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default SD card mapping ===&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Description&lt;br /&gt;
! Size&lt;br /&gt;
|-&lt;br /&gt;
| 0KB&lt;br /&gt;
| Reserved/MBR&lt;br /&gt;
| 512KB&lt;br /&gt;
|-&lt;br /&gt;
| 512KB&lt;br /&gt;
| SPL&lt;br /&gt;
| 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 576KB&lt;br /&gt;
| U-Boot&lt;br /&gt;
| 448KB&lt;br /&gt;
|-&lt;br /&gt;
| 1MB&lt;br /&gt;
| Remaining SD-card space&lt;br /&gt;
| Remaining SD-card space&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: U-Boot: Firmware Update]]&lt;br /&gt;
* [[U-Boot quick reference]]&lt;br /&gt;
* [[U-Boot images]]&lt;br /&gt;
* [http://www.denx.de/wiki/U-Boot/Documentation U-Boot documentation]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot|U-Boot]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Update&amp;diff=2842</id>
		<title>CM-T43: U-Boot: Firmware Update</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Update&amp;diff=2842"/>
		<updated>2016-02-18T13:01:12Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Flashing images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The CM-T43 firmware consists of two components: Secondary Program Loader (SPL) and U-Boot, both provided on a single binary image {{filename|cm-t43-firmware}}.&lt;br /&gt;
This article describes the firmware update process for CM-T43 system-on-module product.&lt;br /&gt;
&lt;br /&gt;
== Preliminary setup ==&lt;br /&gt;
* Make sure to power off the CM-T43 evaluation platform.&lt;br /&gt;
* Connect the host PC to the SB-SOM-T43 base-board (connector P8) via the serial cable supplied with the evaluation kit. &lt;br /&gt;
* Start terminal emulation software on your PC. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.&lt;br /&gt;
* Turn on the CM-T43 evaluation system. The U-Boot boot-loader will start and you will get a command prompt in the terminal window.&lt;br /&gt;
{{Note|If the boot settings of your CM-T43 are different than default, you may need to press and hold ^C while turning the CM-T43 on, in order to get command prompt.}}&lt;br /&gt;
&lt;br /&gt;
== Updating Firmware on the SPI flash ==&lt;br /&gt;
CM-T43 firmware can be updated from an SD card, usb storage, or using network TFTP download. &lt;br /&gt;
Both methods are performed from the U-Boot command line and include following common steps:&lt;br /&gt;
# Loading binary image from the selected media to the CM-T43 DRAM&lt;br /&gt;
# Flashing image to the on-board SPI flash&lt;br /&gt;
&lt;br /&gt;
=== Updating from SD card ===&lt;br /&gt;
* Copy the firmware binary image {{filename|cm-t43-firmware}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres U-Boot package for CM-T43] to the root directory of the SD card.&lt;br /&gt;
* Insert the SD card into the P9 socket on SB-SOM-T43.&lt;br /&gt;
* Start the U-Boot MMC subsystem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mmc dev 0&lt;br /&gt;
# mmc rescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Check that the storage device is ready:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ls mmc 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Load the firmware binary into the memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# load mmc 0 80a00000 cm-t43-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Proceed to [[#Flashing images|Flashing images]] section&lt;br /&gt;
&lt;br /&gt;
=== Updating from USB storage ===&lt;br /&gt;
* Copy the firmware binary image {{filename|cm-t43-firmware}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres U-Boot package for CM-T43] to the root directory of the USB storage device.&lt;br /&gt;
* Plug the USB storage device into the USB host connector (P6) on SB-SOM-T43. &lt;br /&gt;
* Start the U-Boot USB subsystem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# usb start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Check that the storage device is ready:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ls usb 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Load the firmware binary into the memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# load usb 0 80a00000 cm-t43-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Proceed to [[#Flashing images|Flashing images]] section&lt;br /&gt;
&lt;br /&gt;
=== Updating from TFTP server ===&lt;br /&gt;
* Setup a TFTP server&lt;br /&gt;
* Put the firmware binary image {{filename|cm-t43-firmware}} in the root directory of the TFTP server&lt;br /&gt;
* Setup U-Boot networking:&lt;br /&gt;
: for dynamic IP configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: or for static IP configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# setenv ipaddr &amp;lt;ip address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Setup the TFTP server ip address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# setenv serverip &amp;lt;server ip&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Download the firmware binary into the memory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# tftp 80a00000 cm-t43-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Proceed to [[#Flashing images|Flashing images]] section&lt;br /&gt;
&lt;br /&gt;
=== Flashing images ===&lt;br /&gt;
* Make U-Boot probe the on-board SPI flash:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sf probe 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Erase the on-board SPI flash:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sf erase 0 c0000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Write the firmware image into the on-board SPI flash:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sf write 80a00000 0 c0000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Reset the CM-T43 evaluation platform.&lt;br /&gt;
&lt;br /&gt;
== Installing firmware on an SD card ==&lt;br /&gt;
CM-T43 system-on-module uses SPI flash as its main boot storage.&lt;br /&gt;
In addition to the on-board SPI flash, the CM-T43 can also boot from an SD-card.&lt;br /&gt;
The firmware can be installed as either raw data written into the SD-card, or as a file located in a FAT formatted partition.&lt;br /&gt;
&lt;br /&gt;
=== Installing firmware as raw data ===&lt;br /&gt;
* Make sure that the SD card partitions do not start in the first 1MB of the SD card. Otherwise, the partitions may be overwritten by this procedure.&lt;br /&gt;
* Insert the SD card into the workstation card reader&lt;br /&gt;
* The SD card will be identified as {{filename|/dev/sdX}}, where X is the SD card drive letter.&lt;br /&gt;
* Run the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=cm-t43-firmware of=/dev/sdX bs=1K seek=320 oflag=dsync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing firmware as files in a FAT formatted partition ===&lt;br /&gt;
* Copy the file {{filename|MLO}} located in the images folder into the SD-card partition.&lt;br /&gt;
* Copy the file {{filename|u-boot.img}} located in the images folder into the SD-card partition.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: U-Boot: Firmware Overview]]&lt;br /&gt;
* [[U-Boot quick reference]]&lt;br /&gt;
* [[U-Boot images]]&lt;br /&gt;
* [[CM-T43: Linux: Getting started|Getting started with Linux on CM-T43]]&lt;br /&gt;
* [http://www.denx.de/wiki/U-Boot/Documentation U-Boot documentation]&lt;br /&gt;
* [http://processors.wiki.ti.com/index.php/SD/MMC_format_for_OMAP3_boot SD/MMC format for OMAP3 boot]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Known_Issues&amp;diff=2839</id>
		<title>CM-T43: Linux: Known Issues</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_Linux:_Known_Issues&amp;diff=2839"/>
		<updated>2016-02-14T14:35:24Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IssueCategory|RTC|&lt;br /&gt;
* RTC time and date is not maintained when unit is unplugged from power supply, even if an RTC backup battery is installed.&lt;br /&gt;
:'''Fixed in U-Boot v2016.01-cm-t43-1'''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{IssueCategory|OPP|&lt;br /&gt;
* U-Boot versions 0.97 and below do not modify the PMIC voltages. The PMIC retains its settings between resets, and as a result if CM-T43 is switched to a low performance OPP (below 800 Mhz), on reset U-Boot will be using low performance voltage settings for a high performance CPU frequency and may not finish booting.&lt;br /&gt;
:'''Fixed in U-Boot v2016.01-cm-t43-1'''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Building_Images&amp;diff=2843</id>
		<title>CM-T43: U-Boot: Building Images</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Building_Images&amp;diff=2843"/>
		<updated>2016-02-14T14:23:02Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Snapshot download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CM-T43 firmware consists of two components: Secondary Program Loader (SPL) and U-Boot.&lt;br /&gt;
Both components are based on [http://www.denx.de/wiki/U-Boot/WebHome U-Boot] source code.&lt;br /&gt;
SPL is the bootstrap utility invoked by the CPU internal boot ROM code of the AM437x SoC.&lt;br /&gt;
SPL performs minimal hardware initialization and loads U-Boot from the same boot device.&lt;br /&gt;
U-Boot initializes hardware modules necessary for system boot and loads the operating system.&lt;br /&gt;
&lt;br /&gt;
== Building Firmware images for CM-T43 ==&lt;br /&gt;
=== Getting U-Boot sources ===&lt;br /&gt;
There are various ways to get U-Boot sources that can be used as a baseline for CM-T43 SPL and U-Boot.&lt;br /&gt;
For instance, a copy of the U-Boot mainline git tree can be created or a the sources snapshot can be downloaded.&lt;br /&gt;
We assume that you have created {{filename|/home/development/cm-t43/u-boot}} directory for CM-T43 U-Boot development.&lt;br /&gt;
&lt;br /&gt;
==== Snapshot download ====&lt;br /&gt;
* Download [http://git.denx.de/?p=u-boot.git;a=snapshot;h=fa85e826c16b9ce1ad302a57e9c4b24db0d8b930 v2016.01] snapshot with your web browser.&lt;br /&gt;
* Extract the downloaded archive {{filename|u-boot-fa85e82.tar.gz}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/u-boot&lt;br /&gt;
tar xvf /path/to/downloaded/u-boot-fa85e82.tar.gz&lt;br /&gt;
mv u-boot u-boot-cm-t43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: This will create {{filename|/home/development/cm-t43/u-boot/u-boot-cm-t43}} directory containing U-Boot source code tree.&lt;br /&gt;
* Apply the CM-T43 patch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/u-boot/u-boot-cm-t43&lt;br /&gt;
patch -p1 &amp;lt; /path/to/cm-t43-u-boot-package/u-boot/u-boot-v2016.01-cm-t43-1.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Git clone ====&lt;br /&gt;
* Install [http://git-scm.com/ git] version control system.&lt;br /&gt;
* Create a clone of U-Boot tree&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/development/cm-t43/u-boot&lt;br /&gt;
git clone git://git.denx.de/u-boot.git u-boot-cm-t43&lt;br /&gt;
cd /home/development/cm-t43/u-boot/u-boot-cm-t43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a branch for CM-T43 development. The CM-T43 patches are generated vs. v2016.01 tag (fa85e826c16b9ce1ad302a57e9c4b24db0d8b930 commit) in the U-Boot tree. It is recommended to use exactly the same baseline to avoid merge conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -b cm-t43-dev v2016.01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Apply the CM-T43 patch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git apply /path/to/cm-t43-u-boot-package/u-boot/u-boot-v2016.01-cm-t43-1.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building the firmware images ===&lt;br /&gt;
* First, compile both SPL and U-Boot. The following commands create the {{filename|MLO}}, {{filename|MLO.byteswap}}, and {{filename|u-boot.img}} binaries (along with other image types):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export ARCH=arm&lt;br /&gt;
export CROSS_COMPILE=arm-none-linux-eabi-&lt;br /&gt;
make mrproper&lt;br /&gt;
make cm_t43_defconfig &amp;amp;&amp;amp; make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the combined image for SPI-flash installation by creating a 0xFF initialized 768KB {{filename|cm-t43-firmware-sf}} file, and writing the {{filename|MLO.byteswap}}, {{filename|MLO}}, and {{filename|u-boot.img}} data to the appropriate offsets within the {{filename|cm-t43-firmware}} file. The {{filename|MLO.byteswap}} file will be written into the first 3 64KB segments to allow the bootROM to find it in 3 different places, thus improving reliability. The non-byteswapped {{filename|MLO}} will occupy the 4th 64KB segment, thus allowing the same {{filename|cm-t43-firmware}} to be written into SD-card, for which the bootROM requires non-byteswapped data. Finally, {{filename|u-boot.img}} is written to the 256KB offset, right at the end of the 4 MLO segments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero count=768 bs=1K | tr '\000' '\377' &amp;gt; cm-t43-firmware&lt;br /&gt;
dd if=MLO.byteswap of=cm-t43-firmware bs=1k seek=0 conv=notrunc&lt;br /&gt;
dd if=MLO.byteswap of=cm-t43-firmware bs=1k seek=64 conv=notrunc&lt;br /&gt;
dd if=MLO.byteswap of=cm-t43-firmware bs=1k seek=128 conv=notrunc&lt;br /&gt;
dd if=MLO of=cm-t43-firmware bs=1k seek=192 conv=notrunc&lt;br /&gt;
dd if=u-boot.img of=cm-t43-firmware bs=1k seek=256 conv=notrunc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now install the {{filename|cm-t43-firmware}} file into the CM-T43 SPI flash or SD-card.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: U-Boot: Firmware Overview]]&lt;br /&gt;
* [[CM-T43: U-Boot: Firmware Update]]&lt;br /&gt;
* [[U-Boot quick reference]]&lt;br /&gt;
* [[U-Boot images]]&lt;br /&gt;
* [http://www.denx.de/wiki/U-Boot/Documentation U-Boot documentation]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Overview&amp;diff=2841</id>
		<title>CM-T43: U-Boot: Firmware Overview</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43:_U-Boot:_Firmware_Overview&amp;diff=2841"/>
		<updated>2016-02-14T13:30:18Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This article describes the firmware for CM-T43 system-on-module.&lt;br /&gt;
CM-T43 firmware consists of two components: Secondary Program Loader (SPL) and U-Boot.&lt;br /&gt;
SPL is the bootstrap utility invoked by the CPU internal boot ROM code of the AM437x SoC.&lt;br /&gt;
The AM437x boot ROM tries to boot SPL from either SD card, or SPI flash, as determined by the hardware boot selector).&lt;br /&gt;
SPL performs minimal hardware initializations and loads U-Boot from the same boot storage device.&lt;br /&gt;
U-Boot initializes hardware modules necessary for system boot and loads the operating system.&lt;br /&gt;
&lt;br /&gt;
=== Package contents ===&lt;br /&gt;
&lt;br /&gt;
==== images ====&lt;br /&gt;
* {{filename|cm-t43-firmware}} - U-Boot and SPL (normal and byteswapped) binaries combined to a single binary&lt;br /&gt;
&lt;br /&gt;
==== u-boot ====&lt;br /&gt;
* {{filename|spl-2016.01-cm-t43-1.bin}} - SPL binary&lt;br /&gt;
* {{filename|spl-2016.01-cm-t43-1.bin.byteswap}} - Byteswapped SPL binary&lt;br /&gt;
* {{filename|u-boot-2016.01-cm-t43-1.bin}} - U-Boot binary&lt;br /&gt;
* {{filename|u-boot-2016.01-cm-t43-1.patch}} - patch vs. v2016.01 mainline U-Boot&lt;br /&gt;
* {{filename|patches}} - ordered collection of patches, that form the single patch above (u-boot-2016.01-cm-t43-1.patch)&lt;br /&gt;
&lt;br /&gt;
== SPL ==&lt;br /&gt;
SPL is responsible for initial clock setup, DDR initialization and boot media controller initialization.&lt;br /&gt;
It is loaded into the CPU internal SRAM immediately after system reset.&lt;br /&gt;
After basic hardware setup, SPL loads the U-Boot bootloader into the system RAM and transfers control to the U-Boot bootloader.&lt;br /&gt;
SPL resides at offsets 0x0, 0x10000, 0x20000, (a total of 3 copies) from the start of the SPI flash, and at offset 0x80000 from the start of an SD-card.&lt;br /&gt;
&lt;br /&gt;
== U-Boot ==&lt;br /&gt;
U-Boot is the bootloader used on CM-T43. It allows flexible selection of operating system boot modes, provides scripting facilities and command line interface through a serial port.&lt;br /&gt;
U-Boot allows booting operating system from the on-board NAND flash, the on-board eMMC, or the network (TFTP/NFS server).&lt;br /&gt;
U-Boot resides at offset 0x40000 from the start of the SPI flash, and at offset 0x80000 from the start of an SD-card.&lt;br /&gt;
&lt;br /&gt;
Please consult [[U-Boot quick reference]] and [http://www.denx.de/wiki/U-Boot/Documentation U-Boot project documentation] for U-Boot features and commands description.&lt;br /&gt;
&lt;br /&gt;
=== U-Boot environment ===&lt;br /&gt;
U-Boot environment resides on the SPI flash, regardless of the boot source. The environment resides at offset 0xC0000 from the start of SPI flash, and its size is 16KiB.&lt;br /&gt;
&lt;br /&gt;
== Boot sources ==&lt;br /&gt;
CM-T43 can boot from either a micro SD card, or the on-board SPI flash.&lt;br /&gt;
&lt;br /&gt;
The following sections describe the layout of each storage type.&lt;br /&gt;
&lt;br /&gt;
=== Default SPI flash mapping ===&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Description&lt;br /&gt;
! Size&lt;br /&gt;
|-&lt;br /&gt;
| 0KB&lt;br /&gt;
| SPL&lt;br /&gt;
| 256KB&lt;br /&gt;
|-&lt;br /&gt;
| 256KB&lt;br /&gt;
| U-Boot&lt;br /&gt;
| 448KB&lt;br /&gt;
|-&lt;br /&gt;
| 704KB&lt;br /&gt;
| Reserved&lt;br /&gt;
| 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 768KB&lt;br /&gt;
| U-Boot environment&lt;br /&gt;
| 256KB&lt;br /&gt;
|-&lt;br /&gt;
| 1MB&lt;br /&gt;
| Splash image&lt;br /&gt;
| Remaining SPI flash space&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default SD card mapping ===&lt;br /&gt;
{| cellpadding=&amp;quot;3&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid rgb(85, 85, 85); border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Description&lt;br /&gt;
! Size&lt;br /&gt;
|-&lt;br /&gt;
| 0KB&lt;br /&gt;
| Reserved/MBR&lt;br /&gt;
| 512KB&lt;br /&gt;
|-&lt;br /&gt;
| 512KB&lt;br /&gt;
| SPL&lt;br /&gt;
| 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 576KB&lt;br /&gt;
| U-Boot&lt;br /&gt;
| 448KB&lt;br /&gt;
|-&lt;br /&gt;
| 1MB&lt;br /&gt;
| Remaining SD-card space&lt;br /&gt;
| Remaining SD-card space&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[CM-T43: U-Boot: Firmware Update]]&lt;br /&gt;
* [[U-Boot quick reference]]&lt;br /&gt;
* [[U-Boot images]]&lt;br /&gt;
* [http://www.denx.de/wiki/U-Boot/Documentation U-Boot documentation]&lt;br /&gt;
&lt;br /&gt;
[[Category:U-Boot|U-Boot]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=Linux:_Introduction_to_device_trees&amp;diff=2830</id>
		<title>Linux: Introduction to device trees</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=Linux:_Introduction_to_device_trees&amp;diff=2830"/>
		<updated>2016-02-08T09:34:11Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Cross referencing with SoC manual */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What are device trees? =&lt;br /&gt;
A device tree is a data structure that describes the System-on-Module (SoM) hardware: its various hardware components, and their relationship with one another. In the past, such information was hardcoded into the kernel for each SoM, and device trees were invented to curb this practice by providing a standard way to pass hardware description to the kernel. Much like source code, device trees can exist as human readable source files (.dts, .dtsi), or as compiled blobs (.dtb). Before a device tree is passed to the kernel, its source must be compiled into a blob. This compilation happens automatically as part of building the kernel.&lt;br /&gt;
&lt;br /&gt;
= How are device trees structured? =&lt;br /&gt;
Device trees contain segments called &amp;quot;nodes&amp;quot;. Each node contains information about a hardware component. The contents of each node are dictated by the driver that is responsible for handling the hardware component. The various nodes are organized in a tree-like hierarchy, which reflects the relationship between the hardware components. For example, if we have an i2c bus with multiple devices, the nodes that represent these devices will be sub nodes of the i2c bus node. (NOTE: device nodes can also make direct references to other nodes in the system, so in practice the device tree is more like a device graph).&lt;br /&gt;
&lt;br /&gt;
Device trees can include other device trees. This facilitates modularity of the hardware representation. A common pattern in the ARM world is for the SoC vendor (e.g. TI) to define a device tree that describes the SoC (e.g. AM437x), and the SoM vendor (e.g. CompuLab) would include it in the device tree of a product that is based on the SoC (e.g. CM-T43). The inclusion works in a cascading fashion: if device tree B includes device tree A, the result will have the content of both device trees. However, if both A and B happen to define the same property, the value in device tree B will override the value provided by device tree A. In the opposite case (device tree A includes device tree B), the value from A woulde override the value from B.&lt;br /&gt;
&lt;br /&gt;
* For more information about device tree syntax, visit the official [http://devicetree.org/Device_Tree_Usage Device Tree WiKi] pages and make an overview of a [http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf  Device Tree tutorial]&lt;br /&gt;
* For information about what content (bindings) should appear in various nodes, see Documentation/devicetree/bindings/ folder in the Linux kernel source code.&lt;br /&gt;
&lt;br /&gt;
= Device tree software support =&lt;br /&gt;
In order to use device tree blobs, the kernel must have device tree support compiled in, and the bootloader must have support for passing device tree blobs to the kernel.&lt;br /&gt;
In modern Linux kernels, device tree support is ubiquitous. When configuring the kernel for the ARM architecture, the relevant CONFIG options (specifically CONFIG_USE_OF) is selected automatically by the kernel config system.&lt;br /&gt;
Device tree support in U-Boot, the bootloader of choice for CompuLab SoMs, can be enabled by defining the CONFIG option CONFIG_OF_LIBFDT in the board config file (usually include/configs/board_name.h).&lt;br /&gt;
&lt;br /&gt;
== Passing device tree blobs to the kernel ==&lt;br /&gt;
Passing device tree blobs to the kernel is done using the U-Boot commands bootz (for zImages) and bootm (for uImages). For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot# help bootz&lt;br /&gt;
bootz - boot Linux zImage image from memory&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
bootz [addr [initrd[:size]] [fdt]]&lt;br /&gt;
    - boot Linux zImage stored in memory&lt;br /&gt;
	The argument 'initrd' is optional and specifies the address&lt;br /&gt;
	of the initrd in memory. The optional argument ':size' allows&lt;br /&gt;
	specifying the size of RAW initrd.&lt;br /&gt;
	When booting a Linux kernel which requires a flat device-tree&lt;br /&gt;
	a third argument is required which is the address of the&lt;br /&gt;
	device-tree blob. To boot that kernel without an initrd image,&lt;br /&gt;
	use a '-' for the second argument. If you do not pass a third&lt;br /&gt;
	a bd_info struct will be passed instead&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modifying device tree blobs ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, a device tree cannot simultaneously represent different versions of the same hardware product. In that case, a choice is made to represent one of the hardware variations, and the bootloader is expected to adjust the device tree before passing it on to the kernel. U-Boot has dedicated commands for modifying the device tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
U-Boot# help fdt&lt;br /&gt;
fdt - flattened device tree utility commands&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
fdt addr [-c]  &amp;lt;addr&amp;gt; [&amp;lt;length&amp;gt;]   - Set the [control] fdt location to &amp;lt;addr&amp;gt;&lt;br /&gt;
fdt move   &amp;lt;fdt&amp;gt; &amp;lt;newaddr&amp;gt; &amp;lt;length&amp;gt; - Copy the fdt to &amp;lt;addr&amp;gt; and make it active&lt;br /&gt;
fdt resize                          - Resize fdt to size + padding to 4k addr&lt;br /&gt;
fdt print  &amp;lt;path&amp;gt; [&amp;lt;prop&amp;gt;]          - Recursive print starting at &amp;lt;path&amp;gt;&lt;br /&gt;
fdt list   &amp;lt;path&amp;gt; [&amp;lt;prop&amp;gt;]          - Print one level starting at &amp;lt;path&amp;gt;&lt;br /&gt;
fdt get value &amp;lt;var&amp;gt; &amp;lt;path&amp;gt; &amp;lt;prop&amp;gt;   - Get &amp;lt;property&amp;gt; and store in &amp;lt;var&amp;gt;&lt;br /&gt;
fdt get name &amp;lt;var&amp;gt; &amp;lt;path&amp;gt; &amp;lt;index&amp;gt;   - Get name of node &amp;lt;index&amp;gt; and store in &amp;lt;var&amp;gt;&lt;br /&gt;
fdt get addr &amp;lt;var&amp;gt; &amp;lt;path&amp;gt; &amp;lt;prop&amp;gt;    - Get start address of &amp;lt;property&amp;gt; and store in &amp;lt;var&amp;gt;&lt;br /&gt;
fdt get size &amp;lt;var&amp;gt; &amp;lt;path&amp;gt; [&amp;lt;prop&amp;gt;]  - Get size of [&amp;lt;property&amp;gt;] or num nodes and store in &amp;lt;var&amp;gt;&lt;br /&gt;
fdt set    &amp;lt;path&amp;gt; &amp;lt;prop&amp;gt; [&amp;lt;val&amp;gt;]    - Set &amp;lt;property&amp;gt; [to &amp;lt;val&amp;gt;]&lt;br /&gt;
fdt mknode &amp;lt;path&amp;gt; &amp;lt;node&amp;gt;            - Create a new node after &amp;lt;path&amp;gt;&lt;br /&gt;
fdt rm     &amp;lt;path&amp;gt; [&amp;lt;prop&amp;gt;]          - Delete the node or &amp;lt;property&amp;gt;&lt;br /&gt;
fdt header                          - Display header info&lt;br /&gt;
fdt bootcpu &amp;lt;id&amp;gt;                    - Set boot cpuid&lt;br /&gt;
fdt memory &amp;lt;addr&amp;gt; &amp;lt;size&amp;gt;            - Add/Update memory node&lt;br /&gt;
fdt rsvmem print                    - Show current mem reserves&lt;br /&gt;
fdt rsvmem add &amp;lt;addr&amp;gt; &amp;lt;size&amp;gt;        - Add a mem reserve&lt;br /&gt;
fdt rsvmem delete &amp;lt;index&amp;gt;           - Delete a mem reserves&lt;br /&gt;
fdt chosen [&amp;lt;start&amp;gt; &amp;lt;end&amp;gt;]          - Add/update the /chosen branch in the tree&lt;br /&gt;
                                        &amp;lt;start&amp;gt;/&amp;lt;end&amp;gt; - initrd start/end addr&lt;br /&gt;
NOTE: Dereference aliases by omiting the leading '/', e.g. fdt print ethernet0.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuring pinmux settings in device tree =&lt;br /&gt;
One of the most common tasks in embedded development is configuring the pinmux settings for the SoC. This task requires cross referencing the SoM manual with the SoC manual, and editing the pinmux section of the SoM device tree. The following instructions describe the process step-by-step for TI SoCs. Adjustments may be needed when dealing with SoCs manufactured by other companies, but the general process is similar.&lt;br /&gt;
&lt;br /&gt;
== Selecting pins for use ==&lt;br /&gt;
Compulab provides a detailed reference manual for its SoMs. One of the chapters in each such manual describes the pins which are exported via the SoM connector, listing all of their possible functions, as well as availability (some pins are not usable when certain manufacturing options are selected for the SoM). For example, on the [http://www.compulab.co.il/products/computer-on-modules/cm-t43/#devres CM-T43 reference manual], this information is detailed in chapter 5.5 &amp;quot;Signal Multiplexing Characteristics&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Cross referencing with SoC manual ==&lt;br /&gt;
Having chosen the pins to configure, the next step is to find the address of the register that controls the pins. This is necessary because the way we reference the pin in the kernel is with the address of the register that controls it. On TI SoCs, each pin is named after its mode 0 function. To find the register that controls it, open the SoC TRM, and search for a register called CTRL_CONF_&amp;lt;mode_0_function_name&amp;gt;. The page that describes the register will also list its offset relative to the base address of the control module. This value will be used in the device tree to refer to the pin control register.&lt;br /&gt;
&lt;br /&gt;
== Modifying the device tree ==&lt;br /&gt;
The device tree segment that controls the pin mux will look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;am43xx_pinmux {&lt;br /&gt;
	pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
	pinctrl-0 = &amp;lt;&amp;amp;cm_t43_led_pins&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
	spi0_pins: pinmux_spi0_pins {&lt;br /&gt;
		pinctrl-single,pins = &amp;lt;&lt;br /&gt;
			AM4372_IOPAD(0x950, PIN_INPUT | MUX_MODE0) /* spi0_sclk.spi0_sclk */&lt;br /&gt;
			AM4372_IOPAD(0x954, PIN_INPUT | MUX_MODE0) /* spi0_d0.spi0_d0 */&lt;br /&gt;
			AM4372_IOPAD(0x958, PIN_OUTPUT | MUX_MODE0) /* spi0_d1.spi0_d1 */&lt;br /&gt;
			AM4372_IOPAD(0x95C, PIN_OUTPUT | MUX_MODE0) /* spi0_cs0.spi0_cs0 */&lt;br /&gt;
		&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a new node for your custom pinmux configuration, and populate it with pinmux settings. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;am43xx_pinmux {&lt;br /&gt;
	pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
	pinctrl-0 = &amp;lt;&amp;amp;cm_t43_led_pins&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
	spi0_pins: pinmux_spi0_pins {&lt;br /&gt;
		pinctrl-single,pins = &amp;lt;&lt;br /&gt;
			AM4372_IOPAD(0x950, PIN_INPUT | MUX_MODE0) /* spi0_sclk.spi0_sclk */&lt;br /&gt;
			AM4372_IOPAD(0x954, PIN_INPUT | MUX_MODE0) /* spi0_d0.spi0_d0 */&lt;br /&gt;
			AM4372_IOPAD(0x958, PIN_OUTPUT | MUX_MODE0) /* spi0_d1.spi0_d1 */&lt;br /&gt;
			AM4372_IOPAD(0x95C, PIN_OUTPUT | MUX_MODE0) /* spi0_cs0.spi0_cs0 */&lt;br /&gt;
		&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	custom_pins: pinmux_custom_pins {&lt;br /&gt;
		pinctrl-single,pins = &amp;lt;&lt;br /&gt;
			/* some pin settings */&lt;br /&gt;
			/* some other pin settings */&lt;br /&gt;
		&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specifying pinmux settings ===&lt;br /&gt;
The general format for specifying pinmux settings is that each line starts with the pin register offset, and ends with the pin settings. The syntax for specifying this information changes somewhat between SoCs, and even between kernel versions. Because of these differences, the best practice for determining how to specify a custom pinmux configuration is to look at existing examples, such as the pinmux segment in the device tree for your chosen Compulab SoM. The following example describes the pinmux settings format for cm-t43 on a v4.4 kernel, and points out the possible differences that may exist in other SoMs.&lt;br /&gt;
&lt;br /&gt;
The pinmux setting:&lt;br /&gt;
&amp;lt;pre&amp;gt;AM4372_IOPAD(0x950, PIN_INPUT | MUX_MODE0)&amp;lt;/pre&amp;gt;&lt;br /&gt;
This line consists of the following sections:&lt;br /&gt;
* AM4372_IOPAD() macro. As the name suggests, this macro is specific to AM4372 SoCs. Other SoCs will have a differently named macro. If a SoC is fairly new, there may not be a macro for it yet, and then the pin configuration will be just the offset and pinmux settings, like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x950 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The pin register offset (0x950). This offset may or may not correspond to the register offset described in the SoC TRM. For example, before the AM4372_IOPAD() macro was defined for the AM437x SoC, it was necessary to subtract 0x800 from the offset listed in the TRM in order to refer to the pin register. For example, if the TRM listed the offset as 0x950, the device tree line controlling the pin actually looked like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x150 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the AM4372_IOPAD() macro was defined, this subtraction was no longer necessary, and the value from the TRM had to be used, like so:&amp;lt;pre&amp;gt;&lt;br /&gt;
AM4372_IOPAD(0x950, PIN_OUTPUT_PULLDOWN | MUX_MODE2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pin settings (PIN_OUTPUT_PULLDOWN | MUX_MODE2). These macros may be named differently in device trees for non-TI SoCs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:U-Boot]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CM-T43_TI_AM437x_Linux&amp;diff=2825</id>
		<title>CM-T43 TI AM437x Linux</title>
		<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CM-T43_TI_AM437x_Linux&amp;diff=2825"/>
		<updated>2016-02-07T11:43:53Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{summary|&lt;br /&gt;
This page contains links to information about Linux kernels, packages and software development for the CompuLab CM-T43 System-on-Module / Computer-on-Module.&lt;br /&gt;
&lt;br /&gt;
CompuLab Linux support for CM-T43 includes modifications of [[CM-T43: Linux: Kernel|Linux kernel]] and [http://www.debian.org/ports/arm/ ARM Debian] port. It is possible to use other embedded Linux distributions and environments with CM-T43.&lt;br /&gt;
|Cm-t43-top.jpg|thumb}}&lt;br /&gt;
{{Resources Linux&lt;br /&gt;
|* [[CM-T43: Linux: Getting started|Getting started with Linux on CM-T43]]&lt;br /&gt;
* [[CM-T43: Linux: Debian|Debian Linux for CM-T43]]&lt;br /&gt;
* [[CM-T43 TI AM437x Yocto Linux|Yocto Linux for CM-T43]]&lt;br /&gt;
|* [[ Linux: Setting up a development environment | Setting up a development environment]]&lt;br /&gt;
* [[ Linux: Introduction to Linux development | Introduction to Linux development]]&lt;br /&gt;
* [[Linux: Introduction to device trees | Introduction to device trees]]&lt;br /&gt;
* [[CM-T43: Linux: Kernel|Linux Kernel for CM-T43]]&lt;br /&gt;
* [[Linux: Debian: Minimal ARM filesystem | Minimal Debian ARM filesystem]]&lt;br /&gt;
|*[[Support]]&lt;br /&gt;
* [[CM-T43: Linux: Known Issues|Known Issues]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{ChangelogRss| content=&lt;br /&gt;
===== 01-Feb-2016, CM-T43 Linux release =====&lt;br /&gt;
: Linux kernel 4.2-cm-t43-4 for CM-T43 updates&lt;br /&gt;
:- Add CAN bus support&lt;br /&gt;
:- Add DVI support&lt;br /&gt;
:- Improve WiFi operation&lt;br /&gt;
: Documentation&lt;br /&gt;
:- Updated multiple articles to comply with the new Linux package&lt;br /&gt;
&lt;br /&gt;
===== 07-Dec-2015, CM-T43 Linux release =====&lt;br /&gt;
: Linux kernel 4.2-cm-t43-3.2 for CM-T43 updates&lt;br /&gt;
:- Add audio support&lt;br /&gt;
:- Add OPP support&lt;br /&gt;
:- Update kernel base code to version 4.2&lt;br /&gt;
:- Improve Ethernet operation&lt;br /&gt;
:- Fix RTC&lt;br /&gt;
:- Fix WiFi/Bluetooth start up&lt;br /&gt;
: Documentation&lt;br /&gt;
:- Updated multiple articles to comply with the new Linux package&lt;br /&gt;
&lt;br /&gt;
===== 06-Jul-2015 =====&lt;br /&gt;
: Linux kernel 3.19-cm-t43-2 for CM-T43 updates &lt;br /&gt;
:- Added 2nd Ethernet port support&lt;br /&gt;
:- Added NAND support&lt;br /&gt;
:- Added USB device mode support&lt;br /&gt;
:- Added Touchscreen support&lt;br /&gt;
:- Added EEPROM support&lt;br /&gt;
:- Fix Heartbeat Green LED&lt;br /&gt;
: Documentation&lt;br /&gt;
:- Added Bluetooth documentation&lt;br /&gt;
:- Updated multiple articles to comply with the new Linux package&lt;br /&gt;
&lt;br /&gt;
===== 19-Apr-2015 =====&lt;br /&gt;
: Initial release of Linux kernel and Debian Linux Demo image for CM-T43&lt;br /&gt;
:- Basic support for the CM-T43 module&lt;br /&gt;
:- Green LED support&lt;br /&gt;
:- MMC/SD card support&lt;br /&gt;
:- eMMC internal storage support&lt;br /&gt;
:- USB 2.0 host ports support&lt;br /&gt;
:- Ethernet support&lt;br /&gt;
:- RTC support&lt;br /&gt;
:- Parallel LCD output support&lt;br /&gt;
:- WiFi support&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:CM-T43]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
		
	</entry>
</feed>