54
SOC Consortium Course Material Real-time OS Speaker: 沈沈沈 April. 9, 2003 National Taiwan Univers ity Adopted from National C hiao-Tung University SOC Course Material

SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

Embed Size (px)

Citation preview

Page 1: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

SOC Consortium Course Material

Real-time OS

Speaker: 沈文中

April. 9, 2003

National Taiwan University

Adopted from National Chiao-Tung University

SOC Course Material

Page 2: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

2SOC Consortium Course Material

Real-tim

e OS

Outline

Introduction to RTOS Introduction to μC/OS-II

Page 3: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

3SOC Consortium Course Material

Real-tim

e OS

Real Time OS

Real-time OS (RTOS) is an intermediate layer between hardware devices and software programming

“Real-time” means keeping deadlines, not speed

Advantages of RTOS in SoC design

• Shorter development time

• Less porting efforts

• Better reusability

Disadvantages

• More system resources needed

• Future development confined to the chosen RTOS

Page 4: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

4SOC Consortium Course Material

Real-tim

e OS

Soft and Hard Real Time

Soft real-time

• Tasks are performed by the system as fast as possible, but tasks don’t have to finish by specific times

• Priority scheduling

• Multimedia streaming

Hard real-time

• Tasks have to be performed correctly and on time

• Deadline scheduling

• Aircraft controller, Nuclear reactor controller

Page 5: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

5SOC Consortium Course Material

Real-tim

e OS

Outline

Introduction to RTOS Introduction to μC/OS-II

Page 6: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

6SOC Consortium Course Material

Real-tim

e OS

μC/OS-II

Written by Jean J. Labrosse in ANSI C

A portable, ROMable, scalable, preemptive, real-time, multitasking kernel

Used in hundreds of products since its introduction in 1992

Certified by the FAA for use in commercial aircraft

Available in ARM Firmware Suite (AFS)

Over 90 ports for free download

http://www.ucos-ii.com

Page 7: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

7SOC Consortium Course Material

Real-tim

e OS

μC/OS-II Features

Portable 8-bit ~ 64 bit

ROMable small memory footprint

Scalable select features at compile time

Multitasking preemptive scheduling, up to 64 tasks

Page 8: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

8SOC Consortium Course Material

Real-tim

e OS

C/OS-II vs. HAL

uHAL is shipped in ARM Firmware Suite

uHAL is a basic library that enables simple application to run on a variety of ARM-based development systems

uC/OS-II use uHAL to access ARM-based hardware

uC/OS-II & User application AFS Utilities

C, C++ libraries

uHAL routines

Development board

AFS supportroutines

Page 9: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

9SOC Consortium Course Material

Real-tim

e OS

Kernel

Basic jobs of uC/OS-II kernel

• Task management

• Interrupt handling

• Inter-process communication

Page 10: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

10SOC Consortium Course Material

Real-tim

e OS

Kernel API

Service routines provided by uC/OS-II Kernel

• Task management APIs

• Time management APIs

• Memory management APIs

• Inter-process communication APIs

• Synchronization APIs

To make a System Call means to call Kernel API

Page 11: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

11SOC Consortium Course Material

Real-tim

e OS

Task

Task is an instance of program

Task thinks that it has the CPU all to itself

Task is assigned a unique priority

Task has its own set of stack

Task has its own set of CPU registers (backup in its stack)

Task is the basic unit for scheduling

Task status are stored in Task Control Block (TCB)

Page 12: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

12SOC Consortium Course Material

Real-tim

e OS

Task Structure

Task structure:

An infinite loop

An self-delete function

void ExampleTask(void *pdata)

{

for(;;) {

/* User Code */

/* System Call */

/* User Code */

}

}

Task with infinite loop structure

void ExampleTask(void *pdata)

{

/* User Code */

OSTaskDel(PRIO_SELF);

}

Task that delete itself

Page 13: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

13SOC Consortium Course Material

Real-tim

e OS

Task States

WaitingWaiting

DormantDormantReadyReady RunningRunning ISRISR

Task Create

Task Delete

Highest Priority Task

Task is Preempted

Task Pending EventsTask Gets Event

Task Delete

Interrupt

Int. Exit

Task Delete

Page 14: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

14SOC Consortium Course Material

Real-tim

e OS

Task Priority

Unique priority (also used as task identifiers)

64 priorities max (8 reserved)

