Beginner’s Guide: Learning Embedded Systems from a Decade of Experience

Beginner's Guide: Learning Embedded Systems from a Decade of Experience

Embedded systems are a type of “computer system designed for specific applications, fully embedded within controlled devices.” According to the definition by the U.K. Institution of Electrical Engineers, embedded systems are used for controlling, monitoring, or assisting devices, machines, or equipment used in factory operations. Unlike general-purpose computer systems such as personal computers, embedded systems typically perform predefined tasks with specific requirements. Since embedded systems are aimed at a single specialized task, designers can optimize them to reduce size and costs. Embedded systems are often mass-produced, so savings on a single unit can be multiplied by the production volume.

Embedded systems are application-centric, based on computer technology, and have customizable hardware and software, suitable for dedicated computer systems that have strict requirements for functionality, reliability, cost, size, and power consumption. They generally consist of four parts: embedded microprocessors, peripheral hardware devices, embedded operating systems, and user applications, used to control, monitor, or manage other devices.

The design techniques for embedded systems mainly include hardware design techniques and software design techniques. The hardware design field primarily includes chip-level design techniques and circuit board-level design techniques.The core of chip-level design techniques involves compilation/synthesis, libraries/IP, and testing/verification. Compilation/synthesis techniques allow designers to describe the required functions abstractly and automatically analyze and insert implementation details. Library/IP techniques use pre-designed low-level implementations for high-level tasks. Testing/verification techniques ensure the correctness of each functional level, reducing the costs of redesigning between levels.

Next, we will introduce some basic development processes.

Beginner's Guide: Learning Embedded Systems from a Decade of Experience
Embedded System Development Process

Step 1: Establish Development EnvironmentThe operating system is generally Redhat Linux, choose custom installation or full installation, and download the corresponding GCC cross-compiler through the network (e.g., arm-linux-gcc, arm-uclibc-gcc), or install the relevant cross-compiler provided by the product manufacturer.Step 2: Configure Development HostConfigure MINICOM, with general parameters being baud rate 115200 Baud/s, data bits 8, stop bits 1, 9, no parity, and no software or hardware flow control. The configuration in Windows’ HyperTerminal is the same. The purpose of MINICOM software is to serve as a monitor for debugging the output of embedded development board information and a tool for keyboard input. Network configuration primarily involves setting up the NFS network file system, requiring the firewall to be disabled to simplify the embedded network debugging environment setup process.Step 3: Establish BootloaderDownload some publicly available source code bootloaders from the internet, such as U.BOOT, BLOB, VIVI, LILO, ARM-BOOT, RED-BOOT, etc., and modify them according to the specific chip. Some chips do not have a built-in bootloader, such as Samsung’s ARV17 and ARM9 series chips, so a burning program for the FLASH on the development board needs to be written. You can download the corresponding burning program online, as well as publicly available source code J-FLASH programs under Linux. If you cannot burn your development board, source code modifications must be made according to your specific circuit. This is the first step to ensure the system can operate normally. If users purchase the manufacturer’s emulator, it is easier to burn FLASH, although they may not understand the core technology, it can greatly speed up development for those who need to quickly develop their applications.Step 4: Download the Ported Linux Operating SystemSuch as MCLinux, ARM-Linux, PPC-Linux, etc. If there is a Linux operating system specifically ported for the CPU being used, that would be ideal. After downloading, add specific hardware drivers, and then debug and modify. For CPUs with MMU, module debugging can be used, while for systems like MCLinux, only kernel compilation can be used for debugging.Step 5: Establish Root File SystemUse BUSYBOX software to reduce functionality and create a basic root file system, then add other programs according to application needs. Since the default startup scripts generally do not meet application requirements, the startup scripts in the root file system must be modified. These scripts are stored in the /etc directory, including: /etc/init.d/rc.S, /etc/profile, /etc/.profile, etc., and the automatic mounting configuration file /etc/fstab. The specifics will vary depending on the system. The root file system in embedded systems is generally set to read-only, requiring tools like mkcramfs or genromfs to produce a burnable image file.Step 6: Establish Application Program FLASH Disk PartitionGenerally, JFFS2 or YAFFS file systems are used, which requires these file system drivers to be provided in the kernel. Some systems use a linear FLASH (NOR type) of 512KB to 32MB, some use a nonlinear FLASH (NAND type) of 8MB to 512MB, and some use both simultaneously, requiring planning of the FLASH partition scheme according to applications.Step 7: Develop Application ProgramsApplication programs can be placed in the root file system or in the YAFFS, JFFS2 file systems. Some applications do not use the root file system and directly integrate the application program with the kernel, similar to the μC/OS-II approach.Step 8: Burn KernelRoot file system and application programs, release the product.

