Embedded 学习board bringup和hw diagnostics的最佳方法是什么?

Embedded 学习board bringup和hw diagnostics的最佳方法是什么?,embedded,embedded-linux,Embedded,Embedded Linux,这是我的背景,我拥有计算机工程硕士学位,大部分工作经验涉及为各种消费电子产品编写设备驱动程序。作为课程的一部分,我已经完成了8051和8086控制器编程。我还做了一些关于汽车硬件功能验证的工作。现在,我想进入一个非常低的层次,其中涉及到板闪烁、通电、引导加载程序编程、验证板上的各种组件、验证总线、内存等。使用微控制器学习嵌入式系统设计将教你如何设计板并将其打开。尝试使用Atmel AVRs进行一些项目。还有,还有 事实上,你的问题很广泛,学习这些东西有很多方法,但这是我最初的方向,对我来说很有效


这是我的背景,我拥有计算机工程硕士学位,大部分工作经验涉及为各种消费电子产品编写设备驱动程序。作为课程的一部分,我已经完成了8051和8086控制器编程。我还做了一些关于汽车硬件功能验证的工作。现在,我想进入一个非常低的层次,其中涉及到板闪烁、通电、引导加载程序编程、验证板上的各种组件、验证总线、内存等。

使用微控制器学习嵌入式系统设计将教你如何设计板并将其打开。尝试使用Atmel AVRs进行一些项目。还有,还有


事实上,你的问题很广泛,学习这些东西有很多方法,但这是我最初的方向,对我来说很有效。

首先你需要对电子学有很好的了解,EE学位有帮助,但不一定是必需的,这取决于你进入的市场

你肯定需要很强的图解阅读能力,好的图解和坏的图解

你肯定需要强大的数据表和其他参考手册技能。这些手册大部分都有错误,所以你也需要一些黑客技能。千万不要相信手册,千万不要在没有对硬件进行测试的情况下编写成百上千行的代码。一步一个脚印。有些供应商有很好的文档,有些很糟糕,可以在sparkfun和digikey和mouser等网站上浏览,从不同的供应商那里获取各种内容的数据表

sparkfun.com上有很多东西,基于arm、基于avr、基于msp430等等。这些当然都是经过测试的电路板,但可以教你如何引导,如何阅读原理图和数据表(程序员参考手册等),以及如何编程使设备运行

能够阅读verilog和vhdl,能够编写它就更好了。设计的“真实”文档是源代码本身

能够操作示波器。可能是你的头号调试工具,用于找出为什么没有出现问题,开发测试软件和调试软件

对常用的接口有很强的了解。spi、i2c、mdio、串行等。理想情况下,您应该能够在spi总线上放置一些示波器探头,并读取命令和响应

能够为上述任何一条总线编写代码,控制时序,使您不会超过任何相关部件的I/O速度能力

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

阅读fat文件系统。sd卡和其他类似的接口使用这个

学习usb

学习pci/pcie

德拉姆

ti的stellaris板上装有外围设备,试图找出如何与之对话

获取beagleboard示意图或open rd或plug computer示意图,研究所有主要组件,dram、闪存、sata、以太网、usb等

哦,对了,一定要学习如何编程EEPROM和闪存,EEPROM正在消亡,但不幸的是,它们之间的一致性更强。闪存部件,spi,并行,加上每个微控制器都有一个自定义接口,范围很广

一定要习惯使用jtag。openocd很好,sparkfun的ftdi系列转接板可以用来咬jtag,或者其他任何东西。amontek生产的jtag非常小巧,有利于arm或其他平台的重新调整用途。我认为lattice程序员也可以重新调整用途。说到…了解FPGA编程和启动的不同方式。同样地,如何通过对一些gpio接口进行位切换来编程fpga,通常fpga供应商会有一个框架(例如svf播放器),您必须提供后端,这与在openocd上放置后端不同。一些微控制器系列具有非jtag(通常为串行)接口,可作为加载/编程芯片的替代方法

查找,了解pwm、脉宽调制

研究vpi和其他将测试软件与硬件/hdl连接的方法,在模拟下,在芯片/逻辑上板之前测试和编写测试软件可以带来很大的好处

知道当有太多的电容或电阻,或每个都不够(振铃)时,时钟是什么样子。知道相声是什么样子的

能够焊接有帮助。大约一个小时内第三次,一个flash就要卖出去了,因为你一直在犯软件错误,并且在拼板,就像一个叫wolf的男孩,你不会得到太多的帮助

即席编程,你可以更快地编写一个程序/工具,你可以在一天内完成更多的事情

这提醒我,你必须有良好的纪律和耐心。在测试/调试时,一次只改变一件事,可能要花很长时间才能解决所有可能出错的事情,一次只改变一件事,走一条合乎逻辑的道路。把问题一次又一次地分成两半,直到找到原因为止。记录和存储所有您能做的事情,并能够从数据收集中提取相关信息并呈现出来。第一次就把它做好。板子很容易砌砖,而且垫子只能在板子报废之前进行多次返工。最简单的解决办法是不要犯错误。能够创建减少导致故障的人为错误的测试和测试装置。如果您无法在工作中管理自己的人为错误,您将如何减少与生产测试相关的人为错误?有能力和勇气捍卫和证明你对什么的信念