Tank

NIOS II学习--第四课 中断及串口通迅

0
阅读(4353)

一、中断的基本知识

         NIOS II可以响应软件异常和硬件中断,可以支持32个中断源。每一个使能的硬件中断都一个ISR与之对应。

要完成硬件中断工作,要有以下两个步骤:

1、  编写处理特定设备中断的ISR

2、  用户程序必须注册中断函数ISR,函数的原型为:alt_irq_register(alt_u32 id,void *context,void(*handler)(void *,alt_u32))

       ISR函数的原型有特定要求,如下所示:

              void ISR_handler(void *context,alt_u32 id)

其中:id是设备的硬件中断号,context是一个用来向ISR传递语境相关信息的指针,handler为中断服务函数ISR的指针。ISR函数中的id和context与alt_irq_register()中的是相同的。

二、硬件开发

       在SOPC中添加相应的模块,如PIO,UART等。这里我按照《NIOS那些事》的讲解,只是添加了按键PIO和UART的模块。具体过程参考《NIOS 那些事》。

       不过,要注意的是,NIOS只对高电平敏感,因而在按键实验时,要在输入时添加一个非门,然后再连接到KERNEL上的按键输入。

三、软件开发

      在编写软件时,格式和LED时的差不多,不过要注意的是UART模块的寄存器较多,因而不要漏写。这里可以再参考《n2cpu_Embedded Peripherals》。代码可以参考《NIOS 那些事》里提供的代码。

四、调试

       在调试按键中断实验时,基本没有问题。但是在调试UART时出现了一点小问题。就是把程序都下载好了以后,NIOS软核运行起来后,一直往串口上发送事先写好的数据。至于接收或者自收发,需要自己改动程序。

       在调试串口时,参考了另外的方法,那就是使用文件的操作方法,这种方法比较简单。也不用写很多的代码,就可以操作串口。

------------文件操作方式的串口自收发-------------