<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=CL-SOM-iMX7%3A_FreeRTOS%3A_Demos_Usage_Guide</id>
	<title>CL-SOM-iMX7: FreeRTOS: Demos Usage Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=CL-SOM-iMX7%3A_FreeRTOS%3A_Demos_Usage_Guide"/>
	<link rel="alternate" type="text/html" href="https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;action=history"/>
	<updated>2026-04-30T10:07:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3863&amp;oldid=prev</id>
		<title>Nikita: /* See also */</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&amp;oldid=prev"/>
		<updated>2017-10-23T10:46:38Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;See also&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;amp;diff=3863&amp;amp;oldid=3413&quot;&gt;Show changes&lt;/a&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=3413&amp;oldid=prev</id>
		<title>Grinberg: /* Example run */</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=3413&amp;oldid=prev"/>
		<updated>2017-07-18T10:02:38Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Example run&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;amp;diff=3413&amp;amp;oldid=3409&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Grinberg</name></author>
		
	</entry>
	<entry>
		<id>https://www.mediawiki.compulab.com/w/index.php?title=CL-SOM-iMX7:_FreeRTOS:_Demos_Usage_Guide&amp;diff=3409&amp;oldid=prev</id>
		<title>Grinberg: /* Watchdog driver demo */</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=3409&amp;oldid=prev"/>
		<updated>2017-07-17T14:00:10Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Watchdog driver demo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&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 [[#CL-SOM-iMX7 Linux installation|Linux BSP for CL-SOM-iMX7]].&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;
=== CL-SOM-iMX7 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 [[CL-SOM-iMX7: Linux: Automatic Installation|CL-SOM-iMX7 automatic installation procedure]].&lt;br /&gt;
* Copy the {{filename|imx7d-sbc-imx7-m4.dtb}} device tree blob to the SD-card&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.&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 rpmsg_pingpong_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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&lt;br /&gt;
&amp;lt;/pre&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, you will see this 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:~# cd /lib/modules/4.1.15-cl-som-imx7-3.1/kernel/drivers/rpmsg/&lt;br /&gt;
root@cl-debian:~# insmod imx_rpmsg_pingpong.ko&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With both A7 and M4 terminals side by side, you will see the following output (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 also running a terminal emulation app on the CL-SOM-iMX7.&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 rpmsg_str_echo_bm_example.bin &amp;amp;&amp;amp; dcache flush; bootaux 7F8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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&lt;br /&gt;
&amp;lt;/pre&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:~# cd /lib/modules/4.1.15-cl-som-imx7-3.1/kernel/drivers/rpmsg/&lt;br /&gt;
root@cl-debian:~# insmod imx_rpmsg_tty.ko&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A7 serial output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&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;
M4 serial output:&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 on the A7 core. Connect to it using a terminal emulator of your choice.&lt;br /&gt;
The following example uses kermit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@cl-debian:/# cat kermit.conf&lt;br /&gt;
set carrier-watch off&lt;br /&gt;
set handshake none&lt;br /&gt;
set flow-control none &lt;br /&gt;
set key \127 \008&lt;br /&gt;
robust&lt;br /&gt;
&lt;br /&gt;
root@cl-debian:/# kermit -l /dev/ttyRPMSG -b 115200 -y kermit.conf&lt;br /&gt;
C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux+SSL+KRB5&lt;br /&gt;
 Copyright (C) 1985, 2011,&lt;br /&gt;
  Trustees of Columbia University in the City of New York.&lt;br /&gt;
Type ? or HELP for help.&lt;br /&gt;
(/) C-Kermit&amp;gt;connect&lt;br /&gt;
Connecting to /dev/ttyRPMSG, speed 38400&lt;br /&gt;
 Escape character: Ctrl-\ (ASCII 28, FS): enabled&lt;br /&gt;
Type the escape character followed by C to get back,&lt;br /&gt;
or followed by ? to see other options.&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
Hello M4 core! I am A7.&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;
Get Message From Master Side : &amp;quot;H&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;e&amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot;l&amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;l&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;o&amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot; &amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;M&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;4&amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot; &amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;c&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;o&amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot;r&amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;e&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;!&amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot; &amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;I&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot; &amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot;a&amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;m&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot; &amp;quot; [len : 1] from slot 1&lt;br /&gt;
Get Message From Master Side : &amp;quot;A&amp;quot; [len : 1] from slot 2&lt;br /&gt;
Get Message From Master Side : &amp;quot;7&amp;quot; [len : 1] from slot 0&lt;br /&gt;
Get Message From Master Side : &amp;quot;.&amp;quot; [len : 1] from slot 1&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 [[FreeRTOS: Introduction to 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 control the CL-SOM-iMX7 LED using keypresses into the M4 serial connection.&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;
&amp;lt;pre&amp;gt;&lt;br /&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&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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&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;
++++++++++++++++ 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;
or&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;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[CL-SOM-iMX7: FreeRTOS: Running Demos]]&lt;br /&gt;
* [[FreeRTOS: Introduction to 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>Grinberg</name></author>
		
	</entry>
</feed>