Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Embedded Software 2015. 9.1 Kyu Ho Park CORE Lab. 1. Introduction Course Description The goal of this course is to understand Linux Kernel Programming and practice it on a CPU board implementing real device drivers. The topics will be Task management, Memory management, File Systems, Interrupt Handling, System call implementation, Module Programming, and Device drivers. The development environment will be implemented on VMware with Ubuntu Linux and a board computer. Computer Engineering Research Laboratory Course Description Course Type Elective Course Code EE516 Course Name Korean 임베디드소프트웨어 Course Name English Embedded Software Instructors Kyu Ho Park Lecture:Exp.:Credit(Homework) 1: 5: 3 (4) Term : Fall Descriptions of Courses The goal of this course is to understand Linux Kernel Programming and practice it on a CPU board implementing real device drivers. The topics will be Task management, M emory management, File Systems, Interrupt Handling, System call implementation, Mo dule Programming, and Device drivers. The development environment will be impleme nted on VMware with Ubuntu Linux and a board computer. Course Website: http://core.kaist.ac.kr/~EE516/ Computer Engineering Research Laboratory Topics to be covered [Lectures will be given on every Tuesday] 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Introduction Development Environment based on VMware Linux Basic Commands , Shell and Kernel Compiling Process, Thread and Task Synchronization Interrupt, Trap and System calls Module Programming and Character Device Driver Device Driver with Interrupt Handling File System Management Block Device Driver Memory Management Timing and Timer Computer Engineering Research Laboratory TA Kim Woo Joong, PhD Student([email protected]) Joo Kyung Ro, PhD Student([email protected]) Shin Dong Jae, PhD Student([email protected]) Kim Dong Jin, PhD Student([email protected]) Choi, Jong Hun, PhD Student([email protected]) Computer Engineering Research Laboratory Evaluation Evaluation: Projects ( 5 Projects will be assigned) : 50% Homework( 4 Homeworks) : 32% Quiz, Presentation, etc. : 18% Good Luck! Computer Engineering Research Laboratory Projects 1.Setting Up Environment 2.Linux Fundamental 3.System Call and Synchronization 4.File System 5.Device Driver for Embedded H/W Computer Engineering Research Laboratory System software System software is a type of computer program that is designed to run a computer’s hardware and application programs. If we think of the computer system as a layered model, the system software is the interface between the hardware and user applications. The operating system (OS) is the best-known example of system software. The OS manages all the other programs in a computer. Other examples of system software and what each does: The BIOS (basic input/output system) gets the computer system started after you turn it on and manages the data flow between the operating system and attached devices such as the hard disk, video adapter, keyboard, mouse, and printer. The boot program loads the operating system into the computer's main memory or random access memory (RAM). An assembler takes basic computer instructions and converts them into a pattern of bits that the computer's processor can use to perform its basic operations. A device driver controls a particular type of device that is attached to your computer, such as a keyboard or a mouse. The driver program converts the more general input/output instructions of the operating system to messages that the device type can understand. According to some definitions, system software also includes system utilities, such as the disk defragmenter and System Restore, and development tools such as compilers and debuggers. from WhatIS.com Computer Engineering Research Laboratory Computer Engineering Research Laboratory What we will learn Linux basic commands, Basic shell programming, Linux kernel programming, Process management, Memory management, File systems, Linux module programming, System calls, interrupt and trap, Device driver implementation. Rerferences: 1.Understanding the Linux Kernel, 3rd,Bovet $Cesati. 2.Linux Device Drivers, 3rd, Corbet,Rubini & Kroah-Hartman. Computer Engineering Research Laboratory Linux history 1991.8.26 Linux 0.0.1 Linus Benedict Torvalds 1991.10.5 The first official version Linux 0.0.2 1996.6.9 Linux-2.0.tar.gz Mr. Torvalds developed based on the experience of using Minix( developed by Andrew Tanenbaum). Computer Engineering Research Laboratory Linux (System Call Interface) Process Managenent Module File system Initialization Module Memory Management Module Network Management Module Device Driver Computer Engineering Research Laboratory Linux File System (Buffer Cache) (Device Driver) 13 Computer Engineering Research Laboratory Linux components H/W dependent kernel codes Header files to build kernel Kernel initialization routines Memory management codes File system codes Main kernel codes Socket interface, TCP/IP Computer Engineering Research Laboratory Linux Distribution Tree http://futurist.se/gldt *Debian---Ubuntu Linux *Slackware *Redhat Ubuntu (/ʊˈbuːntʊ/ uu-BOON-tuu; Zulu pronunciation: [ùɓúntʼú])[1][2] is a Nguni Bantu term roughly translating to "human kindness."[dubious – discuss] It is an idea from the Southern African region which means literally "human-ness," and is often translated as "humanity toward others," but is often used in a more philosophical sense to mean "the belief in a universal bond of sharing that connects all humanity".[3] Computer Engineering Research Laboratory http://futurist.se/gldt Computer Engineering Research Laboratory debian Computer Engineering Research Laboratory ubuntu Computer Engineering Research Laboratory slackware Computer Engineering Research Laboratory redhat Computer Engineering Research Laboratory Ubuntu Linux Ubuntu13.04 was released in April,2013. Ubuntu13.10 was released in October,2013. Generally Ubuntu is released in April and Oct. Computer Engineering Research Laboratory System Calls and Shell Operating system is the code that executes the system calls. System Calls: The interface between the OS and its application programs How are the commands executed? -shell: command interpreter 22 Computer Engineering Research Laboratory System Call Users’ Programs System Call System Call Interface (Kernel Functions) Kernel Hardware Computer Engineering Research Laboratory Shell Other programs csh Kernel bash The X Window System 1.shell: command interpreter 2. #date ; The shell creates a child process and runs the ‘date’ program as the child. When the child process is running, the shell waits for it to terminate. When the child finishes , the shell types the prompt again and tries to read the next input line. Process Management Module fork( ), exec( ) kill( ), exit( ) signal( ) ( ./linux/kernel and ./linux/arch/x86/kernel) Computer Engineering Research Laboratory File systems open( ), read( ), write( ),close( ) create( ) lseek( ) chmod( ),rename( ) Computer Engineering Research Laboratory files files: regular file directory symbolic link device file Computer Engineering Research Laboratory Basic Operations of a Computer OS CPU Disk Memory Basic Operations of a Computer Basic Operations of a Computer vi testWelcom.c inode Disk 69 6e 74 20 … Basic Operations of a Computer testWelcom.c testWelcom Basic Operations of a Computer vi testWelcom.c testWelcom Disk inode 69 6e 74 20 … Basic Operations of a Computer vi testWelcom.c testWelcom $./testWelcom 4GB 3GB Kernel Space 16EB 128TB Stack SP Disk inode Heap 69 6e 74 20 … BSS Data 0B CPU Text Memory running p5 readyQueue p1 p2 p3 p4 PC 0B testWelcom process Programming Environment Computer Engineering Research Laboratory