欢迎大家来到IT世界,在知识的湖畔探索吧!
电路板板回板后,如果串口能够正常打印,则我们很多调试手段都可以运用,能够运用串口打印,或者调试工具能够快速的进行问题定位。
最痛苦的就是嵌入式系统,我们的知识体系比较单一,团队中缺少软硬兼修的人。如果回板的电路板虽然不冒烟,但是无法明确是软件问题,还是硬件问题的时候,就需要我们通过一系列操作进行问题定位,然后逐步歼灭问题,最终达到串口能够正常打印的地步。
早期在X86系统中,为了帮助定位问题,会选择这样的80卡,用一个PCI外设来显示故障部件的位置,缩短调试的时间和过程。
但是最痛苦的事情是,80卡也不亮。
所以我们需要逐步排除硬件问题,捋清楚硬件启动的过程:
1、时钟问题。
一般表现在时钟配置异常,晶振的选型频率范围有问题,超出芯片主频工作范围。
还有晶体不起振,我们碰过有同事归一化电容,把晶振的负载电容容量选型选的容值过于大了。
也碰过晶振的走线太长,导致处理器接收端的信号质量不好,导致无法正常启动。
2、电源问题。
电源完整性的质量差,纹波过大,尤其开关电源供电时;或者供电输出不稳定;或者系统供电能力不足而引起电源波动等。例如有一些设计错误,电压错误、电流能力不足、电源之间的相互干扰等等。我们需要仔细排查电源本身的问题。
3、上电时序的问题
电源之间的先后关系,我们设计电路板的时候,需要捋清楚每个电源上电的先后时序要求,很多芯片都会有相关的要求:处理器、FPGA、DSP等等一般都会有时序要求。
容易忽略的一个点是:不光是电源时序有要求,有些芯片的时钟稳定、电源稳定、复位信号之间有先后关系,或者还有时间间隔的要求。
我们需要全方位排查时钟、电源、复位信号之间的时序要求。特别是一些共用电源的芯片,很可能由于时序要求,我们要分别供电,或者需要通过MOSFET控制上电时机。
4、BOOT脚配置问题。
对于ARM芯片往往都有些BOOT配置脚。经常遇到有人因为BOOT脚的焊接或接触不良导致各类奇怪问题。这种情况多表现在芯片功能时好时坏,或者部分芯片正常,部分芯片异常。
我们不管是ARM也好、X86也好、DSP也好,以及MIPS、现在RISC-V都存在启动路径的问题。有TF启动、U盘启动、硬盘启动、光盘启动等等。
我们需要知道要么像X86那样,有BIOS来配置启动路径,或者像有的ARM通过上下拉电阻来配置启动路径。
最近在玩英伟达的Jetson,最不爽的一件事就是:不同的启动路径,使用的系统镜像不同。如果我们忽略,会导致系统无法启动。
5、启动文件问题。
经常因为选错了启动文件,导致程序无法正常运行,或者说调试时好好的,脱机运行就不行。这点在做不同系列芯片间移植时最容易碰到。
有些处理器的启动配置文件很复杂,没问题的时候容易被大家忽略,一些处理器的基础配置在配置文件里面。如果配置文件错误,会导致处理器启动异常。
6、地址空间错误
我们从软件的视角,有时候很容易忽略启动地址。地址空间有时经常会把软件人绕晕。硬件的人想搞清楚,也费尽。
对于X86系统的地址空间更复杂,内存空间分四个模式,还有IO地址空间。
案例:某一个多核PowerPC的处理器串口没有打印
1、现象、问题描述
单板回板后,单板启动失败,串口没有打印。这是一个典型的单板调试过程。故记录作为回板调试参考。
2、关键过程、根本原因分析
单板回板后,串口没有打印。处理器为多核PPC,小系统通过CPLD对Local Bus进行解复位。下图为P4080小系统框图, P4080小系统P4080, DDR3 SDRAM,CPLD,Flash构成。P4080通过SRIO接口实现对DSP的加载和控制,通过SGMII接口和FPGA交互媒体控制报文。
问题一:单板启动到什么程度。
分析一:配置字没读完,刚读32bit,处理器就挂住了,没有继续读取RCW(配置字)。
结论一:在读取RCW的阶段就挂死了。
措施一:查看和核对RCW。
问题二:RCW有什么错误,它的错误为什么会导致处理器挂死。
分析二:单板的RCW与DEMO板的RCW,除了内容不同(硬件环境,设计需求不同),同时RCW的长度也不同。
Demo板的RCW
aa55 aa55 010e 0100
4c
5050 5050 0000 cccc 5840
0000 c
03c
fe80 0000 0100 0000 0000 0000 0000 0000
0000 0000 00df 07fd a000 0000 0000 0000
0000 0000 0000 0000 0813 8040 ff30
41a
我们单板烧入的RCW没有红色的字。
结论二:RCW不单单是根据硬件设计,对各个数据进行填写,同时,CPU有校验功能,在RCW的头和尾都有校验数据。这些配置字的生成,供应商提供了一个工具,按照处理器的的设计,直接进行选择,然后可以直接生成完整的RCW。而我们之前的RCW校验失败,所以启动失败。
我们的设计方法直接借鉴公司大规模使用的单核PowerPC 8321的设计方法:1、阅读器件资料,理解配置字的含义;2、列出配置字的内容;3、整理成16进制发给软件工程师。
由于多核PPC的RCW变得复杂,且有校验码,所以P4080等多核PowerPC的RCW可以通过工具生成,工具如下:
措施二:利用工具生成RCW,烧入Flash。
问题三:RCW的数据正确了之后,仍然没有打印。
分析三:配置字已经跑过了,又挂在Bootrom。
看了一下波形,配置字跑完,又跑了40字节。
先怀疑配置字问题,我觉得没有问题,依据是原来跑步起来,现在跑起来了。
我跟陈陆安又核对了一次配置字。并且发现,处理器版本选择V1.0、V2.0对于我们的单板来说,生成的配置字是一样的。
BOOTROM的启动挂死的比较前端,估计应该没有读到BOOTROM。查看Flash烧片文件,第一条指令与RCW之间预留了若干位,其中填0,软件多填了一行0.
发现软件的起始地址不对。
下图为我们需要的数据存储在Flash的位置,RCW的存放位置为MPI Flash能够读取的最低地址。而BOOTROM的启动地址是FFFF,FFFC。配置字的启动地址:CS0的最低地址。
如下图所示:
但是实际上我们是下面这样弄的:
结论三:由于BootRom和RCW没有存储到CPU默认读取的地址,所以导致Bootrom没有被读到,所以启动失败。
措施四:于是我们考虑在Flash里面加载现有代码两个地方,
通过设置JTAG的起始地址,实现加载。
JTAG加载起始地址:127Mbytes,但是Flash的位宽为16bit,所以JTAG加载的起始地址:
127M
7F
0x
7F
3F
最终的交付版本,是通过CPLD地址重定向实现的RCW和BootRom存储在连续地址。
问题四:串口可以打印,但是BOOTROM下的打印正常,但是进入VxWorks之后,打印乱码。
分析四:虽然打印了一堆乱码,但是键盘可以输入。根据判断,单板已经正常工作了,但是当时怀疑是内存问题导致的数据错误,导致打印乱码。
分析四:通过仿真器,对内存进行批量读写操作,说明内存的数据是正确的,排除了内存的问题。
底软的开发人员怀疑的VxWorks下的中断错误,导致串口乱码。当时给出三条否定意见的依据:
中断服务程序很大不可能插入到前4k中,所以无法实现
为什么Demo可用,而我们单板不可用?
中断问题,只会造成发送速率慢,而不会造成乱码
通过查代码发现:
Demo板通过CS3读取了数据,用于配置处理器的大量寄存器。
Demo板的所有CS都是连接到FPGA的
Demo板子上面,FPGA的CS3如同我们CPLD寄存器。
里面有大量单板硬件信息。例如:
FLASH的映射方式
单板CPU主频。
后续,我们重点关注了这个:“单板CPU主频。”
启动时,BootRom是直接操作UART的,对UART初始化一次。进入Vxworks之后,又对UART初始化一次。所以有可能把UART寄存器改了。
通过CS3读出的处理器主频,直接写定。SYStemCLK是从CS3中读取的,波特率是通过SYSTEMCLK分频得出的。
1、 示波器测试UART的波特率:上电时为115200,后来乱码之后为8k左右。
修改了SYSTEMCLK之后(由于我们的单板没有CS3,所以原先从CS读取SYSTEMCLK,导致了错误),出现VxWorks界面。串口打印正常。
结论四:通过固定处理器的SYSTEMCLK,实现VxWorks下的正常打印。
3、结论、解决方案及效果
单板在回板后,有大量的问题:
配置字校验数据缺失;
BootRom的存储地址问题;
VxWorks加载过程中修改了处理器主频,导致串口乱码。
4、经验总结、预防措施和规范建议
这不是一个什么高级的案例,但是每个使用新处理器的单板返还,都会有一段曲折的路走。
单板在返还后,如何不走这段弯路?
a、 每一个操作,都需要有依据,例如BootRom的存储位置等,这些不明确的话,肯定会引入问题。
b、 不要直接套用已有的经验,例如RCW在单核PowerPC和多核PowerPC的开发模式发生了变化,需要与供应商充分沟通。
c、 硬件,软件不要划分界限,要相互渗透,在串口还没有打印前的问题,需要所有开发人员都非常清楚,而不是相互推诿,相互依赖。
d、 问题定位,下一步的猜想,需要心思缜密,不是每个猜想都要去验证。为了更好的项目进度进展,需要经过逻辑判断,否定一些错误的猜测和假象。但是这需要严密的逻辑思维,否则适得其反。
新书推荐:
一些硬件调测的操作案例,收录在硬十的新书《开发流程篇》中
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34182.html