四、代码精讲 在Xilinx 的 SDK 工具中,提供了对 GPIO 控制器进行操作的函数,这些 API 函数在xgpiops.h头文件中。 (1) XGpioPs_Config *XGpioPs_LookConfig(u16 DeviceID) 根据唯一的设备ID号DeviceID,该函数查找设备配置。根据该号,该函数返回一个配置表路口。 (2) u32 XGpioPs_CfgInitialize(XGpioPs ...
drivers/gpio/gpio-mxc.c就是 I.MX6ULL的 GPIO 控制器驱动文件,在此文件中有如下所示of_device_id匹配表: 对照imx6ull.dtsi的gpio控制器可以看到能匹配: 打开drivers/gpio/gpio-mxc.c: probe函数内容如下: 点击查看代码 staticintmxc_gpio_probe(structplatform_device *pdev){structdevice_node*np=pdev->de...
20 print("MIO Test! \n\r"); 21 ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID); 22 Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr, 23 ConfigPtr->BaseAddr); 24 if (Status != XST_SUCCESS){ 25 return XST_FAILURE; 26 } 27 //设置指定引脚的方向:0输入,...
xparameters.h 是每个工程都必须要include的,里面包含了各个IP核的相关参数,尤其是我们添加的IP的参数尤为关键。如下图,可以看到DEVICE_ID 以及BASEADDR等数值,这些在使用相应GPIO时都会用到。 xgpio.h是GPIO的驱动文件,要使用GPIO的API函数的话,则需要将它include进来。 xil_printf.h。提供打印信息函数。如在程序...
1.区别于无Device Tree驱动程序而言,首先要有一个device_id结构体用于匹配我们在设备树资源里添加的属性: static const struct of_device_id gpio_demo_dt_ids[] = { { .compatible = "rk3328,gpio_demo", }, {}, }; 1. 2. 3. 4. 2.在平台设备驱动结构体里加上.of_match_table属性,of_match_ptr...
xparameters.h 是每个工程都必须要include的,里面包含了各个IP核的相关参数,尤其是我们添加的IP的参数尤为关键。如下图,可以看到DEVICE_ID 以及BASEADDR等数值,这些在使用相应GPIO时都会用到。 xgpio.h是GPIO的驱动文件,要使用GPIO的API函数的话,则需要将它include进来。
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID); if(GpioConfigPtr == NULL) return XST_FAILURE; xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr, GpioConfigPtr, GpioConfigPtr->BaseAddr); if(XST_SUCCESS != xStatus) ...
static const struct of_device_id gpio_learning_of_match[] = { { .compatible = "gpioled_learning" }, { /*sentinel*/} }; /* * platform 平台驱动结构体 */ static struct platform_driver gpio_learning_driver ={ .driver = { .name = "gpio_learning_device", ...
//GPIO初始化GPIOConfigPtr=XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);Status=XGpioPs_CfgInitialize(&Gpio,GPIOConfigPtr,GPIOConfigPtr->BaseAddr);if(Status!=XST_SUCCESS){returnXST_FAILURE;} 6. 设置GPIO管脚方向,使能输出: 代码语言:javascript ...