2011-08-20 81 views
4

这是我的背景,我拥有计算机工程硕士学位,并且我的大部分工作经验都涉及为各种消费电子产品编写设备驱动程序。作为我课程的一部分,我完成了8051和8086控制器编程。我也做了汽车硬件功能验证的一些工作。现在我想移动到非常低的水平,包括闪存板,开机,引导程序编程,验证电路板上的各种组件,验证总线,存储器等。学习电路板启动和诊断的最佳方式是什么?

+1

你可以试试http://electronics.stackexchange.com/。 –

回答

24

首先你需要对电子学有一个很好的理解,EE学位有助于但不一定要求,取决于你要进入的市场。

你绝对需要强大的电路图阅读技巧,良好的电路图和坏的。

您绝对需要强大的数据表和其他参考手册技巧。这些手册中的大多数都有错误,所以您还需要一些黑客技能。不要相信手册,不要在没有测试硬件的情况下编写数百或数千行代码。一步一步来。一些供应商拥有良好的文档,有些是可怕的,有冲浪sparkfun,digikey和mouser等地方可以获得来自不同供应商的各种产品的数据表。

吨sparkfun.com,基于arm,基于avr,基于msp430等等的东西吨这些当然都是测试板,但可以教你如何启动,如何阅读原理图和数据表(程序员参考手册等)以及如何对设备进行编程以使它们执行。

如果你从来没有把芯片拿起来,或者让我从复位引导一个,我在github上有几个模拟器,搜索thumbulator找到其中的一个,然后从那里开始。您可能会发现lsasim有趣,因为我有一种方法来模拟它的硬件/逻辑版本,并且您可以在运行时看到它的内部工作原理。您可以感受一下如何让gcc构建一个可以从中启动芯片的二进制文件。

读取verilog和vhdl的能力,写它的能力甚至更好。设计的“真实”文档就是源代码本身。

操作示波器的能力。可能是您的头号调试工具,用于弄清为什么没有出现,并开发测试软件和调试软件。

为经常使用的界面开发强大的知识。 spi,i2c,mdio,serial等。理想情况下,您应该能够在spi总线上放置一些示波器探头并读取命令和响应。

能够编写代码来对上述任何总线进行控制,控制计时,以便不超过任何相关部件的I/O速度能力。

基本的以太网协议和工具,如wireshark或其他类似的。如果在板上有以太网,则需要将该接口接通,接收一些数据,将其转储出来以便能够解析字节并查看数据包。能够生成简单的数据包,arp,ping,udp。

读了FAT文件系统上。 SD卡和其他类似的接口使用这个。

学习USB。

学习pci/pcie。

DRAM

矢从TI板装有外设揣摩如何交谈。

得到BeagleBoard的原理图或开D或插上计算机原理和研究所有主要元件,DRAM闪存,SATA,以太网,USB等

哦,对绝对学习如何编程的EEPROM并闪烁,eeproms正在消失,但不幸的是彼此更加一致。闪存部分,spi,并行,加上每个微控制器都有自定义接口,范围很广。

defintely习惯使用JTAG。 openocd是很好的,sparkfun的ftdi串行分线板可以用来放大爆炸,或者其他任何东西。 amontek制作的jtag-tiny适合用于手臂或用于其他平台的重新调整。我认为格子程序员也可以重用。谈到...了解fpgas可以被编程和引导的不同方式。同样,如何通过bitbanging一些gpio接口来编写fpga,通常fpga供应商会有一个骷髅(例如svf播放器),并且您必须提供后端,就像在openocd上放置后端一样。一些微控制器系列具有非jtag,通常是串行接口,可用作加载/编程芯片的替代方式。

查找,了解PWM脉宽调制。

研究VPI和其他连接方式与仿真环境下硬件/ HDL测试软件,极大的好处可以来自测试和写作测试软件对芯片/逻辑之前,它是在电路板上。

知道什么时钟看时,有太多的电容或性能及其,或者没有足够的每个(振铃)的等。知道串扰的样子。

能够焊接帮助。在大约第三次一小时之后,闪光灯必须是未修补的,因为你不断制造软件错误和制造黑板,就像哭狼的男孩一样,你不会得到太多的帮助。

特设编程,你可以更快掀起程序/工具的更多的东西,你可以在一天内得到完成。

这让我想起你必须拥有出色的纪律和耐心。只有在测试/调试时才改变一件事情,它可能需要一个永恒的工作来处理所有可能错误的事情,一次一件事,采取逻辑路径。一次又一次地将问题分成一半,直到找到原因。记录和存储您所能做的一切,并能够从该数据集中调用相关信息并呈现。第一次就做对了。电路板很容易变砖,而电路板只能在电路板报废之前处理多次重做。最简单的解决方案是不要犯错误。能够创建测试和测试装置,减少人为错误导致的失败。如果你不能在自己的工作中管理自己的人为错误,那么你将如何减少与生产测试相关的人为错误?有能力和勇气来捍卫和展示你对问题/解决方案/测试方法的信仰。例如,下面是如何使下一张卡片不可砖瓦化,每块板卡需要多少费用,以及在开发时间内将节省多少费用以抵消该成本。

您的问题太宽敞,您的开放式问题的答案是您需要了解所有可以连接到或连接到印刷电路板的所有内容。你需要能够在最低水平舒适地编程。所以完全理解digikey,mouser等的每一个数据表。能够对这些部分,所有编译器等中的每一个进行编程,如果你把问题缩小一些,我们可以给出一个更易理解的答案。

+2

如果这是Facebook,我会评论“超喜欢”:D – itisravi

相关问题