Design of Embedded Car Navigation System Based on Linux

1 Introduction
The HMS30C7202 embedded microprocessor is an excellent chip with excellent cost performance. Due to its excellent performance for replacing early chips, it has broad application prospects in vehicle navigation development. In many operating systems, because Windows CE, Vxwork and other operating systems are commercial products, the price is high and the source code is closed. In addition, for upper-layer application developers, embedded systems require a highly succinct, reliable, widely used, easy-to-develop, multi-tasking, and low-cost operating system. Linux with open source is just enough to meet these requirements. Due to the variety of applications of embedded systems and the large size of the standard Linux operating system, standard Linux needs to be re-ported, tailored and configured according to the actual application to generate a specific operating system with compact code and small code.
2. The hardware component of the navigation system The hardware platform of the car navigation system is the 32-bit high-performance embedded microprocessor of SAMSUNG Company of HMS30C7202. The HMS30C7202 is the core, including the LCD liquid crystal display module, memory module (Flash, SDRAM), GPS module. The peripheral components of the serial interface, USB interface, IrDA infrared communication interface, network interface, etc., the hardware structure is shown in Figure 1.
The HMS30C7202 embedded microprocessor features a 16/32-bit reduced instruction set that is cost-effective, low-power, and high-performance, providing a small microcontroller solution for handheld devices and general-purpose applications. To reduce overall system consumption, the HMS30C7202 includes the following: a separate 16KB instruction cache and 16KB data cache, MMU, LCD controller (STN/TFT), NAND Flash boot loader, memory manager (chip select logic and SDRAM control) Device),

This article refers to the address: http://

3-channel UART, 4-channel DMA, 4-channel pulse width modulation timer, I/O port, RTC real-time clock, 8-channel 10-bit A/D controller and touch screen interface, IIC interface, IIS interface, audio interface , USB host, USB device, SD host / multimedia card interface, 2-channel SPI, camera interface, PLL clock generator and power management.
1 3. Linux-based software system design
2 software features and composition

The software of the system includes embedded operating system, GUI graphical user interface and application. The embedded operating system and GUI graphical user interface are key technologies. Their quality determines whether the system can be successfully applied. The application is built on the embedded operating system and GUI graphical user interface. The boot process after power-on is shown in Figure 2. In this software design, the operating system uses embedded Linux with a wide range of kernel source code, and the GUI graphical user interface uses Micro windows developed by source code.

3.2 The establishment of the cross-compilation environment On the basis of satisfying the stability, security and reliability of the system, the volume of the embedded product should be as small as possible, so that it cannot provide sufficient resources for the compilation process. Therefore, a cross-compiled environment must be established. That is, compile the program that will run on the target machine on a high-performance host, generate a code format that can be run on the target machine, and then download it to the target machine to run. The GNU tool is used in the Linux environment to complete the compilation, linking, etc., including the compiler gcc for the target system, the binutils binary tool for the target system, the standard c library glibc for the target system, and the Linux kernel header file for the target system.
In the root directory of linux, use the command tar Ixvf cross-2.95.3.tar.bz2 to decompress. After the execution, the arm/2.95.3 directory is automatically generated in the /usr/local/ directory and enters the 2.93.3 directory. You can see various directories such as arm-linux, bin, include, lib, etc., indicating that the cross-compilation tool is installed and the build environment has been established.
3.3 The migration of the boot program is limited by the embedded system resources. The boot program of the embedded system is not composed of the BIOS and the boot program located in the hard disk MBR like the boot program on the PC. The boot load task of the whole system is mainly A bootloader called BootLoader is used to complete this. BootLoader is the first code to be executed after system reset. The main function is to initialize the hardware device, establish the mapping of memory space, etc., and bring the system hardware and software environment to a suitable state, thus establishing a good call for the operating system and application. environment of.
The boot program used in the software design of the system is BootLoader----vivi developed by Mizi Corporation of Korea. In embedded systems, BootLoader is highly hardware-dependent. It is almost impossible to build a common BootLoader in an embedded system. Therefore, for each specific platform, a BootLoader should be ported. It can be said that the establishment of an easy-to-use BootLoader that is compatible with the platform is a key step in software design.
The idea of ​​porting the bootloader for this system is to find a BootLoader that is the closest platform to the designed platform, and then modify the BootLoader according to the hardware parameters of the designed platform to complete the migration of BootLoader. First, modify the relevant parameters in the vivi project management file Makefile according to the actual situation, including the cross compiler library and header file path, cross-compilation switch option settings, library and header file paths in the Linux kernel code. Then modify the corresponding configuration according to the parameters of the hardware platform, such as processor clock, memory initialization, general I / O initialization and so on. Then configure and compile to generate executable code.
3.4 Kernel Porting Because embedded systems are application-specific and have limited resources, standard Linux cannot be applied to embedded systems. Therefore, Linux must be tailored and configured according to the actual situation to produce a suitable embedded Linux operation. system. The migration of the Linux kernel includes getting the source code, modifying the settings, cutting the configuration, and compiling.
3.4.1 Obtaining source code
The Linux kernel source code is generally maintained by a dedicated organization, which we can download from the websites of these organizations. Modifying the application that sets up the embedded system is very targeted. The kernel downloaded from the site cannot contain code for all embedded systems, so the code needs to be modified to suit the target platform. Generally, the following steps are included.
1 Write code related to the processor. It mainly includes clock settings, interrupt settings, memory allocation, and other register settings. These codes related to the HMS30C7202 processor are placed in the /arch/arm/mach-s3c2440 directory.
2 Modify the project management file Makefile in the root directory to specify the path of the ported hardware platform and cross compiler.
3 Modify the project management file Makefile in the /arch/arm directory, specify the virtual address of the kernel running, and modify the configuration file config.in in the directory to display the HMS30C7202 related information when executing the configuration command.
4 Add the configured HMS30C7202 configuration file in the /arch/arm/def-configs directory. Add the processor initialization code head-s3c2440.s in the /arch/arm/boot/compressed directory.
5 Modify the project management file Makefile in the /arch/arm/kernel directory to determine the dependencies between file types.

