怎麼結合嵌入式,Linux,和FPGA三個方向達到一個均衡發展?

我目前懂得東西是不很精通 每一樣都可以說是入門,本人目前是大學生,學習電氣工程及其自動化專業,喜歡編程,喜歡單片機,如arm 用過cortex-M4,冷火,stm32 ,希望可以將多種知識彙集起來,比如現在比較火的物聯網,我也不是在自大什麼,我只是有這個想法。一句話說的話,夢想有多高,你就能走多遠。所以不要說什麼裝什麼的,我想大家應該會懂得。


一個吃飯的活計而已,想那麼多幹啥啊,老大要你做什麼工作,要用到哪塊知識了,找時間補上能用就是了,等上手了再慢慢精通。

-------

補充下Linux的學習,作為一名FPGA工程師,Linux學習大致可分三層吧:1. Linux基礎知識與操作; 2. Bash/Csh、TCL、Perl等腳本的使用,和EDA tool腳本的使用; 3. 根據需要,如嵌入式Linux和Linux driver和應用等的開發和使用。

1. Linux基礎知識與操作

如Terminal里常用命令的使用,比如ls/rm/cp/mv/ssh/grep/tar等,基本的sh/csh編寫和執行,vim/gvim的使用等;如Ubuntu和RHEL的安裝、與WIN7一起共存成雙系統、Grub的安裝與恢復等;

這個沒什麼難度,基本上簡單學學,上網搜索下就能找到想到答案。

2. Bash/Csh、TCL、Perl等腳本的使用,和EDA tool腳本的使用

會編寫一些Bash/Csh腳本和運行,如寫Makefile等,執行的時候會根據錯誤提示找到問題所在,與TCL/Perl一起實現一些功能,比如調用基本命令、sed和EDA所帶的命令、對廣文進行處理、執行些自動化運行的腳本,甚至會些正則表達式的編寫,勤用Google、百度搜索答案。

比如Vivado運行,可一次性同時或順序執行多個不同參數的Vivado工程,PR結束後自動提取時序信息,找出最佳參數方案,下班時提交腳本運行一晚上第二天早上上班來查看結果; 對Vivado中間的過程進行些調整,如對PLL調相等,不需要重新去跑前面的綜合等。

靈活使用可以大量地節省時間和提高效率,是項不錯的利器。

3. 根據需要,如嵌入式Linux和Linux driver和應用等的開發和使用

如果項目上用到相關的知識,或有興趣,可以學學,比如另一答案提到的ZYNQ的使用;但如果項目上用不到,如果我是經理或主管,我不會喜歡team member在工作時間花在這上面。

總之,這些技能都是生產力工具,人也是生產力,在項目中扮演好自己的角色完成相應的任務就好,領取相應的報酬。如果學一堆東西但不能產生相應的效用,也算是白學。所謂T字型人才,在自己所在的方向上挖深點,同時保留一點的廣度,在有需要的時候也能快速切入。


題主提到嵌入式、linux和FPGA均衡發展,這種技術棧組合在IoT時代很有潛力。IoT設備應以中低端SoC嵌入式晶元為主,比如ARM SoC,因為傳統的低性能單片機已經很難滿足多樣的應用需求。這些系統可以跑起標準或精簡的linux,方便豐富且快速迭代的軟體開發。而中低端SoC的瓶頸在於處理器性能難以應對定製化的計算密集型需求,比如圖像處理、加解密,此時硬體功能可定製的FPGA就是理想的搭檔。

上手可以試試接觸下FPGA SoC,這類晶元主要面向嵌入式,同時具有高性能ARM處理器硬核和FPGA。

比如zedboard、zybo開發版上裝linux,做幾個軟體調用fpga加速的項目試試。

附送兩個參考鏈接:

http://xillybus.com/xillinux

Xillybus為zynq7000系列開發的linux系統,可以非常簡便地實現軟體和硬體通信集成。

https://github.com/hCODE-FPGA/hCODE

我們組最近公開的FPGA加速器開源平台。該項目仍在開發中,目前平台上有一個完整的排序加速器的開源例子,兼容vc707和zybo開發版,涉及到高位綜合、驅動開發等技術。感興趣的同學可以試試看。有疑問或建議歡迎私信討論。


