DM644x SPI驱动移植与W25X80芯片集成详解

4星 · 超过85%的资源 需积分: 39 253 下载量 29 浏览量 更新于2024-10-19 4 收藏 72KB PDF 举报
本文档是对基于Linux 2.6.33版本的SPI Flash驱动在DM644x处理器上的移植总结,重点介绍了驱动的三个关键部分:DM644x的SPI功能模块驱动、W25X80芯片驱动以及SPI总线驱动。以下是详细内容: 首先,DM644x的SPI功能模块驱动(davinci_spi.c)作为SPI主机驱动,是基于该处理器内置的SPI资源开发的。由于它是平台设备和平台驱动的一部分,Linux将其注册为davinci_spi_device和davinci_spi_driver,集成到platform总线下,这样使得SPI功能在Linux内核中被识别和管理。 其次,W25X80的芯片驱动(m25p80.c)负责具体操作该SPI闪存芯片。这个驱动将设备注册到SPI总线上,通过bus_num值确定其挂载至spi.0或spi.1总线,依赖于GPIO引脚的选择信号。使用flash_platform_data结构来存储硬件连接信息,如设备地址和配置参数。 考虑到DM644x有两个SPI功能模块,Linux系统会额外注册spibus总线,通过spi_board_info来定义SPI总线属性,如bus_num值,区分不同的SPI端口。此外,platform_data字段用于描述spi_bus上挂载的设备,即W25X80闪存。 SPI数据交互的核心是在驱动中使用工作队列,通过spi_register_master调用scan_boardinfo函数,该函数扫描并匹配spi_board_info中的设备信息。当找到匹配的bus_num时,驱动将W25X80设备挂载到相应的SPI总线上,从而实现了SPI设备与主机之间的通信。 这篇文档详细解释了如何在Linux 2.6.33环境中,通过DM644x的硬件特性、平台驱动和W25X80芯片驱动,实现SPI Flash的驱动移植和管理,确保了数据在SPI总线上的有效传输和控制。理解这些关键步骤对于移植其他类似设备驱动或优化现有SPI架构具有重要的参考价值。