背景
我正在使用 RTEMS 并尝试设置本机 NFS 客户端。尽管我已正确包含此内容,但驱动程序可用的动态驱动程序条目不足。您可以在此处寻求更多信息。
执行
为了设置额外的动态驱动程序,需要将 NULL 元素添加到一个大的免费驱动程序表中。请参阅以下内容:
#define NULL_DRIVER_TABLE_ENTRY \
{ NULL, NULL, NULL, NULL, NULL, NULL}
#ifdef CONFIGURE_INIT
rtems_driver_address_table Device_drivers[] = {
#ifdef CONFIGURE_BSP_PREREQUISITE_DRIVERS
CONFIGURE_BSP_PREREQUISITE_DRIVERS,
#endif
#ifdef CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS,
#endif
...
#ifdef CONFIGURE_APPLICATION_EXTRA_DRIVERS
CONFIGURE_APPLICATION_EXTRA_DRIVERS,
#endif
#ifdef CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
NULL_DRIVER_TABLE_ENTRY
#elif !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) && \
!defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS)
NULL_DRIVER_TABLE_ENTRY
#endif
};
#endif
本质上,这是在构建设备驱动程序表......
除冰驱动程序如下所示:
typedef struct {
rtems_device_driver_entry initialization_entry; /* initialization procedure */
rtems_device_driver_entry open_entry; /* open request procedure */
rtems_device_driver_entry close_entry; /* close request procedure */
rtems_device_driver_entry read_entry; /* read request procedure */
rtems_device_driver_entry write_entry; /* write request procedure */
rtems_device_driver_entry control_entry; /* special functions procedure */
} rtems_driver_address_table;
问题
可能非常简单的问题是,当我构建它时,我收到以下错误:
confdefs.h:568: error: too many initializers for 'rtems_driver_address_table'
从这里看,这似乎是用未指定数量的表元素编译的问题。我不明白的是,如果我用 7 s(我需要的数字)指定它,它目前正在工作,它会失败,但是用 6 s 它工作得很好?NULL_DRIVER_TABLE_ENTRY
NULL
NULL
据我所知,该表或其元素的大小没有定义?有任何想法吗?