Always run the highest priority task that is READY

Allow dynamically change priority

Page 15: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

15SOC Consortium Course Material

Real-tim

e OS

Task Control Block

uC/OS-II use TCB to keep record of each task

States

Stack Pointer

Priority

Misc …

Link Pointer

Page 16: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

16SOC Consortium Course Material

Real-tim

e OS

Task Control Block(cont.)

Page 17: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

17SOC Consortium Course Material

Real-tim

e OS

Exchanging CPU Control

void ExampleTask(void *pdata)

{

for(;;) {

/* User Code */

/*System Call */

/* User Code */

}

}

OSMboxPend();

OSQPend();

OSSemPend();

OSTaskSuspend();

OSTimeDly();

OSTimeDlyHMSM();

More…

uC/OS-II Kernel API

Control returns from task to OS when Kernel API is called

Page 18: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

18SOC Consortium Course Material

Real-tim

e OS

Exchanging CPU Control

A B B C A

Interrupt Handler

OS

Task

Time

Scheduling

System Call

Interrupt

Interrupt Exit

Only one of OS, Task, Interrupt Handler gets CPU control at a time

Page 19: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

19SOC Consortium Course Material

Real-tim

e OS

Task Scheduling

Time

ISR

Low-priority Task

High-priority Task

ISR makes thehigh-priority task ready

low-priority taskRelinquishes the CPU

Non-preemptive

Page 20: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

20SOC Consortium Course Material

Real-tim

e OS

Task Scheduling

Preemptive

uC/OS-II adopts preemptive scheduling

Time

ISR

Low-priority Task

High-priority Task

ISR makes thehigh-priority task ready

high-priority taskRelinquishes the CPU

Page 21: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

21SOC Consortium Course Material

Real-tim

e OS

Context Switching

Context SwitchingThe process of swap in/out the context of tasks when scheduler choose a new task to run.

ContextUsually means values in registers used by the task.

Switching Steps1. Save registers of current task to stack(curr)

2. Load new task’s SP into CPU

3. Restore registers of new task from stack(new)

4. Resume execution of new task

Page 22: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

22SOC Consortium Course Material

Real-tim

e OS

Context Switching

Time

ISR

Low-priority Task

High-priority Task

ISR makes thehigh-priority task ready

ContextSwitching

ContextSwitching

high-priority taskRelinquishes the CPU

Page 23: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

23SOC Consortium Course Material

Real-tim

e OS

Critical Region

Code need to be treated indivisibly

Code have to be executed without interrupt

creating task…etc

Non-reentrant code

accessing shared variable…etc

Page 24: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

24SOC Consortium Course Material

Real-tim

e OS

Critical Region

Protecting critical region

• OS_ENTER_CRITICAL( )

temporarily disable interrupt

• OS_EXIT_CRITICAL( )

re-enable interrupt

Page 25: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

25SOC Consortium Course Material

Real-tim

e OS

Events

A way for Synchronization and Communication

• Pend (Wait for an event)

• Post (Signal an event)

Events in uC/OS-II

• Semaphore

• Counting Semaphore

• Message Mailbox

• Message Queues

Page 26: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

26SOC Consortium Course Material

Real-tim

e OS

Semaphore

Semaphore serves as a key to the resource

A flag represent the status of the resource

Prevent re-entering Critical Region

Can extent to counting Semaphore

Task 1Task 1

Task 2Task 2

RS-232RS-232

Send data via RS232

Send data via RS232

Semaphore

Request/Release

Request/Release

Page 27: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

27SOC Consortium Course Material

Real-tim

e OS

Semaphore

Using Semaphore in uC/OS-II

OSSemCreate()

OSSemPend()

OSSemPost()

OSSemQuery()

OSSemAccept()

Page 28: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

28SOC Consortium Course Material

Real-tim

e OS

Message Mailbox

Used for Inter-Process Communication (IPC)

A pointer in MailBox points to the transmitted message

TaskTask

ISRISR

TaskTask

“message”

Mail BoxPost

Post

Pend

Page 29: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

29SOC Consortium Course Material

Real-tim

e OS

Message Queues

Array of MailBox

FIFO & FILO configuration

TaskTask

ISRISR

TaskTask

“message”

Mail QueuesPost

Post

Pend

Page 30: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

30SOC Consortium Course Material

Real-tim

e OS

MailBox & Queues

Using MailBox in uC/OS-II

