这段时间一直在忙着调试LAN9220模块,遇到不少问题也收获不少,记录一下这段时间的经历。
1、电路板有问题
1)、由于自己的疏忽做的lan9220电路板,丝印层没有。经过查找原来是自己在生成光绘文件时处理问题,网络设置一些选项。
2)、工业制板是没有镜像这个说法的,由于还是手工板的思路,导致开的板只能反过来装到核心板上。
3)、有一根地址线接错了,因为这个地址线花了不少时间。
4)、十六位数据线的地址线从1开始,0位不接。
总结:认真、仔细,再仔细!!!!!要有规章,流程化。
2、自己编译的内核无法运行。
由于刚开始接手beaglebone核心板,资料都在网上。结果出问题了,出师不利啊。自己编译的内核无法运行,经过和老师的努力发现是用的文件系统跟内核不对应。只要是/lib/modules/内核模块,想我用的是/lib/modules/3.2.0。其实出现问题并不可怕,关键是静下心了查看调试信息找到问题所在。
3、GPMC无法工作
在板级文件(board-am335xevm.c)中修改了所用管脚配置,初始化等工作,但就是无法使用更大的问题是一注册gpmc就死掉,通过打印信息应该是内存分配的问题,总之是无法注册gpmc。omap_init_gpmc注册gpmc设备就解决了问题。
成功注册了,剩下来就是配置那7个寄存器(GPMC_CONFIG1_i---GPMC_CONFIG7_i)的问题了(常用的只有前六个)。借鉴u-boot的omap3530的参数为
#define FPGA_GPMC_CONFIG1 0x00001000
#define FPGA_GPMC_CONFIG2 0x001E1E01
#define FPGA_GPMC_CONFIG3 0x00080300
#define FPGA_GPMC_CONFIG4 0x1c091c09
#define FPGA_GPMC_CONFIG5 0x04181f1f
#define FPGA_GPMC_CONFIG6 0x00000FCF
#define FPGA_GPMC_CONFIG7 0x00000f6c
参考资料:
https://github.com/Angstrom-distribution/meta-ti/blob/master/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0072-beaglebone-add-support-for-QuickLogic-Camera-interfa.patch
4、GPMC无法正确读写
一开始以为是芯片不工作,结果查了很久电路都没有弄出来。因为能正常的读取测试寄存器的数据,所以一直没有怀疑是地址总线的问题。花了不少时间,还是有问题。真的姜还是老的辣,老师提出了是不是地址线虚焊或短路了,之前我们能正确读出数据并不能说明地址线没问题,因为那个寄存器地址是在低位的所以可能高位地址线有问题。经过测试,果真问题出现在这里,我把高位地址线接错了。
这里说到地址线我想提一下16位数据的地址总线应该接7跟从1开始。
5、丢包严重
丢包严重啊,是电路板的问题吗。不会对差分线这么严格要求吧。
在此,要感谢老师的耐心指导,帮我破解各个难题。
http://e2e.ti.com/support/arm/sitara_arm/f/791/t/246997.aspx
http://blog.csdn.net/liujia2100/article/details/8688657
http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/20553.aspx?pi239031347=1