2011-08-20 65 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

相關問題