OSMboxCreate()

OSMboxPend()

OSMboxPost()

OSMboxQuery()

OSMboxAccept()

Using Queue in uC/OS-II

OSQCreate()

OSQPend()

OSQPost()

OSQPostFront()

OSQQuery()

OSQAccept()

OSQFlush()

Page 31: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

31SOC Consortium Course Material

Real-tim

e OS

Memory Management

Semi-dynamic memory allocation Allocate statically and dispatch dynamically Explore memory requirements at design time

Task 1Task 1 Task 2Task 2 Task 3Task 3

allocate statically

partition into memory blocks

dispatch dynamically

OS Initializing OS running

Page 32: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

32SOC Consortium Course Material

Real-tim

e OS

Memory Management

Using Memory in uC/OS-II

OSMemCreate()

OSMemGet()

OSSemPut()

OSSemQuery()

Page 33: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

33SOC Consortium Course Material

Real-tim

e OS

Interrupt

Interrupt ControllerA device that accepts up to 22 interrupt sources from other pheripherals and signals ARM processor

Interrupt HandlerA routine executed whenever an interrupt occurs. It determines the interrupt source and calls corresponding ISR. Usually provided by OS.

Interrupt Service Routine (ISR)Service routines specific to each interrupt source. This is usually provided by hardware manufacturer.

Page 34: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

34SOC Consortium Course Material

Real-tim

e OS

Interrupt

Peripheral sends interrupt request to interrupt controller

Interrupt controller sends masked request to ARM

ARM executes interrupt handler to determine int. source

Peripheral BPeripheral B

InterruptController

InterruptController

Peripheral APeripheral A

ARMProcessor

ARMProcessor

bus

Page 35: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

35SOC Consortium Course Material

Real-tim

e OS

Interrupt

Default interrupt handler: uHALr_TrapIRQ()

1. Save all registers in APCS-compliant manner

2. Call StartIRQ(), if defined

3. Determine interrupt source, call the corresponding interrupt service routine (ISR)

4. Call FinishIRQ(), if defined

5. Return from interrupt

Page 36: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

36SOC Consortium Course Material

Real-tim

e OS

Interrupt

When an interrupt occurs, no further interrupt accepted

To achieve real-time, the period of interrupt disabled should be as short as possible

Do only necessary jobs in ISR, leave other jobs in a deferred Task

Page 37: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

37SOC Consortium Course Material

Real-tim

e OS

Starting C/OS-II

Initialize hardware & uC/OS-IIARMTargetInit(), OSInit()

Initialize hardware & uC/OS-IIARMTargetInit(), OSInit()

Allocate resourcesOSMemCreate(), OSMboxCreate(), …etc

Allocate resourcesOSMemCreate(), OSMboxCreate(), …etc

Create at least one taskOSTaskCreate()

Create at least one taskOSTaskCreate()

Start SchedulerOSStart()

Start SchedulerOSStart()

Page 38: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

38SOC Consortium Course Material

Real-tim

e OS

Porting Application

Necessary coding changes

variables

• use local variables for preemption

• use semaphore to protect global variables (resources)

data transfer

• arguments => mailbox/queue

memory allocation

• malloc() => OSMemCreate() OSMemGet()

Page 39: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

39SOC Consortium Course Material

Real-tim

e OS

Porting Application

assign task priorities

unique priority level in uC/OS-II

• only 56 levels available

• priority can be change dynamically

call OSTimeDly() in infinite loop task

• ensure lower priority task get a chance to run

MUST: if lower priority task is pending data from higher priority task

Page 40: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

40SOC Consortium Course Material

Real-tim

e OS

Priority Inversion

Task 1 (H)

Task 2 (M)

Task 3 (L)

Task 3 gets semaphore (2)

Task 1 preempts Task 3 (3)

Task 1 fails to get semaphore (5)

Task 2 preempts task 3 (7)

Task 3 resumes (9)

Task 3 releases the semaphore (11)

(1)

(4)

(6)

(8)

(12)

(10)

Priority Inversion

running

waiting

Page 41: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

41SOC Consortium Course Material

Real-tim

e OS

Priority Inversion

A long existing terminology, recently it becomes a buzzword due to “Pathfinder” on Mars (RTOS: VxWorks).

It refers to a lot of situation, may even be used intentionally to prevent starvation.

Unbounded priority inversion : Priority inversion occurs in unpredictable manners – this is what we care about.

