苦逼的研究生被导师压榨,连续肝3个项目同时进行,累死我了,咱们要好(fa)好(qi)学(fan)习(kang),天(顺)天(来)向(逆)上(受)。好了不闹了。
2022年5月10日20:26:28
浅谈linux驱动开发到imx6ull上,简单点说ubuntu下tftp通讯搭建好,imx6ull内核编译好,就打开万能的vscode,然后编译,通过tftp发送到核心板,多简(kun)单(nan)。具体看正点原子37linux内核移植,40字符设备开发,62spi驱动实验
spi驱动:CPOL, CPHA两个模式是spi通讯的基础,因为两个clk需要对应,所以通过极性和相位来合拍,所以就是这两参数设置模式的。具体程序参考正点原子的,我只是一个小白闪闪可怜没人爱,技术还菜。
实现的功能:spi不断发送数据。至于代码,抄啊,copy啊。
在驱动汇总写好myspi_write具体的函数
然后驱动和上一层关联
.write = myspi_write,
主函数调用write即可,其余和c语言编程一样
static s32 myspi_write(struct icm20608_dev *dev, u8 *buf, u8 len)
{
int ret;
unsigned char txdata[len];
struct spi_message m;
struct spi_transfer *t;
struct spi_device *spi = (struct spi_device *)dev->private_data;
t = kzalloc(sizeof(struct spi_transfer), GFP_KERNEL);
gpio_set_value(dev->cs_gpio, 0);
t->tx_buf = buf;
t->len = len;
spi_message_init(&m);
spi_message_add_tail(t, &m);
ret = spi_sync(spi, &m);
kfree(t);
gpio_set_value(dev->cs_gpio, 1);
return ret;
}
//以下是主函数
filename = argv[1];
fd = open(filename, O_RDWR);
if(fd < 0) {
printf("can't open file %srn", filename);
return -1;
}
while (1) {
ret = write(fd,databuf,sizeof(databuf));
if(ret == 0) {
printf("send:ok");
}
usleep(100000);
}
程序弄好以后,改一下makefile的输出xxxxx.o,之后在vscode的控制台中make -j32下就行



