NiosII软件使用与程序开发一PPT课件_第1页
NiosII软件使用与程序开发一PPT课件_第2页
NiosII软件使用与程序开发一PPT课件_第3页
NiosII软件使用与程序开发一PPT课件_第4页
NiosII软件使用与程序开发一PPT课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5讲NiosII软件使用与程序开发 一 Sun 1 本章首先简单介绍NiosIIIDE开发环境的使用 然后重点介绍了硬件抽象层 HAL 系统库 包括HAL下的基本应用程序开发和实验 包括了字符型外设的应用和中断机制的实现 主要内容 2 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 3 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 4 5 1NiosIIIDE简介 NiosIIIDE为软件开发提供4个主要功能 一 工程管理二 编辑器和编译器三 调试器四 闪存编程器统一开发平台 用于所有NiosII处理器系统 5 硬件抽象层系统库 HAL 轻量级IPTCP IP库uC OS II实时操作系统 RTOS Altera压缩文件系统 5 1NiosIIIDE简介 工程管理器新工程向导软件工程模板软件组件 PIO内核结构框图 对话框位置 File New C C Application 工程模板 工程命名 指定硬件系统 模板功能介绍 6 5 1NiosIIIDE简介 编辑器和编译器文本编辑器成熟的全功能源文件编辑器 包括 语法高亮显示C C 程序代码 全面的搜索工具 文件管理 在线帮助和教程 快速定位及自动纠错 内置调试等功能 C C 编译器NiosIIIDE使用GCC编译器 并为其提供了一个图形化用户界面 图形化用户界面为GCC编译器提供了一个易用的按钮式流程 同时允许开发人员手工设置高级编译选项 使得操作更简单方便 7 5 1NiosIIIDE简介 调试器软件调试器 GDB 是强大的 在GNU调试器基础之上的软件调试器 该调试器提供许多基本调试功能以及一些在低成本处理器开发套件中不会经常用到的高级调试功能 基本调试功能包括 运行控制 调用堆栈查看 软件断点 反汇编代码查看 调试信息查看 指令集仿真器 高级调试功能包括 硬件断点调试ROM或闪存中的代码 数据触发 指令跟踪 8 5 1NiosIIIDE简介 闪存编程器多数使用NiosII处理器的设计都需要采用闪存 Flash 来存储FPGA配置数据和 或应用程序 NiosIIIDE提供了一个方便的闪存编程方法 任何连接到FPGA的兼容通用闪存接口 CFI 的闪存器件以及主动串行配置器件EPCS都可以通过NiosIIIDE闪存编程器来烧写 9 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 10 5 2设置工程系统库属性和编译选项 C C Build设置 对话框位置 右击C C 工程文件夹 SystemLibraryProperties Debug 调试模式Release 发布模式 11 C C Indexer设置 对话框位置 右击C C 工程文件夹 SystemLibraryProperties C C Indexer编制程序文件索引 帮助用户方便地找到程序文件中的相关信息 问题报告的类型 帮助用户方便地定位错误 5 2设置工程系统库属性和编译选项 12 SystemLibrary设置 对话框位置 右击C C 工程文件夹 SystemLibraryProperties 5 2设置工程系统库属性和编译选项 13 SystemLibrary设置 对话框位置 右击C C 工程文件夹 SystemLibraryProperties RTOS 指定操作系统 RTOSOptions 对RTOS进行设置 Stdout stderr stdin 选择NiosII系统的C标准输入 输出设备 Null可节省程序空间 Systemclocktimer 系统时钟驱动所用的定时器 Timestamptimer 时间标记驱动所用的定时器 5 2设置工程系统库属性和编译选项 14 SystemLibrary设置 对话框位置 右击C C 工程文件夹 SystemLibraryProperties 用户自己创建和管理连接 建议采用自动连接 NiosIIIDE自动创建和管理连接 使用前必须指定下面选项 可执行代码驻留的物理存储器 只读数据驻留的物理存储器 可读 写数据驻留的物理存储器 Heap 堆 驻留的物理存储器 Stack 栈 驻留的物理存储器 选择后 异常堆栈将驻留在单独的物理存储器中 指定异常堆栈驻留的物理存储器 指定异常堆栈的最大空间 5 2设置工程系统库属性和编译选项 15 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 16 5 3调试 运行程序 对话框位置 RUN Debug DebugAs 选择Debug的目标器件 NiosII硬件NiosII指令仿真器NiosII多处理器集 17 5 3调试 运行程序 调试器目标连接设置 TargetConnection 对话框位置 RUN Debug NiosIIHardware TargetConnection 进行JTAG下载电缆的选择 进行连接在JTAG下载电缆上带JTAG接口器件的选择 进行NiosII系统中断通信工具选择 18 5 3调试 运行程序 调试器设置 Debugger 对话框位置 RUN Debug NiosIIHardware Debugger 19 5 3调试 运行程序 调试器设置 Debugger视窗模式 NiosIIIDE切换到Debug视窗模式 20 5 3调试 运行程序 运行程序 Debugger视窗模式 对话框位置 RUN RUN RUNAs 21 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 22 5 4下载程序到Flash 当调试工作完成并确保程序无错后 就可以把程序下载到Flash中了 23 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 24 5 5使用HAL开发应用程序 NiosIIIDE工程结构 NiosIIIDE工程结构 25 5 5使用HAL开发应用程序 NiosIIIDE工程结构 一个NiosIIIDE工程 用户工程文件夹 HAL系统库文件夹 NiosII设备驱动 26 5 5使用HAL开发应用程序 与目标系统相关的system h系统描述文件 System h文件构成过程 一部分描述系统库的设置信息 另一部分给出了每个外围设备的相信信息 27 5 5使用HAL开发应用程序 与目标系统相关的system h系统描述文件 程序清单5 1system h描述的UART设备 defineUART NAME dev uart UART的设备名称及所在路径 open 等文件操作函数可以通 过UART NAME开打一个UART设备 defineUART TYPE altera avalon uart 描述了UART内核的类型 应用程序员可不关心 defineUART BASE0 x00441480 UART设备的寄存器基地址 驱动程序可以根据该地址对 UART寄存器进行访问 defineUART IRQ1 UART设备的中断号 系统据此判别中断来自UART设备 defineUART BAUD115200 在系统生成过程中预设的串口波特率 defineUART DATA BITS8 描述UART数据帧长度 defineUART FIXED BAUD0 波特率是否软件可变的标志 defineUART PARITY N 是否能奇偶校验 defineUART STOP BITS1 UART数据包中停止位的宽度 defineUART USE CTS RTS0 是否使用CTS和RTS信号 defineUART USE EOP REGISTER0 是否生成了EOP EndofPacket 寄存器 defineUART SIM TRUE BAUD0 仿真时的波特率 defineUART SIM CHAR STREAM 仿真时的字符流 defineUART FREQ48000000 Avalon总线的频率 48MHz 28 5 5使用HAL开发应用程序 数据宽度及HAL类型定义 表5 1HAL数据类型定义 表5 2Altera提供的GNU编译器下的ANSIC数据类型宽度 29 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 30 5 6UART JTAG开发和实验 实验目的 学习使用UART JTAG通信功能掌握NIOSII软件开发流程熟识NIOSII开发环境使用学会利用UART JTAG进行软件调试 31 使用UART JTAG可以方便的通过下载线建立主机与SOPC的联系 这种串口方式把复杂的硬件驱动隐藏 从代码的角度来看我们可以很方便操作 5 6UART JTAG开发和实验 32 在ANSIC库的支持下 用户既可以把JTAGUART设备当作标准I O设备使用 也可以将其当作文件操作 其实质是通过ANSIC库函数调用JTAGUART设备驱动函数访问硬件设备 5 6UART JTAG开发和实验 33 通过上面的设置 将器件JTAG UART的输入输出映射到STDOUT STDERR STDIN等 那么我们就可以利用下面这些函数 操作JTAG UART 5 6UART JTAG开发和实验 34 函数原型 intfopen char file name way use 输入参数 file name文件名 way use使用文件方式 比如r w分别对应着读写函数说明 打开文件 对其进行某种文件操作返回值 打不开则出错 返回一个空指针NULL函数原型 intfclose fp 输入参数 fp的定义为 FILE fp函数说明 关闭文件fp返回值 成功返回0 反之为 1 EOF 函数原型 intfread void ptr intsize intcount FILE fp 输入参数 buffer为指针 是读入数据地存放地址 size读字节数 count读字节数地数目 fp文件型指针函数说明 从一个流中读取数据返回值 成功返回值为count函数原型 intfwrite void ptr intsize intcount FILE fp 输入参数 buffer为指针 是读入数据地存放地址 size读字节数 count读字节数地数目 fp文件型指针 函数说明 写内容到流中返回值 成功返回值为count 5 6UART JTAG开发和实验 35 函数原型 intfprintf FILE fp char format argument 输入参数 fp文件型指针 format格式字符串 argument 输出列表 如 fprintf fp d f i t 函数说明 传送格式化输出到一个流中返回值 函数原型 intfscanf FILE fp char format argument 输入参数 fp文件型指针 format格式字符串 argument 输入列表 如 fscanf fp d f i t 函数说明 从一个流中执行格式化输入返回值 函数原型 intfputc intch FILE fp 输入参数 ch字符 fp 文件型指针函数说明 送一个字符到一个流中返回值 成功返回字符 反之返回 1 EOF 函数原型 intfgetc FILE fp 输入参数 fp 文件型指针函数说明 从流中读取字符返回值 遇到文件结束返回 1 EOF 5 6UART JTAG开发和实验 36 函数原型 intputw intw FILE fp 输入参数 w 字符或字 fp 文件型指针函数说明 把一字符或字送到流中返回值 函数原型 intgetw FILE fp 输入参数 fp 文件型指针函数说明 从流中取一整数返回值 函数原型 intrewind FILE fp 输入参数 fp 文件型指针函数说明 将文件指针重新指向一个流的开头返回值 函数原型 intfseek FILE fp longoffset intfromwhere 输入参数 fp 文件型指针 offset long型偏移量 fromwhere 起始点起始点为0 1 2分别代表文件开始 当前位置 文件末尾函数说明 重定位流上的文件指针返回值 5 6UART JTAG开发和实验 37 函数原型 intferror FILE fp 输入参数 fp 文件型指针函数说明 检测流上的错误返回值 未出错返回值为0 反之为非0函数原型 longftell FILE fp 输入参数 fp 文件型指针函数说明 返回当前文件指针 得到当前位置返回值 返回值为 1表示出错 反之为非0函数原型 voidclearerr FILE fp 输入参数 fp 文件型指针函数说明 复位错误标志返回值 出错为非0 反之为0函数原型 char fgets char string intn FILE fp 输入参数 string 字符串指针 fp 文件型指针函数说明 从流中读取一字符串 但只从文件输入n 1个字符 后一个为 0 结束标志位返回值 5 6UART JTAG开发和实验 38 函数原型 ntfputs char string FILE fp 输入参数 string 字符串指针 fp 文件型指针函数说明 送一个字符串到一个流中返回值 函数原型 intfeof FILE fp 输入参数 fp 文件型指针函数说明 检测流上的文件结束符返回值 5 6UART JTAG开发和实验 39 在上面红色部分设置好后 在CONSOLE窗口可以显示PC方的内容 5 6UART JTAG开发和实验 40 例程一 include 字符操作库intmain printf hahahaha return0 扩展 利用函数 fopen getc fwrite fprintf fclose完成一个识别键盘字符V和T的程序 要求识别到T后 利用fwrite打印出关于识别T的信息 识别到V后关闭JTAG 打印出V的信息 程序停止 5 6UART JTAG开发和实验 41 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 42 5 7LCD开发和实验 TheLCDcontrollercoreconsistsoftwouser visiblecomponents ElevensignalsthatconnecttopinsontheOptrex16207LCDpanel ThesesignalsaredefinedintheOptrex16207datasheet E Enable output RS RegisterSelect output R W ReadorWrite output DB0throughDB7 DataBus bidirectional AnAvalonMemory Mapped Avalon MM slaveinterfacethatprovidesaccessto4registers 43 5 7LCD开发和实验 同样的LCD显示也是用写文件的方式 LCD只有输出 例 include include include system h defineESC27 defineESC TOP LEFT 1 0H defineESC BOTTOM LEFT 2 0H intmain void FILE lcd lcd fopen dev lcd w fprintf lcd c shelloredlogic nLCDDisplaying ESC ESC BOTTOM LEFT printf IfyoucanseemessagesscrollingontheLCDDisplay thenitisfunctional n usleep 2000000 putchar a fclose lcd 扩展 将实验一中 通过键盘向JTAG UART输入的字符VT输出到LCD中 44 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 45 5 8SYSTEMID实验 实验目的 通过实验了解SYSTEMID的意义和作用 实验说明 SOPCBUILDER生成该系统的时候 将为每一个NIOS系统生成一个标志符 该标志符会被填入SYSTEMID寄存器中 供编译器和用户辨别所运行的程序是否与目标系统匹配 当程序运行在与之不匹配的系统上会出现错误 46 5 8SYSTEMID实验 使用系统ID有两种基本方法 其一 下载新的程序到硬件上时 检查硬件中的系统ID与软件是否匹配 若不匹配则终止下载 第二复位检查系统ID实现方法 访问SYSTEMID的HAL函数为ALT AVALON SYSID TEST 该函数返回一个值来指示软件期望的系统ID是否匹配 使用头文件是相匹配返回0 硬件时间标记大于软件标记返回1 软件时间标记大于硬件时间标记返回 1 利用JTAG UART功能将SYSTEMID功能加入实验一中 要求程序运行首先检查ID 根据不同情况打印不同信息 47 第5讲主要内容 5 1NiosIIIDE简介5 2设置工程系统库属性和编译选项5 3调试 运行程序5 4下载程序到Flash5 5使用HAL开发应用程序5 6UART JTAG开发和实验5 7LCD开发和实验5 8SYSTEMID实验5 9中断机制和软件调试 48 5 9中断机制和软件调试 中断定义在特定的事件 中断源 也称中断请求信号 触发下引起CPU暂停正在运行的程序 主程序 转而先去处理一段为特定事件而编写的处理程序 中断处理程序 等中断处理程序处理完成后 再回到主程序被打断的地方继续运行 49 N10S 中断类型NIos 处理器提供以下中断类型 硬件中断异常和软件异常 软件异常又分为未定义指令 软件脚指令和其他异常 硬件中断是由外部中断源通过处理器的32个中断输入请求硬件中断 当且仅当满足以下条件 就会产生中断 1 status寄存器 ctl0 的PIE位为l 2 有一个中断请求输入irq产生 3 ienable寄存器 ctl3 的响应位n为l 软件tap 通过执行一条TRAP指令 软件可直接请求将控制传送到中断处理程序 未定义指令 当处理器执行一条在硬件中没定义的有效指令时 即可生成一个未定义的指令中断 5 9中断机制和软件调试 50 中断控制机制NiosII的中断处理方式带有典型的RISC处理器的特征 所有的中断处理都从同一入口进入 然后由软件加以分配 负责分配工作的软件叫系统ISR 它是由开发系统提供的 自动的连接到可执行程序上 系统ISR维护着一个中断向量表 表中的每一项代表着一个专项处理程序的入口 所有的专项处理程序都是由用户定义然后注册到中断向量表中的 叫做用户ISR 系统ISR的入口地址是在SOPC Builder中定义的 叫ExceptionAddress 和中断有关的CPU寄存器有 ctl0 ctl1 ctl3 ctl4 Ctl0是程序状态字 它的bit0位是全局中断允许位 1代表允许 0代表禁止 Ctl1是程序状字的堆栈 当发生中断时 由它保留一个程序状态字的备份 Ctl3是中断允许寄存器 其中每一位控制着一个中断源 1代表允许 0代表禁止 共计32位 Ctl4是中断申请寄存器 每一位对应着一个中断源的中断请求 1代表有中断 0代表没有 计32位 5 9中断机制和软件调试 51 NiosII的中断处理过程 拷贝一份程序状态字到ctl1 清除全局中断允许位PIE 禁止中断 将下一条将执行的指令的地址存入R29 以便中断返回之用 跳转到中断入口地址 进入系统ISR 系统ISR保护现场 系统ISR检测ctl1的PIE位 如为0则进入软中断处理程序从11继续 否则由7继续 系统ISR检测Ctl4 如果有中断申请 则转到硬中断处理和序 否则进入软中断处理程序 硬中断处理程序将检测中断申请号 并检索中断向量表 跳转到用户中断处理程序 用户中断处理程序做出具体的处理 最后返回系统ISR 系统ISR恢复现场 并返回 软中断处理程序进行陷井指令 模拟指令判断 并做相应处理 然后返回系统ISR 系统ISR恢复现场并返回 5 9中断机制和软件调试 52 软中断处理程序是用来处理由软件发起的中断事件的 包括调试指令引起的中断及未定义指令引起的中断 目前未定义指令的处理主要为乘 除法运算指令的处理 不支持用自定义的操作码 除用户自己修改系统程序 如果软中断处理程序遇到了一个不识别的操作码 将返回一个不确定的结果 5 9中断机制和软件调试 53 完成中断的步骤1 注册中断函数ISR 它的函数原型如下 Intalt irq register alt u32id void context void handler void alt u32 id 中断优先级 即所注册的ISR是为哪个中断优先级的中断服务的Context 为所注册的ISR传递参数 可以是NULL Handler 中断服务函数ISR的指针 返回值是0时 表示中断注册成功 返回为负数 表明中断注册失败 这里面有一个需要注册的地方 如果handler不是NULL 则该优先级中断在注册成功后将自动使能 也即是说 只要我们在handler处有相应的ISR 我们就不需要再进行使能处理了 5 9中断机制和软件调试 54 2 编写ISR函数 这个函数有我们自己来写 而不是HAL系统提供的 它跟一般的函数定义没什举区别 只是对ISR的函数原型有特定的要求 voidISR handler void context alt u32id context 传给ISR的形参 可以是NULL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论