<?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>Embedded Systems on Fran Kuo | R&amp;D Leadership</title>
    <link>https://chenfu.ai/en/tags/embedded-systems/</link>
    <description>Recent content in Embedded Systems on Fran Kuo | R&amp;D Leadership</description>
    <generator>Hugo -- 0.157.0</generator>
    <language>en</language>
    <lastBuildDate>Fri, 08 Feb 2013 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://chenfu.ai/en/tags/embedded-systems/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>I2S Bus Channel Configuration in GStreamer alsasrc</title>
      <link>https://chenfu.ai/en/posts/i2s-bus-channels-setting-in-gstreamer/</link>
      <pubDate>Fri, 08 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/i2s-bus-channels-setting-in-gstreamer/</guid>
      <description>&lt;p&gt;A colleague recently observed a significant discrepancy in CPU usage while testing the GStreamer &lt;code&gt;alsasrc&lt;/code&gt; and &lt;code&gt;osssrc&lt;/code&gt; plugins. On our hardware platforms, &lt;code&gt;alsasrc&lt;/code&gt; was consuming about 16% of CPU resources, whereas the vendor-provided test tools achieved the same task with only 1~2% overhead. This massive gap in efficiency piqued my curiosity, and I decided to investigate the root cause.&lt;/p&gt;
&lt;p&gt;After several hours of deep diving into the code, I discovered that when the plugin is set to &amp;ldquo;non-blocking mode,&amp;rdquo; it can trigger a busy-wait condition within a &lt;code&gt;while&lt;/code&gt; loop, needlessly spiking CPU cycles. After a quick patch to optimize this behavior, I managed to bring the CPU usage down to 12%. While an improvement, it still felt far from the vendor tool&amp;rsquo;s efficiency.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Practical Daemon Implementation in Embedded Linux</title>
      <link>https://chenfu.ai/en/posts/linux-daemon-implementation-embedded-systems/</link>
      <pubDate>Wed, 19 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/linux-daemon-implementation-embedded-systems/</guid>
      <description>&lt;p&gt;For anyone working with Linux, the concept of a &amp;ldquo;Daemon&amp;rdquo; (or service) is fundamental. Daemons are background processes that operate independently of any active user session. I recently deep-dived into this topic via Devin Watson&amp;rsquo;s &lt;em&gt;Linux Daemon Writing HOWTO&lt;/em&gt;, which provides a fantastic primer and a clear template.&lt;/p&gt;
&lt;p&gt;Building on that foundation, I refactored several processes in my current project to run as persistent background services. Below is a code snippet demonstrating the core structural requirements for a Linux daemon:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reflections on Patch Files and Embedded Systems Development</title>
      <link>https://chenfu.ai/en/posts/patch-vs-embedded-system-development/</link>
      <pubDate>Wed, 19 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/patch-vs-embedded-system-development/</guid>
      <description>&lt;p&gt;Recently, I was assigned to work on a streaming server project. On our development platform, we utilize a combination of patch files and shell scripts to manage source code. We start with the upstream source, apply modifications via &lt;code&gt;patch&lt;/code&gt; commands, and then compile the results into the necessary shared libraries or executables. Initially, I didn&amp;rsquo;t give much thought to why we adopted this specific workflow, but lately, I&amp;rsquo;ve begun to appreciate the profound advantages of this approach.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
