Chinaunix首页 | 论坛 | 博客
  • 博客访问: 457897
  • 博文数量: 73
  • 博客积分: 3593
  • 博客等级: 中校
  • 技术积分: 912
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 11:32
文章分类

全部博文(73)

文章存档

2013年(2)

2012年(20)

2011年(25)

2010年(12)

2009年(14)

分类: 嵌入式

2010-11-21 01:16:49

写这篇的时候正在听范范的“天使的翅膀”,我很喜欢的歌,就用它来做标题吧。
 
10月20到11月19日,bcm53003平台花一个月时间终于完成了。
 
大概情况如下
1)bootloader
  排除硬件CPU大小端配置错误后Bootloader一版起机,意料之中。
---
 
2)nandflash驱动
 
  bcm53003的nandflash比较bt,现在local bus框架下的底层驱动接口要全部重构。相当于nand是基类,local bus接口的只需要实现hwcontrol()和读写数据的地址即可。但由于bcm53003 nand控制器的特殊,通过框架下的nand_base.c下的较多驱动接口不在适用,需要根据bcm53003 nand控制器重构上述驱动接口。在nand初始化的时候,将重新实现的nand接口注册到nand驱动框架。相当于在nand基类实例化的时候,重载了部分接口。加载ctrl(>6MB)到nandflash过程中死机,跟踪到是内存改写导致死机。(10月21日)
 
  有个地方主要注意的是:Programer's Gudie中控制器中行列地址长度寄存器不能按实际的长度设置,否则会写坏oob区。行列地址长度都要设为1byte才能正常。(很bt是不?) 这个问题反馈给FAE,FAE也确认是要这样配置。
---
 
3)pcie驱动
 
  10月22日例会沟通:先调试PCIe把文件系统问题放到后面再找。
  可以扫到PCIe设备、可以分配到地址空间。(10月25)
 
  访问PCIe设备memory地址空间遇到bus error异常。查文档、检查代码、查cfe源代码,没有发现问题。
拿demo板上cfe来跑一把,发现cfe也有同样的问题。发现邮件反馈给FAE,FAE隔日来访与之讨论,没有结论。(10月28)
 
  拿demo的主程序跑一把,demo主程序可以访问PCIe设备memory空间。又发现在demo主程序跑过一次后,不掉电重启到cfe,在cfe中也可以访问PCIe设备memory空间了。因此得出结论,cfe PCIe初始化有些东西没有初始化完全,在主程序中初始化才完全。将demo main中pcie host/device的寄存器dump出来和我们程序中的寄存器值比对。发现有几个不同,其中有一个关键的是pci device command寄存器的memory位没有打开。在PCIe控制器初始化玩之后,将上述memory置位后pcie device memory可以访问。由于ssp要的比较急,现在这个修改当作一个补丁版本提交。(10月29日)
 
  按照正常PCI驱动初始化的时候应该会把设备command寄存器的memory位置上才是。检查到PCIe配置空间读写算法,对于half word和byte访问的会有问题。细节发现,这个算法对于little-endian来说是正确的,对于big-endian half word和byte访问就错了。修改配置空间读写算法使之可以大小端都使用。例会上向硬件反映这个文件系统问题怀疑可能是内存不稳定导致,提供hwtest请硬件测试信号。(11月1日)
 
4)工程支撑
  继续查找文件系统问题(11月2、3)
 
  由于spi flahs暂时无法支持8MB(只支持4MB),>6MB的ctrl无法加载到spi flash里面需要将ctrl压缩。创建ctrl解压缩工程。在ctrl解压过程挂住,跟踪发现原来ctrl解压缩工程最大只支持4MB的ctrl、2MB的ctrl压缩包。修改支持最大7MB的ctrl、3.5MB的ctrl压缩包。创建ctrl解压缩工程的另一个原因是spi flash写入速度太慢,boot通过xmdown(115200bps)加载一个2.5MB的ctrl压缩包到内存需要大约需要5分钟、从内存写入spi flash大约需要20分钟。如果直接写>6MB的ctrl,大概需要50分钟。
 
  硬件内存测试发现时序基本满足,但是可能有些临界。
 
  SSP反馈main无法加载到内存。原来main最大只支持16MB - 128KB,这次的main确有近20MB。创建main解压缩工程将内打包,在main解压后中挂住控制台没有输出,试过多中波特率后还是没有输出。使用同样的解压缩功能将hwtest打包,hwtest解压缩正常。ssp怀疑和main大小有关系,说main的bss段有30MB。将hwtest bbs段也设置到30MB后在hwtest解压缩还是正常。调整ctrl加载地址和buffer大小,使之可以直接加载main到内存,不再依赖main解压缩程序。但是直接加载main还是控制台还是没有输出。
 
  先确定有没有跳转到main。实现汇编早期串口打印并将调试开关打开,发现已经跳转到main。然后再bsp 起机路径上加打印发现在spi flash初始化的时候有调用了printf打印挂起。(11月14)
 
  未完待续...
 
阅读(3575) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~