Page 42: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

42SOC Consortium Course Material

Real-tim

e OS

Priority Inversion (continued)

Page 43: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

43SOC Consortium Course Material

Real-tim

e OS

Priority Inversion (continued)

The problem is that τ1 and τ3 share a common data structure, locking a mutex to control access to it. Thus, if τ3 locks the mutex, and τ1 tries to lock it, τ1 must wait. Every now and then, when τ3 has the mutex locked, and τ1 is waiting for it, τ2 runs because it has a higher priority than τ3. Thus, τ1 must wait for both τ3 and τ1 to complete and fails to reset the timer before it expires.

Page 44: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

44SOC Consortium Course Material

Real-tim

e OS

Priority Inversion (continued)

Solution : priority inheritance protocol and priority ceiling protocol.

Priority ceiling : raises the priority of any locking thread to the priority ceiling for each lock.

Priority inheritance : raises the priority of a thread only when holding a lock causes it to block a higher priority thread.

Page 45: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

45SOC Consortium Course Material

Real-tim

e OS

Driver

What is a Driver• A named entity that support basic I/O of a device

• A handler that manages interrupt from a device

• A description to a device, registered and managed by OS

• An abstraction layer for user application to access device easily

Page 46: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

46SOC Consortium Course Material

Real-tim

e OS

Driver

Original configuration of a System –

No additional Hardware

ApplicationApplication

OSOS

HALHAL

Development BoardDevelopment Board

Page 47: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

47SOC Consortium Course Material

Real-tim

e OS

Driver

New configuration of a System – additional Hardware added

We must add driver into system to provide easy access of new hardware

ApplicationApplication

OSOS

HALHAL

Development BoardDevelopment BoardNew HardwareNew Hardware

DriverDriver

Page 48: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

48SOC Consortium Course Material

Real-tim

e OS

Driver

High-level API• Interactive with OS• Interface to Application

Low-level Command• Direct access to hardware (usually written in assembly)

Data• Private data to driver

ApplicationApplication

OSOS

HALHAL

Development BoardDevelopment BoardNew HardwareNew Hardware

API

CommandData

Page 49: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

49SOC Consortium Course Material

Real-tim

e OS

Driver

Command Layer

• A set of functions/macros to manipulate hardware

• Interrupt handler

• Usually written in Assembly to get optimized speed

• Keep essential commands only

Common essential commands

• Read, Write, Init, Enable, Disable

Page 50: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

50SOC Consortium Course Material

Real-tim

e OS

Driver

API layer

• Interactive with OS to maintain resources

• Interactive with OS to acknowledge interrupt and task scheduling

• Provides unique interface to application to achieve device abstraction

• Encapsulate driver internal data

• Combine commands to provide various functionality

Data

• Driver Status

• Data Buffer

Page 51: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

51SOC Consortium Course Material

Real-tim

e OS

Driver

Why divide driver into two parts• Easy to replace underlying hardware

• Unique interface to applications

• Easy to adopt pre-written assembly code

Page 52: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

52SOC Consortium Course Material

Real-tim

e OS

Driver

API Example

Available commands:

• Read_Byte

• Write_Byte

• Init_Device

• Enable_Device

• Disable_Device

Set_serial_baudrate(int baud)

{

OS_Request_Device();

Disable_Device();

Write_Byte(CONF_BASE, baud);

Enable_Device();

OS_Release_Device();

}

Page 53: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

53SOC Consortium Course Material

Real-tim

e OS

Driver

Send_serial(char data[], int len)

{

OS_Request_Device();

for(I=0;I<len;I++)

Write_Byte(IO_BASE, data[I]);

OS_Release_Device();

}

Available commands:

• Read_Byte

• Write_Byte

• Init_Device

• Enable_Device

• Disable_Device

API Example

Page 54: SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course

54SOC Consortium Course Material

Real-tim

e OS

Driver Design Flow

startstart

Decide I/O interface(I/O address, I/O method)

Decide I/O interface(I/O address, I/O method)

Write Assembly codeto control hardware

Write Assembly codeto control hardware

Write API base on previouslyDeveloped commands

Write API base on previouslyDeveloped commands

Write interrupt handlerWrite interrupt handler

Pack assembly codeinto commands

Pack assembly codeinto commands

endend

Test assembly codeTest assembly code

Test DriverTest Driver