乐鑫技术交流
直播中

zhongnian

9年用户 1387经验值
擅长:MEMS/传感技术
私信 关注
[问答]

在rtos_sdk的driver_lib目录中制作驱动程序时,编译i2c_master报错怎么解决?

当我尝试在 rtos_sdk 的 driver_lib 目录中制作驱动程序时,我在编译 i2c_master 的步骤中得到了这个:
xtensa-lx106-elf-gcc -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno -builtin-printf -DICACHE_FLASH -I 包含 -I ../include -I /home/pi/ESP8266_RTOS_SDK/include -I /home/pi/ESP8266_RTOS_SDK/extra_include -I /home/pi/ESP8266_RTOS_SDK/driver_lib/include -I /主页/pi/ESP8266_RTOS_SDK/include/espressif -I /home/pi/ESP8266_RTOS_SDK/include/lwip -I /home/pi/ESP8266_RTOS_SDK/include/lwip/ipv4 -I /home/pi/ESP8266_RTOS_SDK/include/lwip/ipv6 -我 /home/pi/ESP8266_RTOS_SDK/include/nopoll -I /home/pi/ESP8266_RTOS_SDK/include/spiffs -I /home/pi/ESP8266_RTOS_SDK/include/ssl -I /home/pi/ESP8266_RTOS_SDK/include/json -o 。 output/eagle/debug/obj/i2c_master.o -c i2c_master.c
在 i2c_master.c:13:0 包含的文件中:
i2c_master.c: 在函数 'i2c_master_getDC':
../include/gpio.h:193:66: error: 'BIT0' undeclared (first use in this function)
#define GPIO_INPUT_GET(gpio_no) ((gpio_input_get()>>gpio_no )&BIT0)
                                                                  ^
i2c_master.c:60:15: 注意:在宏“GPIO_INPUT_GET”的扩展中
     sda_out = GPIO_INPUT_GET(GPIO_ID_PIN(I2C_MASTER_SDA_GPIO));
               ^ ../include/gpio.h:193:66:注意:每个未声明的标识符只针对它出现在#define GPIO_INPUT_GET(gpio_no) ((gpio_input_get()>>gpio_no)&BIT0)
中的每个函数报告一次                                                                  ^


i2c_master.c:60:15: 注意:在宏“GPIO_INPUT_GET”的扩展中
     sda_out = GPIO_INPUT_GET(GPIO_ID_PIN(I2C_MASTER_SDA_GPIO));
               ^
文件包含自 ../include/i2c_master.h:4:0,
                 来自 i2c_master.c:15:
i2c_master.c: 在函数 'i2c_master_gpio_init':
/home/pi/ESP8266_RTOS_SDK/include/espressif/esp8266/pin_mux_register. h:149:47: 错误:'BIT2' 未声明(首次在此函数中使用)
         SET_PERI_REG_MASK(PIN_NAME, (((FUNC & BIT2) << 2) | (FUNC & 0x3)) << PERIPHS_IO_MUX_FUNC_S); \
                                               ^
i2c_master.c:111:5: 注意:在宏“PIN_FUNC_SELECT”的扩展中
     PIN_FUNC_SELECT(I2C_MASTER_SDA_MUX, I2C_MASTER_SDA_FUNC);
     ^
在 i2c_master.c:13:0 包含的文件中:
../include/gpio.h:85:34: error: 'GPIO_PIN0_ADDRESS' undeclared (first use in this function)
#define GPIO_PIN_ADDR(i) (GPIO_PIN0_ADDRESS + i*4 )
                                  ^
i2c_master.c:114:20: 注意:在宏“GPIO_PIN_ADDR”的扩展中
     _PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); //开漏;
                    ^
i2c_master.c:114:158: 错误:'GPIO_PAD_DRIVER_ENABLE' 未声明(首次在此函数中使用)
     GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN(I2C_MASTER_SDA_GPIO)), GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(I2C_MASTER_SDA_GPIO))) | GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); //开漏;
                                                                                                                                                              ^
i2c_master.c:115:20: 错误:'GPIO_ENABLE_ADDRESS' 未声明(首次在此函数中使用)
     GPIO_REG_WRITE(GPIO_ENABLE_ADDRESS, GPIO_REG_READ(GPIO_ENABLE_ADDRESS) | (1 << I2C_MASTER_SDA_GPIO));
                    ^
../../Makefile:333: ***шибка вып***лнения рецепта для цели «.output/eagle/debug/obj/i2c_master.o»
make: *** [.output/eagle/debug/obj/i2c_master.o] Ошибка 1个
+ cp .output/eagle/debug/lib/libdriver/.a ../../lib/libdriver/.a
cp: не удал***сь вып***лнить stat для «.output/eagle/debug/lib/libdriver/.a»:上一个
xtensa-lx106-elf-strip --strip-unneeded ../../lib/libdriver/.a
xtensa-lx106-elf-strip: '../../lib/libdriver/. a': 没有那个文件
+ cd ..

回帖(1)

张霞

2024-6-5 17:55:56
错误提示是缺少“i2c_master.h”文件。解决方法是从ESP8266_RTOS_SDK/driver_lib/include目录中复制i2c_master.h文件到您的驱动程序目录中。如果还有其他文件缺失,请查找以及复制相应的文件。如果还无法解决问题,请检查您的驱动程序源代码,确保引用了正确的文件和路径。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分