首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于xilkernel的嵌入式应用程序设计方法 04

基于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嵌入式系统。
返回列表