<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>OpenAMP on 0xc0de</title>
    <link>https://0xc0de.xyz/tags/openamp/</link>
    <description>Recent content in OpenAMP on 0xc0de</description>
    <image>
      <title>0xc0de</title>
      <url>https://0xc0de.xyz/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://0xc0de.xyz/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <lastBuildDate>Fri, 17 Jan 2025 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://0xc0de.xyz/tags/openamp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AMD PetaLinux &#43; OpenAMP Demos</title>
      <link>https://0xc0de.xyz/posts/penta-linux-openamp-demos/</link>
      <pubDate>Fri, 17 Jan 2025 00:00:00 +0800</pubDate>
      <guid>https://0xc0de.xyz/posts/penta-linux-openamp-demos/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ This demo is based on &lt;strong&gt;PetaLinux 2024.1 release&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.amd.com/r/2024.1-English/ug1144-petalinux-tools-reference-guide/Overview&#34;&gt;PetaLinux Tools Documentation: Reference Guide (UG1144) (2024.1 English)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Download &lt;strong&gt;2024.1 PetaLinux Tools Installer&lt;/strong&gt; &amp;amp; &lt;strong&gt;ZCU102 BSP:&lt;/strong&gt; &lt;a href=&#34;https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-1.html&#34;&gt;https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-1.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch to bash:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set &lt;code&gt;$SHELL&lt;/code&gt; to &lt;code&gt;/bin/bash&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ export SHELL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Disable dash as the default system shell (/bin/sh):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo dpkg-reconfigure dash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Select: &lt;strong&gt;&lt;!-- raw HTML omitted --&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install PetaLinux Tools Installer:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>⚠️ This demo is based on <strong>PetaLinux 2024.1 release</strong>.</p>
