做底层库做了3个多月,我们的芯片就研制出来。芯片研制的准备大概有两年吧,而库的准备也都有一年。 刚开始比较混杂,我们做了fpga板子来提前验证硬件和软件代码。 对硬件的 驱动能力(数据电流等),板子输入输出的电流电压,还有温度等各种接口兼容性问题都做了非常多的测试工作。
下边说的都是已arm7为平台,使用axd和multi-ice开发工具。你还需要以下的工具:万能表,示波器,逻辑分析仪
1 说说芯片测试的基本流程吧。
第一步: 配置好PLL,也就是芯片时钟频率。我们的芯片是可以配置的,一般都是在启动项里配置(vector)。
你可以通过axd访问smem,看smem的值能不能被修改,不能修改,说明板子出问题。
第二步 让你可爱的uart可以输出正确的调试信息。 波特率,停止位,数据位,校验方式都要设置正确。调试时,你可以使用axd的烧录工具来配置;也可以直接通过axd工具,通过写内存地址直接写值;最简单的是写一个uart驱动来测试,直接在sram里运行,你或许需要写一个vector.s。 你必须清楚你的metrowerks code warrior for ARM developer suite工具能够干什么而不能够干什么。 printf出来的东西那里可以得到,而像sprintf又怎么才可以使用。
第三步 测试flash芯片的读写。可以到sram里测试,一般flash芯片的驱动都会拷贝到sram里来运行的。如果你的板子没问题,flash的读写也应该简单。驱动测试OK,就可以改写你的flash烧录工具。
第四步 烧录各个模块的测试程序进行调试分析。查找芯片bug,查找板子的bug和兼容性测试。
第五步 集成测试。
2 如果发现硬件中断(提示莫名奇妙的break),你可以在中断之后,保存ro-r12的寄存器值。
如果每次中断之后寄存器值都相同,则表明是与软件相关的,比较可能是某个地方写错了地址(可以看看PIC映射表)。
如果每次中断之后寄存器值都不同,说明是与硬件相关的。 检查板子电路。
很多时候,这种情况是程序死循环,pc值被 芯片置为0.
CPSR可以配置FIQ,IRQ,axd调试界面下,可以双击寄存器查看寄存器值,而且可以修改。你还可以修改PC的值为0,让它从头开始工作。
3 温度问题。 做嵌入式开发。稳定性是最重要的。 在中国做芯片,总觉得不可靠。温度测很重要,你需要
风筒和空调以及温度计。 如果你的 芯片晶体振荡器 随着温度而表现不同,game over。你可要知道做一个芯片可要100多万。 出现类似问题时, 你可以通过转接板类似称呼的东西先顶着用,然后检查板子设计,看哪里导致温度如此离谱,不要忘记看看驱动能力的配置。祈求上天其他地方没有错。
4 板子问题。 板子是芯片和软件的中间,很多人不重视。觉得布一次板只要2k就觉得很少,很想多布几次。但你要
知道这样会浪费嵌入式开发人员的时间,这些人的薪水会高的离谱,而且人数也是众多的,烧钱不是这样烧的。
做板子一定要得到最新的芯片datasheet。第一次为芯片做板,要用最好的器件,用最好的焊工,对电流,电压,芯片接口要研究透彻。 如果最好flash用的是16位的,你弄成8位,不扁你才怪。