<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>embear GmbH</title>
        <link>https://embear.ch/</link>
        <description>This is my cool site</description>
        <generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>stefan@embear.ch (embear GmbH)</managingEditor>
            <webMaster>stefan@embear.ch (embear GmbH)</webMaster><lastBuildDate>Wed, 13 Aug 2025 00:00:00 &#43;0000</lastBuildDate>
            <atom:link href="https://embear.ch/index.xml" rel="self" type="application/rss+xml" />
        <item>
    <title>Webinar - Bringing Displays to Life</title>
    <link>https://embear.ch/posts/webinar-mipi-dsi-driver/</link>
    <pubDate>Wed, 13 Aug 2025 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/webinar-mipi-dsi-driver/</guid>
    <description><![CDATA[MIPI DSI displays become more and more common in embedded systems. They are used in smartphones, tablets, automotive displays and many other devices. This Webinar hosted by Toradex shows the basics of how to develop a MIPI DSI driver for Linux. Once the video becomes publicly available, this article will be updated with the link to the video.
Video Toradex hosted the webinar on 21 August 2025. The on-demand video is available on YouTube.]]></description>
</item>
<item>
    <title>From Hardware to Linux</title>
    <link>https://embear.ch/posts/from-hardware-to-linux/</link>
    <pubDate>Wed, 21 May 2025 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/from-hardware-to-linux/</guid>
    <description><![CDATA[This blog post is a collection of methods and ideas for doing hardware bringups. It is based on the presentation given at the Open Source Summit 2024. Introduction Bringing a new piece of custom hardware to life with an embedded Linux system is a challenging yet rewarding process known as &ldquo;hardware bring-up.&rdquo; &ldquo;At its core, hardware bring-up is the process of bringing new hardware to life. When a hardware team finalizes a design and the first prototypes arrive, these are typically lifeless, and it&rsquo;s the bring-up process that breathes life into them.]]></description>
</item>
<item>
    <title>Using SWUpdate with Qt</title>
    <link>https://embear.ch/posts/qt-swupdate/</link>
    <pubDate>Sat, 06 May 2023 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/qt-swupdate/</guid>
    <description><![CDATA[In a previous article about software update, we gave a general overview of different update strategies. In this new article, we will take a closer look at SWUpdate and demonstrate how it can be used in conjunction with Qt to implement a partition swapping mechanism.
Yocto Image In this article, we will create a Yocto image for the Toradex Verdin iMX8M Plus using the meta-embear layer. To create the image, we will need to follow these steps:]]></description>
</item>
<item>
    <title>Concepts for updating embedded systems</title>
    <link>https://embear.ch/posts/sw-update-concepts/</link>
    <pubDate>Sun, 12 Jun 2022 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/sw-update-concepts/</guid>
    <description><![CDATA[If we build an embedded system we must have software updates in mind. There are a lot of reasons why we need to provide updates. It can be a bug that we didn&rsquo;t catch during testing, it can be because there is a security issue in a third-party application or it can be because we want to provide new features. To keep embedded devices up to date we can use different update concepts which this article focuses on without seeing an actual implementation.]]></description>
</item>
<item>
    <title>Accessing a DRM Framebuffer to display an image</title>
    <link>https://embear.ch/posts/drm-framebuffer/</link>
    <pubDate>Mon, 19 Jul 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/drm-framebuffer/</guid>
    <description><![CDATA[When doing bring-ups on embedded devices a useful way to test if a display interface is working is this command:
Apalis iMX6 $ dd if=/dev/urandom of=/dev/fb0 This shows random data on the display and a lot of gray, red, blue, and green dots appear. This doesn&rsquo;t tell us if everything is working as expected because maybe the resolution is wrong or some timings are too tight but it gives already an indication if the display controller works and if the display gets some understandable data.]]></description>
</item>
<item>
    <title>Booting RAM disk images over Ethernet</title>
    <link>https://embear.ch/posts/booting-ramdisks-over-ethernet/</link>
    <pubDate>Tue, 08 Jun 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/booting-ramdisks-over-ethernet/</guid>
    <description><![CDATA[Using RAM disk images is useful in different stages of a project/product. When doing bring-ups we might want to use a RAM disks to initially boot Linux and then use Linux to partition the storage (eMMC, NAD-Flash). The advantage of using Linux instead of U-Boot is that we have more drivers available and often better read/write support for the media where we want to install our final image.
But what is a RAM disk?]]></description>
</item>
<item>
    <title>Why did my remote device reboot?</title>
    <link>https://embear.ch/posts/reset-reason-module/</link>
    <pubDate>Mon, 03 May 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/reset-reason-module/</guid>
    <description><![CDATA[Imagine a remote system hundreds of kilometers away from civilization. A customer reports that their system sometimes reboots without any interaction and is then not reachable for several minutes. What was the trigger for the reboot? In this article, we look at a concept which uses reserved memory. It is quite generic and benefits from the fact that RAM does not lose data on a restart as long as it is not turned off and there are no other hardware/software mechanisms to clear the memory.]]></description>
</item>
<item>
    <title>Use ramoops for logging under Linux</title>
    <link>https://embear.ch/posts/using-ramoops/</link>
    <pubDate>Wed, 07 Apr 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/using-ramoops/</guid>
    <description><![CDATA[Unfortunately, an embedded system is not free of crashes. To analyze and log such crashes it is useful to have a file system where we can store such information between reboots. One interface which is meant to do that is pstore and its current single implementation ramoops. Ramoops can store log messages inside a reserved memory area in RAM. The nice thing about RAM is, that it should almost always be available when the CPU is still running.]]></description>
</item>
<item>
    <title>Using the parent child relation in a kernel module</title>
    <link>https://embear.ch/posts/using-parent-child-relations/</link>
    <pubDate>Mon, 08 Mar 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/using-parent-child-relations/</guid>
    <description><![CDATA[Sometimes we need access to a device inside a kernel driver which isn&rsquo;t exposed directly. Based on an LED I would like to show an example on how we can use the parent child relationship of the device tree and the driver to access a class device.
To get a better understanding let&rsquo;s check the following device tree entry:
/ { leds { compatible = &#34;gpio-leds&#34;; pwr_led: pwr { label = &#34;pwr&#34;; gpios = &lt;&amp;expgpio 2 GPIO_ACTIVE_LOW&gt;; }; }; led-control { compatible = &#34;led-control&#34;; led = &lt;&amp;pwr_led&gt;; }; }; From led-control we want to access pwr_led.]]></description>
</item>
<item>
    <title>Cross compiling a kernel module</title>
    <link>https://embear.ch/posts/compiling-a-kernel-module/</link>
    <pubDate>Sun, 07 Mar 2021 00:00:00 &#43;0000</pubDate>
    <author>Stefan Eichenberger</author>
    <guid>https://embear.ch/posts/compiling-a-kernel-module/</guid>
    <description><![CDATA[Sometimes we want to compile a kernel module for an embedded device without replacing the kernel. This article provides a summary of the steps which have to be taken to compile the module.
For this article I use Ubuntu 20.10 on the build machine but it should work with other distributions too. Just use the right package manager for your distro. As an embedded device I use a Raspberry Pi 4 but the same concept works for TI AM335x, NXP iMX6/iMX8, etc.]]></description>
</item>
</channel>
</rss>
