es05.ppt [호환 모드] - koreatechmicrocom.koreatech.ac.kr/course backup/ifc410/lecture...embedded...

46
Embedded Systems KUT 1-1 Embedded Systems Prof. Myung-Eui Lee (A-405) [email protected]

Upload: others

Post on 24-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • Embedded Systems KUT1-1

    Embedded Systems

    Prof. Myung-Eui Lee (A-405)[email protected]

  • Embedded Systems KUT1-2

    Linux Structure

    l Linux Structure

    System Call Interface

    Buffer Cache

    Memory Manager

    Process ManagerFilesystem Manager

    Device Manager Network Manager

    Ext2fs proc devfs

    minix nfs msdos

    Console KBD SCSICD-ROM PCI network

    Ipv6 ethernet

    …..

    Memory Management

    Process ManagementSchedulerSignaling

    Device Interface

    proc1 proc2 proc3 proc4 proc5 procn

    dev1 dev2 dev3 dev4 devn

    char block

    User Space

    Kernel Space

  • Embedded Systems KUT1-3

    Linux Structure

    l Linux Structure

    Computer Hardware

    System Shared Libraries (System Call Interface)

    Applications: Graphics UI, Compilers, Media player

    API

    UI

    BIOS

    Text UI = Shell: sh, csh, ksh, bash, tcsh, zsh

    Compiler libraries (libc.a)

    Device DrivesKernel

    File management

    Memory management

    Process management

  • Embedded Systems KUT1-4

    System Call Interface

    System CallAPI – System call – OS Relationship

    Standard C Lib.C program invoking printf() library call,

    which calls write() system callar –t /usr/lib/libc.a | grep printf /usr/src/linux-2.4/arch/i386/kernel/entry.S

  • Embedded Systems KUT1-5

    System Call

    l System calls define the programmer interface to Linux system » Interface between user-level processes and hardware

    devicesu CPU, memory, disks etc.

    » Make programming easieru Let kernel take care of hardware-specific issues

    » Increase system securityu Let kernel check requested service via system call

    » Provide portabilityu Maintain interface but change functional implementation

    l Roughly five categories of system calls in Linux» Process control» File management» Device management» Information maintenance» Communication

    * 288 system callsrefer to slide #6

  • Embedded Systems KUT1-6

    System Call

    l Invoked by executing int or swi instruction» CPU switches to kernel mode & executes a kernel function

    l Linux files relating to system call» /usr/src/linux-2.4/arch/i386/kernel/entry.S x86 host #408

    /pxa270/kernel/linux-2.6…/arch/arm/kernel/calls.S ARM target #17 u System call and low-level fault handling routinesu ENTRY(sys_call_table)

    » /usr/src/linux-2.4/include/asm-i386/unistd.h x86 host /pxa270/kernel/linux-2.6…/include/asm-arm/unistd.h ARM target

    u System call numbers and macros

    x86 : movl %eax, 2 ; system call numberint $0x80

    ARM : swi 2 ; system call number

  • Embedded Systems KUT1-7

    ARM System Call

    l ARM System Call ExampleAn example to write a short file on disk

    SWI_Exit EQU 0x01SWI_Write EQU 0x04SWI_Open EQU 0x05SWI_Close EQU 0x06write_only EQU 4 ; mode 4 = open to write

    ENTRY ; mark first instruction to execute start ADR r0, filename ; r0 points to string

    MOV r1, #write_only ; file attribute for write onlySWI SWI_Open ; open a file for writingMOV r5, r0 ; save file-handle in r5ADR r1, string ; point to a stringMOV r2, #14 ; 14 characters longSWI SWI_Write ; write to fileMOV r0, r5 ; restore file-handleSWI SWI_Close ; close the fileSWI SWI_Exit

    filename = "test.txt",0string = "Hello World!",&0a,&0dEND

  • Embedded Systems KUT1-8

    System Call

    l System Call Handling

    idt_tabledivide_error()

    debug()

    nmi()

    ….

    0x0

    system_call()

    ….

    kerneluser task

    main(){….fork()

    }

    libc.a

    ….fork(){….movl %eax, 2int $0x80….

    }….

    ENTRY(system_call) /* arch/i386/kernel/entry.S */

    SAVE_ALL

    ….call *SYMBOL_NAME(sys_call_table)(,%eax,2)

    ….ret_from_sys_call (schedule, signal, bh_active,

    nested interrupt handling)

    0x80

    sys_call_table

    sys_exit()

    sys_fork()

    sys_read ()

    sys_write ()

    ….

    1

    2

    3

    4

    sys_fork()

    /* arch/i386/kernel/process.c */

    /* kernel/fork.c */

  • Embedded Systems KUT1-9

    Process

    l Program» Structured set of commands stored in an executable file

    on a file system» Executed to create a process

    l Process» Program running in memory and on the CPU (active

    program)» Modern systems allow ‘multiprogramming’ (i.e., several

    processes exist concurrently)» Each process requires an allocation of cpu time, in order

    to make forward progress» The OS must do ‘scheduling’ of cpu time» Each process also needs the use of other system facilities

    (memory, files, devices)» The terms job (batch system) and process is almost used

    interchangeably

  • Embedded Systems KUT1-10

    Process

    l A process includes» text section : program » stack» data section» heap

    l User process» Process begun by a user that runs on a

    terminal (tty)l Daemon process

    » System process » Not associated with a terminal

    l Process ID (PID) top, ps -el» Unique identifier assigned to every process as

    it begins» Processes are identified by their process

    identifier, an integer

    Process in memory

  • Embedded Systems KUT1-11

    Process

    l Child processes» Refers to a process that was started by another process

    (parent process)l Parent processes

    » Process that has started other processes (child processes)

    l Parent Process ID (PPID) ps -el» The PID of the parent process that created the current

    processl Processes communicate via pipes (IPC)

    » Queues of bytes between two processes that are accessed by a file descriptor

  • Embedded Systems KUT1-12

    Processl Process System Call

    » Creation : fork system call creates new processu the process that calls fork() is parent, the new process is childu fork() is calling sys_fork() → do_fork() in /kernel/fork.cu “cloning flags” : man clone /usr/src/linux-2.4/include/linux/sched.h #39

    » Execution : exec system call is used after a fork to execute the process

    » Exit : exit terminates process and free all resourcesu Calling exit() → sys_exit() → do_exit () explicit kernel/exit.c u The child is turned into a zombie process until the parent makes the

    call to wait→ When a process finishes execution, it will have an exit status to

    report to its parent process. Because of this last little bit of information, the process will remain in the operating system’s process table as a zombie process. indicating that it is not to be scheduled for further execution, but that it cannot be completely removed (and its process ID cannot be reused)

    » Wait : A parent may wait for a child process to terminate, and return its termination status

    Refer to Slide #26

  • Embedded Systems KUT1-13

    Process

    l Process termination » Voluntary termination

    1. Returning to the main() function (implicit)2. Calling exit() (explicit)

    » Involuntary termination1. An exception might be raised during its kernel mode execution2. The process might have received the SIGABRT or other termination

    signal» Termination process state

    1. the parent is alive : zombie process 2. the parent is dead : orphan process

    An orphan process is a process that is still executing, they do not become zombie processes; instead, they are adopted(inherited) by init process (PID 1)

    l Task» Another name for a process is a task, and Linux kernel

    internally refers to processes as tasks» Generally refer to a process from the kernel’s point of view

  • Embedded Systems KUT1-14

    Task

    » As seen by a process running under Linux

    u The kernel is a provider of servicesu Individual processes exist

    independently alongside each other and cannot affect each other directly

    u Each process’s own area of memory is protected against modification by other processes

    » The internal viewpoint of a running Linux

    u Only one program (OS) is running on the computer, can access all the resource

    u The various tasks are carried out by co-routines

    u An error in the kernel programming can block the entire system

    Process and Tasks

  • Embedded Systems KUT1-15

    Process Control Block (PCB)

    l Information associated with each process l type sturcture task_struct ; line 382 (target:528)

    » /usr/src/linux-2.4/include/linux/sched.hProcess stateUnique process identifierMemory-management information File system informationSignal informationProgram counterCPU registersCPU scheduling information (e.g., priority)Accounting informationI/O status informationPointers to other control blocks

  • Embedded Systems KUT1-16

    memory-map

    open files

    pid

    next_taskprev_taskgid

    processor register-values(EIP, ESP, EFLAGS, etc)

    signal-handlers

    timers

    task-state task-priority

    task-name

    terminal

    processexecution aspects

    resourceownership aspects

    Process Control Block (PCB)

    l task_struct

  • Embedded Systems KUT1-17

    Process Control Block

    l task_structstruct task_struct {

    volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */unsigned long flags; /* per process flags */mm_segment_t addr_limit; /* thread address space:

    0-0xBFFFFFFF for user-thead0-0xFFFFFFFF for kernel-thread */

    struct exec_domain *exec_domain;long need_resched;long counter;long priority;/* SMP and runqueue state */

    struct task_struct *next_task, *prev_task;struct task_struct *next_run, *prev_run;...

    /* task state *//* limits *//* file system info *//* ipc stuff *//* tss for this task */

    …/* open file information *//* memory management info *//* signal handlers */

    ...};

    mm_struct

    signal_struct

    task_struct

    pid = 5

    mm

    slg

    files

    files_struct

  • Embedded Systems KUT1-18

    Thread

    l Thread of execution = Threadl The object of activity within the processl Each thread includes a unique program counter,

    process stack, and set of processor registersl The kernel schedules individual threads, not

    processl Linux does not differentiate between threads and

    processes : a thread is just a special kind of process

    l A process has two distinct aspects » Its ‘execution’ (forward progression of states)» Its ‘ownership’ (share of system’s resources) » The word ‘thread’ refers to the execution aspect of a

    process (i.e., the entity which gets ‘scheduled’ by an Operating System for a share of the available cpu time)

  • Embedded Systems KUT1-19

    Thread

    l Multi-threading» It is possible for an operating system to support a

    concept of ‘process’ in which more than one execution-thread exists (with process-resources being shared)

    l Advantages of ‘threads’» All the ‘threads’ that belong to a process can access the

    same memory, the same files, the same terminal, the same timers and the same signal-handlers

    » Thus the system ‘overhead’ involved in managing a multithreaded task is more efficient (less time-consuming to set up and keep track of) than if each of those threads had individualized ownerships

    one process withone thread

    one process withmultiple threads

  • Embedded Systems KUT1-20

    Thread

    l Thread communication» Since the threads in a process share the same memory,

    no special mechanism is needed for them to communicate data

    process

    All these threads can read or write the same memory-locations

  • Embedded Systems KUT1-21

    User/Kernel Mode Transition

    » 1. P1 in User Mode issues a system call

    » 2. The process switches to Kernel Mode, and the system call is serviced

    » 3. P1 then resumes execution in User Mode until a timer interrupt occurs

    » 4. The scheduler is activated in Kernel Mode

    » 5. P2 starts its execution in User Mode until a hardware device raises an interrupt

    » 6. As a consequence of the interrupt, P2 switches to Kernel Mode and services the interrupt

    Transitions between User and Kernel Mode

    P1.aRequest system call service

    P1.bWait for timerinterrupt

    P2.aWait for device H/W interrupt

    P2.bDevice H/Winterrupt service

    Scheduler

    P1.a P1.b P2.a P2.b

    System call handler Interrupt handler

  • Embedded Systems KUT1-22

    Memory Space

    l Virtual Memory = User + Kernel

    0xFFFFFFFF

    text

    data

    bss

    stack

    kernel

    0x00000000

    kernel text

    kernel data

    kernel stack

    kernel bss

    User

    0xBFFFFFFF

    0xC0000000

    kernelspace

    user space

    textdata

    stack

    textdata

    stackmappings

    3-GB

    1-GB

    physical memory virtual memory

  • Embedded Systems KUT1-23

    Process State

    l TASK_RUNNING : 1. running / 2. ready» The process is runnable

    u 1. currently running - runningu 2. on a run queue waiting to run - ready

    l TASK_INTERRUPTIBLE : waiting/sleeping/blocked» Waiting on a condition: interrupts, or signals » Becomes runnable if it receives a signal

    l TASK_UNINTERRUPTIBLE» Waiting process cannot be woken by a signal » Cannot become runnable if it receives a signal» This is used in situations where the process must wait

    without interruptionl TASK_STOPPED : temporarily stopped

    » Stopped process - e.g., by a debugger» This occurs if the process receives SIGSTOP signal

  • Embedded Systems KUT1-24

    Process State

    l TASK_ZOMBIE : zombie, defunct, immortal process» Process finished, but parent has not released PID » Process has completed execution but still has an entry in the

    process table. This entry is still needed to allow the parent process that started the (now zombie) process to read its exit status

    » When a process ends, all of the memory and resources associated with it are deallocated so they can be used by other processes. However, the process's entry in the process table remains. The parent can read the child's exit status by executing the wait system call, at which stage the zombie is removed

    » The process has terminated, but its parent has not yet issued a wait system call

    » wait provides the process id of a terminated child so that the parent can tell which child terminated

  • Embedded Systems KUT1-25

    Process State

    l 2.4» TASK_RUNNING» TASK_INTERRUPTIBLE» TASK_UNINTERRUPTIBLE» TASK_STOPPED » TASK_ZOMBIE» TASK_DEAD : currently not used

    l 2.6» TASK_RUNNING» TASK_INTERRUPTIBLE» TASK_UNINTERRUPTIBLE» TASK_STOPPED» TASK_ZOMBIE» TASK_DEAD : currently not used» TASK_TRACED : being traced by a debugger

    /usr/src/linux-2.4/include/linux/sched.h Line # 106

    /pxa270/kernel/ linux-2.6.11-h270-tku_v1.1 /include/linux/sched.h

  • Embedded Systems KUT1-26

    Diagram of Process State

  • Embedded Systems KUT1-27

    Process

    l Context Switch» When CPU switches to another process, the system must

    save the state of the old process and load the saved state for the new process

    » Context-switch time is overhead; the system does no useful work while switching

    » Time dependent on hardware support

    l Remote Procedure Call» Remote procedure call (RPC) abstracts procedure calls

    between processes on networked systems

  • Embedded Systems KUT1-28

    Process

    l Viewing Processes» ps –f command : user process

    u User identifier (UID), PID, PPID, start time, CPU utilization» ps –l command : user process

    u More complete informationu Process state can be seen u R = running, S = sleeping, D = uninterruptible sleep,

    T = stopped or being traced, Z = zombie» top or ps –efl command : system/user process

    u Process priority (PRI) : priority→ Higher value means lower priority→ 0 (high priority) to 139 (low priority)

    u Nice value (NI) : time slice→ Indirectly represents priority→ The priority value may be in the range -20 (800ms) to 19(5ms). → Higher value means lower priority

    u NICE_TO_PRIO(nice), PRIO_TO_NICE(prio) : kernel/sched.c

  • Embedded Systems KUT1-29

    InterProcess Communication(IPC)

    l Mechanism for processes to communicate and to synchronize their actions

    l Message system – processes communicate with each other without resorting to shared variables

    l IPC facility provides two operations:» send(message) – message size fixed or variable » receive(message)

    l If P and Q wish to communicate, they need to:» Establish a communication link between them» Exchange messages via send/receive

    l Implementation of communication link» Physical : shared memory, hardware bus» Logical : logical properties(protocol, layer)

  • Embedded Systems KUT1-30

    Communications Model

    l Direct Communication» Processes must name each other explicitly:» send (P, message) – send a message to process P» receive(Q, message) – receive a message from process Q

    l Indirect Communication» Messages are directed and received from mailboxes (also

    referred to as ports)» Each mailbox has a unique id» Processes can communicate only if they share a mailbox» Operations

    u create a new mailboxu send and receive messages through mailboxu destroy a mailbox

    » send(A, message) – send a message to mailbox A» receive(A, message) – receive a message from mailbox A

  • Embedded Systems KUT1-31

    Signal

    l Introduced in UNIX systems to simplify IPCl Used by the kernel to notify processes of

    system eventsl A signal is a short message sent to a process,

    or group of processes, containing the number identifying the signal

    l Linux supports 31 non-RT signals » /include/asm-i386/signal.h

    l POSIX standard defines a range of values for RT signals

  • Embedded Systems KUT1-32

    l A signal is sent due to occurrence of corresponding event (kernel/signal.c – line 1110)» send_sig_info(int sig, struct siginfo *info, struct task_struct *t);

    » sig is signal number» info is either:

    u 0, if user mode process is signal senderu 1, if kernel is signal sender

    # Signal Name Default Action Comment1 SIGHUP Abort Hangup terminal or process2 SIGINT Abort Keyboard interrupt (usually Ctrl-C)

    …9 SIGKILL Abort Forced process termination

    10 SIGUSR1 Abort Process specific11 SIGSEGV Dump Invalid memory reference

    Signal

  • Embedded Systems KUT1-33

    l Sending a signal» Kernel sends (delivers) a signal to a destination process

    to update some state in the context of the destination process

    l Kernel sends a signal for one of the following reasons:» Generated internally:

    u Kernel has detected a system event such as divide-by-zero (SIGFPE) or the termination of a child process (SIGCHLD)

    » Generated externally:u Another process has invoked the kill system call to explicitly request

    the kernel to send a signal to the destination process

    Signal

  • Embedded Systems KUT1-34

    l Receiving a signal» A destination process receives a signal when it is forced

    by the kernel to react in some way to the delivery of the signal

    l Three possible ways to react:» Ignore the signal (do nothing)» Terminate the process» Catch the signal by executing a user-level function call(a

    signal handler)u Similar to a hardware exception handler being called in response to

    an asynchronous interrupt

    Signal

  • Embedded Systems KUT1-35

    Scheduler

    l Scheduling» Non-preemptive scheduling: the process keeps the CPU

    until the process terminates or it switches to waitingstate (simple to implement)

    » Preemptive scheduling: the process can be interruptedand must release the CPU

    l Scheduling Policies : /include/linux/sched.h Line # 136» SCHED_NORMAL : non-RT / classic Unix

    u Interactive : make the system appear fast to useru RT have higher priorities than any non-RT tasks

    » SCHED_FIFO : soft-RTu If no other higher-priority RT process is runnable, the process will

    continue to use the CPU as long as it wishes» SCHED_RR : soft-RT

    u Assign CPU time to all SCHED_RR processes that have the samepriority (fixed time slice)

    u Interrupted when its time slice has expired* Scheduler schedule() function : /kernel/sched.c - line 986

  • Embedded Systems KUT1-36

    Scheduler

    l Long-term scheduler (or job scheduler) » Selects which processes should be brought into the

    ready queue» Invoked very infrequently (seconds, minutes) Þ (may

    be slow)l Short-term scheduler (or CPU scheduler)

    » Selects which process should be executed next and allocates CPU

    » Invoked very frequently (milliseconds) Þ (must be fast)

    l Processes can be described as either:» I/O-bound process – spends more time doing I/O than

    computations, many short CPU bursts» CPU-bound process – spends more time doing

    computations, few very long CPU bursts

    Linux implicitly favors I/O-bound processes over CPU-bound ones

  • Embedded Systems KUT1-37

    Module

    l Linux is a monolithic kernel» Trivial modifications require kernel to be recompiled» Kernel is increasing in size by adding new features» Many modules occupy permanent space in memory

    though they are used rarelyl Module: steps toward micro-kernelized Linux

    » Small and compact kernel» Clean kernel» Rapid kernel» Components-based Linux

    l Easier way to extend Linux kernel functionsl Modules allow to plug a new functionality into the

    kernel at runtime» A module is loaded only when it is needed» It is unloaded when it is not needed anymore

  • Embedded Systems KUT1-38

    Module

    l LKM (Linux Kernel Module) = Kernel Module = Module

    l Linux Kernel = Base Kernel (Kernel Image) + LKMl Kernel does not need to be rebuilt so often

    » Reduce the likeliness of errorsl Bugs in code do not affect the kernel boot

    » Easier debugging: you know where to look» Faster debugging: no need to reboot

    l Modules can be compiled and dynamically linked into kernel address space» Useful for device drivers that need not always be resident

    until needed.u Keeps core kernel “footprint” small

  • Embedded Systems KUT1-39

    Module versus Application

    l Modules» 1. runs in kernel space

    (no main function)» 2. just registers itself in

    order to serve future requests, and its initialization function terminates immediately(event-driven program)

    » 3. no libraries to link to (linked only to the kernel): the only functions it can call are the ones exported by the kernel

    u printk() : kernel function

    l Applications» 1. runs in user space

    (main function)» 2. performs a single task

    from beginning to end(not all applications are event-

    driven) » 3. can call functions it

    doesn’t define: the linking stage resolves external references using the appropriate library of functions (libc)

    u printf()

  • Embedded Systems KUT1-40

    Module

    l Every module consist of two basic functions (minimum)int init_module(void) /*used for all initialization*/ { ... } void cleanup_module(void) /*used for exit */ { ... }

    l Loading a module - by issuing the following command: » insmod module.o

    l Removing a module - by issuing the following command: » rmmod module

  • Embedded Systems KUT1-41

    Module

    » Basic two Interfacesu module_init()u module_exit()

    » Function units which can be implemented as modulesu File system : register_filesystem(), unregister_filesystem(),

    read_super function (mount), put_super function (unmount)u Block device drivers : register_blkdev(), unregister_blkdev(), open

    function, release function u Character device drivers : register_chrdev(), unregister_chrdev(),

    open function, release functionu Network device drivers : register_netdev(), unregister_netdev(), open

    function, close function

    kernel

    module

    init_module()

    module_init()

    cleanup_module()

    module_exit()

    register

    system call

    unregister

    system call

    insmod

    rmmod

  • Embedded Systems KUT1-42

    Module

    l Instruction» insmod : /proc/modules

    u Insert an module into the kernel» rmmod

    u Remove an module from the kernel» depmod : /lib/modules/2.4.20-8/modules.dep

    u Determine interdependencies between modules» ksyms : /proc/ksyms

    u Display symbols that are exported by the kernel » lsmod = /proc/modules

    u List currently loaded modules» modinfo

    u Display module information (.modinfo section in module object file)» modprobe : /etc/modules.conf (alias & options)

    u Insert module and resolve module dependency (as described by modules.dep). For example, if you must load A before loading B, modprobe will automatically load A when you tell it to load B

  • Embedded Systems KUT1-43

    Module

    l modinfo hello.o» MODULE_AUTHOR(“MELEE”);» MODULE_DESCRIPTION(“Hello Module”);» MODULE_LICENCE(“GPL”);

    l /proc/ksyms : Kernel Symbol Table» lists all the symbols the kernel exports» /usr/src/linux/System.map (core symbols)» /proc/ksyms (all symbols)

    l /proc/modules » holds information about the loaded modules» column : module name / size / use count / dependency

    l /etc/modules.conf » modprobe command» A module name : eth0, usb-controller » A more generic identifier : e100, ehci-hcd

  • Embedded Systems KUT1-44

    Module

    l kernel 2.4 : host/* HELLO MODULE example -Tested on Linux Kernel 2.4 */

    #include #include #include

    MODULE_LICENSE("GPL");MODULE_AUTHOR(“MELEE”);MODULE_DESCRIPTION(“HELLO MODULE”);

    int init_module(void){

    printk("HELLO MODULE is loaded. \n");

    return 0;}

    void cleanup_module(void){

    printk("HELLO MODULE is unloaded. \n");}

    ## Makefile for Linux Kernel Module for 2.4

    CC = gcc

    KERNEL_PATH = /usr/src/linux-2.4.20-8CFLAGS = -DMODULE -D__KERNEL__ -I$(KERNEL_PATH)/include

    MOD_OBJ = hello

    all: $(MOD_OBJ).o

    $(MOD_OBJ): $(MOD_OBJ).c$(CC) $(CFLAGS) -c $(MOD_OBJ).c

    clean:rm -f *.o

    -D__KERNEL__ = #define __KERNEL__-DMODULE = #define MODULE

  • Embedded Systems KUT1-45

    Module

    l kernel 2.6 : target/* HELLO MODULE example - Tested on Linux Kernel 2.6.x */

    #include #include #include

    MODULE_LICENSE("GPL");

    int hello_init(void){

    printk(" HELLO MODULE is loaded. \n");

    return 0;}

    void hello_exit(void){

    printk(" HELLO MODULE is unloaded. \n");}

    module_init(hello_init);module_exit(hello_exit);

    ## Makefile for Linux Kernel Module for 2.6

    obj-m := hello.o

    CC := /opt/iwmmxt-1.0.0/bin/arm-linux-gcc

    KDIR := /pxa270/kernel/linux-2.6.11-h270-tku_v1.1

    PWD := $(shell pwd)

    default:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

    clean:rm -rf *.ko rm -rf *.mod.*rm -rf .*.cmdrm -rf .tmp*rm -rf *.o

  • Embedded Systems KUT1-46

    Module

    l Make module : sample modules (microcom homepage)l Load the module

    » insmod hello.o or hello.ko» dmesg : at host (2.4) or /var/log/messages

    l Check that the module is loaded» lsmod = cat /proc/modules

    l Remove the module» rmmod hello» dmesg : at host (2.4)