</blockquote>
<ul>
<li><a href="https://docs.amd.com/r/2024.1-English/ug1144-petalinux-tools-reference-guide/Overview">PetaLinux Tools Documentation: Reference Guide (UG1144) (2024.1 English)</a></li>
</ul>
<hr>
<ul>
<li>
<p>Download <strong>2024.1 PetaLinux Tools Installer</strong> &amp; <strong>ZCU102 BSP:</strong> <a href="https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-1.html">https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2024-1.html</a></p>
</li>
<li>
<p>Switch to bash:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ bash
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Set <code>$SHELL</code> to <code>/bin/bash</code>:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ export SHELL<span style="color:#f92672">=</span>/bin/bash
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Disable dash as the default system shell (/bin/sh):</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ sudo dpkg-reconfigure dash
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>Select: <strong><!-- raw HTML omitted --></strong></li>
</ul>
</li>
<li>
<p>Install PetaLinux Tools Installer:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ chmod u+x petalinux-v2024.1-05202009-installer.run
</span></span><span style="display:flex;"><span>$ ./petalinux-v2024.1-05202009-installer.run -d install
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>Installer will be installed to: <code>./install</code></li>
</ul>
</li>
<li>
<p>Source PetaLinux environments:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ cd ./install
</span></span><span style="display:flex;"><span>$ source settings.sh
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Create project from ZCU102 BSP:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-create project -s xilinx-zcu102-v2024.1-05230256.bsp
</span></span><span style="display:flex;"><span>$ cd ./xilinx-zcu102-2024.1
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>The project will be created to: <code>./xilinx-zcu102-2024.1</code></li>
</ul>
</li>
<li>
<p>Build OpenAMP dtb:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-6-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-6-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-config
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>Select configs:
<ul>
<li>DTG Settings → Enable openamp dtsi</li>
<li>Yocto Settings → Parallel thread execution → Set number of bb threads (BB_NUMBER_THREADS)
<ul>
<li>E.g. <code>8</code></li>
</ul>
</li>
</ul>
</li>
<li>PetaLinux project config is located at: <code>./project-spec/configs/config</code></li>
</ul>
</li>
<li>
<p>Enable OpenAMP and its examples in rootfs:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-config -c rootfs
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>Select the configs:
<ul>
<li>Filesystem Packages → misc → openamp-fw-echo-testd</li>
<li>Filesystem Packages → misc → openamp-fw-mat-muld</li>
<li>Filesystem Packages → misc → openamp-fw-rpc-demo</li>
<li>Petalinux Package Groups → packagegroup-petalinux-openamp → packagegroup-petalinux-openamp</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Enable Linux Kernel debug info:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-8-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-8-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-config -c kernel
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>Select the configs:
<ul>
<li>Kernel hacking → Kernel debugging</li>
<li>Kernel hacking → Compile-time checks and compiler options → Debug information → Rely on the toolchain’s implicit default DWARF version</li>
<li>General setup →Compiler optimization level → Optimize for size (-Os)</li>
<li>Device Drivers → Character devices → /dev/mem virtual device support</li>
</ul>
</li>
</ul>
</li>
<li>
<p><span id="build-zynqmp-r5-remoteproc-driver-into-kernel"></span>
If we want to build <code>zynqmp_r5_remoteproc</code> driver into kernel, instead of kernel module:</p>
<ul>
<li>Select the configs:
<ul>
<li>Device Drivers → Remoteproc drivers → Support for Remote Processor subsystem → ZynqMP R5 remoteproc support, choose: <code>y</code></li>
</ul>
</li>
</ul>
</li>
<li>
<p>Build the project:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ nice -19 petalinux-build
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Boot QEMU with Linux kernel and rootfs we just built:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-2">2</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-3"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-3">3</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-4"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-4">4</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-5"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-5">5</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-6"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-6">6</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-7"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-7">7</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-8"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-8">8</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-boot qemu --kernel
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>INFO<span style="color:#f92672">]</span> Set QEMU tftp to <span style="color:#e6db74">&#34;/tftpboot&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>INFO<span style="color:#f92672">]</span> qemu-system-microblazeel -M microblaze-fdt  -serial mon:stdio -serial /dev/null -display none  -kernel /home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/pmu_rom_qemu_sha3.elf -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/pmufw.elf -hw-dtb /home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/zynqmp-qemu-multiarch-pmu.dtb -machine-path /tmp/tmp29lts2le -device loader,addr<span style="color:#f92672">=</span>0xfd1a0074,data<span style="color:#f92672">=</span>0x1011003,data-len<span style="color:#f92672">=</span><span style="color:#ae81ff">4</span> -device loader,addr<span style="color:#f92672">=</span>0xfd1a007C,data<span style="color:#f92672">=</span>0x1010f03,data-len<span style="color:#f92672">=</span><span style="color:#ae81ff">4</span> &amp;
</span></span><span style="display:flex;"><span>Image resized.
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>INFO<span style="color:#f92672">]</span> qemu-system-aarch64 -M arm-generic-fdt  -serial mon:stdio -serial /dev/null -display none  -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/system.dtb,addr<span style="color:#f92672">=</span>0x100000,force-raw<span style="color:#f92672">=</span>on  -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/u-boot.elf -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/Image,addr<span style="color:#f92672">=</span>0x200000,force-raw<span style="color:#f92672">=</span>on  -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/ramdisk.cpio.gz.u-boot,addr<span style="color:#f92672">=</span>0x4000000,force-raw<span style="color:#f92672">=</span>on  -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/bl31.elf,cpu-num<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> -drive <span style="color:#66d9ef">if</span><span style="color:#f92672">=</span>sd,format<span style="color:#f92672">=</span>raw,index<span style="color:#f92672">=</span>1,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/rootfs.ext4 -global xlnx,zynqmp-boot.cpu-num<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> -global xlnx,zynqmp-boot.use-pmufw<span style="color:#f92672">=</span>true  -global xlnx,zynqmp-boot.drive<span style="color:#f92672">=</span>pmu-cfg -blockdev node-name<span style="color:#f92672">=</span>pmu-cfg,filename<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/pmu-conf.bin,driver<span style="color:#f92672">=</span>file -hw-dtb /home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/zynqmp-qemu-multiarch-arm.dtb -device loader,file<span style="color:#f92672">=</span>/home/frank.chang/Projects/sifive/petalinux/2024.1/xilinx-zcu102-2024.1/images/linux/boot.scr,addr<span style="color:#f92672">=</span>0x20000000,force-raw<span style="color:#f92672">=</span>on  -gdb tcp:localhost:9000  -net nic -net nic -net nic -net nic,netdev<span style="color:#f92672">=</span>eth3 -netdev user,id<span style="color:#f92672">=</span>eth3,tftp<span style="color:#f92672">=</span>/tftpboot -machine-path /tmp/tmp29lts2le  -m 4G
</span></span><span style="display:flex;"><span>qemu-system-microblazeel: Failed to connect to <span style="color:#e6db74">&#39;/tmp/tmp29lts2le/qemu-rport-_pmu@0&#39;</span>: No such file or directory
</span></span><span style="display:flex;"><span>qemu-system-microblazeel: info: QEMU waiting <span style="color:#66d9ef">for</span> connection on: disconnected:unix:/tmp/tmp29lts2le/qemu-rport-_pmu@0,server<span style="color:#f92672">=</span>on
</span></span><span style="display:flex;"><span>qemu-system-aarch64: warning: hub <span style="color:#ae81ff">0</span> is not connected to host network
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>When <code>--kernel</code> is specified, PetaLinux will try to load all the images from <code>&lt;plnx-proj-root&gt;/images/linux/</code>:
<ul>
<li>For Zynq UltraScale+ MPSoC:
<ul>
<li>TF-A image: <code>&lt;plnx-proj-root&gt;/images/linux/bl31.elf</code></li>
<li>U-Boot: <code>&lt;plnx-proj-root&gt;/images/linux/u-boot.elf</code></li>
<li>Linux kernel image: <code>&lt;plnx-proj-root&gt;/images/linux/Image</code></li>
<li>Initrd/Initramfs image: <code>&lt;plnx-proj-root&gt;/images/linux/ramdisk.cpio.gz.u-boot</code></li>
<li>Rootfs (as SD card image): <code>&lt;plnx-proj-root&gt;/images/linux/rootfs.ext4</code></li>
<li>DTB: <code>&lt;plnx-proj-root&gt;/images/linux/system.dtb</code></li>
<li>HW DTB: <code>&lt;plnx-proj-root&gt;/images/linux/zynqmp-qemu-multiarch-arm.dtb</code></li>
<li>… etc</li>
<li>P.S. The TF-A boots the loaded kernel image, with PMU firmware running in the background.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
<p>After booting to Linux shell:</p>
<ul>
<li>
<p>Default login:</p>
<ul>
<li>Username: <em><strong>petalinux</strong></em></li>
<li>Password: <em><strong><!-- raw HTML omitted --></strong></em></li>
</ul>
</li>
<li>
<p>If we didn’t <a href="#build-zynqmp-r5-remoteproc-driver-into-kernel">build <code>zynqmp_r5_remoteproc</code> driver into kernel</a>, we need to make sure <code>zynqmp_r5_remoteproc</code> kernel module is installed:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-2">2</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-3"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-3">3</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-4"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-4">4</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ lsmod
</span></span><span style="display:flex;"><span>zynqmp_r5_remoteproc    <span style="color:#ae81ff">16384</span>  <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>uio_pdrv_genirq        <span style="color:#ae81ff">12288</span>  <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>cfg80211              <span style="color:#ae81ff">319488</span>  <span style="color:#ae81ff">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>
<p>If not, <code>modprobe</code> to install it:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-12-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-12-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ modprobe zynqmp_r5_remoteproc
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
</li>
<li>
<p><code>rpmsg_ctrl</code>, <code>rpmsg_char</code> kernel modules will be installed automatically when starting remoteproc.</p>
</li>
<li>
<p>Change remoteproc file permissions:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ sudo chmod <span style="color:#ae81ff">666</span> /sys/class/remoteproc/remoteproc0/firmware
</span></span><span style="display:flex;"><span>$ sudo chmod <span style="color:#ae81ff">666</span> /sys/class/remoteproc/remoteproc0/state
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Follow the tutorials to run OpenAMP demos:</p>
<ul>
<li>
<p><strong>echo_test</strong>:</p>
<ul>
<li><a href="https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-echo-test/README.html">https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-echo-test/README.html</a></li>
</ul>
</li>
<li>
<p><strong>matrix multiply</strong>:</p>
<ul>
<li><a href="https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-mat-mul/README.html">https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-mat-mul/README.html</a></li>
</ul>
</li>
<li>
<p><strong>proxy_app</strong>:</p>
<ul>
<li><a href="https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-proxy-app/README.html">https://openamp.readthedocs.io/en/latest/openamp-system-reference/examples/linux/rpmsg-proxy-app/README.html</a></li>
</ul>
</li>
<li>
<p>Firmware is located in <code>/lib/firmware</code>:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-14-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-14-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-14-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-14-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ ls /lib/firmware/
</span></span><span style="display:flex;"><span>image_echo_test   image_matrix_multiply  image_rpc_demo
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>P.S. We need to use <code>sudo</code> to run the test application, e.g.</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-15-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-15-1">1</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ sudo echo_test
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
</li>
</ul>
</li>
<li>
<p>Remote debug Linux kernel:</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-16-1"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-16-1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-16-2"><a style="outline:none;text-decoration:none;color:inherit" href="#hl-16-2">2</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ petalinux-util gdb linux/image/vmlinux
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>gdb<span style="color:#f92672">)</span> target remote :9000
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
<hr>
<ul>
<li>QEMU source: <a href="https://github.com/Xilinx/qemu/tree/xlnx_rel_v2024.1">https://github.com/Xilinx/qemu/tree/xlnx_rel_v2024.1</a></li>
<li>Linux kernel source: <a href="https://github.com/Xilinx/linux-xlnx/tree/xlnx_rebase_v6.6_LTS">https://github.com/Xilinx/linux-xlnx/tree/xlnx_rebase_v6.6_LTS</a>
<ul>
<li>zynqmp_r5_remoteproc: <code>drivers/remoteproc/zynqmp_r5_remoteproc.c</code></li>
<li>rpmsg_ctrl: <code>drivers/rpmsg/rpmsg_ctrl.c</code></li>
<li>rpmsg_char: <code>drivers/rpmsg/rpmsg_char.c</code></li>
</ul>
</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
