sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发

上传人:n**** 文档编号:97798434 上传时间:2019-09-06 格式:PPT 页数:78 大小:3.23MB
返回 下载 相关 举报
sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发_第1页
第1页 / 共78页
sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发_第2页
第2页 / 共78页
sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发_第3页
第3页 / 共78页
sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发_第4页
第4页 / 共78页
sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发》由会员分享,可在线阅读,更多相关《sopc课件-第五章-nios-ii应用程序及其外设hal驱动开发(78页珍藏版)》请在金锄头文库上搜索。

1、第五章 硬件抽象层(HAL)系统库,本章首先回顾Nios II IDE开发环境的使用;然后重点介绍了硬件抽象层(HAL)系统库,包括HAL下的应用程序开发以及开发HAL下的设备驱动两部分内容。,主要内容,第五章 目录,5.1 硬件抽象层(HAL)系统库 5.2 使用HAL开发应用程序 5.3 设备驱动概述 5.4 开发HAL下的设备驱动 Nios II IDE 的Build编译前要关闭360等杀毒软件。,知识回顾1: Nios II IDE简介,Nios II IDE为软件开发提供4个主要功能: 一、工程管理 二、编辑器和编译器 三、调试器 四、闪存编程器 统一开发平台,用于所有Nios II

2、处理器系统。,硬件抽象层系统库(HAL) 轻量级IP TCP/IP库 uC/OS-II实时操作系统(RTOS) Altera压缩文件系统,工程管理器 新工程向导 软件工程模板 软件组件,知识回顾1: Nios II IDE简介,PIO内核结构框图,(对话框位置:FileNewC/C+ Application ),工程模板,工程命名,指定硬件系统,模板功能介绍,编辑器和编译器 文本编辑器 成熟的全功能源文件编辑器,包括:语法高亮显示C/C+程序代码、全面的搜索工具、文件管理、在线帮助和教程、快速定位及自动纠错、内置调试等功能。 C/C+编译器 Nios II IDE使用GCC编译器,并为其提供了

3、一个图形化用户界面。图形化用户界面为GCC编译器提供了一个易用的按钮式流程,同时允许开发人员手工设置高级编译选项,使得操作更简单方便。,知识回顾1: Nios II IDE简介,调试器 软件调试器(GDB):是强大的、在GNU调试器基础之上的软件调试器。该调试器提供许多基本调试功能以及一些在低成本处理器开发套件中不会经常用到的高级调试功能。 基本调试功能包括:运行控制、调用堆栈查看、软件断点、反汇编代码查看、调试信息查看、指令集仿真器。 高级调试功能包括:硬件断点调试ROM或闪存中的代码、数据触发、指令跟踪。,知识回顾1: Nios II IDE简介,闪存编程器 多数使用Nios II处理器的

4、设计都需要采用闪存(Flash)来存储FPGA配置数据和/或应用程序。Nios II IDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存器件以及主动串行配置器件EPCS都可以通过Nios II IDE闪存编程器来烧写。,知识回顾1: Nios II IDE简介,知识回顾2: 设置工程系统库属性和编译选项,(对话框位置:右击C/C+工程文件夹System Library Properties ),Debug:调试模式 Release:发布模式,C/C+ Build 设置,知识回顾2: 设置工程系统库属性和编译选项,(对话框位置:右击C/C+工程文件夹Syst

5、em Library Properties ),C/C+ Indexer 编制程序文件索引: 帮助用户方便地找到程序文件中的相关信息。,问题报告的类型: 帮助用户方便地定位错误。,C/C+ Indexer设置,知识回顾2: 设置工程系统库属性和编译选项,( 对话框位置:右击C/C+工程文件夹System Library Properties ),System Library 设置,知识回顾2: 设置工程系统库属性和编译选项,( 对话框位置:右击C/C+工程文件夹System Library Properties ),System Library 设置,RTOS:指定操作系统。,RTOS Opt

6、ions:对RTOS进行设置。,Stdout、stderr、stdin: 选择Nios II 系统的C标准输入/输出设备。Null可节省程序空间。,System clock timer: 系统时钟驱动所用的定时器。,Timestamp timer: 时间标记驱动所用的定时器。,Max file descriptors: 时间标记驱动所用的定时器。,知识回顾: 设置工程系统库属性和编译选项,( 对话框位置:右击C/C+工程文件夹System Library Properties ),System Library 设置,用户自己创建和管理连接,建议采用自动连接。,Nios II IDE自动创建和管

7、理连接,使用前必须指定下面选项。,可执行代码驻留的物理存储器。 只读数据驻留的物理存储器。 可读/写数据驻留的物理存储器。 Heap(堆)驻留的物理存储器。 Stack(栈)驻留的物理存储器。,选择后,异常堆栈将驻留在单独的物理存储器中。 指定异常堆栈驻留的物理存储器。 指定异常堆栈的最大空间。,知识回顾3: 调试/运行程序,(对话框位置:RUNDebug /Debug As),选择Debug的目标器件: Nios II硬件 Nios II指令仿真器 Nios II多处理器集,调试器目标连接设置-(Target Connection),知识回顾3:调试/运行程序,(对话框位置:RUNDebug

8、 Nios II Hardware Target Connection),进行JTAG下载电缆的选择。,进行连接在JTAG下载电缆上带JTAG接口器件的选择。,进行Nios II系统中断通信工具选择。,调试器设置-(Debugger),知识回顾3: 调试/运行程序,(对话框位置:RUNDebug Nios II Hardware Debugger),调试器设置-(Debugger 视窗模式),知识回顾3: 调试/运行程序,(Nios II IDE 切换到Debug视窗模式),运行程序-(Debugger 视窗模式),知识回顾3:调试/运行程序,(对话框位置:RUNRUN /RUN As),知识

