qca956x flash usb

Qca9563

平台: qca956x +ap152

1.       Flash 地址问题

原板设计为16M nor flash, 后期改为32M flash,  出现不能访问后16M flash空间,从原理来看,访问16M及大于16M flash 空间,只有一个地址命令的区别, 发送三地址命令或者四地址命令。

首先排除的是:发送命令的原因,即驱动发送的读写命令正确

第二,用正确的读写命令,操作后16Mflash 空间。    结果不成功。

 

后来内存映射才发现高通CPU对spi NorFlash的特殊的读取优化,优化的空间长度为16M,所以用标准的spi 读取命令会失败。

 

从映射图中可以,flash仅可以映射16M。

通常,访问SPI Nor Flash都是基于SPI总线接口,串行读取。但是高通的CPU对此做了一个硬件优化,可以将16MB及以下的Flash地址空间映射到一个内存空间直接访问(对于这些MIPS内核的高通CPU,该段空间属于kseg1区域),这样当要读取这些flash上的内容时,代码可以采用memcpy模式,很好的提升了读取速度。

这种方式虽然可以提升flash读取的速度,缺点是可以访问16M 以下flash空间,所以对于16M 以上的flash, 就需要disable 这种确件优化,使用通用spi 总线去操作Nor flash.

以使可以灵活操作16M flash以的空间。

 

修改为标准spi mode

1.如果没有设备树的情况,最简单的方式,在驱动probe的时候,将is_flash 赋值为 0

2. 如果有设备树的情况下,注释掉 is-flash这行,即切换为spi标准模式

 

 

2.       USB 时钟问题

由于在项目中遇到usb不通的问题,奇怪的是在evt在没有问题,但在dvt上有问题,看起来是一个离奇的问题。

在驱动上debug,得到结果是usb controler收不到任何数据,接着下一步开始debug时钟,当前使用的ehci,usb2.0,最高速度480Mbit/s,所认让usb controler进入test mode,用仪器测试时钟,发现时钟高达500多M,于是重点找时钟问题。

开始查register

USB_REFCLK_FREQ_SEL: 0x2  25MHZ

USB_REFCLK_FREQ_SEL: 0x5  50MHZ

最终发现reset之后用的0x5, 而我们当前所用的外部时钟为25MHZ。呵呵哒

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值