3.4.2 Cut configuration and compile After modifying the kernel settings, you can configure and compile the kernel, and trim the redundant part in the configuration, so that the image size of the final kernel image file generated by the compiler is as small as possible. Execute the following command:
# make menuconfig
Enter the configuration menu, select the processor type and various peripherals required, protocol support, etc., including LCD, touch screen, serial port, sound, EXT2, FAT and JFFS2 file systems and TCPIP protocol support.
# make dep
Search for dependencies between Linux compilation output and source code, and generate dependency files.
# make zImage
Compile the Linux kernel and generate a compressed kernel image file, zImage . Stored in the /arch/arm/boot/ directory.
3.5 Driver Writing Driver is the interface between the operating system kernel and the underlying hardware. The driver shields the hardware details of the application. Through the driver, the application can operate the hardware as easily as normal file operations. The main role of the driver is to initialize and release hardware devices, detect and handle problems with hardware devices, and transfer data between applications, the kernel, and the underlying hardware.
Since the embedded system is application-specific, the driver of the corresponding device should be written according to the specific platform to facilitate the application's access to the underlying hardware. Each system call corresponds to each member of the file_operations structure. The driver is written to write the various operation functions required by the underlying device and populate the structure file_operations, which is defined in the /include/Linux/fs.h file.
The driver is associated with the specific hardware by device name, major device number, and slave device number. The driver can be loaded into the kernel dynamically or statically. During the debugging phase, the driver is generally loaded dynamically, and when it is finally formed, it is added to the kernel and automatically loaded each time the kernel is started.
3.6 Root File System An embedded product runs stably. In addition to the bootloader and the kernel, there must be an area for providing users with support architecture and user application software. The result of reading and writing data is the root. File system. The root file systems commonly used in embedded systems are: Romfs, Cramfs, Ramfs, JFFS2, EXT2, etc. In addition, the root file system can be built on RAMDISK or on Flash, and the root file system Cramfs is built on RAMDISK.
4. Conclusion This study has the following innovations:
(1) Designed the hardware system of the car navigation device with HMS30C7202 as its core and its LCD liquid crystal display module, memory module (Flash, SDRAM), GPS module, serial interface, USB interface, IrDA infrared communication interface, river network interface and other peripherals. section.
(2) Established a cross-compilation environment for software design, and completed the software design of the car navigation device with HMS30C7202 as the core. This study draws the following conclusions:
1 (1) The embedded Linux with fully open source code in the car navigation system can completely replace the commercial operating system such as WinCE, thus reducing the cost of the system and increasing the competitiveness of the market. Through the development of the system, the author has the following feelings.
2 (2) Add some output statements in the program, in order to display some debugging information printed through the serial port on the HyperTerminal during the debugging process, you can observe the running of the program.
3 (3) Due to the slow download speed of the serial port, the BootLoader should support the network as much as possible, download the kernel and file system through the network, and speed up the development process.

4.2mm Ribbon Connector

4.2Mm Ribbon Connector,Strip Connectors,Strip Terminal,Strip Connector

YUEQING WEIMAI ELECTRONICS CO.,LTD , https://www.weimaiconn.com

Posted on