1 Introduction
With the rapid development of digital technology with computers and software as the core, multimedia technology and Internet applications are rapidly becoming popular. The trend of integration of computers, communications, and consumer electronics is becoming increasingly obvious. As a new type of intelligent 3C integrated embedded systems and technologies have entered the stage of intelligent and networked development.
The so-called embedded system is a system that integrates application programs, operating systems and computer hardware. In short, it is the integration of hardware and software. This system has the characteristics of being compact and flexible, cost-effective, highly automated, highly real-time and highly professional. Embedded systems are suitable for use in all areas of human work and life. The most typical applications include set-top boxes, digital applications, WebTV, ATM/POS machines, multimedia mobile phones, pocket computers, car navigation devices, avionics, etc. Embedded technology has penetrated into all aspects of human life and work, and also has great application potential in entertainment and military.
There are four major operating systems in the world: WinCE, Palm OS, EPoc and Linu. Linux is more and more important in embedded operating systems due to its stability, high efficiency, easy development, easy customization and wide hardware support, combined with its free and open source features. More and more embedded systems, including PDA, set-top boxes, WAP mobile phones, etc., require not only high-performance and high-reliability graphical display interface support, but also require full-featured Web browsers. Including HTML support, JavaScript support, and even Java virtual machine support. The system introduced in this article is an ARM Linux system with a graphical interface and embedded browser support.
2 Embedded System Architecture
The embedded system based on EP7312 is divided into two parts: software and hardware. The hardware is the self-developed EB7312-B embedded development system. The software consists of ARM Linux, Microwindows and ViewML. As shown in Figure 1.
2.1 EB7312-B
The CPU used by EB7312-B is EP7312 produced by Cirrus Logic. EP7312 consists of a 32-bit reduced instruction set microcontroller and on-chip peripherals. It is a microprocessor designed for ultra-low power consumption and high performance for PDA, Internet equipment, mobile phones and handheld devices. The core logic of EB7312-B is ARM720T processor, which consists of ARM7TCMI CPU core module, memory management unit, write buffer module and 8K independent instruction data cache. The memory management unit is compatible with WinCE and Linux. Other functional blocks include memory controller; 48KB on-chip SRAM. (Shared with LCD controller and general application); memory 32MB SDRAM, 16MB Flash; two full-duplex UARTs (16550 type); 10M Ethernet card CS8900A; color 320X240 LCD, EP7312 itself does not directly support color LCD, it supports color through tiny external logic and a slight modification of LCD driver; 83-key ASCII keyboard.
Figure 1 Embedded system structure
Figure 2 ViewML architecture
2.2 ARM Linux
ARM Linux is a project to port the Linux kernel to various ARM processor-based target systems. Supported by Russell Kingrmk@arm.linux.org.uk. Ports have been successfully completed for more than 100 different target systems. The Linux kernel ported here is Linux-2.4.24, and the ARM Linux patch is Linux-2.4.24-vrs1 released in February 2004. During the porting process, the focus is on the implementation of the boot program and the design of the frame buffer device driver for the specific hardware environment under ARM Linux.
The main steps of the startup program are: setting the entry pointer, setting the interrupt vector, setting and initializing the RAM, initializing at least one channel port, detecting the CPU type, initializing the stack and registers, initializing the memory system, setting the kernel related list, and calling the kernel image. It should be noted that when setting the CPU register, r? 0 is 0, r2 is the detected CPU model number, MMU is closed, instruction catch is opened, and data catch is closed after being cleared.
Framebuffer is a device that provides display memory and display chip registers mapped from physical memory to process address space. Its driver mainly relies on three data structures: fb_info, fb_var_screeninfo, and fb_fix_screeninfo. The fb_info structure can only be accessed in kernel space. It defines struct fb_ops. The members of the structure fb_ops are a series of framebuffer operation functions. The driver of the framebuffer device mainly writes these interface functions. fb_var_screeninfo and fb_fix_screeninfo define the hardware characteristics of the video board. Such as video memory size, display bits per line, resolution and other characteristics related to specific hardware. The framebuffer driver first calls register_framebuffer to register a framebuffer device, and then registers the initialization function in Linux/drivers/video/fbmem.c. All ioctl calls of framebuffer drivers are uniformly implemented by fbmem.c.
2.3 Microwindows
Microwindows is an open source desktop system designed specifically for developing high-quality graphics on small devices. It uses less RAM and file storage space (100K-600K) and only requires 50~250KB of memory space during operation. Microwindows does not require any operating system or graphics system support and can run on a 32-bit Linux system with a kernel that supports the Framebuffer mechanism. One of the main goals of Microwindows is to introduce a graphical window environment to small devices and platforms running Linux, providing functions similar to X Window.
Microwindows adopts a layered design method. The bottom layer provides drivers for the screen, mouse or touch screen, and keyboard, so that the program can access the actual hardware and other user-customized devices; the middle layer implements a portable graphics engine that implements line drawing, filling, polygonal lines, clipping, and multiple color modes; the top layer implements multiple APIs to adapt to different application environments. Each layer can modify the code or recode according to different application requirements.
The lowest level of the system defines a data structure for the display screen, mouse, touch screen, keyboard, etc. for use by the graphics engine, namely struct _mwscreendevice, struct _mousedevice and struct _kbddevice, which contain the hardware driver code interface for the specified device.
The graphics engine in Microwindows supports framebuffer, so you only need to modify the configuration file config.ads in src/ for Linux based on the ARM platform to specify the use of framebuffer as the underlying graphics support engine. The mouse driver that supports Linux under Microwindows is mou-gpm.c, and the keyboard driver is kbd_tty.c. In this system, the member functions of the mouse and keyboard data structures are not written from scratch, only the corresponding changes are made to the original driver for specific hardware parts.
2.4 ViewML
ViewML is the first open source, small browser developed specifically for the rapid development of embedded Linux systems. Its code file is only 800KB, and the memory space required for operation is about 2MB. It uses FLTK as the GUI platform and adopts C++ object-oriented design. The ViewML browser can run on X Windows and Microwindows systems, so it can be debugged and improved on the Linux platform. This greatly facilitates the further improvement of the browser. The improvement of ViewML in this system is completed on the Microwindows system based on the X Windows platform.
The architecture of the ViewML browser is shown in Figure 2. Its application layer is very small and is written entirely in C++ FLTK (Fast Light Tool Kit) application framework. It provides basic graphical user interface layout and also handles network and local file access requirements. Its syntax analyzer and display engine use the KDE 1.0 HTML widget in the open-source KDE desktop's kfm file manager (i.e., the KHTML View and widget modules in Figure 1). The window management component works stably and supports all HTML 3.2 functions and some JavaScript 1.1. KDE's widgets use the QT widget collection. To meet the requirements of embedded systems, ViewML uses the lightweight graphics library FLTK. The QT compatibility layer provides an interface between HTML widgets and the FLTK application framework. The underlying network protocol uses the World Wide Web Consortium's WWWLib library to perform all asynchronous network input and output and HTTP acquisition functions.
ViewML is a high-quality web browser that is directly targeted at embedded Linux environments. By including core components with open source code, it is possible to use a high-quality graphics engine while taking up very little RAM and ROM resources. However, in actual porting and use, some shortcomings of this browser were discovered. The following focuses on the improvements to the ViewML window interface of this system.
Previous article:How to use camera in embedded Linux system
Next article:Analysis and solutions for battery life bottlenecks of smart terminals
- Popular Resources
- Popular amplifiers
- Learn ARM development(16)
- Learn ARM development(17)
- Learn ARM development(18)
- Embedded system debugging simulation tool
- A small question that has been bothering me recently has finally been solved~~
- Learn ARM development (1)
- Learn ARM development (2)
- Learn ARM development (4)
- Learn ARM development (6)
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- Analysis of the application of several common contact parts in high-voltage connectors of new energy vehicles
- Wiring harness durability test and contact voltage drop test method
- From probes to power supplies, Tektronix is leading the way in comprehensive innovation in power electronics testing
- From probes to power supplies, Tektronix is leading the way in comprehensive innovation in power electronics testing
- Sn-doped CuO nanostructure-based ethanol gas sensor for real-time drunk driving detection in vehicles
- Design considerations for automotive battery wiring harness
- Do you know all the various motors commonly used in automotive electronics?
- What are the functions of the Internet of Vehicles? What are the uses and benefits of the Internet of Vehicles?
- Power Inverter - A critical safety system for electric vehicles
- Analysis of the information security mechanism of AUTOSAR, the automotive embedded software framework
- In three minutes, let me show you what load is.
- Data Structures in Embedded System Software Design (Full Version)
- When BLE meets MEMS——Introduction to HID Report Descriptor
- MSP430 SPI Hardware Interface
- Understand the role and use of capacitors in one article
- The results of the GD32F350 contest (sharing experience & interaction) are as follows: Thanks to all the cool people in the contest
- Serial port printing problem after BLUENRG-1 wakes up from sleep
- 【I-Prober 520】Test Summary
- How can I wire this circuit to minimize interference?
- [Help] I need help drawing a simple PCB board.