Setting Up an Embedded HTTP Environment on QEMU-ARM with Access Examples

Those engaged in embedded development know that devices must interact with the outside world via HTTP, such as for data transmission and remote control. Recently, I set up a lightweight HTTP service on a QEMU-emulated ARM Linux system using the httpd included with BusyBox, and I also enabled access from the host. I encountered several … Read more

The 6 Best Virtualization Software for Personal Users!

The 6 Best Virtualization Software for Personal Users!

When it comes to virtual machines, those of us in the tech field are likely familiar with them. The use cases for virtual machines are numerous, such as setting up testing environments, installing Linux on Windows systems, or running Windows on Mac machines, and they can even be used for security experiments. The key advantage … Read more

The Simplest Way to Program SPI FLASH

The Simplest Way to Program SPI FLASH

Today, a customer asked us whether the programming speed of our SOP8 Flash chip would increase if the QE=1 setting is applied. Let us revisit the concept of SPI Flash chips. SPI FLASH typically supports the following communication modes: Standard SPI (Single/Dual/Quad) 1. Single SPI (Single Line Mode): Uses IO0 (MOSI) to send data, IO1 … Read more

Fast and Accurate Cycle Estimation for Embedded Systems through Mixed Instruction Set Simulation

Fast and Accurate Cycle Estimation for Embedded Systems through Mixed Instruction Set Simulation

Motivation In the design process of real-time embedded systems, execution time analysis is crucial for verifying whether all timing requirements are met. With the rapid increase in complexity of modern hardware components, developing accurate timing models for target hardware has become increasingly difficult, which serve as the basis for static timing analysis. Recently, simulation-based dynamic … Read more

A Step-by-Step Tutorial for Developing an Operating System in Rust for Raspberry Pi (Raspberry Pi 3 / 4)

A Step-by-Step Tutorial for Developing an Operating System in Rust for Raspberry Pi (Raspberry Pi 3 / 4)

rust-raspberrypi-OS-tutorials is a step-by-step tutorial for developing an operating system in Rust, aimed at Raspberry Pi (Raspberry Pi 3 / 4). Each chapter (tutorial) is a bootable, standalone kernel version, and subsequent chapters expand on the functionality of the previous ones. The author breaks down common OS tasks from the basics of “writing characters to … Read more

Debugging the Linux Kernel Using QEMU and GDB

Debugging the Linux Kernel Using QEMU and GDB

Debugging the Linux kernel is an important way to understand the internal workings of an operating system. Often, code is understood through execution rather than just reading. By using QEMU in conjunction with the GDB debugger, we can set breakpoints, step through code, and inspect various data structures within the Linux kernel without needing additional … Read more

From Startup to First Task Execution in ThreadX RTOS

From Startup to First Task Execution in ThreadX RTOS

Utilizing the VSCode debugging environment to observe the startup process of ThreadX.0. Startup AnecdoteThe example program for the debugging environment built on ThreadX RTOS encounters a HardFault exception, as shown in the figure below.However, this issue does not occur on another host. The same example code, when debugged step by step, locates the specific instruction … Read more

Compiling the Linux Kernel from Source on Ubuntu 18.04 and Running a BusyBox Filesystem

Compiling the Linux Kernel from Source on Ubuntu 18.04 and Running a BusyBox Filesystem

I previously wrote an article titled: “Reading the Linux Kernel Source: Downloading the Source, Compiling the Kernel, and Running a Minimal System.” However, many fans reported encountering various issues, including but not limited to: Unable to create files, with a message indicating a read-only file system Configuration file errors Unable to mount the root filesystem, … Read more

Linux Virtualization: Concepts and Implementation

Linux Virtualization: Concepts and Implementation

Virtualization is the underlying technology of cloud computing and an important component of infrastructure. Whether as a system administrator, infrastructure architect, or cloud architect, mastering this technology is essential. This chapter discusses Linux virtualization technology on the x86 architecture (the article is also included in the “Rocky Linux Best Practices” and “Cloud Computing” series), covering … Read more

Explore Free Ways to Master RISC-V Development Skills

Explore Free Ways to Master RISC-V Development Skills

1. Use Emulators QEMU: Supports RISC-V and can run RISC-V operating systems and programs (such as Ubuntu, Fedora, etc.). qemu-system-riscv64 -machine virt -nographic \ -m 8192 -smp 4 -kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf \ -device virtio-net-device,netdev=eth0 \ -netdev user,id=eth0,hostfwd=tcp::6666-:22 \ -device virtio-rng-pci -drive \ file=./ubuntu-24.04.1-preinstalled-server-riscv64.img,format=raw,if=virtio Spike (Official RISC-V Emulator), the official emulator provided by the RISC-V Foundation, suitable … Read more