OrangePi Zero 3学习笔记(Android篇)7 - ftdi_sio
目录
1. 内核配置
2. SPI设备
3. 验证
这部分需要基于之前修改的ftdi_sio驱动,增加MPSSE部分的代码。
1. 内核配置
一般默认USB转串口是关闭的,所以需要配置打开。在源代码根目录下执行:
./longan/build.sh menuconfig
菜单进入顺序:
Device Drivers -> USB support -> USB Serial Converter support
勾选下面的选项:
USB Serial Console device support
USB Generic Serial Driver
USB FTDI Single Port Serial Driver
保存退出重新编译Linux内核。
在device/softwinner/apollo/common/system/init.sun50iw9p1.rc中找到on post-fs-data,添加chmod 0666 /dev/ttyUSB*
2. SPI设备
如果是增加MPSSE SPI的版本,由于Linux上是通过spidev_spi_ids创建SPI设备的,而Android上没有这部分,如果不想修改ftdi_sio这部分代码,就需要添加spidev的修改代码。
先找到文件longan/kernel/linux-5.4/drivers/spi/spidev.c,在“static struct class *spidev_class;”后面添加:
static const struct spi_device_id spidev_spi_ids[] = {{ .name = "dh2228fv" },{},
};
MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
然后在spidev_spi_driver添加.id_table = spidev_spi_ids,:
static struct spi_driver spidev_spi_driver = {.driver = {.name = "spidev",.of_match_table = of_match_ptr(spidev_dt_ids),.acpi_match_table = ACPI_PTR(spidev_acpi_ids),},.probe = spidev_probe,.remove = spidev_remove,.id_table = spidev_spi_ids,/* NOTE: suspend/resume methods are not necessary here.* We don't do anything except pass the requests to/from* the underlying controller. The refrigerator handles* most issues; the controller driver handles the rest.*/
};
3. 验证
console:/ $ ls dev/ttyUSB*
dev/ttyUSB0 dev/ttyUSB1 dev/ttyUSB2 dev/ttyUSB3
console:/ $ ls dev/i2c*
dev/i2c-0 dev/i2c-1 dev/i2c-2 dev/i2c-3 dev/i2c-4 dev/i2c-5
console:/ $ ls dev/spi*
dev/spidev0.0 dev/spidev2.1 dev/spidev2.4 dev/spidev3.2
dev/spidev1.1 dev/spidev2.2 dev/spidev3.0 dev/spidev3.3
dev/spidev2.0 dev/spidev2.3 dev/spidev3.1 dev/spidev3.4