tx_buf期望在spi_transfer中作为输入

时间:2013-08-28 05:57:53

标签: c linux-kernel linux-device-driver watchdog spi

我正在寻找使用spi_transfer结构在SPI线上写入一些数据的代码

struct spi_transfer  
 {
 const void * tx_buf;
 void * rx_buf;
 unsigned len;
 dma_addr_t tx_dma;
 dma_addr_t rx_dma;
 unsigned cs_change:1;
 u8 bits_per_word;
 u16 delay_usecs;
 u32 speed_hz;
 struct list_head transfer_list;
};

现在有人在Code

中完成了这样的事情
u8 *cmd
cmd=kmalloc(3,GFP_KERNEL);
cmd[0]=16;
cmd[1]=32;

现在t [0] .tx_buf = cmd;

现在我想知道写入这个缓冲区的是什么以及tx_buf在这里期待什么? 我们通过SPI线写入一些看门狗计数器。

1 个答案:

答案 0 :(得分:1)

看起来您正在向SPI设备发送字节0x10,0x20,0x00。应该有其他代码定义并初始化struct spi_transfer t []的其余部分。值得注意的是,t [0] .len必须设置为3。

也许您的代码库是针对内核模块/设备驱动程序的。函数spi_message_add_tail()等在内核源代码中包含/ linux / spi / spi.h。它们不是动态模块,但是在加载模块时,模块将与内核链接。

检查内核源代码以获取SPI基础结构的使用示例,例如:驱动程序/碱/ regmap / regmap-spi.c。