別裝B,三個任何一個學精了都算牛B!任何一個都要付出大量心血和時間的


題主現在還是學生吧。

我說下我現在的情況。

自己本身是硬體工程師,會寫mcu,會寫linux,會寫fpga,會寫js,會寫python,會寫go。

怎麼理解這個會寫呢。。

mcu:各種寄存器理解到位,freeRTOS源碼基本看過一遍,fatfs的源碼基本看過一邊,lwip在用,沒用自習看源碼,用socket級別的。usb方面用得比較少,client storage。

linux,簡單看完一邊《unix高級編程》,寫過簡單的socket server,還要在看,正在看《linux設備驅動》,嵌入式的什麼交叉編譯也基本ok,一直想仔細研究uboot,還沒有正式開始。

fpag,用的比較多的是vivado,用的verilog,寫過一個簡單的圖像處理的系統,運動目標跟蹤,背景差法,不會時序約束,暫時不會去加強這個方向。

pyhton,寫過簡單爬蟲,用django做過一個網站,現在網站正在在轉go,暫時不能訪問。

js,會簡單的js,主要做web前端用,還處於用jquery的階段,在看vue.js,感覺jquery基本都能實現,為什麼還有出現這些框架,不是很明白,可能我做的東西還比較簡單。

一邊學go,一邊用go做server端,同時在用go寫mqtt的server,給我的iot的soc用。

------

學的雜吧,曾經也迷茫過,說我學的這麼雜,一點也不精怎麼辦。

現在不了,雜有雜的好,反正我有自習,你讓我搞個什麼東西,我能搞出來。

一些深的東西,你問我,我不會,可以很快得去學。

最後,其實很多東西是疏通同歸的。

mcu,讓你從寄存器開始理解,rtos帶你深入理解操作系統,linux 用戶空間,內核空間,驅動。

js,python,線程,進程,ipc ,js的非同步callback。

其實很多東西都是有關係的。

有些東西要能抽象,也要能回歸本質。

這是我現在的一點心得。

去打dota去了。。


znyq,你只需玩通znyq,除了模電其他的都「均衡」了


能問出這樣的問題,假以時日你會是個好工程師。很多人覺得只要精通一項就夠了,但實際三者結合是未來的發現趨勢。


嵌入式、linux、FPGA只是工具,建議結合開發板玩一玩。關鍵是業務知識,工具會用很快,知識需要大量時間積累,建議學好數字電路和數字邏輯、實時系統(分散式系統)、編譯原理、控制系統,及計算機組成原理、計算機網路、各種相關編程語言等。


玩不玩遊戲?這就像三條技能樹,升級了你就能任選一條自上而下開始點。所謂自上而下就是某條技能樹的高級技能是依賴於相關的低級技能的。人的生命是有限的,當然有人升級快有人升級慢,不排除大神天賦異常升級飛快,把三條所有的技能都點滿了,但是大部分普通人還是只能慢慢點了,你可以一主,一輔,也可以一主二輔助,當然你要三修也沒問題,也不見得比其他的弱。厲害不厲害關鍵還是要看其他因素的啦……比如對技能的應用熟不熟練,操作犀利不犀利,等級夠不夠高……


嗯,我也是,原子,野火,都看過,FPGA也剛入門


買塊zynq的開發板[fpga]上燒上linux系統[linux]和microblaze軟核[嵌入式]結合各種ip[fpga]做幾個項目。夠均衡了吧


這問題是給我提的吧。能把這三者的結合很不容易,能同時用刀這三者的工作崗位不多吧?


是學生嗎?為什麼要均衡發展,越均衡說明越不精通,多跟業界的人交流,選一個本人感興趣同時也有前景的方向鑽研下去吧。畢竟除非是富二代,出社會後買房子的時候很容易傻眼的……


推薦閱讀:

如何看待軟銀對 ARM 的收購,會帶來哪些影響?
nxp lpc11xx/13xx 在 deep sleep 模式下被中斷喚醒,需要延遲多久 CPU 才能全速工作?
為什麼專門研製ARM處理器的高通,其處理器性能卻比不過非專門化的蘋果?

TAG:ARM | 嵌入式系統 | 現場可編輯邏輯門陣列FPGA | Linux開發 | linux學習 |