Above is the development process for embedded systems. For more knowledge, please click below↓↓↓

Beginner's Guide: Learning Embedded Systems from a Decade of Experience
“Embedded System Development”
Beginner's Guide: Learning Embedded Systems from a Decade of Experience

Beginner's Guide: Learning Embedded Systems from a Decade of Experience

Course Introduction

This course mainly covers the application technology development of embedded systems, including basic embedded system hardware and software systems and interfaces, Linux operating systems, and typical embedded system development processes.

The goal of this course is to popularize embedded professional knowledge among students and enhance their practical engineering application development capabilities. During the learning process, students will gain an initial understanding of the hardware composition and principles of embedded systems, the basic principles and operations of embedded Linux operating systems, the application development knowledge of various embedded interfaces and communication components, and the development methods and processes for typical embedded application systems. Ultimately, students will acquire basic skills in developing and debugging embedded application systems, laying a solid foundation for future work in embedded system development.

Course Outline

Chapter 1: Overview of Embedded Systems

1) Overview of Embedded Computer Systems (hardware and software composition, application characteristics, etc.)

2) Overview of Embedded Computer Hardware Systems (classification of various hardware systems, working principles)

3) Overview of Embedded Computer Software Systems (principles, applications, and characteristics of embedded operating systems)

Chapter 2: Definition of Hardware and Communication Interfaces in Embedded Systems

1) Local signal interface circuits (including single bus interfaces)

2) Serial ports and their applications (RS232/RS422/RS485)

3) Network interfaces and their applications (classification, basic composition)

4) CAN interfaces and their applications (composition, application scenarios)

5) Wireless communication interfaces (various remote and local communication interfaces)

6) Detailed explanation of common industrial data communication protocols (using Modbus RTU/ASCII/TCP as examples)

Chapter 3: Embedded Linux Operating System

1) Overview of Linux Operating System (basic principles and installation)

2) Basic commands of Linux Operating System

3) Overview of Embedded Linux Development Environment

4) Embedded Linux Application Development Process

Chapter 4: Embedded Linux System Development and Examples

1) Embedded Linux processes, threads, and various inter-process communication mechanisms

2) Embedded Linux file, device, and application programming (using serial device development as an example)

3) Network programming implemented by Linux Socket (TCP/UDP)

4) Examples of embedded system application development (industrial protocol converter project development)

Instructor Introduction

Tang Dongming, male, born in 1974, holds a Ph.D. in Computer System Architecture from the University of Electronic Science and Technology of China, and is an associate professor. He has over 20 years of R&D and teaching experience in fields such as computer control, computer networks, and embedded systems, with a deep understanding of industrial automation systems and the industrial internet. He has presided over and participated in dozens of projects, including those funded by the General Armament Department, the National Ministry of Science and Technology Innovation Fund, and various provincial and municipal science and technology projects, as well as self-initiated and inter-enterprise cooperative development projects, possessing rich project development and implementation experience. He has published over 20 academic papers and holds more than 10 invention and utility model patents.

Beginner's Guide: Learning Embedded Systems from a Decade of Experience

Leave a Comment