硬件环境:
zynq7010
软件环境:
workbench6.9
vivado2018.3
petalinux2018.3
前言:
1.不知道怎么把vxworks移植到zynq的,去看我的其他文章。
2.vxwokrs下,对GPIO的操作思路可能有很多,我提供一种我的思路,就是直接对寄存器进行操作。
第一步:
将vivado的sdk中关于GPIO和中断操作的文件全都复制到vxworks中。
这些文件大多是c语言,少数有汇编。所以,你的编译器要选好,编译选项也要选好。
复制到vxworks中的文件如下:
少数几个文件需要修改,比如使用了xil_printf的函数,debug函数等等。
第二步,
初始化GPIO,并初始化GPIO中断。
注意,一定要初始化GPIO中断。若不初始化,GPIO根本不知道自己要产生中断。
第三步,
中断回调函数中一定要清除中断标志位。
使用xilinx的寄存器操作函数,即可清除中断标志位。
代码如下:
/**********************************************
* GPIO初始化,GPIO中断初始化
* 验证通过
* *******************************************/
int myGPIO_interrupt_Init( void )
{
STATUS sta = 0;
XGpioPs_Config *ConfigPtr; //PS 端GPIO配置信息
//根据器件ID查找配置信息
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID