原创 多处理器互联系统协同工作的调试心得

2007-7-28 17:22 3486 5 5 分类: MCU/ 嵌入式
最近调试一款新的协处理器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条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条