EE 319K Introduction to Embedded Systems

Slides:



Advertisements
Similar presentations
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
Advertisements

Computer Science Education
SE 292 (3:0) High Performance Computing L2: Basic Computer Organization R. Govindarajan
Button Input: On/off state change Living with the Lab Gerald Recktenwald Portland State University
Chapter 4 The Von Neumann Model
Designing Embedded Hardware 01. Introduction of Computer Architecture Yonam Institute of Digital Technology.
EE 319K Introduction to Embedded Systems
©2004 Brooks/Cole FIGURES FOR CHAPTER 12 REGISTERS AND COUNTERS Click the mouse to move to the next page. Use the ESC key to exit this chapter. This chapter.
11-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 11: Data Acquisition, Numerical Fixed-Point Calculations, Lab.
Microprocessors and Interfacing
13-1 Bard, Gerstlauer, Valvano, Erez, Telang, Yerraballi EE 319K Introduction to Embedded Systems Lecture 13: 2-D Arrays, Bitmaps, Sprites, Structs, Lab.
Registers of the 8086/ /2002 JNM.
Slides created by: Professor Ian G. Harris Efficient C Code  Your C program is not exactly what is executed  Machine code is specific to each ucontroller.
ARM versions ARM architecture has been extended over several versions.
Tutorial Essentially all the Blackfin instruction you need for all of ENCM511. The instructions are easy. Its knowing when to use them that is the difficult.
COMP3221: Microprocessors and Embedded Systems
Computer Architecture CS 215
Stored Program Architecture
AT94 Training 2001Slide 1 FPSLIC- Embedded MCU Core 8 Bit RISC MCU Industry’s Highest 8-bit Performance A Real 8-Bit RISC Architecture Low Power ( idle/power.
Passing by-value vs. by-reference in ARM by value C code equivalent assembly code int a;.section since a is not assigned an a:.skip initial.
THUMB Instructions: Branching and Data Processing
Digital System Design Using Verilog
Microprocessors.
The 8051 Microcontroller and Embedded Systems
Dr. Rabie A. Ramadan Al-Azhar University Lecture 3
4-1 EE 319K Introduction to Embedded Systems Lecture 4: Arithmetic overflow, Branches, Control Structures, Abstraction & Refinement Bard, Erez, Gerstlauer,
1-1 Bard, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Microcontrollers Lecture 1: Introduction, Embedded Systems, Product Life-Cycle, ARM Programming.
Interrupts, Low Power Modes and Timer A (Chapters 6 & 8)
ECE 353 Introduction to Microprocessor Systems Michael G. Morrow, P.E. Week 6.
8051 Core Specification.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 3: Input/output and co-processors dr.ir. A.C. Verschueren.
Bitwise Operators Pointers Functions Structs Interrupts (in C)
Computer System Overview
Recap – Our First Computer WR System Bus 8 ALU Carry output A B S C OUT F 8 8 To registers’ input/output and clock inputs Sequence of control signal combinations.
Choice for the rest of the semester New Plan –assembler and machine language –Operating systems Process scheduling Memory management File system Optimization.
11-1 Bard, Tiwari, Telang, Janapa Reddi, Gerstlauer, Valvano, Yerraballi EE 319K Introduction to Embedded Systems Lecture 11: Data Acquisition, Numerical.
7-1 EE 319K Introduction to Embedded Systems Lecture 7: Phase-locked-loop, Data structures, Finite state machines, Interrupts Bard, Gerstlauer, Valvano,
Computer Organization and Assembly language
ECE 424 Embedded Systems Design Lecture 8 & 9 & 10: Embedded Processor Architecture Chapter 5 Ning Weng.
C Programming for Embedded Systems. fig_06_00 Computer Layers Low-level hardware to high-level software (4GL: “domain-specific”, report-driven, e.g.)
6-1 EE 319K Introduction to Embedded Systems Lecture 6: SysTick Timer, Exam 1 Review Bard, Erez, Gerstlauer, Valvano, Yerraballi, Telang, Janapa Reddi,
ARM Core Architecture. Common ARM Cortex Core In the case of ARM-based microcontrollers a company named ARM Holdings designs the core and licenses it.
COE Computer Organization & Assembly Language Talal Alkharobi.
Machine Instruction Characteristics
MICROPROCESSOR INPUT/OUTPUT
CSE - Shiraz University1 Computer Architecture by: Behrooz Nasihatkon Computer Science & Engineering Department Shiraz University.
EE 319K Introduction to Embedded Systems
Ch.2 Intro. To Assembly Language Programming From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
EE 319K Introduction to Embedded Systems
Execution Architecture MTT CPU08 Core M CPU08 INTRODUCTION.
EE/CS-352: Embedded Microcontroller Systems Part V The 8051 Assembly Language Interrupts.
An Adder A Subtractor. A and B are the inputs of the adder/ subtractor R is the output of the adder/ subtractor F is the control to tell it to add or.
MICROPROCESSOR DETAILS 1 Updated April 2011 ©Paul R. Godin prgodin gmail.com.
1 Computer Architecture. 2 Basic Elements Processor Main Memory –volatile –referred to as real memory or primary memory I/O modules –secondary memory.
8085 INTERNAL ARCHITECTURE.  Upon completing this topic, you should be able to: State all the register available in the 8085 microprocessor and explain.
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
F28HS Hardware-Software Interface Lecture 11: ARM Assembly Language 5.
EE 319K Introduction to Embedded Systems
EE 319K Introduction to Embedded Systems
8086 Microprocessor.
Refer to Chapter 3 in the reference book
Introduction of microprocessor
Final Exam Review Department of Electrical and Computer Engineering
Chapter 8 Central Processing Unit
EE 319K Introduction to Embedded Systems
Chapter 6 Programming the basic computer
Introduction to Assembly Chapter 2
Presentation transcript:

EE 319K Introduction to Embedded Systems Lecture 6: SysTick Timer, Exam 1 Review

Agenda Recap Outline Subroutines and Parameter Passing AAPCS Convention Indexed Addressing and Pointers In C: Address of (&), Pointer to (*) Data Structures: Arrays, Strings Length: hardcoded vs. embedded vs. sentinel Array access: indexed vs. pointer arithmetic Functional Debugging Outline Exam 1 Review SysTick Timer

Exam 1 Syllabus Lectures 1, 2, 3, 4, 5 (till slide 10) Labs 1, 2, 3 Homework 0, 1, 2, 3, 4 Chapters 1-5 from text Some sections skipped (see HW4) Look at slides for reference Chapter 1, 2, 3 from Zyante online book Worksheets 1, 2, 3, 4, 5 (no arrays)

Exam 1 Review Definitions (define in 16 words or less, choose the word, or multiple choice) volatile, nonvolatile, RAM, ROM, port static efficiency, dynamic efficiency structured program, call graph, data flow graph basis, nibble, precision, kibibyte, mebibyte signed/unsigned, overflow, ceiling and floor, drop out bus, address bus, data bus memory-mapped, I/O mapped Harvard architecture, von Neumann, pipelining ALU, D flip flop, registers device driver, CISC, RISC friendly, mask, toggle Negative logic, positive logic, tristate, open collector

Exam 1 Review Number conversions - convert one format to another alternatives, binary bits signed decimal e.g., -56 unsigned decimal e.g., 200 binary e.g., 110010002 hexadecimal e.g., 0xC8

Exam 1 Review Cortex-M4 operation & instructions 8-bit addition, subtraction Yielding result, N, Z, V, C Operation of Thumbnail instructions Components in address space Subroutine linkage Stack operations Switch and LED interfaces C Programming Declarations, expressions, control flow Conditionals and Loops No Arrays on Exam 1 Instructions: LDR STR ADD ADDS SUB SUBS MUL UDIV SDIV ASR LSR LSL AND ORR EOR BNE BEQ BLO BLS BHS BHI BGT BGE BLE BLT RAM, ROM, I/O little endian What does PUSH do? How are registers stored “low number into low memory address” What does POP do? Show all 4 switch interfaces (negative logic/positive logic, hardware/software= internal/external pullup/down) Show all 4 LED interfaces (negative/positive logic, <8mA/>8mA)

Exam1 Review Simple programs (assembly and C) create global variables specify an I/O pin is an input specify an I/O pin is an output clear an I/O output pin to zero set an I/O output pin to one toggle an I/O output pin check if an I/O input pin is high or low add, sub, shift left, shift right, and, or, eor subroutine linkage Not on Exam Pointers in C Arrays, strings Call by reference Cycle by cycle execution

Practice Problems Book Lecture worksheets Previous year’s exams Hardware interfacing 4.12, 4.13, 4.15 Port initialization 4.5, 4.6, 4.7, 4.10, 4.11 Software (do both in assembly and C) 4.18, 4.19, 4.20, Lab 4.3, Lab 4.5, Lab 4.6, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10 Lecture worksheets Posted w/ lecture notes on class web site Previous year’s exams Homework 4 http://www.ece.utexas.edu/~valvano/Volume1

Switch Interface

LED interfaces

SysTick Timer Timer/Counter operation 24-bit counter decrements at bus clock frequency With 80 MHz bus clock, decrements every 12.5 ns Counting is from n  0 Setting n appropriately will make the counter a modulo n+1 counter. That is: next_value = (current_value-1) mod (n+1) Sequence: n,n-1,n-2,n-3… 2,1,0,n,n-1… Modulo (mod or %) operation gives the remainder: (a mod n) is the remainder when a is divided by n. When a < n, (a mod n) is simply a. When current_value reaches 0, then the next value is [(0-1)mod (n+1)] = -1 mod (n+1) = n That is the counter gets reset to max value n after it reaches 0.

SysTick Timer Initialization (4 steps) Step1: Clear ENABLE to stop counter Step2: Specify the RELOAD value Step3: Clear the counter via NVIC_ST_CURRENT_R Step4: Set CLK_SRC=1 and specify interrupt action via INTEN in NVIC_ST_CTRL_R RELOAD value is the value to load into the counter (reset) every time it hits zero, i.e. the n value from the previous slide

SysTick Timer 24-bit Countdown Timer SysTick_Init ; disable SysTick during setup LDR R1, =NVIC_ST_CTRL_R MOV R0, #0 ; Clear Enable STR R0, [R1] ; set reload to maximum reload value LDR R1, =NVIC_ST_RELOAD_R LDR R0, =0x00FFFFFF; ; Specify RELOAD value STR R0, [R1] ; reload at maximum ; writing any value to CURRENT clears it LDR R1, =NVIC_ST_CURRENT_R MOV R0, #0 STR R0, [R1] ; clear counter ; enable SysTick with core clock MOV R0, #0x0005 ; Enable but no interrupts (later) STR R0, [R1] ; ENABLE and CLK_SRC bits set BX LR 24-bit Countdown Timer You could make the Timer be a 16-bit timer by changing the RELOAD value to be 0x0000FFFF. We will see however there is no good reason to this.

SysTick Timer ;------------SysTick_Wait------------ ; Time delay using busy wait. ; Input: R0 delay parameter in units of the core clock ; 80 MHz(12.5 nsec each tick) ; Output: none ; Modifies: R1 SysTick_Wait SUB R0, R0, #1 ; delay-1 LDR R1, =NVIC_ST_RELOAD_R STR R0, [R1] ; time to wait LDR R1, =NVIC_ST_CURRENT_R STR R0, [R1] ; any value written to CURRENT clears LDR R1, =NVIC_ST_CTRL_R SysTick_Wait_loop LDR R0, [R1] ; read status ANDS R0, R0, #0x00010000 ; bit 16 is COUNT flag BEQ SysTick_Wait_loop ; repeat until flag set BX LR

SysTick Timer ;------------SysTick_Wait10ms------------ ; Call this routine to wait for R0*10 ms ; Time delay using busy wait. This assumes 80 MHz clock ; Input: R0 number of times to wait 10 ms before returning ; Output: none ; Modifies: R0 DELAY10MS EQU 800000 ; clock cycles in 10 ms SysTick_Wait10ms PUSH {R4, LR} ; save R4 and LR MOVS R4, R0 ; R4 = R0 = remainingWaits BEQ SysTick_Wait10ms_done ; R4 == 0, done SysTick_Wait10ms_loop LDR R0, =DELAY10MS ; R0 = DELAY10MS BL SysTick_Wait ; wait 10 ms SUBS R4, R4, #1 ; remainingWaits-- BHI SysTick_Wait10ms_loop ; if(R4>0), wait another 10 ms SysTick_Wait10ms_done POP {R4, PC}

SysTick Timer in C #define NVIC_ST_CTRL_R(*((volatile uint32_t *)0xE000E010)) #define NVIC_ST_RELOAD_R(*((volatile uint32_t *)0xE000E014)) #define NVIC_ST_CURRENT_R(*((volatile uint32_t *)0xE000E018)) void SysTick_Init(void){ NVIC_ST_CTRL_R = 0; // 1) disable SysTick during setup NVIC_ST_RELOAD_R = 0x00FFFFFF; // 2) maximum reload value NVIC_ST_CURRENT_R = 0; // 3) any write to CURRENT clears it NVIC_ST_CTRL_R = 0x00000005; // 4) enable SysTick with core clock } // The delay parameter is in units of the 80 MHz core clock(12.5 ns) void SysTick_Wait(uint32_t delay){ NVIC_ST_RELOAD_R = delay-1; // number of counts NVIC_ST_CURRENT_R = 0; // any value written to CURRENT clears while((NVIC_ST_CTRL_R&0x00010000)==0){ // wait for flag // Call this routine to wait for delay*10ms void SysTick_Wait10ms(uint32_t delay){ unsigned long i; for(i=0; i<delay; i++){ SysTick_Wait(800000); // wait 10ms Bard, Gerstlauer, Valvano, Yerraballi