实验:通过C函数库访问JTAG_UART

 

实验:通过C函数库访问JTAG_UART

AuthorChen Tuo

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

200831日创建

2009329日修改

1.      实验目的

学习使用ANSI C标准函数库访问JTAG_UART方法。

2.      实验设备

硬件:PC机,EP1C3EP1C12核心板。

软件:Quartus II 9.0Nios II IDE 9.0

3.      实验内容

ANSI C标准库函数从JTAG_UART中读入字符。如果检测到符合要求的字符,则输出信息。学习printf()scanf()fopen()fwrite()等函数的用法。

4.      实验预习要求

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

5.      实验步骤

(1)    创建一个QuartusII项目JTAG_UART_C

(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_C

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

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

注意:如果要优化也不能选Small C libraryReduced device drivers优化,否则不支持fopengetc等函数。

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

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

6.      程序清单

通过C函数库访问JTAG_UART_C实验程序

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

 * 文件名:JTAG_UART_C.c

 *   能:通过ANSI C标准库访问JTAG UART。如果检测到字符“t”,则报告检测

 *        到字符“t”;如果检测到字符“v”,则推出程序;其他字符忽略

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

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

#include <stdio.h>

#include <string.h>

#include "system.h"

 

int main(void){

    char * msg = "Detected the character 't'. \n";

    FILE * fp;

    char prompt = 0;

    printf("Please Enter some characters: \n");

    fp = fopen(JTAG_UART_NAME, "r+");   //打开文件进行读写

    if(fp) {   

        while(prompt != 'v'){

            prompt = getc(fp);

            if(prompt == 't') {

                fwrite(msg, strlen(msg), 1, fp);

            }

            if(ferror(fp))

                clearerr(fp);

        }

        fprintf(fp, "Closing the JTAG UART file handle.\n");

        fclose(fp);

    } else {

        printf("Fail to open file...\n");

    }

    return(0);

}

       ANSI C库的支持下,用户既可以把JTAG UART设备当作标准I/O设备使用,也可以将其当作文件操作。其实质是通过ANSI C库函数调用JTAG UART设备驱动函数访问硬件设备。

       Ferror(fp)函数检查JTAG UART连接是否出现错误,如果出现错误,C函数锁存该错误直到使用clearerr()函数将其清除。

7.      参考文献

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

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

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

 

posted @ 2009-04-09 15:36  chentuo  阅读(1701)  评论(1)    收藏  举报