新闻  |   论坛  |   博客  |   在线研讨会
NIOS II 处理器应用程序初学者入门之一—流水灯程序的解释
dianzixinxi | 2012-08-04 22:32:54    阅读:2909   发布文章

sopc.h文件编写例程:
#ifndef SOPC_H_
#define SOPC_H_

#include "system.h"

#define _LED

typedef struct{
    unsigned long int DATA;
    unsigned long int DIRECTION;
    unsigned long int INTERRUPT_MASK;
    unsigned long int EDGE_CAPTURE;
}PIO_STR;

#ifdef _LED
#define LED ((PIO_STR *)PIO_LED_BASE)
#endif

#endif /*SOPC_H_*/
解释:

1. PIO_STR是一个结构体,它是:
typedef struct
{
    unsigned long int DATA;
    unsigned long int DIRECTION;
    unsigned long int INTERRUPT_MASK;
    unsigned long int EDGE_CAPTURE;
    
}PIO_STR;
2. PIO_STR *是表示指向这样一个结构体的指针
3. LED_BASE是一个数值:0xXXXXXXXX,这里代表地址
4. (PIO_STR *) LED_BASE 表示对这样一个地址进行强制转换,使得它变成指向结构体的指针
5. #define LED         ((PIO_STR *) LED_BASE)     
所以LED是一个值为0xXXXXXXXX(表示指向地址0xXXXXXXXX)的,指向一个PIO_STR结构体的指针。地址已经确定,下一步就该在0xXXXXXXXX这个地址上分配一个具体的PIO_STR结构体了。 

注意:LED这个指针永远指向一个地址在0xXXXXXXXX的结构体。它不能指向其他地方,因而是一个常量指针。但是它可以对指向的结构体进行修改。
这个PIO_STR结构体定义了PIO设备的寄存器映射,这个程序是通过寄存器的操作方式来控制PIO设备,从而实现流水灯,同时也可以通过调用PIO设备的API函数来实现,如IOWR_ALTERA_AVALON_PIO_DATA(base, data) 来实现PIO设备赋值。
本文参考了黑金社区的重要文档资料《NIOSII那些事儿》,版权归其所有,只是引用,供自己和大家学习之用。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
我希望和大家交朋友,也希望大家都认识我呵呵。
推荐文章
最近访客