- 2
- 0
- 约1.3万字
- 约 17页
- 2018-06-08 发布于江苏
- 举报
预先设计的NiosIIIO驱动与HALAPI
预先设计的Nios II I/O驱动和HAL API
预先设计的Nios II I/O驱动和HAL API
除了通用的I/O内核,Altera也提供了一些用于访问底层硬件的预先设计的设备驱
动程序和软件库。这些驱动程序和软件库都被整合到硬件抽象层(HAL)框架下。
软件工程师可以方便地使用这些系统库来访问底层硬件,而无需关心底层硬件的
实现细节。因此对于通用的I/O功能,应用程序便可使用API 函数或者C库函数与
I/O设备交互。
前续课程为闪烁LED系统开发了特定的设备驱动程序,但是这些驱动程序必须进
行相应的修改才能用于其它的应用之中,这将浪费大量的时间和精力。对于众多
的通用I/O外设,更好的方案是开发一套能够被多个应用所共享的灵活且稳健的
驱动程序。为了这个目的,Altera提供了一个框架,即HAL。
_regs.h文件
HAL为每个I/O设备和每个寄存器定义了独一无二的读和写宏,其的基本格式是:
IORD_dev_reg(base_address)
IOWR_dev_reg(base_address, data) (dev和reg分别是I/O设备和寄存器的名字)
这些宏存放在标记为dev_regs.h的头文件中。
例如,altera_avalon_pio_regs.h文件包含了用于PIO核访问的宏。
#define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0)
#define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data)
#define IORD_ALTERA_AVALON_PIO_DIRECTION(base) IORD(base, 1)
#define IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) IOWR(base, 1, data)
#define IORD_ALTERA_AVALON_PIO_IRQ_MASK(base) IORD(base, 2)
#define IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data) IOWR(base, 2, data)
#define IORD_ALTERA_AVALON_PIO_EDGE_CAP(base) IORD(base, 3)
#define IOWR_ALTERA_AVALON_PIO_EDGE_CAP(base, data) IOWR(base, 3, data)
偏移量 寄存器名称 R/W (n-1) … 2 1 0
数据 读访问 R 读入输入引脚上的逻辑电平值
0
寄存器 写访问 W 向PIO输出口写入新值
1 方向寄存器 R/W 控制每个I/O口的输入输出方向。0 :输入;1:输出。
2 中断屏蔽寄存器 R/W 使能或禁止每个输入端口的中断请求。1:中断使能;0 :禁止中断。
3 边沿捕获寄存器 R/W 当边沿事件发生时对应位置1。
_regs.h文件(续)
对于含有多个字段的寄存器,HAL定义针对位字段屏蔽和偏移量的常量。
例如,altera_avalon_jtag_uart_regs.h 中JTAG UART 的数据寄存器的代码段为:
#define IOWR_ALTERA_AVALON_JTAG_UART_DATA(base, data) IOWR(base, 0, data)
#define IORD_ALTERA_AVALON_JTAG_UART_DATA(base) IORD(base, 0)
……
#define ALTERA_AVALON_JTAG_UART_DATA_DATA_MSK (0x000000FF)
#define ALTERA_AVALON_JTAG_UART_DATA_DATA_OFST
您可能关注的文档
最近下载
- 2025-2026学年小学劳动人美版2024五年级下册-人美版(2024)教学设计合集.docx
- 2025年青岛酒店管理职业技术学院单招笔试英语试题库含答案解析.docx VIP
- 海藻学-3.pdf VIP
- 东风天龙电气系统维修.ppt VIP
- 2026人教版小学语文四年级上册期末考试精选3套试卷(含答案解析).pdf
- 《出纳实务》高职财经专业全套教学课件.pptx
- 毕业论文的答辩与评价.ppt VIP
- 药品质量研究的内容与药典概况详解.ppt VIP
- 西门子通风控制器acx36介绍.pdf
- 2024年青岛酒店管理职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析.docx VIP
原创力文档

文档评论(0)