Engineering Design Lab exercise 2 Nios II Processor Software Development

Size: px
Start display at page:

Download "Engineering Design Lab exercise 2 Nios II Processor Software Development"

Transcription

1 Engineering Design Lab exercise 2 Nios II Processor Software Development Note: To do this lab exercise you need the textbook and it s CD. Part 1 Designing systems with embedded processors requires both hardware and software design elements. In this lab you will follow Tutorial III of the text book (Chapter 16) and step through the software development for a Nios II processor executing on the UP3 board. Follow the steps in Section 16.2 of the text book and start a Nios II software project Follow the steps in Section 16.4 of the text book and generate the Nios II system library Follow the steps in Section 16.6 of the text book and write the Hello World C program. Instead of C program given in Figure 16.8 use the following simplified version: #include rpds_software.h int main (void) { printf( Hello world\n ); return (0); Follow the steps in Section 16.7 and download the Nios II hardware and software projects. Follow the steps in Section 16.8 of the text book and execute the software. Part 2 In many occasions (probably in some of your projects), the Nios processor should be able to communicate with components such as LEDs, dipswitches, LCD display, SRAM, Flash memory and etc. Peripheral devices are memory mapped in Nios II. That is, each device is mapped to a portion of memory. The device s data and control registers can be accessed by writing to (or reading from) the corresponding memory locations. The system.h file indicates which devices are available for a particular Nios II processor implementation. In fact, the system.h file describes each peripheral in the system and provides the following details: The hardware configuration of the peripheral The base address The IRQ (interrupt request) priority (if any) A symbolic name for the peripheral

2 Accessing and communicating with Nios II peripherals can be accomplished in three general methods: direct register access, hardware abstraction layer (HAL) interface and standard ANSI C library functions. In this lab we review HAL approach. The HAL provides the C-language macros IORD and IOWR that expand to the appropriate assembly instructions. These macros should be used to access device registers. See the following table for a short explanation on IORD and IOWR. In the following we use HAL instructions to access and communicate with dipswitches, LEDs, LCD and pushbuttons on the UP3 board. LED and Dipswitches There are four dipswitches on the UP3 board. The base address for dipswitches is SWITCHES_BASE which is defined in system.h. The status of each switch is represented by one of the four least significant bits of the content of SWITCHES-BASE. There are four user definable LEDs on UP3 board. Base address for LED is LED_BASE which is defined in system.h. The LEDs can be turned on and off by writing to the four least significant bits of the content of LED_BASE. Edit your c file and enter the following code. It will read the status of dipswitches and turn the LEDs on or off accordingly. #include "rpds_software.h"; int main(void){ unsigned char led_val, swi; while(1){ swi = IORD(SWITCHES_BASE,0); led_val = swi; IOWR(LEDS_BASE,0, (led_val & 0xF)); return(0); Build the project and execute it on the Nios. Change position of dipswitches and make sure the LEDs reflect the status of dipswitches.

3 LCD In order to use the LCD, it should be first initialized. This can be done by calling the lcd_init function. To write a message on LCD the following instruction should be used IOWR( LCD_BASE, LCD_WR_DATA_REG, MSSG) where MSSG is a character or part of a character string. Add the following two lines to your rpds_software.h header file: # define LCD_WR_COMMAND_REG 0 # define LCD_WR_DATA_REG 2 Modify your C code to the following: #include "rpds_software.h"; void lcd_init( void ); int main(void){ int i; char message[18]="coe 4OI5, Lab 02"; lcd_init(); for (i=0; i<17; i++){ IOWR(LCD_BASE, LCD_WR_DATA_REG, message[i]); return(0); void lcd_init( void ) { /* Set Function Code Four Times -- 8-bit, 2 line, 5x7 mode */ usleep(4100); /* Wait 4.1 ms */ /* Wait 100 us */ usleep(5000); /* Wait 5.0 ms */ /* Set Display to OFF */ IOWR( LCD_BASE, LCD_WR_COMMAND_REG, 0x08 ); /* Set Display to ON */ IOWR( LCD_BASE, LCD_WR_COMMAND_REG, 0x0C ); /* Set Entry Mode -- Cursor increment, display doesn't shift */ IOWR( LCD_BASE, LCD_WR_COMMAND_REG, 0x06 ); /* Set the cursor to the home position */ IOWR( LCD_BASE, LCD_WR_COMMAND_REG, 0x02 );

