Computer System Laboratory

Slides:



Advertisements
Similar presentations
Real-Time Library: RTX
Advertisements

Module R2 CS450. Next Week R1 is due next Friday ▫Bring manuals in a binder - make sure to have a cover page with group number, module, and date. You.
Chapter 14 80x86, Large Model Port Porting to real mode and for the large model –Real mode: 1Mb memory space (pointers in this model require 32 bits) –In.
MicroC/OS-II Embedded Systems Design and Implementation.
OS Implementation On SOPC Final Presentation
Real-Time Operating Systems Suzanne Rivoire November 20, 2002
Outline Introduction to MQX Initializing and starting MQX
ΜC/OS-III Tasks Akos Ledeczi EECE 354, Fall 2010 Vanderbilt University.
COMPUTER SYSTEM LABORATORY Lab10 - Sensor II. Lab 10 Experimental Goal Learn how to write programs on the PTK development board (STM32F207). 2013/11/19/
Kernel structure & Task management © P.J.Fondse April 2010.
The  C/OS-II Real-Time Operating System.  C/OS-II Real-time kernel –Portable, scalable, preemptive RTOS –Ported to over 90 processors Pronounced “microC.
FINAL MPX DELIVERABLE Due when you schedule your interview and presentation.
Lab 1 Department of Computer Science and Information Engineering National Taiwan University Lab1 - Sensor 2014/9/23/ 13 1.
SOC Consortium Course Material Real-time OS Speaker: 沈文中 April. 9, 2003 National Taiwan University Adopted from National Chiao- Tung University SOC Course.
Getting Started with the µC/OS-III Real Time Kernel Akos Ledeczi EECE 6354, Fall 2015 Vanderbilt University.
Processes and Threads CS550 Operating Systems. Processes and Threads These exist only at execution time They have fast state changes -> in memory and.
Processes & Threads Bahareh Goodarzi. Single & Multiple Thread of control code files data code files data.
Real-time OS Hao-yuan Chin Feb. 18, Institute of Electronics, National Chiao Tung University Real-time OS 1 Outline Introduction to RTOS Introduction.
Real-Time Systems Lecture 3 Teachers: Olle Bowallius Phone: Anders Västberg Phone:
ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte.
1 Computer Systems II Introduction to Processes. 2 First Two Major Computer System Evolution Steps Led to the idea of multiprogramming (multiple concurrent.
Multi-Tasking The Multi-Tasking service is offered by VxWorks with its real- time kernel “WIND”.
MicroC/OS-II S O T R.  MicroC/OS-II (commonly termed as µC/OS- II or uC/OS-II), is the acronym for Micro-Controller Operating Systems Version 2.  It.
Processes, Threads, and Process States. Programs and Processes  Program: an executable file (before/after compilation)  Process: an instance of a program.
Implementation of Embedded OS Lab4 Cortex-M3 Programming.
Implementation of Embedded OS Lab3 Porting μC/OS-II.
1 Process Description and Control Chapter 3. 2 Process A program in execution An instance of a program running on a computer The entity that can be assigned.
Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 – μC/OS 2015/10/13/ 13 1.
Introduction Contain two or more CPU share common memory and peripherals. Provide greater system throughput. Multiple processor executing simultaneous.
SOC Consortium Course Material SoC Design Laboratory Lab 8 Real-time OS - 1 Speaker: Yung-Chih Chen Advisor: Prof. Chun-Yao Wang November 17, 2003 Department.
Chapter 3: Kernel Structure 1. Objectives To understand what a task is. To learn how μ C/OS-II manages tasks. To know how an interrupt service routine.
Chapter 13: Porting μC/OS-II 1. Outline Requirements Hardware Software Tasks of Porting µC/OS-II OS_CPU_C.H OS_CPU_C.C OS_CPU_A.ASM Testing a port 2.
Chapter 3: Kernel Structure 1. Objectives To understand what a task is. To learn how μ C/OS-II manages tasks. To know how an interrupt service routine.
Chapter 1: Getting Started with μC/OS-II 1. kernel Introduction 2 LinuxμC/OS-II Task (process) kernel Device driver User mode (0-3G) (Kernel mode) 3G-4G.
Outlines  Introduction  Kernel Structure  Porting.
Chapter 5 Time Management use clock tick to provide a periodic interrupt to keep track of time delays and timeouts The frequency of the clock tick depends.
Lab 5 Department of Computer Science and Information Engineering National Taiwan University Lab5 – μC/OS 2016/5/31/ 13 1.
Computer System Structures Interrupts
Introduction In this lab , we will learn
REAL TIME OPERATING SYSTEM
Chapter 3: Kernel Structure
Chapter 1: Getting Started with μC/OS-II
REAL-TIME OPERATING SYSTEMS
Lab 1: Using NIOS II processor for code execution on FPGA
Process concept.
Microprocesors, Advanced What You Need to Know About RTOSes
Chapter 13: Porting μC/OS-II
Advanced Operating Systems CIS 720
CS4101 Introduction to Embedded Systems Lab 8: Tower System
CS501 Advanced Computer Architecture
Chapter 4: Task Management
Process Management Process Concept Why only the global variables?
CS 6560: Operating Systems Design
Computer System Laboratory
Implementation of Embedded OS
Implementation of Embedded OS
Lesson Objectives Aims Key Words
Interrupt and Time Management in µC/OS-III
Computer System Laboratory
Computer System Laboratory
Getting Started with the µC/OS-III Real Time Kernel
Computer System Laboratory
Introduction What is an operating system bootstrap
Scheduling in µC/OS-III
Process Description and Control
Process Description and Control
EE 472 – Embedded Systems Dr. Shwetak Patel.
Computer System Laboratory
Threads CSE 2431: Introduction to Operating Systems
Akos Ledeczi EECE 6354, Fall 2017 Vanderbilt University
Presentation transcript:

Computer System Laboratory Lab4 – μC/OS 2016/10/18 / 13

Experimental Goal Practice real-time programming on μC/OS-II. 2016/10/18 / 13

Environment Host System Build System Target System Software Windows XP IAR Embedded Workbench Target System PTK development board (STM32F207) Software The source codes of μC/OS-II. You can find all software on HERE. 2016/10/18 / 13

Introduction to μC/OS-II μC/OS-II is a real-time operating system with the following features: Highly portable It is written in ANSI C, with target-specific code written in assembly language. It support various platforms, such as x86, MIPS, ARM. ROMable You can embed μC/OS-II as part of a product with the proper tool chain. Very scalable Simply specify which features to use through #define constant. Preemptive real-time It always runs the highest priority task that is ready. Multitasking It can manage up to 64 tasks, including 8 reserved tasks for μC/OS-II. The source codes can be downloaded from the official website freely. It is neither freeware nor open source code. You are required to purchase a license for use in any commercial application. 2016/10/18 / 13

File Structure in μC/OS-II The user tasks The main kernel The definition of features in this application The functions of tick interrupt handler and context switch The functionalities of board support package (BSP) 2016/10/18 / 13

Task Management in μC/OS-II It is a multitasking and preemptive kernel with a priority-driven real-time scheduling. Nested interrupts could go up to 256 levels. There are 64 priorities, 0 is the highest, and 63 is the lowest. Each task must have a unique priority in the application. μC/OS-III supports more tasks having the same priority with round-robin scheduling, while it is not supported in μC/OS-II. Non-preemptive kernel Preemptive kernel 2016/10/18 / 13

Task Control Blocks A task control block (TCB) is a data structure used to maintain the state of a task when it is preempted. All valid TCB’s are doubly linked. Free TCB’s are linked in a free list. The contents of a TCB is saved/restored when a context switch occurs. The stack, priority, time delay, etc. of a task. CPU registers are stored in the stack rather than in the TCB. 2016/10/18 / 13

Task Scheduler If there is no user task ready, it will start the idle task (the priority is 63). In os_core.c: void OS_Sched (void) { ... OS_ENTER_CRITICAL(); if (OSIntNesting == 0u) { if (OSLockNesting == 0u) { OS_SchedNew(); OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy]; if (OSPrioHighRdy != OSPrioCur) { #if OS_TASK_PROFILE_EN > 0u OSTCBHighRdy->OSTCBCtxSwCtr++; #endif OSCtxSwCtr++; OS_TASK_SW(); } OS_EXIT_CRITICAL(); Find the highest ready task. Perform a context switch. 2016/10/18 / 13

A Simple μC/OS-II Code app.c: void main(void) { OSInit(); OSTaskCreate( ((void (*)(void *)) App_TaskStart, (void *) 0, (OS_STK *) &App_TaskStartStk[APP_TASK_START_STK_SIZE - 1], (INT8U) APP_TASK_START_PRIO); OSStart(); } void App_TaskStart(void *pdata) { for (;;) { /* do something ... */ OSTimeDly(100); Initialize task ready list, priority table, TCBs, and free pool. Use OSTaskCreate() or OSTaskCreateExt() to create a task. Tasks become “ready” after they are created. function pointer of a user task task-specified data the pointer to the task's top of stack the task's priority Start multitasking of μC/OS-II (and never return). Each task performs an infinite loop. Use OSTimeDly() or OSTimeDlyHMSM() to do time delay. It allows other tasks to execute. 2016/10/18 / 13

Setting up Examples Step 1: download the PTK_Examples, provided in Lab 3. Step 2: download and extract the μC/OS-II source codes. Step 3: copy the folder Software in Micrium to PTK_Examples/ePBB/Libraries/OS_uCOS-II/Micrium-V29x. Step 4: connect the target system STM32F207 to Windows XP. 2016/10/18 / 13

Building and Running the UART Example Step 1: open the serial console. Please set baud rate to 115200bps. Step 2: open the following workspace in IAR Embedded Workbench IDE. PTK_Examples/ePBB/Applications/Projects/PTK-STM32F207/EWARM- V6/OS_uCOS-II/base_uart/demo.eww Step 3: compile the project and download the program to the target system. Step 4: click the button “Go” or press the key “F5” to continue the execution. You will see the message “Hello World!!!” on the serial console. 2016/10/18 / 13

OSTime A counter recording the number of OS-ticks since the system’s startup. OS_TICKS_PER_SEC ticks per second. Originally configured to be 1000. typedef unsigned int INT32U 0~4294967295 Other than %d, You may use %u in the format string for printing. 2016/10/18 / 13

Exercise Create several tasks in μC/OS-II to complete the followings: Regularly read the value of temperature. Regularly read the value of luminous flux. Set up a key handler to display message to LCD screen when a key button is pressed. Tips: You need to initialize the LCD device by invoking “ili9325_gui_config()” in the function “platform_board_init_hook()”. OSTimeDly(#OS-tick) v.s. VK_DELAY_MS(#ms); OSTimeDlyHMSM(H, M, S, M) If confronted by the problem of displaying things on LCD screen, try to adjust the size of stack of a task. 2016/10/18 / 13

Lab Requirement Show that you can display the information of current temperature and luminous flux on LCD screen by pressing key buttons. According to OSTimeDly() and OSTime, calculate the amount of time between each change of temperature (and/or luminous flux) while displaying it on LCD screen. See how you can make the resolution higher and explain it in the report. (Hint: you may read the implementation of some functions in os_time.c) 2016/10/18 / 13