实验:通过HAL_API访问JTAG_UART

 

实验:通过HAL_API访问JTAG_UART

AuthorChen Tuo

Copyright © Chen Tuo, 2008-2009. All rights reserved.

200831日创建

2009329日修改

1.      实验目的

硬件抽象层HAL系统库是一个简化的运行环境,提供了一组标准的I/O系统访问函数,如open()close()read()write()lseek()等。本实验演示利用HAL API函数访问JTAG_UART设备的方法。

2.      实验设备

硬件:PC机,EP1C3EP1C12核心板。

软件:Quartus II 9.0Nios II IDE 9.0

3.      实验内容

HAL API函数从JTAG_UART中读入和输出字符。学习open()close()read()write()lseek()等函数的用法。

4.      实验预习要求

熟悉JTAG_UART外设的访问和控制机制。

5.      实验步骤

(1)    创建一个QuartusII项目JTAG_UART_HAL

(2)    如下图,定制一个Nios II CPU,命名为myniosii

       存储器的使用:因为在进行C编译时不能选Small C libraryReduced device drivers优化,故onchip_mem不够用,我们使用sdram;我们只是做实验,所以未配置Flash。启动向量和异常向量配置如下:

(3)    Quartus II中创建一个原理图,放置一个上面定制好的Nios IImyniosii,并如图设置引脚。编译、下载硬件配置到FPGA

(4)    启动Nios II IDE,新建一个空白Nios II C/C++ Application项目,并命名为JTAG_UART_HAL

(5)    JTAG_UART_HAL 项目中添加一个C文件JTAG_UART_HAL.c

(6)    因为我们有足够大的存储器,故不进行尺寸优化。

(7)    如图,在JTAG_UART_HAL_syslib项目Properties属性中指定标准I/O设备为jtag_uart

(8)    编译、调试、运行。运行结果如下图。

6.      程序清单

通过HAL_API访问JTAG_UART实验程序

/*************************************************************

 * 文件名:JTAG_UART_HAL.c

 *   能:通过HAL API函数访问JTAG UART。读入一串字符再输出

 *   明:在控制台Console窗口与设备进行交互

 ************************************************************/

#include <stdio.h>

#include <string.h>

#include <fcntl.h>

#include "system.h"

#include "unistd.h"

 

int main(void){

    int fd, count;

    char * msg = "Please Enter 17 characters: \n";

    char * info = " too! ";

    char buf[100];

    fd = open(JTAG_UART_NAME, O_RDWR, 0666);   //以可读写方式打开设备文件

    if(fd < 0){                      //打开失败   

        printf("Some error occurred...\n");

        return 1;

    }

    write(fd, msg, strlen(msg));    //输出信息

    count = read(fd, buf, 17);      //读入信息

    write(fd, buf, count);            //输出读入数据

    write(fd, info, strlen(info));

    close(fd);                          //关闭设备

    return(0);

}

       Nios IIHAL从宏观上把硬件抽象成3种类型:字符设备、块设备和网络设备。对于字符设备,HAL层提供标准的I/O接口函数来访问,如下图所示。

HALI/O系统与设备驱动程序

       从图中可知,JTAG UART设备既可以通过ANSI C库函数访问,又可以通过HAL API函数访问。

7.      参考文献

[1] 周立功,等. SOPC嵌入式系统实验教程()[M]. 北京:北京航空航天大学出版社,2006.

[2] 李兰英,等. Nios II 嵌入式软核 SOPC设计原理及应用[M]. 北京:北京航空航天大学出版社,2006.

[3] http://www.altera.com.cn/.

posted @ 2009-04-09 15:49  chentuo  阅读(1075)  评论(0)    收藏  举报