4 usleep(2000); /* Clear the display */ IOWR( LCD_BASE, LCD_WR_COMMAND_REG, 0x01 ); usleep(2000); Build your project and execute it on Nios II processor. Pushbuttons and Interrupts In the Nios reference design used in this lab, the four pushbuttons on the UP3 board can interrupt the Nios CPU. In order to service the interrupt, an interrupt service routine (ISR) should be written and we also have to tell the CPU that this ISR correspond to which interrupt source. Altera has provided the following instruction for doing this: int alt_irq_register (alt_u32 id, void* context, void (*isr)(void*, alt_u32)). This function is part of the sys/alt_irq.h header file, so you have to include this header file if you are using this function. The alt_irq_register() function assigns an ISR to a source of interrupt. The function has the following arguments: id is the hardware interrupt number for the device, as defined in system.h. Interrupt priority corresponds inversely to the IRQ number. Therefore, IRQ0 represents the highest priority interrupt and IRQ31 is the lowest. context is a pointer used to pass context-specific information to the ISR, and can point to any ISR-specific information. The context value is opaque to the HAL; it is provided entirely for the benefit of the user-defined ISR. isr is a pointer to the function that is called in response to IRQ number id. The two input arguments provided to this function are the context pointer and id. Registering a null pointer for isr results in the interrupt being disabled. The pushbuttons on the UP3 are represented by a 4-bit parallel I/O (PIO) peripheral called buttons in the Nios II processor design you are using for this lab experiment. Macros are included in the altera_avalon_pio_regs.h file that read and write from the control and data registers in PIO. Since there are 4 pushbuttons, we have to read the content of a register called edgecapture register to determine which pushbutton was pressed. Bit n in the edgecapture register is set to 1 whenever an edge is detected on input port n. An Avalon macro can read the edgecapture register to determine if an edge has occurred on any of the PIO input ports. You have to clear edgecapture after reading it. The type of edge(s) to detect is fixed in hardware at system generation time. The edgecapture register only exists when the hardware is configured to capture edges. If the core is not configured to capture edges, reading from edgecapture returns an undefined value, and writing to edgecapture has no effect.

5 Let s assume we have written an ISR for pushbutton. Let s call it handle_button_interrupts (we will write this function shortly). We have to assign this ISR to the pushbuttons. This is done like this: alt_irq_register(buttons_irq, edge_capture_ptr, handle_button_interrupts); Add the following two lines to your rpds_software.h header file: #include "sys/alt_irq.h" #include "altera_avalon_pio_regs.h" Modify your C code as follows: #include rpds_software.h static void handle_button_interrupts(void* context, alt_u32 id); /* Declar e a global variable to hold the edge capture value. */ volatile int edge_capture; int main(void){ /* Recast the edge_capture pointer to match the alt_irq_register() function prototype. */ void* edge_capture_ptr = (void*) &edge_capture; /* Enable all 4 button interrupts. */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTONS_BASE, 0xf); /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE, 0x0); /* Register the ISR. */ alt_irq_register( BUTTONS_IRQ, edge_capture_ptr, handle_button_interrupts);

