最近调试一款新的协处理器M,一直不能和主处理器D稳定协同工作。在多日努力下,目前可以稳定工作。在调试过程中有如下心得和各位分享:
因为是预研,所以两个处理器是通过飞线把两个板子连一块。主要包括了数据线、地址线、读、写、reset、hold等pin脚连接。两个处理器都集成了arm9的核心。所以总线频率一般在50MHz以上。而飞线过长,这样导致两个处理器离得太远,增加了很多不稳定性。这些影响主要集中在CS片选信号时序的不稳定。长时间、大量数据时会有个别数据出错。而对于连续的数据,如果有一位出错,那么整个数据传输就是失败的。为了增加cs的稳定性,我们把cs和rd,wr等时序都配置很长。再在cs上连接200p电容对地。这个稳定性就完全解决了。在两个处理器做在一个板子上时,我们再对cs时序进行调整,以增快传输速度。
对协处理器M和主处理器D联调时建议按照如下步骤进行:
1、检查连线。
(1)确保共地良好,尽量使用短且粗共地线。最好在两根以上。
(2)WR和CS的公共低电平时间尽量拉长一点。
(3)尽量使用同一个电源给两个板子同时供电。
(4)注意GPIO口等接口的电平配对。3.3v、2.8v、1.8v等不同电平之间互连时,要在相连的接口上使用相同的电平。
(5)reset电路要保证足够的复位时间。
2、重写协处理器相关的基本函数。
(1)延时函数的重写。使用主处理器的延时函数替换协处理器的延时函数。
(2)打印函数的重写。使用主处理器的打印函数替换协处理器的打印函数。
(3)对数据类型的重新typedef。u32、u16等重新定义。
(4)基地址等宏重新定位。#define base_address 0x24000000
(5)reset、hold等GPIO口的基本函数控制定义。
(6)download code到协处理器SDRAM的函数重新和code数组定义。
(7)SDRAM类型重新调整。16M或者8M等。
(8)一些*.a库的移植。
3、检查信号。
(1)reset、hold等基本控制信号正确性的确认。
(2)使用检查函数对data、address总线和其他信号线连接正确性检查。
(3)时序检查。CS和相关信号的时序检查。为了保证稳定性,建议尽量放长各个时序,在cs引脚上接200p电容对地。
(4)by pass对基本协处理器寄存器读写确认。
(5)by pass对lcd等控制确认。
4、download code到协处理器。
(1)建议在每一个数据传输后,加一定延时,保证时序稳定。调试中我起初没有加这个延时,导致download code失败。在每一个数据传输后加上大约1us不到的延时时间后download成功。(这个操作在两个处理器做在一个板子上后可以去除)
5、在上面都成功后,就是对协处理器的各个功能函数验证。
6、封装协处理器的函数提供给MMI层调用。然后debug。
/****************************************/
本文为原创。如果转载,请注明出处。谢谢!
/**************************************/
文章评论(0条评论)
登录后参与讨论