Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 – μC/OS 2015/10/13/ 13 1.

Similar presentations


Presentation on theme: "Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 – μC/OS 2015/10/13/ 13 1."— Presentation transcript:

1 Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 – μC/OS 2015/10/13/ 13 1

2 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  Practice real-time programming on μC/OS-II. 2015/10/13/ 13 2

3 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  Host System  Windows XP  Build System  IAR Embedded Workbench  Target System  PTK development board (STM32F207)  Software  The source codes of μC/OS-II.  You can find all software on CSL Course Software.CSL Course Software 2015/10/13/ 13 3

4 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  μ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.official website  It is neither freeware nor open source code.  You are required to purchase a license for use in any commercial application. 2015/10/13/ 13 4

5 Lab 3 Department of Computer Science and Information Engineering National Taiwan University 2015/10/13/ 13 5 The definition of features in this application The main kernel The user tasks The functionalities of board support package (BSP) The functions of tick interrupt handler and context switch

6 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  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. 2015/10/13/ 13 6 Non-preemptive kernelPreemptive kernel

7 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  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. 2015/10/13/ 13 7

8 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  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(); } 2015/10/13/ 13 8 Find the highest ready task. Perform a context switch.

9 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  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); } 2015/10/13/ 13 9 Each task performs an infinite loop. 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. Start multitasking of μC/OS-II (and never return). function pointer of a user task the pointer to the task's top of stack the task's priority task-specified data Use OSTimeDly() or OSTimeDlyHMSM() to do time delay. It allows other tasks to execute.

10 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  Step 1: download the PTK_Examples, provided in Lab2.PTK_Examples  Step 2: download and extract the μC/OS-II source codes.μ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. 2015/10/13/ 13 10

11 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  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. 2015/10/13/ 13 11

12 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  Now, you are asked to 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 the message to LCD screen when a key button is pressed.  Other functionalities you can think.  Tips:  You need to initialize the LCD device by invoking “ ili9325_gui_config() ” in the function “ platform_board_init_hook() ”.  Be careful to the size of stack, do not give it too small! 2015/10/13/ 13 12

13 Lab 3 Department of Computer Science and Information Engineering National Taiwan University  Show that you can display the information of current temperature and luminous flux on LCD screen by pressing key buttons and your other ideas.  Please hand in your lab report to the FTP.  Server: 140.112.90.174  Username: csl2015  Password: csl2015HomeWork  Directory: lab3,4  Please use this format for filename: “G# Ver#”, where G# is your group id and Ver# is revision version number.  E.g., G1 Ver2 2015/10/13/ 13 13


Download ppt "Lab 3 Department of Computer Science and Information Engineering National Taiwan University Lab3 – μC/OS 2015/10/13/ 13 1."

Similar presentations


Ads by Google