欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關(guān)于嵌入式開發(fā)目前需要學什么東西
[打印本頁]
作者:
yongshi126
時間:
2019-10-21 16:31
標題:
關(guān)于嵌入式開發(fā)目前需要學什么東西
問問大家如果想開發(fā)智能家居系統(tǒng),用嵌入式系統(tǒng)做的話,需要學習那些知識,最好能有一些書籍材料指導
作者:
沒有你
時間:
2019-10-21 20:24
做智能家居會涉及到藍牙(BLE)、wifi、ZigBee等,一般如果直接用芯片做開發(fā),廠商基于自己RTOS做開發(fā)方案,比如TI OSAL主要用在BLE或者ZigBee,只要熟悉對應(yīng)的RTOS就能做開發(fā)了。如果你是用MCU+通信模塊,嵌入式系統(tǒng)就可以采用ucos或者linux,根據(jù)功能的復雜性選用適合的嵌入式系統(tǒng)
作者:
771260437
時間:
2019-10-22 14:52
沒有你 發(fā)表于 2019-10-21 20:24
做智能家居會涉及到藍牙(BLE)、wifi、ZigBee等,一般如果直接用芯片做開發(fā),廠商基于自己RTOS做開發(fā)方案 ...
首先要學習linux基本命令,下個ubuntu自己練,當時我耗費時間長了,看的xxx的網(wǎng)課,一星期左右吧。
然后師傅讓我學linux下的C編程。當時我以為有多牛逼,結(jié)果看了半天其實就是c語言,這部分根據(jù)你基礎(chǔ)適當復習。
接下來師傅給我的任務(wù)是在開發(fā)板上運行hello程序,我用的板子是mini2440。當時以為很簡單,但是搭環(huán)境確實耗費了太長時間。結(jié)合xxx第一期視頻自己看,我告訴你用到的軟件,視頻有的地方不適合我們。suppervivi什么什么的一個軟件是代替dnw的,然后CRT代替超級終端,cureFTP是ubuntu與win7傳輸文件,flashFXP是開發(fā)板與win7傳輸文件。可能不適合你的板子,自己摸索吧,相當?shù)疤郏ā?br /> 最后師傅直接給我一個牛逼的不行的項目,這時候的我還什么也不會,經(jīng)過摸索談?wù)劷?jīng)驗。xxx后面的視頻不要看了,那個驅(qū)動部分,初學者根本看不懂。你做項目都是要移植別人的驅(qū)動,然后寫應(yīng)用程序操作驅(qū)動什么的實現(xiàn)功能,這是你要學國嵌視頻第三不分,應(yīng)用開發(fā)不分,什么I/O,進程什么的。學完之后找?guī)妆緯蛘邚木W(wǎng)上找個項目做一做。這時候你可以找到工作了,職位叫嵌入式軟件開發(fā)。
一共半年時間,這只是剛剛?cè)腴T,后面的驅(qū)動什么的,以后再說
望有幫助
作者:
wangchenglyg
時間:
2019-10-28 09:09
日積月累
作者:
hnpdslyf
時間:
2019-10-28 22:52
智能家居系統(tǒng)和傳統(tǒng)嵌入式比,更強調(diào)上層軟件設(shè)計和無線通信,所以不單單學單片機,有時間學一下python語言,可以做控制端,可以做WEB端。
另外就是學習下ESP32或者ESP8266,好多智能家居的通信或者控制芯片都用的這兩個
作者:
zhuyafei
時間:
2019-10-29 09:14
、嵌入式開發(fā)學習方法-框架學習法
嵌入式系統(tǒng)的學習方法很多人都講過,相信大家在網(wǎng)上或者其他渠道接觸過一些思路和方法,在這里講一下個人的體會。
首先來說,學習有沒有捷徑呢?一種說法是可以速成,幾天就可以學會,我認為速成的說法太夸張了,那是不可能的事情。
有些人講學習沒有捷徑,你必須經(jīng)過長期的努力,所謂功到自然成。但是學習嵌入式技術(shù),如果說沒有好的方法那也是不對的,學習一門新的知識體系肯定是要下工夫,但是也需要有好的指引,也就是捷徑,實際上這里是講的就是學習方法。
方法很重要,如果沒有方法,閉著眼亂學亂撞,肯定是不行的。就像我們?nèi)フ乙粋沒有去過的地方,自己跟著感覺去找,找到的希望很小,如果手里面有張地圖,并且還有指南針,那就快很多;如果我們有導航,自然是更快更方便了。實際上,這就是方法的重要性。
那么在這里,我們來介紹一種學習方法,這種方法也是粵嵌公司多年培訓和產(chǎn)品開發(fā)經(jīng)驗所總結(jié)出來的。
大家可能會問了,粵嵌也做過嵌入式培訓?實際上我們有很豐富的培訓經(jīng)驗。
我們覺得,‘框架學習法’是最適合初學者采用的一種方法,這里面包含了快速原型的思想;也就是框架學習,快速原型。那么這里面的主導思想呢,就是從一開始就要看到嵌入式系統(tǒng)知識領(lǐng)域的全貌,然后逐漸深入!
比如說,我們想了解北京這座城市,如果在胡同里轉(zhuǎn)來轉(zhuǎn)去,可能幾年都搞不清楚這個城市是什么情況,如果我們先通過北京地圖學習一下,了解下北航在什么地方,鳥巢在什么地方,香山八達嶺在哪里。再加上我們到這些地方去看一看,可能很快就掌握了這座城市的全貌。
在這里需要注意的是,即便是我們有了地圖,也需要有一些基礎(chǔ),比如我們要知道鳥巢的來歷,明白八達嶺是怎么回事,實際上這些就是基礎(chǔ)知識。也就是說我們在學習系統(tǒng)框架之前要具備一定的基礎(chǔ),否則這張地圖也是看不懂的。
學習嵌入式技術(shù)也是需要一定的基礎(chǔ)的,一會兒我們專門講需要什么樣的基礎(chǔ)。
接下來如果我們想進一步的了解這座城市,就要去研究這座城市的歷史,甚至是中國的歷史。更細一步呢,還可以進一步研究故宮本身的地圖。
那么這樣一環(huán)套一環(huán)。經(jīng)過不斷的研究,逐漸就會掌握這座城市的地理、文化、政治經(jīng)濟等特點。
通過了解北京城這個簡要的例子,運用框架學習法,在對不同層次的框架的學習過程中,逐漸了解和掌握整個系統(tǒng)。
如果我們不注意方法,每天在胡同里面來回轉(zhuǎn)悠,肯定是事倍功半,將在很長時間不得要領(lǐng)。
2、嵌入式系統(tǒng)學習的框架
學習嵌入式也是這樣。必須掌握一定的方法,才能比較快速有效的學習。
那么這個方法就是框架學習法,剛才我們也講了,首先在了解這個基礎(chǔ)框架之前我們要有一定的基礎(chǔ),那么這個基礎(chǔ)呢就是單片機和C語言,不需要你掌握的有多好,但一定要具備一定的C語言編程能力。像其他有些課程,比如計算機專業(yè)的編譯原理、數(shù)據(jù)結(jié)構(gòu),計算機系統(tǒng)體系結(jié)構(gòu),這些知識實際上還不太需要,了解一下就可以了。
有了C語言編程基礎(chǔ),并且學過單片機,這個時候就可以學習一下嵌入式Linux的基本框架了,很簡單,那就是要搞清楚bootloader、Kernel、和文件系統(tǒng),接下來簡單介紹一下。
什么是BootLoader呢?
實際上它是個引導程序,也就是硬件復位以后第一個要執(zhí)行的程序,它主要工作就是初始化操作系統(tǒng)運行的環(huán)境,比如說內(nèi)存、定時器、緩沖器等,當這個工作做完以后,再把操作系統(tǒng)的代碼加載到內(nèi)存,然后操作系統(tǒng)就可以啟動并執(zhí)行,到此為止,bootloader的任務(wù)就完成了。
那么有人問了,沒有bootloader行不行呢,可以的!但是呢,因為操作系統(tǒng)本身一般是個通用的軟件,它要在不同的平臺上運行,比如X86,ARM,POWERPC等等,而不同的處理器的初始化操作是不同的,如果操作系統(tǒng)的軟硬要考慮在啟動時候各種平臺的差異性,那就顯得過于復雜。除此之外,也有其他方面的原因,比如燒寫系統(tǒng)的便捷性考慮等等,這里暫不做深入的探討。
常用的bootloder有很多種,比如U-BOOT、REDBOOT、LILO等等,我們開發(fā)板用的是Uboot。
什么是Kernel呢?
Kernel就是Linux的內(nèi)核,也就是說Linux操作系統(tǒng)本身的代碼。那么U-BOOT啟動到最后,就是把它加載到內(nèi)存,并且跳轉(zhuǎn)到Kernel來執(zhí)行。
什么是文件系統(tǒng)呢?
現(xiàn)在我們來介紹一下文件系統(tǒng),這里需要了解一個事實,就是說Linux啟動到最后一定要掛載一個文件系統(tǒng)。這個是Linux的一個特點,它不像其他操作系統(tǒng),比如像VxWorks,是不需要文件系統(tǒng)的,VxWORKS沒有文件系統(tǒng)也可以運行。 而且還需要了解一點,像QT系統(tǒng)、Android、以及Ubuntu系統(tǒng)它們的底層都是Linux內(nèi)核,不同的是她們的文件系統(tǒng)不一樣,也就是說,Android系統(tǒng)相關(guān)的一些代碼,比如說圖形界面系統(tǒng)、Android的虛擬機,Android的框架代碼都在Linux最后掛的文件系統(tǒng)里面。 如果大家理解了這點,那么這幾個系統(tǒng)的基本架構(gòu)也就清楚了。
搞清楚了這幾個概念,實際我們就了解了Linux系統(tǒng)最基本的框架,然后呢我們根據(jù)開發(fā)板配套的資料,去學習如何編譯這幾個文件,因為像Uboot、Kernel、文件系統(tǒng),最后編譯生成出來分別是一個獨立的文件,就是說會生成三個文件,最后我們要學會把這幾個文件燒寫到板子上。
學會了編譯和燒寫,接下來呢,我們在這個框架的基礎(chǔ)上,去學習如何做Linux上面的應(yīng)用程序。
什么是應(yīng)用程序(APP)呢?這也是框架的內(nèi)容,它是跑在操作系統(tǒng)上面,通過調(diào)用操作系統(tǒng)的資源去工作,是最終的業(yè)務(wù)邏輯,比如我們Windows上面有很多的應(yīng)用程序,比如QQ、暴風影音、WORD、EXEL等,各種各樣APP有很多。
根據(jù)我們后期的視頻教程,大家應(yīng)該很快就能學會,比如說串口程序、網(wǎng)絡(luò)程序等等,這些都是應(yīng)用程序,我們不需要做太多,學習幾個加深一下對框架的認識就可以了。
再接下來,我們就需要學習Linux驅(qū)動方面的一些知識了,這也是在基礎(chǔ)框架里面的,驅(qū)動程序可以看成是操作系統(tǒng)的一部分,它在底層專門和硬件打交道。那么大家稍微了解一下,就會知道Linux的驅(qū)動包括有三種:字符設(shè)備、塊設(shè)備以及網(wǎng)絡(luò)設(shè)備。
這個時候呢,大家要注意,只需要學習字符類設(shè)備驅(qū)動,其他兩種先不要去管。一定要記住,最初學習嵌入式技術(shù)的時候不要去研究塊設(shè)備和網(wǎng)絡(luò)設(shè)備。也就是說,把字符類設(shè)備搞明白就可以了。因為一般的公司開發(fā)嵌入式的產(chǎn)品僅限于字符設(shè)備的開發(fā),掌握字符設(shè)備的框架思想和開發(fā)步驟就能夠勝任了。至于塊設(shè)備和網(wǎng)絡(luò)設(shè)備,直接用開發(fā)板或者某個開發(fā)平臺本身提供的驅(qū)動就足夠了,這些是一線處理器廠家做的事情,一般情況下不需要我們?nèi)ネ瓿桑@些處理器研發(fā)的廠家在為處理器開發(fā)配套BSP的時候才會涉及這些工作。
當然了,有的同學可能會講,某某公司就是在做塊設(shè)備驅(qū)動,我的意思是講,從嵌入式這個行業(yè)總體上來講,大多數(shù)公司都不需要那么做,很多技術(shù)都是直接拿來用。我們掌握了字符設(shè)備驅(qū)動的開發(fā)方法,已經(jīng)能夠應(yīng)付大多數(shù)公司的開發(fā)要求,對于一個還沒有入門的學生來講,一定要按照我說的辦法來學習。
等將來熟練掌握基本技能以后,可以根據(jù)框架學習的方法,再去研究更深入的編程。這個時候,那些計算機專業(yè)的課程,比如數(shù)據(jù)結(jié)構(gòu)、計算機系統(tǒng)體系結(jié)構(gòu)、各種算法等等就可以派上用場了,自己的水平也會在學習的過程中再次升華。
學習字符類設(shè)備驅(qū)動,請跟著粵嵌的視頻去學習LED的驅(qū)動編寫方法,以及蜂鳴器、AD轉(zhuǎn)換等這些跟GPIO相關(guān)的驅(qū)動開發(fā)技巧。
掌握了這些,可以講,我們已經(jīng)成為了一個比較合格的嵌入式驅(qū)動工程師!
這個時候我進一步介紹一下什么是快速原型,如果學過軟件工程的話,那么大家會聽說過一種自頂向下的產(chǎn)品開發(fā)方法,這個方法很有效,多數(shù)產(chǎn)品的開發(fā)方法都是遵循這個思想,大概就是從最初的可行性分析,然后概要設(shè)計、詳細設(shè)計,編碼,測試等等。
除此之外呢,還有一種開發(fā)方法就是‘快速原型’,這個是微軟采用的一種方法,簡而言之呢,快速原型是個逐漸迭代的方法,就是說讓產(chǎn)品盡快把雛形開發(fā)出來,然后逐漸清晰,一步步走向成熟。
在這里我們把快速原型法用到學習上,它原來是種開發(fā)方法,我們這里借鑒過來,借鑒到框架學習的思想上。
也就是說,我們掌握一定的基礎(chǔ)以后,就要去學習框架,當這個基礎(chǔ)框架清晰以后,再去學習更新更深入的框架知識,這樣一環(huán)套一環(huán),環(huán)環(huán)相扣,最終研究越來越深入,進而成為這個行業(yè)的專家。
那么在嵌入式行業(yè)的工程師的職位其實也是這個樣子的,大家看一下:
基本數(shù)字電路 + C語言 + 基礎(chǔ)框架知識 -----> 嵌入式驅(qū)動工程師
數(shù)組結(jié)構(gòu)+編譯原理 ------> 高級嵌入式驅(qū)動工程師
計算機系統(tǒng)體系結(jié)構(gòu) + 操作系統(tǒng)(從抽象到具體)-------> 系統(tǒng)架構(gòu)工程師
因為在第一個階段,你會發(fā)現(xiàn),只要會C語言,有良好的編程功底就夠了,在工作的時候很少涉及到編譯原理、數(shù)據(jù)結(jié)構(gòu)這些方面的知識,那么很多其他專業(yè)的畢業(yè)生,甚至原來學機械設(shè)計的同學都可以成為嵌入式驅(qū)動工程師。
實際也是這樣,在大多數(shù)嵌入式技術(shù)公司,尤其是應(yīng)用產(chǎn)品開發(fā)的公司,只要了解基本的Linux架構(gòu)的知識,并且能夠編寫字符類的驅(qū)動程序就夠了。因為像網(wǎng)絡(luò)設(shè)備驅(qū)動以及塊設(shè)備驅(qū)動,基本都有個DEMO設(shè)計,只要參考這個DEMO做就可以,根本不需要我們做什么,如果說需要做的話,那也是改一下GPIO的設(shè)置,修改一下中斷的引腳,僅此而已。
那么深入學習的話,分析操作系統(tǒng)源碼的時候就會發(fā)現(xiàn),數(shù)據(jù)結(jié)構(gòu)的知識逐漸排上用場,尤其是在某些專業(yè)公司,負責某個專用領(lǐng)域的時候,這時候可能會改寫操作系統(tǒng)的某部分代碼,來適應(yīng)他們自己硬件的各種情況,將會深入分析某方面的技術(shù),比如文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等,這個時候數(shù)據(jù)結(jié)構(gòu)等方面知識就顯得很有用了。
有了基礎(chǔ)的原型以后,通過繼續(xù)學習新的知識,逐漸使上一個層次,更精深的了解嵌入式技術(shù),同時知識體系更加完備,可以做更高層次的工作了。
應(yīng)用這樣的學習方法,在學習過程中,也會使學習過程始終有目標,而且不會感覺枯燥,每天都會有成就感,從一開始就能抓住嵌入式系統(tǒng)的脈絡(luò),只要付諸努力,持久學習下去,就能成為嵌入式行業(yè)的專家。
最后我們總結(jié)下,我們要想比較快的掌握嵌入式技術(shù),要應(yīng)用框架學習的方法,在一定的知識基礎(chǔ)上就開始學習基礎(chǔ)的框架知識,這樣就很容易入門,隨著開發(fā)經(jīng)驗的積累,再去學更深入的基礎(chǔ)知識,以及更深層次的框架知識。這樣相互迭代,直到能夠精通嵌入式技術(shù)。
這個方法也充分說明計算機科學是個實驗科學。
那么在學習過程中,要注意,不用學習過多的基礎(chǔ),也就是說有了C語言和單片機的基礎(chǔ)就可以學習嵌入式的基本框架,然后就能夠成為一個合格的嵌入式工程師; 以后可以繼續(xù)深造,學習數(shù)據(jù)結(jié)構(gòu)編譯原理操作系統(tǒng)等方面的知識,深入學習算法,從而再去學習Linux更深層次的框架結(jié)構(gòu),使得整體水平得到進一步的升華。
現(xiàn)在我們總結(jié)一下,把學習嵌入式技術(shù)的路線圖跟大家澄清一下,那就是:單片機+C語言----->學習基礎(chǔ)框架知識(包括bootloadre,Linux內(nèi)核、文件系統(tǒng)的編譯和燒寫----->再去學習Linux上層應(yīng)用的編程,以及字符設(shè)備的驅(qū)動,學完以后你就會覺得入門了,能做一些事情了-----> 再深入學習計算機系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)原理等等一些知識,通過分析Linux系統(tǒng)源碼,直到熟練掌握嵌入式編程技術(shù)。
3、關(guān)于裸機程序和仿真
有些用戶希望通過ARM開發(fā)板來學裸機程序,其實我們不建議這樣做,在ARM上做一些裸機程序,不是不可以,而是沒有太多價值,因為裸機程序根本發(fā)揮不了ARM處理器的性能,只有運行了操作系統(tǒng)才能夠充分挖掘ARM處理器的優(yōu)勢,更能夠保證系統(tǒng)運行的安全和穩(wěn)定性。
如果真的想學習裸機程序,單片機就夠了。從架構(gòu)上來講,單片機和ARM是一樣的,都是CPU,而且編程思想也沒有多少區(qū)別,只不過ARM速度太快了,只有在上面跑操作系統(tǒng),并使用多任務(wù)的編程方法才能最大化的發(fā)揮ARM處理器的優(yōu)勢。
在實際產(chǎn)品開發(fā)時也是這樣,幾乎沒有拿ARM跑裸機的方式來開發(fā)產(chǎn)品的。如果用裸機方式來編程,推薦使用單片機,這樣整體成本也會小很多,事實上也是這樣的。
早期的時候,我們在ARM上也做過很多裸機程序,并且用仿真器來調(diào)試;很多人,尤其從單片機轉(zhuǎn)過來的人,都希望學習下這種技術(shù),因為他們感覺裸機程序更親切,而直接用操作系統(tǒng)覺得很不踏實,不能夠完全掌握系統(tǒng)的運行情況;其實呢這種想法是不對的。我們必須在抽象的層次上來開發(fā)產(chǎn)品,逐漸轉(zhuǎn)變觀念,不能說開發(fā)一款產(chǎn)品,就一定要對每個程序的細節(jié)都非常清楚,應(yīng)該學會在操作系統(tǒng)這個抽象的軟件上來開發(fā)產(chǎn)品,這樣做才符合潮流,也是產(chǎn)品發(fā)展以及個人發(fā)展必須轉(zhuǎn)變的思路和觀念。
因為我們看到太多的做單片機開發(fā)的工程師很難能轉(zhuǎn)到嵌入式產(chǎn)品的開發(fā)當中來,恐怕觀念的轉(zhuǎn)變可以說是最大的障礙,希望引起大家的注意。
作者:
zhuyafei
時間:
2019-10-29 09:15
熟練使用Linux操作系統(tǒng)
精通Linux下C語言編程
精通嵌入式Linux應(yīng)用開發(fā)
掌握ARM處理器平臺及其接口硬件開發(fā)
掌握嵌入式Linux下Bootloader的移植方法
精通嵌入式Linux內(nèi)核裁減移植及內(nèi)核調(diào)試
精通嵌入式Linux下常用接口的驅(qū)動開發(fā)
熟悉Java語言編程
熟悉Android應(yīng)用開發(fā)
掌握基于Linux內(nèi)核的Android底層系統(tǒng)開發(fā)
熟悉嵌入式Linux實際項目案例開發(fā)流程
熟悉基于Android系統(tǒng)實際項目案例開發(fā)流程
作者:
zhuyafei
時間:
2019-10-29 09:15
首先需要C語言基礎(chǔ),數(shù)據(jù)結(jié)構(gòu),linux命令,網(wǎng)絡(luò)編程,操作系統(tǒng),數(shù)據(jù)庫,移植內(nèi)核,驅(qū)動編程,各種總線知識,通信協(xié)議,硬件和軟件知識,上層和底層的軟件知識都需要有所了解,就算你不做具體的編程,也要知道一點工作原理,因為嵌入式開發(fā)需要考慮的是整個程序
作者:
zhuyafei
時間:
2019-10-29 09:18
1、嵌入式開發(fā)設(shè)計流程:
1)ARM嵌入式Linux系統(tǒng)構(gòu)造與驅(qū)動開發(fā)范例
2)嵌入式設(shè)計及Linux驅(qū)動開發(fā)指南
3)嵌入式Linux應(yīng)用程序開發(fā)詳解
都屬于Linux開發(fā)設(shè)計流程方面的入門書籍,嵌入式開發(fā)的基礎(chǔ)
2、Linux驅(qū)動開發(fā):
1)嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā) 北京航空航天大學出版社 劉淼 強烈推薦; 包括各種硬件總線接口范例,接口開發(fā)必備
2)Linux設(shè)備驅(qū)動程序《Linux Device Drivers third edition》,Linux驅(qū)動開發(fā)必備經(jīng)典,粗讀查詢即可,當然最基本的字符設(shè)備驅(qū)動和塊設(shè)備驅(qū)動必須熟練掌握
3、 Linux應(yīng)用程序開發(fā):
UNIX環(huán)境高級編程
UNIX網(wǎng)絡(luò)編程全卷
4、Linux內(nèi)核開發(fā):
內(nèi)核完全注釋,源代碼級的分析,但版本較低
深入理解Linux內(nèi)核Understanding the Linux Kernel,太深了,東西太多嵌入式開發(fā)要學哪些,最后看合適
Linux內(nèi)核設(shè)計與實現(xiàn)Linux Kernel Development,內(nèi)核整體結(jié)構(gòu)和基本理論知識
5、ARM:
ARM體系結(jié)構(gòu)與編程,杜春蕾
ARM應(yīng)用系統(tǒng)開發(fā)詳解
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1