NIOS II学习--第四课 中断及串口通迅
0赞一、中断的基本知识
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软核运行起来后,一直往串口上发送事先写好的数据。至于接收或者自收发,需要自己改动程序。
在调试串口时,参考了另外的方法,那就是使用文件的操作方法,这种方法比较简单。也不用写很多的代码,就可以操作串口。
------------文件操作方式的串口自收发-------------

