已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 1 7 嵌入式技术概述 基于HAL的NIOSII系统软件开发 刘兰军 2020 1 7 2 硬件抽象层HAL概述 1 什么是HAL 基于HAL进行系统软件设计的优点是什么 硬件抽象层HAL是轻量级的运行环境 提供了设备驱动程序接口 应用程序使用设备驱动程序接口访问底层硬件 优点 1 HAL将应用程序与驱动程序区别开来 使底层硬件的改变对应用程序没有影响 保证了应用程序代码的可重用性 2 应用程序 驱动程序开发是嵌入式系统软件开发的主要组成部分 对于应用程序开发人员 HAL提供了一套初始化和访问各类设备的函数 统一的API对系统硬件是透明的 开发人员不必关心底层硬件的差异 对于驱动程序开发人员 HAL提供了一套必要的驱动函数 驱动程序调用驱动函数来访问底层硬件 加快了驱动程序的开发 2020 1 7 3 硬件抽象层HAL概述 2 基于HAL开发NIOSII软件的特殊优点是什么 NIOSII处理器系统的HAL基于一个特定的SOPCBuilder系统创建 SOPCBuilder与NiosIIEDS之间的紧密集成保证了 1 用户在创建应用工程时 NiosIIIDE也同时创建了HAL系统库 用户不必创建 复制 编辑HAL系统库 NiosIIIDE自动为用户管理和维护HAL库 2 若SOPCBuilder的硬件系统发生了改动 NiosIIIDE会自动地对HAL系统库进行更新 保证了底层硬件与应用程序的一致性 2020 1 7 4 硬件抽象层HAL概述 3 NIOSII处理器系统的HAL的体系结构 HAL提供的服务 1 提供newlibANSIC标准库2 提供设备驱动程序3 提供统一的HAL应用程序接口API4 提供系统初始化 main 函数执行之前 执行处理器和运行环境的初始化任务5 提供设备初始化 main 函数执行之前 例化和初始化系统中的各个设备 2020 1 7 5 硬件抽象层HAL概述 3 NIOSII处理器系统的HAL的体系结构HAL系统库对设备提供的两个服务层次 通用设备模型和驱动程序 头文件和访问函数 1 通用设备模型和驱动程序 通用设备模型是HAL强大功能的核心 用户可采用统一的API编写程序访问提供通用设备模型的设备 HAL为大多数NIOSII系统外设提供驱动程序 使用户可以通过HALAPI访问硬件字符型设备 UART核 JTAGUART核 LCD16207显示控制器定时器设备 TIMER核文件子系统 基于ALTERA主机的文件系统 ALTERA压缩只读文件子系统以太网设备 Ethernet核 LAN91C111EthernetMAC PHY控制器DMA设备 DMA控制器核 Scatter gatherDMA控制器核FLASH存储设备 CFIFLASH接口 EPCS串口配置控制器 2020 1 7 6 硬件抽象层HAL概述 3 NIOSII处理器系统的HAL的体系结构HAL系统库对设备提供的三个服务层次 通用设备模型 驱动程序 头文件和访问函数 2 头文件和访问函数 对于部分NIOSII系统外设和一些自定制外设 HAL只提供头文件和访问函数 NIOSII系统的通用IO核 PIO核用户自定制的外设此外 对于具有特殊硬件特性的外设 不能使用通用API HAL提供了UNIX类型的ioctl 函数 2020 1 7 7 基于HAL的NIOSII系统应用程序开发 1 NIOSIIIDE工程结构 HAL系统库工程包含了所有的用户程序与系统硬件接口的必要信息 HAL系统库工程紧密依赖于SOPCBuiler系统 保证了HAL与目标硬件的同步 2020 1 7 8 基于HAL的NIOSII系统应用程序开发 2 系统描述文件system hsystem h文件提供了完整的NIOSII系统硬件的描述 包括 外设的硬件配置外设的基地址外设的中断请求优先级外设的符号名 2020 1 7 9 基于HAL的NIOSII系统应用程序开发 2 系统描述文件system h 2020 1 7 10 基于HAL的NIOSII系统应用程序开发 3 数据宽度和HAL类型定义对于嵌入式处理器 准确的数据宽度和精度定义是非常重要的 而标准C的数据类型宽度取决于编译器的约定 头文件alt types h定义了HAL类型 2020 1 7 11 基于HAL的NIOSII系统应用程序开发 4 文件系统HAL提供支持UNIX风格的文件访问机制 用户能够在基于HAL的文件系统中访问文件 1 可以使用newlibC库中的文件I O函数 2 可以使用HAL系统库提供的UNIX风格的文件I O函数 2020 1 7 12 基于HAL的NIOSII系统应用程序开发 4 文件系统HAL提供支持UNIX风格的文件访问机制 用户能够在基于HAL的文件系统中访问文件 3 HAL将一个子文件系统注册为HAL文件系统的一个挂载点 mountpoint 4 HAL文件系统没有当前目录的概念 访问文件时必须使用绝对路径 5 HAL文件系统允许通过UNIX风格的路径名管理字符型设备 HAL将字符型设备注册为HAL文件系统的节点 2020 1 7 13 基于HAL的NIOSII系统应用程序开发 4 文件系统从只读zip文件子系统ozipfs读取字符 使用newlibC库中的文件I O函数 2020 1 7 14 基于HAL的NIOSII系统应用程序开发 5 对字符型设备的访问 1 使用标准输入 标准输出和标准错误通道访问字符型设备用户可以通过在系统库属性设置中将标准输入 标准输出和标准错误通道与某一特定的字符型设备关联起来 发送字符到标准输出stdout相关联的设备 2020 1 7 15 基于HAL的NIOSII系统应用程序开发 5 对字符型设备的访问 2 使用通用的访问文件的方式访问字符型设备 写字符到UART1 2020 1 7 16 基于HAL的NIOSII系统应用程序开发 6 定时器设备的使用HALAPI提供了两种定时器设备的驱动程序 系统时钟驱动程序 支持报警功能 用于调度程序时间戳驱动程序 支持高精度时间测量使用定时器设备 系统硬件中必须包含定时器外设 某个定时器外设不能同时作为系统时钟和时间戳 2020 1 7 17 基于HAL的NIOSII系统应用程序开发 6 定时器设备的使用 1 系统时钟驱动程序用户通过在NIOSIIIDE的系统库属性中设置来指定系统时钟的定时器外设 针对系统时钟 HAL提供的标准UNIX函数包括 gettimeofday 获得当前时间settimeofday 设置当前时间times 获得已经发生的ticks数目alt nticks 获得系统时钟的当前值 系统复位后经历的时间 alt ticks per second 获得系统时钟的速率 2020 1 7 18 基于HAL的NIOSII系统应用程序开发 6 定时器设备的使用 1 系统时钟驱动程序基于系统时钟的报警注册 在指定的时刻执行某个函数可以通过调用alt alarm stop 取消一个报警 2020 1 7 19 基于HAL的NIOSII系统应用程序开发 6 定时器设备的使用 2 时间戳驱动程序时间戳测量比系统时钟精度高的时间间隔 HAL只支持一个时间戳驱动程序 用户可以在NIOSIIIDE的系统库属性中指定时间戳设备的定时器外设 时间戳驱动程序相关的函数包括 alt timestamp start 启动时间戳计数器alt timestamp 返回时间戳计数器的当前值alt timestamp start alt timestamp 之后的调用 复位计数器为0alt timestamp freq 获得时间戳计数器的速率 一般为系统主频 2020 1 7 20 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用HAL对FLASH设备的支持包括 1 提供写FLASH的HALAPI FLASH存储器的存储协议一般比较特殊 2 提供读FLASH的HALAPI 大多数FLASH的读操作可将FLASH看成简单的存储器 无需调用HALAPI 但访问具有特殊读数据协议的FLASH时 如EPCSFLASH 必须调用HALAPI HALAPI提供两种层次的FLASH访问 简单的FLASH访问和精细的FLASH访问 2020 1 7 21 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用简单FLASH访问 函数写缓冲数据到FLASH和从FLASH读数据都是以分区 block 的层次进行的 写FLASH时 若缓冲器比一个完整的分区小 函数会擦除整个分区 Alt flash open dev 打开FLASH设备 获得FLASH设备的文件句柄alt write flash 写数据到FLASH设备 会先擦除一个分区 导致不期望的数据擦除 2020 1 7 22 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用简单FLASH访问 函数写缓冲数据到FLASH和从FLASH读数据都是以分区 block 的层次进行的 写FLASH时 若缓冲器比一个完整的分区小 函数会擦除整个分区 alt read flash 从FLASH设备读数据alt flash close dev 关闭一个FLASH设备 2020 1 7 23 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用精细FLASH访问 函数写缓冲数据到FLASH和从FLASH读数据都是以缓冲器的层次进行的 写FLASH时 若缓冲器比一个完整的分区小 函数保留之前存在于FLASH中的新写数据单元之上和之下的数据 精细FLASH访问是将写FLASH过程自动化了 从FLASH器件的本质来说 用户是不能清除一个分区的单独地址的 用户要改变一个分区内特定位置的内容而不改变分区内其他位置的内容 只能是先读出分区的整个内容到缓冲器中 在缓冲器中改变相应的内容 将整个分区擦除 最后将整个缓冲器内容写到FLASH的整个分区中 2020 1 7 24 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用精细FLASH访问的相关函数 alt get flash info 获得擦除区域的数目 每个区域内分区的数目 每个分区的大小 2020 1 7 25 基于HAL的NIOSII系统应用程序开发 7 FLASH设备的使用精细FLASH访问的相关函数 alt erase flash 擦除FLASH的一个单独分区alt write flash block 写FLASH的一个单独分区 2020 1 7 26 基于HAL的NIOSII系统应用程序开发 8 DMA设备的使用在HALDMA设备模型中 DMA传输有两种分类 发送或接收 HAL提供两个设备驱动来实现发送通道和接收通道 发送通道从数据源的缓冲器获得数据 发送数据到目的设备 接收通道接收数据 并将数据存到目的缓冲器中 2020 1 7 27 基于HAL的NIOSII系统应用程序开发 8 DMA设备的使用 1 DMA发送通道与DMA发送通道相关的HAL函数包括 alt dma txchan open 获得DMA发送句柄 alt dma txchan send 发送一个发送请求 2020 1 7 28 基于HAL的NIOSII系统应用程序开发 8 DMA设备的使用 1 DMA发送通道与DMA发送通道相关的HAL函数包括 alt dma txchan space 返回当前还有多少个发送请求可以加入到发送队列中 alt dma txchan ioctl 执行发送设备中与设备相关的操作 2020 1 7 29 基于HAL的NIOSII系统应用程序开发 8 DMA设备的使用 2 DMA接收通道与DMA接收通道相关的HAL函数包括 alt dma rxchan open 获得DMA接收句柄 alt dma rxchan prepare 发送一个接收请求 2020 1 7 30 基于HAL的NIOSII系统应用程序开发 8 DMA设备的使用 2 DMA接收通道与DMA接收通道相关的HAL函数包括 alt dma rxchan depth 返回设备可允许的最大接收请求数 alt dma txchan ioctl 执行接收设备中与设备相关的操作 3 存储器到存储器的DMA传输存储器到存储器的DMA传输同时包括DMA接收通道和DMA发送通道 2020 1 7 31 基于HAL的NIOSII系统应用程序开发 9 程序的入口点和启动顺序程序的入口点有两个 main alt main Main 一种系统托管的应用 在main 开始时 一个托管的应用运行环境和系统服务均已准备好 HAL负责初始化系统 Alt main 一种独立的应用 用户可以对系统初始化进行完全控制 2020 1 7 32 基于HAL的NIOSII系统应用程序开发 9 程序的入口点和启动顺序main 作为入口点的系统启动顺序 2020 1 7 33 基于HAL的NIOSII系统应用程序开发 9 程序的入口点和启动顺序main 作为入口点时HAL提供的默认的alt main 的函数实现 2020 1 7 34 基于HAL的NIOSII系统的异常处理 1 NIOSII异常处理概述NIOSII异常处理以经典的RISC方式实现 所有的异常类型都由一个位于异常地址 exceptionaddress 的异常处理程序处理 而没有采用中断向量表的方式 异常类型 硬件中断 软件异常 未实现指令 软件陷阱 其他异常 2020 1 7 35 基于HAL的NIOSII系统的异
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西交通职业技术学院单招职业技能测试题库及1套完整答案详解
- 危险废物再生回收利用项目实施方案
- 风电场建设项目初步设计
- 企业项目预算分配方案
- 客户订单管理与物流调度系统方案
- 2026天津市静海区教育系统招聘事业单位人员148人笔试参考题库及答案解析
- 金融风险管理方法与案例解析(标准版)
- 汽车售后服务规范与客户关系管理手册
- 2026-2027河北石家庄市鹿泉区教育局招募银龄讲学计划讲学教师12人笔试备考题库及答案解析
- 2026广西柳州市工人医院广西医科大学第四附属医院编外人员招聘7人考试参考题库及答案解析
- 香港公司佣金协议书
- 2026江苏中烟工业有限责任公司高校毕业生招聘14人(第一批次)笔试考试参考试题及答案解析
- 四年级下册语文仿写训练题库
- 幼儿园京剧课程
- 2026年山东铝业职业学院单招综合素质考试必刷测试卷带答案解析
- 点餐系统的设计毕业论文
- 2026福建泉州市选优生选拔引进笔试考试参考试题及答案解析
- 物流园区规划与设计课件
- 高校管理岗位考试题库
- 直播销售工作计划与时间表
- 门厂外包加工合同范本
评论
0/150
提交评论