9、回顾4: 下载程序到Flash,当调试工作完成并确保程序无错后,就可以把程序下载到Flash中了。,5.1 硬件抽象层(HAL)系统库,嵌入式系统的软件开发可分为2部分:,应用程序开发:,用户软件开发的主要部分,包括系统的主程序main()和其它子程序。,驱动程序:,直接和底层硬件的宏定义打交道。,5.1 硬件抽象层(HAL)系统库,HAL的构成 HAL系统库为用户提供下列支持: 集成了ANSI C标准函数库,允许调用类似C标准库函数; 提供访问NiosII系统每个设备的驱动程序; 提供HAL API,用于标准的函数接口如设备访问、中断处理以及ALARM等; 提供系统初始化函数,为main()

10、函数和C库函数建立运行时环境 提供设备初始化函数,在main()函数前,分配设备空间并初始化所有的外围设备。,Nios II HAL 的结构,5.1 硬件抽象层(HAL)系统库,HAL的构成,Nios II HAL 的结构,5.1 硬件抽象层(HAL)系统库,HAL的构成 HAL支持以下几种通用的设备模型: 字符型设备; 文件子系统; DMA设备 定时器设备 Flash设备; 以太网设备。,5.1 硬件抽象层(HAL)系统库,HAL的通用设备模型 Altera提供的完整HAL支持的外围设备: 字符型设备包括UART核、JTAG核以及LCD15207显示控制器; 文件子系统包括只读文档系统; D

11、MA设备包括DMA控制器核; 定时器设备包括定时器核; Flash存储器设备包括通用Flash接口芯片和主动串行配置器件EPCS控制器。 以太网设备包括LAN9111以太网MAC/PHY控制器并且需要uC/OS-II支持。 还有一些第三方提供的外围设备,用户也可以定制字节的外围设备。,5.2 使用HAL开发应用程序,Nios II IDE 工程结构,Nios II IDE工程结构,5.2 使用HAL开发应用程序,Nios II IDE 工程结构,一个Nios II IDE工程,用户工程文件夹,HAL系统库文件夹,Nios II设备驱动,5.2 使用HAL开发应用程序,与目标系统相关的syste

12、m.h系统描述文件,System.h文件构成过程,一部分描述系统库的设置信息;,另一部分给出了每个外围设备的相信信息;,5.2 使用HAL开发应用程序,与目标系统相关的system.h系统描述文件,程序清单5.1 system.h描述的UART设备,#define UART_NAME “/dev/uart“ /UART的设备名称及所在路径,open()等文件操作函数可以通/过UART_NAME开打一个UART设备 #define UART_TYPE “altera_avalon_uart“ /描述了UART内核的类型,应用程序员可不关心 #define UART_BASE 0x00441480

13、 /UART设备的寄存器基地址,驱动程序可以根据该地址对/UART寄存器进行访问 #define UART_IRQ 1 / UART设备的中断号,系统据此判别中断来自UART设备 #define UART_BAUD 115200 / 在系统生成过程中预设的串口波特率 #define UART_DATA_BITS 8 / 描述UART数据帧长度 #define UART_FIXED_BAUD 0 /波特率是否软件可变的标志 #define UART_PARITY N / 是否能奇偶校验 #define UART_STOP_BITS 1 / UART数据包中停止位的宽度 #define UART_

14、USE_CTS_RTS 0 /是否使用CTS和RTS信号 #define UART_USE_EOP_REGISTER 0 /是否生成了EOP(End of Packet)寄存器 #define UART_SIM_TRUE_BAUD 0 /仿真时的波特率 #define UART_SIM_CHAR_STREAM “ /仿真时的字符流 #define UART_FREQ 48000000 / Avalon总线的频率,48MHz,5.2 使用HAL开发应用程序,数据宽度及HAL类型定义,表5.1 HAL数据类型定义,表5.2 Altera提供的GNU编译器下的 ANSI C数据类型宽度,5.2 使用

15、HAL开发应用程序,HAL对系统启动的支持 启动代码用于系统上电复位后到运行main()函数前,初始化硬件,构建应用程序运行时环境的过程。下面简单地叙述一下这段代码的完成的功能: 上电或复位后的程序入口标号是“_reset”,程序先对CPU进行初始化: 初始化指令Cache,然后调用_start; 初始化数据Cache,把异常向量表装入指令Cache; 设置堆栈指针(Stack Pointer)和全局指针(Global Pointer)寄存器; 把全局变量和静态变量区(_bss_start _bss_end)清零; 如果没有bootloader,则把可读写数据(.rwdata),只读数据(.r

16、odata)和异常向量表装入RAM中; 调用alt_main()。,5.2 使用HAL开发应用程序,HAL对系统启动的支持 HAL提供默认执行的alt_main()对CPU及外设进行初始化: 调用ALT_OS_INIT()初始化OS:默认情况下完成对uC/OS-II的初始化,如果系统不使用操作系统,则这步不执行。 如果使用操作系统,则初始化访问HAL提供的文件系统的信号量(alt_fd_list_lock)。 初始化中断控制器,开中断。 调用alt_sys_init()初始化系统设备及软件模块,NiosII IDE自动创建管理alt_sys_init.c。 把标准输入输出设备(stdin, stdout, stderr)映射到输入输

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号