<?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 ankit_kdev</title><link>https://ankitkdev.com/categories/embedded-systems/</link><description>Recent content in Embedded Systems on ankit_kdev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 17 May 2026 17:00:31 +0530</lastBuildDate><atom:link href="https://ankitkdev.com/categories/embedded-systems/index.xml" rel="self" type="application/rss+xml"/><item><title>Understanding Forward Declarations in C</title><link>https://ankitkdev.com/blog/forward-declaration-in-c/</link><pubDate>Sun, 17 May 2026 17:00:31 +0530</pubDate><guid>https://ankitkdev.com/blog/forward-declaration-in-c/</guid><description>&lt;p>One of the best ways to learn systems programming is by reading real-world code. Recently, while reading the Linux kernel source, I noticed something interesting inside &lt;code>drivers/pinctrl/core.h&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/kref.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/list.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/mutex.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/radix-tree.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/types.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;linux/pinctrl/machine.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">struct&lt;/span> dentry;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">struct&lt;/span> device;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">struct&lt;/span> device_node;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">struct&lt;/span> module;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>At first glance, these lines seem incomplete. We see declarations like &lt;code>struct device;&lt;/code> but no actual definition. Where is the complete structure with all its members? Why didn&amp;rsquo;t file defining this structure isn&amp;rsquo;t included?&lt;/p></description></item><item><title>Configure U-boot For Beaglebone Black</title><link>https://ankitkdev.com/blog/configure-uboot-bbb/</link><pubDate>Wed, 22 Apr 2026 15:02:44 +0530</pubDate><guid>https://ankitkdev.com/blog/configure-uboot-bbb/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;p>U-Boot (Universal Boot Loader) is the go-to bootloader for embedded Linux systems. If you&amp;rsquo;re working with the BeagleBone Black (BBB), building U-Boot from source gives you full control over the boot process, from initializing hardware to loading your kernel. This guide walks you through cross-compiling and installing U-Boot on the BBB from scratch.&lt;/p>
&lt;p>This blog will explain how to compile and install U-Boot, and then either manually boot from the U-Boot prompt or use &lt;strong>&lt;code>uEnv.txt&lt;/code>&lt;/strong> to autoboot the kernel.
You can also use &lt;code>extlinux/extlinux.conf&lt;/code> to boot the kernel.&lt;/p></description></item><item><title>Build and Install Linux Kernel For Beaglebone Black</title><link>https://ankitkdev.com/blog/build-linux-kernel-bbb/</link><pubDate>Wed, 08 Apr 2026 22:31:16 +0530</pubDate><guid>https://ankitkdev.com/blog/build-linux-kernel-bbb/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;p>The BeagleBone Black (BBB) uses an ARM Cortex-A8 32 bit processor, so the kernel must be cross-compiled on an x86 machine and then deployed to the board. This blog will assume that you already have a os[debian/ubuntu] installed on your sd card.&lt;/p>
&lt;p>We’ll:&lt;/p>
&lt;ul>
&lt;li>set up toolchain&lt;/li>
&lt;li>fetch kernel source&lt;/li>
&lt;li>configure for BBB&lt;/li>
&lt;li>build kernel + modules&lt;/li>
&lt;li>deploy to SD card / board&lt;/li>
&lt;/ul>
&lt;h2 id="1-prerequisites">1. Prerequisites&lt;/h2>
&lt;p>Make sure you have:&lt;/p>
&lt;ul>
&lt;li>Ubuntu (or any Linux host)&lt;/li>
&lt;li>Cross compiler for ARM (arm)&lt;/li>
&lt;/ul>
&lt;p>Install required tools:&lt;/p></description></item></channel></rss>