驱动学习2:EBI总线,问题:驱动加载不上或读取iic数据失败,待解决
作者:互联网
EBI-----------External Bus Interface 外部总线接口
ARM手册解释:
设计外部总线接口(External Bus Interface,EBI)
是为了确保能在一些外部存储设备和ARM 内置的存储控制器之间进行正确的数据传输。
静态存储,DDR,SDRAM 和 ECC 控制器都集成到 EBI 的外部存储控制器,它可以处理不
同类型的外部存储器和外设,例如 SRAM,PROM,EPROM,EEPROM,Flash,DDR2
和 SDRAM。
EBI 工作在 1.8V 或者 3.3V(VDDIOM1)的环境下。
EBI 的专用电路支持 CompactFlash 和 NAND Flash 协议,这样可以减少对外部元件的要
求。
EBI 可以处理最大 6 个外部存储设备的数据传输,每一个在嵌入存储控制器里定
义地址空间。数据可以通过 16-位或者 32-位数据总线,最大 26 位的地址总线,最大 6 个
片选(NCS[5:0])和其他一些复用引脚来对外部不同的存储器进行传输
然后在挂载到AHB上,除了(user Interface挂到APB上)
问题:arm广播通过EBI找不到外部存储设备?insmod不了设备节点或插入usb有时识别有时识别不到?
参考:https://bbs.csdn.net/topics/390832483 中用户微水的回答如下:
SDRARM本身就是挂载在EBI总线上,且在bootstrap中已经初始化好了,如果要在linux kernel中访问SDRAM,是不需要专门写一个驱动的,只要用ioremap函数将实际的物理地址映射就好了,然后操作那个映射后的地址,就可以了。
所以关于EBI设备是在bootstrap中已经初始化的。
所以需要查看电路上在bootstrap起来的过程中是否有效的初始化EBI设备
SMC设备 (静态存储控制)
fpga设备挂载EBI上的引脚
EBI_NRD_F //读使能
EBI_NWE_F //写使能
EBI_NCS2_F //片选线 --EBI_NCS2
对应arm9 上PC13/NCS2
驱动模块打印:
eeprom_read_page: i2c_read failed with error -998.
module_get_valid_info: read eeprom module info failed.
optic_init: get valid module info failed with err -998.
optic_init: optic eeprom maybe not found!
optic_init used 96004 us.
标签:存储,optic,外部,总线,EBI,不上,驱动,控制器 来源: https://blog.csdn.net/qq_44635313/article/details/120348415