6 static void handle_button_interrupts(void* context, alt_u32 id) { /* cast the context pointer to an integer pointer. */ volatile int* edge_capture_ptr = (volatile int*) context; /* * Read the edge capture register on the button PIO. * Store value. */ *edge_capture_ptr= IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE); /* Write to the edge capture register to reset it. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE, 0); /* reset interrupt capability for the Button PIO. */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTONS_BASE, 0xf); if ( *edge_capture_ptr == 1) printf("hello world\n"); if ( *edge_capture_ptr == 4) { IOWR(LEDS_BASE,0, (1 & 0xF)); usleep( ); IOWR(LEDS_BASE,0, (0 & 0xF)); This ISR prints hello world when one of the pushbuttons is pressed and turns on one of the LEDs for micro seconds (1 second) when one of the other pushbuttons is pressed. Build your project and run it on Nios processor. Press the first pushbuttons. You should see hello world on your monitor. Press the last one. LED will come on for 1 second.

Tutorial III: Nios II Processor Software Development

Tutorial III: Nios II Processor Software Development CHAPTER 16 Tutorial III: Nios II Processor Software Development The Nios II IDE tool compiles C/C++ code for the Nios II processor and provides an integrated software development environment for Nios II

More information

Embedded Systems. Input/Output Programming

Embedded Systems. Input/Output Programming Embedded Systems Input/Output Programming Dr. Jeff Jackson Lecture 11-1 Outline External I/O devices I/O software Polled waiting loops Interrupt-driven I/O Direct memory access (DMA) Synchronization, transfer

More information

Objective: Create an interface to the LCD display, internal timer functions, and interface with the SDRAM memory as well as on chip memory.

Objective: Create an interface to the LCD display, internal timer functions, and interface with the SDRAM memory as well as on chip memory. Lab 2 LCD display and external memory interfacing Objective: Create an interface to the LCD display, internal timer functions, and interface with the SDRAM memory as well as on chip memory. Topics Covered:

More information

NIOS Interrupts. Interrupts

NIOS Interrupts. Interrupts Interrupts 2 Options for dealing with interrupts Internal Interrupt Controller IIC External Interrupt Controller - EIC The IIC has two versions Legacy API Enhanced API 2 tj On an interrupt or exception

More information

Using HAL Device Drivers with the Altera Monitor Program. 1 Introduction. For Quartus II 13.1

Using HAL Device Drivers with the Altera Monitor Program. 1 Introduction. For Quartus II 13.1 Using HAL Device Drivers with the Altera Monitor Program For Quartus II 13.1 1 Introduction This tutorial shows how to develop C programs that use device driver functions for the I/O devices in a Nios

More information

9. PIO Core. Core Overview. Functional Description

9. PIO Core. Core Overview. Functional Description 9. PIO Core NII51007-9.0.0 Core Overview The parallel input/output (PIO) core with Avalon interface provides a memory-mapped interface between an Avalon Memory-Mapped (Avalon-MM) slave port and general-purpose

More information

Upgrading Nios Processor Systems to the Nios II Processor

Upgrading Nios Processor Systems to the Nios II Processor Upgrading Nios Processor Systems to the Nios II Processor July 2006 - ver 1.1 Application Note 350 Overview Audience The purpose of this document is to guide you through the process of migrating to the

More information

Section III. Advanced Programming Topics

Section III. Advanced Programming Topics Section III. Advanced Programming Topics This section provides inormation about several advanced embedded programming topics. It includes the ollowing chapters: Chapter 8, Exception Handling Chapter 9,

More information

Tutorial of Interfacing with RS232 UART

Tutorial of Interfacing with RS232 UART Tutorial of Interfacing with RS232 UART Kwan Yin Lau (group 3) Feb 7, 2014 Introduction This tutorial will demonstrate how to interface the RS232 UART port on the Altera DE2 board in order to send and

More information

SISTEMI EMBEDDED. (Software) Exceptions and (Hardware) Interrupts. Federico Baronti Last version:

SISTEMI EMBEDDED. (Software) Exceptions and (Hardware) Interrupts. Federico Baronti Last version: SISTEMI EMBEDDED (Software) Exceptions and (Hardware) Interrupts Federico Baronti Last version: 20160410 Exceptions and Interrupts Exception: a transfer of control away from a program s normal flow of

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20160302 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

ECE-6170 Embedded Systems Laboratory Exercise 3

ECE-6170 Embedded Systems Laboratory Exercise 3 ECE-6170 Embedded Systems Laboratory Exercise 3 The purpose of this exercise is to learn how to connect simple input and output devices to an FPGA chip and use the Nios II processor to interface with parallel

More information

Figure 1. Software interface generated by Nios IDE - 1 -

Figure 1. Software interface generated by Nios IDE - 1 - ECE 332L Microprocessors Lab (Fall 2007) Lab 6 Continue (Week 9) Objective: In this lab, you will continue the exploration of interrupts in C using a portion of the Hardware Abstraction Layer (HAL) support

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20170307 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

SISTEMI EMBEDDED AA 2012/2013. SOPC Nios II Interval Timer Core

SISTEMI EMBEDDED AA 2012/2013. SOPC Nios II Interval Timer Core SISTEMI EMBEDDED AA 2012/2013 SOPC Nios II Interval Timer Core DE2 Basic Computer Interval timer core (1) Hardware configuration: 32-bit or 64-bit internal counter Two count modes: count down once and

More information

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version:

SISTEMI EMBEDDED. The C Pre-processor Fixed-size integer types Bit Manipulation. Federico Baronti Last version: SISTEMI EMBEDDED The C Pre-processor Fixed-size integer types Bit Manipulation Federico Baronti Last version: 20180312 The C PreProcessor CPP (1) CPP is a program called by the compiler that processes

More information

Designing with Nios II. Exercise Manual

Designing with Nios II. Exercise Manual Designing with Nios II Exercise Manual Lab 1 Creating a Nios II System 2 Hardware set up requirements: ByteBlaster, ByteBlaster II, Byte Blaster MV, or USB-Blaster connected between computer and ByteBlaster

More information

CMPE-013/L. Introduction to C Programming

CMPE-013/L. Introduction to C Programming CMPE-013/L Introduction to C Programming Bryant Wenborg Mairs Spring 2014 What we will cover in 13/L Embedded C on a microcontroller Specific issues with microcontrollers Peripheral usage Reading documentation

More information

Computer Labs: I/O and Interrupts

Computer Labs: I/O and Interrupts Computer Labs: I/O and Interrupts 2 o MIEIC Pedro F. Souto (pfs@fe.up.pt) October 3, 2010 I/O Operation I/O devices are the interface between the computer and its environment Most of the time, the processor

More information

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management.

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management. Nios II MPU Usage March 2010 AN-540-1.0 Introduction This application note covers the basic features of the Nios II processor s optional memory protection unit (MPU), describing how to use it without the

More information

Using peripherals on the MSP430 (if time)

Using peripherals on the MSP430 (if time) Today's Plan: Announcements Review Activities 1&2 Programming in C Using peripherals on the MSP430 (if time) Activity 3 Announcements: Midterm coming on Feb 9. Will need to write simple programs in C and/or

More information

real-time kernel documentation

real-time kernel documentation version 1.1 real-time kernel documentation Introduction This document explains the inner workings of the Helium real-time kernel. It is not meant to be a user s guide. Instead, this document explains overall

More information

Lecture test next week

Lecture test next week Lecture test next week Write a short program in Assembler doing. You will be given the print outs of all the assembler programs from the manual You can bring any notes you want Today: Announcements General

More information

Section IV. Reference Material

Section IV. Reference Material Section IV. Reference Material This section provides a comprehensive reference to the Nios II hardware abstraction layer (HAL) application program interface (API) and the utilities, scripts, and settings

More information

EE Embedded Systems Design. Lessons Exceptions - Resets and Interrupts

EE Embedded Systems Design. Lessons Exceptions - Resets and Interrupts EE4800-03 Embedded Systems Design Lessons 7-10 - Exceptions - Resets and Interrupts 1 - Exceptions - Resets and Interrupts Polling vs. Interrupts Exceptions: Resets and Interrupts 68HC12 Exceptions Resets

More information

Computer Systems Lecture 9

Computer Systems Lecture 9 Computer Systems Lecture 9 CPU Registers in x86 CPU status flags EFLAG: The Flag register holds the CPU status flags The status flags are separate bits in EFLAG where information on important conditions

More information

What happens when an HC12 gets in unmasked interrupt:

What happens when an HC12 gets in unmasked interrupt: What happens when an HC12 gets in unmasked interrupt: 1. Completes current instruction 2. Clears instruction queue 3. Calculates return address 4. Stacks return address and contents of CPU registers 5.

More information

LatticeMico32 GPIO. Version. Features

LatticeMico32 GPIO. Version. Features The LatticeMico32 GPIO is a general-purpose input/output core that provides a memory-mapped interface between a WISHBONE slave port and generalpurpose I/O ports. The I/O ports can connect to either on-chip

More information

SISTEMI EMBEDDED AA 2014/2015

SISTEMI EMBEDDED AA 2014/2015 SISTEMI EMBEDDED AA 2014/2015 (So2ware) Excep;ons and (Hardware) Interrupts Federico Baron; Example of a Nios II System External Interrupt Controller Nios II Processor Core Architecture Reset signals Excep;ons

More information

C Language Programming

C Language Programming Experiment 2 C Language Programming During the infancy years of microprocessor based systems, programs were developed using assemblers and fused into the EPROMs. There used to be no mechanism to find what

More information

This resource describes how to program the myrio in C to perform timer interrupts.

This resource describes how to program the myrio in C to perform timer interrupts. Resource 07 Timer interrupts This resource describes how to program the myrio in C to perform timer interrupts. C.07.1 Main thread: background Initializing the timer interrupt is similar to initializing

More information

Using programmed I/O on the M16C; and Writing an Interrupt Service Routine (ISR)

Using programmed I/O on the M16C; and Writing an Interrupt Service Routine (ISR) Tutorial 2 Basic M16C Programming 1 Introduction The goal for Tutorial 2 is to take a more in-depth look at the sample program from the previous tutorial, and make use of it as a foundation for writing

More information

Gabriel Hugh Elkaim Spring CMPE 013/L: C Programming. CMPE 013/L: C Programming

Gabriel Hugh Elkaim Spring CMPE 013/L: C Programming. CMPE 013/L: C Programming 1 2 3 4 CMPE 013/L Pointers and Functions Gabriel Hugh Elkaim Spring 2013 Pointers and Functions Passing Pointers to Functions Normally, functions operate on copies of the data passed to them (pass by

More information

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I.

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I. University of Texas at El Paso Electrical and Computer Engineering Department EE 3176 Laboratory for Microprocessors I Fall 2016 LAB 04 Timer Interrupts Goals: Learn about Timer Interrupts. Learn how to

More information

EL6483: Brief Overview of C Programming Language

EL6483: Brief Overview of C Programming Language EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions

More information

Low-Level C Programming

Low-Level C Programming Low-Level C Programming CSEE W4840 Prof. Stephen A. Edwards Columbia University Spring 2008 Low-Level C Programming p. Goals Function is correct Source code is concise, readable, maintainable Time-critical

More information

FPGA4U HowTo. 1 Introduction. 2 Minimum requirements. Recommended system. Operating systems

FPGA4U HowTo. 1 Introduction. 2 Minimum requirements. Recommended system. Operating systems FPGA4U HowTo 1 Introduction This document briefly describes how to install Altera s Softwares on your own personal computer, for use with our mini project. At the end of this tutorial, we expect that you

More information

Special Topics for Embedded Programming

Special Topics for Embedded Programming 1 Special Topics for Embedded Programming ETH Zurich Fall 2018 Reference: The C Programming Language by Kernighan & Ritchie 1 2 Overview of Topics Microprocessor architecture Peripherals Registers Memory

More information

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

CprE 288 Introduction to Embedded Systems Exam 1 Review.  1 CprE 288 Introduction to Embedded Systems Exam 1 Review http://class.ece.iastate.edu/cpre288 1 Overview of Today s Lecture Announcements Exam 1 Review http://class.ece.iastate.edu/cpre288 2 Announcements

More information

ET156 Introduction to C Programming

ET156 Introduction to C Programming ET156 Introduction to C Programming Unit 1 INTRODUCTION TO C PROGRAMMING: THE C COMPILER, VARIABLES, MEMORY, INPUT, AND OUTPUT Instructor : Stan Kong Email : skong@itt tech.edutech.edu Figure 1.3 Components

More information

Chapter 10. Programming in C

Chapter 10. Programming in C Chapter 10 Programming in C Lesson 05 Functions in C C program Consists of three parts preprocessor directives macros main function functions 3 Function Each has a name (for identity ID) May have the arguments

More information

CprE 288 Introduction to Embedded Systems

CprE 288 Introduction to Embedded Systems CprE 288 Introduction to Embedded Systems Instructors: Dr. Phillip Jones http://class.ece.iastate.edu/cpre288 1 Overview Announcements Interrupts Textbook reading: Section 2.4 Chapter 5 (pages 261 306)

More information

Using NIOS 2 Embedded Design Suite 10

Using NIOS 2 Embedded Design Suite 10 Quick Start Guide Embedded System Course LAP IC EPFL 2010 Version 0.1 (Preliminary) Cagri Onal, René Beuchat 1 Installation and documentation Main information in this document has been found on: http:\\www.altera.com

More information

Instantiating the Core in SOPC Builder on page 2 2 Device Support on page 2 3 Software Programming Model on page 2 3

Instantiating the Core in SOPC Builder on page 2 2 Device Support on page 2 3 Software Programming Model on page 2 3 ctl Avalon-MM Slave Port ide Avalon-MM Slave Port 2. CompactFlash Core QII55005-9.1.0 Core Overview Functional Description The CompactFlash core allows you to connect SOPC Builder systems to CompactFlash

More information

Single thread Scheduler All processes called once each sample

Single thread Scheduler All processes called once each sample Single thread Scheduler All processes called once each sample void main(void) { init_routines(); done = 0; while (!done) { perform_process1(); // Highest priority process perform_process2(); perform_process3();//

More information

Real Time Embedded Systems. Lecture 10 January 31, 2012 Interrupts

Real Time Embedded Systems.  Lecture 10 January 31, 2012 Interrupts Interrupts Real Time Embedded Systems www.atomicrhubarb.com/embedded Lecture 10 January 31, 2012 Interrupts Section Topic Where in the books Catsoulis chapter 1 (pg 10-12) Simon chapter4 Zilog UM197 (ZNEO

More information

Simple benchmarks. Arithmetic Lessons

Simple benchmarks. Arithmetic Lessons Goals Like Writing English Low-Level C Programming CSEE W4840 Prof. Stephen A. Edwards Columbia University Spring 2007 Function is correct Source code is concise, readable, maintainable Time-critical sections

More information

mith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut

mith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut mith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut dthiebaut@smithedu Outline A Few Words about HW 8 Finish the Input Port Lab! Revisiting Homework

More information

C Tutorial: Part 1. Dr. Charalampos C. Tsimenidis. Newcastle University School of Electrical and Electronic Engineering.

C Tutorial: Part 1. Dr. Charalampos C. Tsimenidis. Newcastle University School of Electrical and Electronic Engineering. C Tutorial: Part 1 Dr. Charalampos C. Tsimenidis Newcastle University School of Electrical and Electronic Engineering September 2013 Why C? Small (32 keywords) Stable Existing code base Fast Low-level

More information

Interrupt vectors for the 68HC912B32. The interrupt vectors for the MC9S12DP256 are located in memory from 0xFF80 to 0xFFFF.

Interrupt vectors for the 68HC912B32. The interrupt vectors for the MC9S12DP256 are located in memory from 0xFF80 to 0xFFFF. Interrupts The Real Time Interrupt Interrupt vectors for the 68HC912B32 The interrupt vectors for the MC9S12DP256 are located in memory from 0xFF80 to 0xFFFF. These vectors are programmed into Flash EEPROM

More information

CprE 288 Spring 2014 Homework 5 Due Fri. Feb. 21

CprE 288 Spring 2014 Homework 5 Due Fri. Feb. 21 CprE 288 Spring 2014 Homework 5 Due Fri. Feb. 21 Notes: Homework answers must be typed using a word editor. Homework is individual work. Adhere to the University s policy relating to the integrity of scholarship.

More information

Lecture 2: C Programming Basic

Lecture 2: C Programming Basic ECE342 Introduction to Embedded Systems Lecture 2: C Programming Basic Ying Tang Electrical and Computer Engineering Rowan University 1 Facts about C C was developed in 1972 in order to write the UNIX

More information

EE475 Lab #3 Fall Memory Placement and Interrupts

EE475 Lab #3 Fall Memory Placement and Interrupts EE475 Lab #3 Fall 2005 Memory Placement and Interrupts In this lab you will investigate the way in which the CodeWarrior compiler and linker interact to place your compiled code and data in the memory

More information

Outline. Welcome to C Syntax Variables Operations Function calls Control statement More data type Timer examples

Outline. Welcome to C Syntax Variables Operations Function calls Control statement More data type Timer examples C"for"PIC" E155" Outline Welcome to C Syntax Variables Operations Function calls Control statement More data type Timer examples 2 Welcome to C Invented in 1973 by Dennis Ritchie of Bell Labs Its popularity

More information

EE4390 Microprocessors

EE4390 Microprocessors EE4390 Microprocessors Lessons 23, 24 - Exceptions - Resets and Interrupts Revised: Aug 1, 2003 1 - Exceptions - Resets and Interrupts Polling vs. Interrupts Exceptions: Resets and Interrupts 68HC12 Exceptions

More information

Experiment 3. Interrupts. Hazem Selmi, Ahmad Khayyat

Experiment 3. Interrupts. Hazem Selmi, Ahmad Khayyat Experiment 3 Interrupts Hazem Selmi, Ahmad Khayyat Version 162, 24 February 2017 Table of Contents 1. Objectives........................................................................................

More information

UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013

UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013 Introduction Reading Concepts UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE13/L: INTRODUCTION TO PROGRAMMING IN C SPRING 2013 Lab 2 Bouncing LEDs In this lab, you will

More information

C Routines for Setting Up the AIC on the TMS320C5x EVM

C Routines for Setting Up the AIC on the TMS320C5x EVM TMS320 DSP DESIGNER S NOTEBOOK C Routines for Setting Up the AIC on the TMS320C5x EVM APPLICATION BRIEF: SPRA251 Leor Brenman Digital Signal Processing Products Semiconductor Group Texas Instruments February

More information

MPLAB C1X Quick Reference Card

MPLAB C1X Quick Reference Card MPLAB C1X Quick Reference Card 34 MPLAB C17 Quick Reference MPLAB C17 Command Switches Command Description /?, /h Display help screen /D[=] Define a macro /FO= Set object file name /FE=

More information

GPIO Application Note for Altera DE2 Development and Education Board

GPIO Application Note for Altera DE2 Development and Education Board GPIO Application Note for Altera DE2 Development and Education Board Robert Miller ECE 492 University of Alberta 21 March, 2013 Robert Miller email: rnmiller@ualberta.ca University of Alberta 1 GPIO Application

More information

Room 3P16 Telephone: extension ~irjohnson/uqc146s1.html

Room 3P16 Telephone: extension ~irjohnson/uqc146s1.html UQC146S1 Introductory Image Processing in C Ian Johnson Room 3P16 Telephone: extension 3167 Email: Ian.Johnson@uwe.ac.uk http://www.csm.uwe.ac.uk/ ~irjohnson/uqc146s1.html Ian Johnson 1 UQC146S1 What is

More information

Systems Programming. Lecture 4 Z16 Architecture and Programming

Systems Programming.   Lecture 4 Z16 Architecture and Programming Systems Programming www.atomicrhubarb.com/systems Lecture 4 Z16 Architecture and Programming Section Topic Where in the books Zilog Zilog Zilog Zilog UM197 (ZNEO Z16F Series Flash Microcontroller Contest

More information

Introduction to the Altera SOPC Builder Using Verilog Designs. 1 Introduction

Introduction to the Altera SOPC Builder Using Verilog Designs. 1 Introduction Introduction to the Altera SOPC Builder Using Verilog Designs 1 Introduction This tutorial presents an introduction to Altera s SOPC Builder software, which is used to implement a system that uses the

More information

Programming in C - Part 2

Programming in C - Part 2 Programming in C - Part 2 CPSC 457 Mohammad Reza Zakerinasab May 11, 2016 These slides are forked from slides created by Mike Clark Where to find these slides and related source code? http://goo.gl/k1qixb

More information

Tutorial 1: C-Language

Tutorial 1: C-Language Tutorial 1: C-Language Problem 1: Data Type What are the ranges of the following data types? int 32 bits 2 31..2 31-1 OR -2147483648..2147483647 (0..4294967295 if unsiged) in some machines int is same

More information

Recap. ANSI C Reserved Words C++ Multimedia Programming Lecture 2. Erwin M. Bakker Joachim Rijsdam

Recap. ANSI C Reserved Words C++ Multimedia Programming Lecture 2. Erwin M. Bakker Joachim Rijsdam Multimedia Programming 2004 Lecture 2 Erwin M. Bakker Joachim Rijsdam Recap Learning C++ by example No groups: everybody should experience developing and programming in C++! Assignments will determine

More information

C Language Advanced Concepts. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff

C Language Advanced Concepts. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff C Language Advanced Concepts 1 Switch Statement Syntax Example switch (expression) { } case const_expr1: statement1; case const_expr2: : statement2; default: statementn; The break statement causes control

More information

DE0-Nano-SoC Computer System with ARM Cortex-A9. 1 Introduction. 2 DE0-Nano-SoC Computer Contents. 2.1 Hard Processor System. For Quartus Prime 16.

DE0-Nano-SoC Computer System with ARM Cortex-A9. 1 Introduction. 2 DE0-Nano-SoC Computer Contents. 2.1 Hard Processor System. For Quartus Prime 16. DE0-Nano-SoC Computer System with ARM Cortex-A9 For Quartus Prime 16.0 1 Introduction This document describes a computer system that can be implemented on the Altera DE0-Nano-SoC development and education

More information

OBJECT ORIENTED PROGRAMMING

OBJECT ORIENTED PROGRAMMING OBJECT ORIENTED PROGRAMMING LAB 1 REVIEW THE STRUCTURE OF A C/C++ PROGRAM. TESTING PROGRAMMING SKILLS. COMPARISON BETWEEN PROCEDURAL PROGRAMMING AND OBJECT ORIENTED PROGRAMMING Course basics The Object

More information

C Programming Language Training. This instruction relies on the C language described in C++: The Complete Reference Third Edition By Herbert Schildt

C Programming Language Training. This instruction relies on the C language described in C++: The Complete Reference Third Edition By Herbert Schildt C Programming Language Training This instruction relies on the C language described in C++: The Complete Reference Third Edition By Herbert Schildt Background The C language was developed at Bell Labs

More information

Nios PIO. General Description. Functional Description

Nios PIO. General Description. Functional Description Nios PIO January 2003, Version 3.1 Data Sheet General Description Functional Description The Nios parallel input/output (PIO) module is an Altera SOPC Builder library component included in the Nios development

More information

Introduction to the Altera SOPC Builder Using Verilog Design

Introduction to the Altera SOPC Builder Using Verilog Design Introduction to the Altera SOPC Builder Using Verilog Design This tutorial presents an introduction to Altera s SOPC Builder software, which is used to implement a system that uses the Nios II processor

More information

Simulating Nios II Embedded Processor Designs

Simulating Nios II Embedded Processor Designs Simulating Nios II Embedded Processor Designs May 2004, ver.1.0 Application Note 351 Introduction The increasing pressure to deliver robust products to market in a timely manner has amplified the importance

More information

BSM540 Basics of C Language

BSM540 Basics of C Language BSM540 Basics of C Language Chapter 4: Character strings & formatted I/O Prof. Manar Mohaisen Department of EEC Engineering Review of the Precedent Lecture To explain the input/output functions printf()

More information

A Fast Review of C Essentials Part I

A Fast Review of C Essentials Part I A Fast Review of C Essentials Part I Structural Programming by Z. Cihan TAYSI Outline Program development C Essentials Functions Variables & constants Names Formatting Comments Preprocessor Data types

More information

NIOS CPU Based Embedded Computer System on Programmable Chip

NIOS CPU Based Embedded Computer System on Programmable Chip 1 Objectives NIOS CPU Based Embedded Computer System on Programmable Chip EE8205: Embedded Computer Systems This lab has been constructed to introduce the development of dedicated embedded system based

More information

Pointers and Functions Passing Pointers to Functions CMPE-013/L. Pointers and Functions. Pointers and Functions Passing Pointers to Functions

Pointers and Functions Passing Pointers to Functions CMPE-013/L. Pointers and Functions. Pointers and Functions Passing Pointers to Functions CMPE-013/L Gabriel Hugh Elkaim Winter 2014 Passing Pointers to Functions Normally, functions operate on copies of the data passed to them (pass by value) int x = 2, y = 0; Value of variable passed to function

More information

Programming. Data Structure

Programming. Data Structure Programming & Data Structure For Computer Science & Information Technology By www.thegateacademy.com Syllabus Syllabus for Programming and Data Structures Programming in C, Arrays, Stacks, Queues, Linked

More information

Arrays and Pointers in C. Alan L. Cox

Arrays and Pointers in C. Alan L. Cox Arrays and Pointers in C Alan L. Cox alc@rice.edu Objectives Be able to use arrays, pointers, and strings in C programs Be able to explain the representation of these data types at the machine level, including

More information

Part 1: Introduction to the C Language

Part 1: Introduction to the C Language Part 1: Introduction to the C Language 1 Dennis Ritchie originally developed C at Bell Labs to write the UNIX operating system, 1974. C was designed to provide low level access to the hardware, which an

More information

C-Programming. CSC209: Software Tools and Systems Programming. Paul Vrbik. University of Toronto Mississauga

C-Programming. CSC209: Software Tools and Systems Programming. Paul Vrbik. University of Toronto Mississauga C-Programming CSC209: Software Tools and Systems Programming Paul Vrbik University of Toronto Mississauga https://mcs.utm.utoronto.ca/~209/ Adapted from Dan Zingaro s 2015 slides. Week 2.0 1 / 19 What

More information

ECE332, Week 8. Topics. October 15, Exceptions. Hardware Interrupts Software exceptions

ECE332, Week 8. Topics. October 15, Exceptions. Hardware Interrupts Software exceptions ECE332, Week 8 October 15, 2007 1 Topics Exceptions Hardware Interrupts Software exceptions Unimplemented instructions Software traps Other exceptions 2 1 Exception An exception is a transfer of control

More information

Mechatronics Laboratory Assignment 2 Serial Communication DSP Time-Keeping, Visual Basic, LCD Screens, and Wireless Networks

Mechatronics Laboratory Assignment 2 Serial Communication DSP Time-Keeping, Visual Basic, LCD Screens, and Wireless Networks Mechatronics Laboratory Assignment 2 Serial Communication DSP Time-Keeping, Visual Basic, LCD Screens, and Wireless Networks Goals for this Lab Assignment: 1. Introduce the VB environment for PC-based

More information

CPSC 213. Introduction to Computer Systems. Numbers and Memory. Unit 1a

CPSC 213. Introduction to Computer Systems. Numbers and Memory. Unit 1a CPSC 213 Introduction to Computer Systems Unit 1a Numbers and Memory 1 The Big Picture Build machine model of execution for Java and C programs by examining language features and deciding how they are

More information

(T) x. Casts. A cast converts the value held in variable x to type T

(T) x. Casts. A cast converts the value held in variable x to type T Several New Things 2 s complement representation of negative integers The data size flag in the conversion specification of printf Recast of &n to unsigned long to get the address 2 3 Casts (T) x A cast

More information

Binghamton University. CS-211 Fall Pointers

Binghamton University. CS-211 Fall Pointers Pointers 1 What is a pointer? Says I m not important what s important is over there Points AT or TO something else 2 Memory Array of bytes Each element has a value 0 1 2 3 xffff fffd xffff fffe xffff ffff

More information

BLM2031 Structured Programming. Zeyneb KURT

BLM2031 Structured Programming. Zeyneb KURT BLM2031 Structured Programming Zeyneb KURT 1 Contact Contact info office : D-219 e-mail zeynebkurt@gmail.com, zeyneb@ce.yildiz.edu.tr When to contact e-mail first, take an appointment What to expect help

More information

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Quiz II

UNIVERSITY OF CONNECTICUT. ECE 3411 Microprocessor Application Lab: Fall Quiz II Department of Electrical and Computing Engineering UNIVERSITY OF CONNECTICUT ECE 3411 Microprocessor Application Lab: Fall 2015 Quiz II There are 5 questions in this quiz. There are 9 pages in this quiz

More information

Interrupts. How can we synchronize with a peripheral? Polling

Interrupts. How can we synchronize with a peripheral? Polling Interrupts How can we synchronize with a peripheral? Polling run a program loop continually checking status of the peripheral wait for it to be ready for us to communicate with it Then handle I/O with

More information

Short introduction to C for AVR

Short introduction to C for AVR Short introduction to C for AVR (http://winavr.scienceprog.com/short-introduction-to-c), (www.smileymicros.com), (https://ccrma.stanford.edu/wiki/avr_programming#anatomy_of_a_c_program_for_avr) (AVR035:

More information

Programming refresher and intro to C programming

Programming refresher and intro to C programming Applied mechatronics Programming refresher and intro to C programming Sven Gestegård Robertz sven.robertz@cs.lth.se Department of Computer Science, Lund University 2018 Outline 1 C programming intro 2

More information

AN703. Micro64/128. Accessing the 36k of SRAM 12/3/04

AN703. Micro64/128. Accessing the 36k of SRAM 12/3/04 AN703 Micro64/128 Accessing the 36k of SRAM 12/3/04 Introduction: Micro64/128 has a total of 36k of SRAM. 4 k of SRAM is built into the processor an additional 32k of SRAM is available inside the Micro64/128

More information

Real Time Kernel v1.1

Real Time Kernel v1.1 Real Time Kernel v1.1 1. Task Management void TaskCreate( char tasknum, void (*t)(), int *stack, char stacksize ) Creates a task with the unique priority tasknum. Helium allows tasks to have one of eight

More information

Guidelines for Developing a Nios II HAL Device Driver

Guidelines for Developing a Nios II HAL Device Driver Guidelines for Developing a Nios II HAL Device Driver August 2007, ver. 1.0 Application Note 459 Introduction This application note explains the process of developing and debugging a hardware abstraction

More information

C Language Summary. Chris J Michael 28 August CSC 4103 Operating Systems Fall 2008 Lecture 2 C Summary

C Language Summary. Chris J Michael 28 August CSC 4103 Operating Systems Fall 2008 Lecture 2 C Summary Chris J Michael cmicha1@lsu.edu 28 August 2008 C Language Summary Heavily Influenced by the GNU C Reference Manual: http://www.gnu.org/software/gnu-c-manual/ Introduction -C98, or the original ANSI C standard

More information

L2 - C language for Embedded MCUs

L2 - C language for Embedded MCUs Formation C language for Embedded MCUs: Learning how to program a Microcontroller (especially the Cortex-M based ones) - Programmation: Langages L2 - C language for Embedded MCUs Learning how to program

More information

EC 413 Computer Organization

EC 413 Computer Organization EC 413 Computer Organization C/C++ Language Review Prof. Michel A. Kinsy Programming Languages There are many programming languages available: Pascal, C, C++, Java, Ada, Perl and Python All of these languages

More information

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and #include The Use of printf() and scanf() The Use of printf()

More information

Lectures 5-6: Introduction to C

Lectures 5-6: Introduction to C Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most

More information

I/O handling. Purpose. Seven-segment displays. Digital Systems 15 hp

I/O handling. Purpose. Seven-segment displays. Digital Systems 15 hp Namn: Laborationen godkänd: Digital Systems 15 hp I/O handling Purpose The purpose of this laboratory exercise is to demonstrate how to write programs that interact with the different I/O devices available

More information