基于xilkernel的嵌入式应用程序设计方法 04
![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
基于xilkernel的嵌入式应用程序设计方法 04
msgsnd()才把消息复制到msg_p指向的数据结构中,此时此线程开始执行,并可以对接收到的消息进行处理。
中断
xilkernel已经被设计为可以和多个中断设备共同工作,用户用opb_intc ip核作为中断控制器来处理硬件中断。xilkernel仅支持一个中断控制器来连接ppc405的外部中断引脚,而且不支持中断控制器连接临界的中断。对于中断程序设计,xilkernel继承了standalone的中断处理方法。
在xilkernel_main()中已经完成了初始化powerpc405的中断表,并能使了中断控制器连接在处理器上的非临界的中断。下面是摘抄xilkernel_main()内部执行相关代码:
xexc_init(); /*初始化powerpc405的中断表*/
xexc_menableexceptions (xexc_non_critical); /*能使非临界中断*/
下面是开发应用程序要做的一些工作。首先,使中断控制器开始接收中断;其次,把必需的非临界中断添加到中断控制器上;再就是注册此非临界中断;最后能使此中断。下面是一个串口中断接收的简单代码:
void * first_thread (){......
xintc_mmasterenable(xpar_ myintc_baseaddr);
xintc_menableintr(xpar_ myintc_baseaddr, xpar_myuart_interrupt_mask);
xintc_registerhandler(xpar_ myintc_baseaddr, xpar_myuart_interrupt_intr,
(xinterrupthandler)uart_int_ handler,(void *)xpar_myintc_baseaddr);
xuartlite_menableintr (xpar_myuart _baseaddr);
......
}
void uart_int_handler(void *baseaddr_p) {/* 中断处理程序 */ while(!xuartlite_misreceiveempty (xpar_myuart_baseaddr)) {
ch = xuartlite_recvbyte( xpar_myuart_baseaddr);
......
}
}
一个中断事件和中断处理程序相连接。而中断处理程序应该尽量短,如果中断处理程序不能完全处理此事件,可以由信号量同步发起一个任务来处理本事件。
结语
xilinx公司的vritex-ii pro实现了“微处理器+可编程逻辑”的可配置设计平台,其出众的性能受到高端应用的青睐。在此平台上利用xilkernel嵌入式操作系统,为嵌入式应用开发提供了极大的系统结构灵活性。本文仅介绍了几种常用的基于xilkernel的嵌入式应用程序设计方法,读者还可以利用互斥、软件定时器等实现其它的功能。读者也可以根据嵌入式开发的经验和xilkernel的强大功能,构建复杂的fpga嵌入式系统。 |
|
|
|
|
|