当前位置: 首页 > backend >正文

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
http://www.xdnf.cn/news/5742.html

相关文章:

  • Spring框架(二)
  • 2025年渗透测试面试题总结-渗透测试红队面试八(题目+回答)
  • 使用 Kyverno 验证 Kubernetes 容器镜像:实用指南
  • AUTOSAR图解==>AUTOSAR_TR_AIMeasurementCalibrationDiagnostics
  • 软考 系统架构设计师系列知识点之杂项集萃(57)
  • IIS URL静态化 伪静态组件ISAPI_Rewrite安装配置 伪静态不生效解决办法 避坑版
  • 音视频学习:使用NDK编译FFmpeg动态库
  • 【002】renPy android端启动流程分析
  • 主播美颜API常见问题解析:兼容性、性能与SDK效果调优
  • 【MCP】其他MCP服务((GitHub)
  • 001大模型-认识大模型以及大模型应用场景
  • docker gaussdb常用命令
  • 从MCU到SoC的开发思维转变
  • 【Python】杂乱-转义字符
  • 安装 NVIDIA 驱动 570.133.20 的自动化脚本
  • 鲁滨逊归结原理详解:期末考点+解题指南
  • 【AI论文】HunyuanCustom:一种多模态驱动的定制视频生成架构
  • 自适应蒙特卡洛定位-AMCL
  • HomeBank:免费且强大的个人财务管理软件
  • 【MySQL】牛客网sql语句简单例题,sql入门
  • 使用Daemonset部署日志收集守护进程
  • snoop操作怎么维护一致性?
  • 射频ADRV9026驱动
  • 供应链学习
  • 电脑端实用软件合集:土拨鼠+Rufus+实时网速监控工具
  • IDEA+git将分支合并到主分支、IDEA合并分支
  • 力扣2094题解
  • langchain4j中使用milvus向量数据库做RAG增加索引
  • 激光雷达点云畸变消除:MCU vs CPU 方案详解
  • AI Agent(11):垂直行业应用