導航:首頁 > 源碼編譯 > 晶元固件開發需要學習哪些演算法

晶元固件開發需要學習哪些演算法

發布時間:2022-11-20 10:05:18

Ⅰ 怎麼能比較快速的掌握ARM晶元的開發

舉個很簡單的例子:
嵌入式開發。
如PDA手機,掌上電腦,在說開點,就是針對硬體做開發,寫驅動..
嵌入式開發。
如PDA手機,掌上電腦,在說開點,就是針對硬體做開發,寫驅動..
這個工資收入 相比於純WEB開發要高一倍

我給你找個文章吧呵呵.

嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。

一類是學電子工程、通信工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關系最密切的最底層軟體,如BootLoader、Board Support

Package(像PC的BIOS一樣,往下驅動硬體,往上支持操作系統),最初級的硬體驅動程序等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對復雜軟體系統往往力不從心(例如嵌入式操作系統原理和復雜應用軟體等)。

另一類是學軟體、計算機專業出身的人,主要從事嵌入式操作系統和應用軟體的開發。如果我們學軟體的人對硬體原理和介面有較好的掌握,我們完全也可寫BSP和硬體驅動程序。嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式設備的增值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作(目前有很多公司將硬體設計包給了專門的硬體公司,稍復雜的硬體都交給台灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有「花頭「可做的),所以我們搞軟體的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是復雜系統,軟體越起關鍵作用,而且這是目前的趨勢。

從事嵌入式軟體開發的好處是:

(1)

目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如操作系統級、驅動程序級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。

(2)

與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟體的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,而且每個用戶的需求和完成時間都得按客戶要求改變,往往疲於奔命,重復勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閑時間(或只是對軟體進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟體的每個人工作范圍相對狹窄,所涉及的專業技術范圍就是那些(ARM、RTOS、MPEG、802.11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟體,可能下一個客戶要換成一個完全不同的軟體開發平台,那就苦了。

(3)

哪天若想創業,搞自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟體那樣容易被盜版。土木學院有一個叫啟明星的公司開發出一個好象叫「工程e」的掌上PDA(南校區門口有廣告),施工技術人員用該PDA可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜PDA(WinCE平台,可無線連網和上網),據他說銷路不錯,飯館點點PDA讓客戶點菜,多顯派頭檔次。我記得00級2+2班當年有一組同學在學Windows程序設計課程時用VC++設計了一個功能很強的點菜系統做為課程項目,當時真想建議他們將這個軟體做成PDA,估計會有些銷路(上海火車站南廣場的Macdonald便使用很漂亮的PDA給用戶點食品,像摸像樣的)。這些PDA的硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。

從事嵌入式軟體開發的缺點是:

(1)

入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。

(2)

這方面的企業數量要遠少於企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半導體、Microtek、研華、華為、中興通信、上廣電等製造類企業)。這些企業的習慣思維方式是到電子、通信等偏硬專業找人。由於我院以前畢業生以企業計算為主,所以我院與這些企業聯系相對較少。我院正積極努力,目前已與其中部分公司建立了聯系,爭取今後能有我院同學到這些企業中實習或就業。

(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。

我院同學若學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式操作系統方面,應是我們的強項。對於搞嵌入式軟體的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):

(1)掌握主流嵌入式微處理器的結構與原理

(2) 必須掌握一個嵌入式操作系統

(3)必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體項目。

嵌入式軟體方面最重要的課程包括:

(1)

嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,我院用這門課取代了傳統的「微機原理與介面」課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對ARM處理器工作原理和介面技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省內存又運行高速的最優代碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程序(驅動程序都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該設備的硬體規格說明書

(xxx

Specification),您必須能看懂其中的內存分布和埠使用等最基本的說明(就像x86匯編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編語言的人,怎麼能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像採集和圖像解壓縮),目前主要還要靠匯編寫程序(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用匯編描述,此時您就必須看懂匯編程序,否則軟硬體人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。

(2) 嵌入式操作系統類課程

除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time

Operating

System.從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。目前最重要的RTOS主要包括:

第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平台。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。

第二類、嵌入式Linux操作系統:Linux的前途除作為伺服器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM

9上的,一般是將Linux

2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM

9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由於ucOS/II功能有限,實用用得較少,所以我院不將其作為教學重點,要學習就應學直接實用的,比如

uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深操作系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。我院在該嵌入式Linux方面的課程系列是:本科生操作系統必修課,然後是Linux程序設計選修課,最後是嵌入式Linux系統選修課。我院在Linux方面目前已有較強力量,魏老師和張老師熟悉Linux開發,金老師和唐老師熟悉Linux系統管理。

第三類、 Windows

CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的「Windows CE嵌入式操作系統「課程的學校,這主要是基於以下原因:我院本身前面便有Windows程序設計課程,同學學過VC++後再學WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更願意接受MS的平台,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮;

二是微軟亞洲研究院對我院WinCE課程的支持計劃,我們也很希望將來我院能有同學通過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。

總結關於嵌入式操作系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最好的選擇。

(3) 嵌入式開發的其它相關軟體課程

搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:

A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,我院已預訂了一位能開設數字圖像處理課程的博士。

B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入區域網或Internet,所以首先應掌握TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無結通信協議包括無線區域網通信協議802.11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。

C、網路與信息安全技術:如加密技術,數字證書CA等。我院有這方面的選修課。

D、DSP技術:DSP是Digital Signal

Process數字信號處理的意思,DSP處理器通過硬體實現數字信號處理演算法,如高速數據採集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬體專業的課程,對於搞軟體的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。

(4)嵌入式開發的相關硬體基礎

對於軟體工程專業的學生,從事嵌入式軟體開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬體課程是較重要的。另外,匯編語言、C/C++、數據結構和演算法、特別是操作系統等軟體基礎課也是十分重要的。我們的主要目地是能看懂硬體工作原理,但重點應是在嵌入式軟體,特別操作系統級軟體,那將是我們的優勢。

我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多嵌入式應用越來越復雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP演算法,如MPEG壓縮解壓縮演算法等用硬體來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP核實現技術,這方面的人目前市場上也很缺。

題外話

另外,能寫驅動程序的人目前是非常緊缺的(驅動程序也可歸於嵌入式范疇),包括桌面Windows中的DDK開發環境和WDM驅動程序。公司每時每刻都要推出新產品,每一個新產品出來了,要能被操作系統所使用,是必須寫驅動程序的。寫驅動程序就必須掌握操作系統(如Windows或Linux)的內部工作原理,還涉及到少量硬體知識,難度較大,所以這方面的人很難找。想成為高手的同學,也可從驅動程序方面獲得突破。我可說一下自己的經歷,三年前我曾短暫地在一家公司寫過WinCE驅動程序(正是因為知道這方面的人緊缺,所以才要做這方面的事),盡管那以前從未做過驅動程序,應聘那個職位時正是看準了公司是很難招聘到這方面的人,既然都找不到人,驅動還得有人做,這正是可能有機會切入這一領域的大好機會。面試時大講自己寫過多少萬行匯編程序,對計算機工作原理如何清楚,簡歷中又寫著我曾閱讀完兩本關於Windows Driver Model的兩本英文原版書,寫過幾個小型的驅動程序練習程序(其實根本沒寫過,我們的同學將來千萬不要像我這樣,早練就些過硬功夫,就不至於淪落到我這等地步,就不用像我那樣去「欺騙」公司了,我這是一個典型的反面教材),居然一切都PASS(當然最重要的是筆試和面試問題還說得過去),這只能說明這一領域找人的困難程度。公司本就未指望找到搞過驅動的人,找個有相關基礎的人就算不錯了。做了以後,發現也並不是怎樣難的。其實搞驅動程序的工作是很舒服的,搞完一個版本就會空一段時間,只有等公司新的晶元推出或新的OS出現後,才需要再去開發新一版驅動,那時有將近一個月時間空閑著在等WinCE .NET Beta版推出,准備將驅動程序升級到CE .NET上,現在在軟體學院工作整日忙,無限懷念那段悠閑時光。

很巧合,最近本人無意中再次體會到了嵌入式的迷人之處。上周我那用了3年的手機終於不能WORK了。此次更新,除要求有手機常見功能外,最好有MP3功能(現在很多英語聽力都有MP3文件),最好有英漢詞典,最好還能讀WORD文檔。最後選了個滿足以上條件的最便宜的手機DOPOD 515(斬了我2.2K,但想想這也算自己對嵌入式事業的支持,這樣便也想開了),算得上最低檔的智能手機了。回來一查,手機的about顯示,本手機Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),這么巧合,簡直可做為學習嵌入式課程的產品案例了(等我們的WinCE課程開得有聲有色後,希望能從微軟研究院搞些Smartphone來開發開發)。有OS的手機果然了得,金山詞霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在download時都可被自動轉換成smartphone格式,真是爽。完全可用Windows CE自己開發一些需要的程序download到自己的手機上。現在市面銷售PDA智能手機火爆,MS總是財源滾滾。但我已發現國產的ARM+LINUX手機出現在市面上,價格只1.2K。

Ⅱ 學習嵌入式開發要學習哪些知識

首先需要C語言基礎,數據結構,linux命令,網路編程,操作系統,資料庫,移植內核,驅動編程,各種匯流排知識,通信協議,硬體和軟體知識,上層和底層的軟體知識都需要有所了解,就算你不做具體的編程,也要知道一點工作原理,因為嵌入式開發需要考慮的是整個程序

Ⅲ 想製作openwrt固件,先要學習些什麼

  1. 先認識了解工具/原料,如PC機、路由器、網線等

  2. 學習搭建編譯環境,編譯建議在Linux下進行

  3. 獲取openwrt源碼、配置軟體源等

  4. 附一個教程,您參考參考


    本教程的編譯環境:win7 專業版+VMwareWorkstation6.5虛擬機+Ylmf OS 3.0

    編譯的過程中要保持電腦聯網

    搭建編譯環境

    應用程序--附件--終端

    sudo apt-get update (更新)

    安裝編譯需要的組件:

    sudo apt-get install gcc

    sudo apt-get install g++

    sudo apt-get install binutils

    sudo apt-get install patch

    sudo apt-get install bzip2

    sudo apt-get install flex

    sudo apt-get install bison

    sudo apt-get install make

    sudo apt-get install autoconf

    sudo apt-get install gettext

    sudo apt-get install texinfo

    sudo apt-get install unzip

    sudo apt-get install sharutils

    sudo apt-get install subversion

    sudo apt-get install libncurses5-dev

    sudo apt-get install ncurses-term

  5. sudo apt-get install zlib1g-dev

    sudo apt-get install gawk

    sudo apt-get install asciidoc

    sudo apt-get install libz-dev

    編譯環境搭建完成

    mkdir openwrt 創建一個openwrt文件夾

    cd openwrt 進入openwrt文件夾

    svn co svn://svn.openwrt.org/openwrt/branches/backfire 下載官網的源碼

    /scripts/feeds update -a 更新軟體包

    /scripts/feeds install -a 安裝軟體包

    make menuconfig 進入定製界面(裡面可以選擇晶元的型號,集成的組件等等,根據實際情況選擇)

    defconfig

    make V=99 (開始編譯)

    剩下的就是等待了,第一次編譯需要的時間相對比較長,這個跟你的電腦配置和網速有關。

    下面以編譯TP-LINK 741N的openwrt固件為例,只編譯基本的功能:

    make menuconfig

    Target System---AR71xx/AR7240/AR913x/AR934x CPU型號

    Target Profile---TP-LINK 741

    LuCI—>Collections—– <*> luci 添加Luci

    LuCI—>Translations—- <*> luci-i18n-chinese 添加中文

    EXT----YES

    make V=99 開始編譯

    成功後在bin文件夾里有編譯好的固件。

Ⅳ 學習嵌入式開發要學習哪些知識

嵌入式系統是計算機軟體和硬體的綜合體,你可以先下載全套嵌入式視頻課自學,看是否感興趣。

學習內容主要包括:

①C,Java核心編程:c語言核心編程,Java核心編程;

②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;

③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;

④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;

⑤大型項目實踐:每期安排各類型真實的項目,詳細可以點我下載資料。

學生畢業可以從事:

ESE(嵌入式軟體工程師);

ADE(嵌入式應用開發工程師);

FWE(嵌入式底層開發工程師);

FEC(嵌入式固件開發工程師)

你可以考察對比一下南京課工場、北大青鳥、中博軟體學院等開設有嵌入式開發專業的學校。記得下載全套嵌入式開發視頻課,祝學有所成!望採納!

Ⅳ 嵌入式開發要學哪些

嵌入式開發要學哪些?在這個技術瞬息萬變的年代,嵌入式技術毫無疑問也得緊跟技術發展,這對於初涉行業的新人而言,擺在面前的問題很明顯,嵌入式開發我得學習哪些技術點才能跟隨企業的腳步呢?我願意談談我接近十年對嵌入式開發的看法。

我的職業生涯起步於嵌入式開發,那時候在日企從事汽車的嵌入式開發,最後也曾當過三年的講師。不過現在依然混跡於嵌入式底層,以及android底層研發。可能還是覺得研發才是我的最愛。那麼針對嵌入式開發要學哪些我簡單的說一下,僅代表當前主流觀點。

嵌入式開發作為新人,第一步C語言,有很多人自認為自己C語言很厲害,但是實際上一個從事嵌入式開發的老人,至少需要3-5年你才敢對C語言說精通,特別涉及到的常用的指針、數組、數據類型、運算符與表達式、控制語句時?你真的都懂么?這些是學習嵌入式最基礎的知識。

第二步,有了這些代碼的基礎你才能能根據需求寫程序,也就是常說的應用層,應用層是相對簡單的。要有理解和編碼調試的能力,如系統編程、標準的I/O,文件I/O,庫的製作等等。一般而言這種應用層開發有1-2個月的時間都能學會。剩下的就是大量的編碼來提升自己的經驗。但只會這些也能找到工作,但我相信你看完下面的發現那絕對不是你的夢想!

第三步,更高級的內容也是最難的內容,前兩步更多是讓你會根據需求編碼,但是如何能讓你的程序能在硬體平台上運行,這才是真正的難題。所以每當再進一步的話,我們會發現我們什麼有很多的東西都運行的是Linux系統,可是他們和我的PC運行的Linux有什麼區別呢,為什麼我電腦要用風扇而手機不用風扇呢,我們打開網頁查找手機的詳細參數的時候,會看到Cortex-A15 、四核 、ARM等等字眼,什麼是ARM,什麼是Cortex-A15,這需要進一步的了解。

了解完ARM之後,就需要利用開發板了。這時操作系統的移植又成了一個比較重要的內容了,什麼是bootloader,什麼是kernel,什麼是rootfs等等……。

花了很長時間系統做好了,發現板子上很多的什麼不能用,怎麼辦呢?這時我們需要寫一些驅動來驅動這些設備,這時我們需要知道,什麼是字元設備驅動、塊設備驅動、網路設備驅動,為了更好的寫驅動我們需要了解更多的硬體相關的東西,我們需要看懂晶元手冊,我們需要看懂原理圖,只有我們懂我們的設備,才能更好的驅動它。等等,這里就列舉更多的內容了,因為還有很多。

所以對於嵌入式開發者來說,他們都經歷了學習的痛苦。有句話說的好,不經歷風雨怎麼見彩虹。對於學習嵌入式我比較不贊成自學,他不同於一般的應用層開發。你會面臨很多問題。問網路?太慢了!來機構學習雖然花了一部分錢,從時間成本和效率上來講,無疑還是比較值得的。

Ⅵ 有沒有嵌入式開發的學習路線,越詳細越好

一、學習路徑
萬丈高樓平地起,不管多優秀的工程師都是從小白開始的。一條清晰合理的學習路線能幫助小白們高效率的完成基礎知識的儲備工作,注意這里是知識的儲備過程,而經驗是從實踐中得到的。學習路徑是多種多樣的,不同能力和不同基礎的人有不太相同的路徑,這里分享我自己的學習路徑,供大家參考。
1.了解計算機原理,操作系統基礎知識。了解硬碟,內存和CPU的關系,程序是如何載入到內存運行的,了解操作系統進程切換和時間片的概念。
2.學習C語言,掌握編譯器基本知識,能編寫簡單的程序。學習硬體相關知識。
3.購買洞洞板或者麵包板,配合stm32等單片機核心板及相應教材,實踐IO操作,中斷,定時器,ADC,UART通信,IIC通信,SPI通信,CAN通信等基本功能。在此過程中不斷鞏固提升C語言編程水平。
4.掌握了某一種單片機的基本編程和控制後,可以進軍嵌入式操作系統的學習。在此期間可以繼續使用STM32核心板,加購LCD串口液晶顯示屏,不需要買帶字型檔的顯示屏,簡單實用的串口顯示屏就可以。然後可以從Free RTOS開始學習,這個操作系統代碼少,概念清晰,易於學習操作系統的原理,也易於移植,基本上可以參考官網以及網路上的資料順利的將操作系統移植到STM32核心板。通過FreeRTOS,可以學習嵌入式操作系統的基本原理,並可以編寫LCD驅動程序來感受硬體驅動程序的概念。
5.學習嵌入式Linux操作系統,購買ARM9或以上版本的主控的開發板,要求開發板上至少有串口和網口。學習板級支持包的開發,交叉編譯,GDB調試,UBOOT移植,內核移植,根文件系統製作,設備樹,驅動程序編寫,網路編程相關知識。
6.學習物聯網相關模塊的使用,可以購買ESP32核心板進行wifi,藍牙的模塊控制學習,購買其他模塊實現其他小項目的練習。
通過上面的一番閉關修煉,你已經學習了嵌入式開發的主要知識架構,接下來就要多做小項目,多練習排錯,才能不斷積累經驗。

二、學習方法
1.先整再零:
對於一個實例項目,先從整體出發,保證調通,能正常運行,出現預期結果。遇到模糊的問題先跳過,整體有了一定認識後再對個別細節進行深入了解,但不能跳過深入了解細節的環節。
2.邊學邊練:
開發是一類實踐性很強的技能,嵌入式開發要與硬體打交道,就需要更多的動手操作和觀察。
學習某一方向的嵌入式開發知識時,需要給自己的學習進行必要的「投資」,購買麵包板、洞洞板、萬用表、調溫烙鐵套裝、各種器件、晶元,以至開發板。以上材料不需要一次性都買齊,可以按照當前學習的內容分階段購買,經濟條件有限的同學也不用擔心,以上材料的開銷除開發板之外都不貴,可網路購買。對於開發板,可以買學長學姐的二手板卡,能過測試就證明板卡是OK的。
有了學習材料,就要學以致用,例如今天學習了三極體做開關,就可以自己動手畫畫電路圖,然後在洞洞板上實踐一下,通過實際操作,加深印象的同時,也能驗證自己的設計方案。
3.勤於思考和提問,網路如此發達,提問的能力和技巧我就不再贅述了。

三、技能提升建議
如果你進入的是一家規模較小的公司,那麼你可能有機會接觸各類技術。這是絕佳的鍛煉機會,要注意不要特別深入某一方向而不關注其他技術,要知道大牛需要的是多方位的技能。
大公司的話,往往分工比較細致而明確,那就需要在完成自己工作的同時多關注項目組中其他同事遇到的問題,能協助解決最好,不能解決的要關註解決的情況和方法,多蹭經驗。幫助別人的同時就是在幫助自己提高,多花時間處理實際問題是難得的經驗。
不管在哪種場合工作,一定注意經驗的積累,好記不如帶墨,要用文字將經驗記錄下來,將遇到的問題詳細描述清楚,沒事的時候翻看一下,工作時間長了,你會發現這是一筆難得的財富。
限於篇幅,這里就不再多講技術的細節了,希望各位讀者在技術成長的過程當中都能有自己清晰的學習路徑,安排好自己的學習計劃,穩扎穩打!

Ⅶ 嵌入式開發都需要學習什麼

嵌入式系統是計算機軟體和硬體的綜合體,崗位包括:ESE(嵌入式軟體工程師);ADE(嵌入式應用開發工程師);FWE(嵌入式底層開發工程師);FEC(嵌入式固件開發工程師)。

課程內容主要包括:

①C,Java核心編程:c語言核心編程,Java核心編程;

②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;

③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;

④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;

⑤大型項目實踐:每期安排各類型真實的項目,詳細可以找我要資料。

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

Ⅷ 軟體開發需要學習什麼基礎知識

1、基礎知識
學習軟體開發需要大量與數學、英語打交道,所以需要有一定的數學、英語基礎。有了這個基礎,學起來可以事半功倍。當然,對數學、英語的要求也沒有想像中的那麼高。
2、基礎編程語言
編程語言是學軟體開發的鑰匙,初學者好根據自身的喜好或者職業規劃選擇語言。目前主流的編程語言包括Java、PHP、.net、C#語言等,新手建議從C語言開始,是基礎也實用的語言,之後也可以慢慢擴展。其實很多編程語言之間有所互通,比如數據類型、變數、常量等。在學習實踐過程中,了解編程內涵,養成編程思維,這樣跨語言學習會非常快。
3、資料庫(SQL Server)知識
除了基礎學習,資料庫相關的也是必不可少的。數據的存儲、調用在軟體開發運行過程中必不可少
4、web相關知識
主要分為HTML、CS
經過這四個階段,基本就掌握了完整的開發基礎了。很多人可能會說,內容太多,無法全部掌握怎麼辦?不用擔心,現在專業的軟體開發公司,也是團隊分工協作,跨語言、跨崗位非常少。如果有一些計算機編程基礎,3個月就能打開軟體開發的大門,如果是零基礎,少需要一個月,而且軟體開發更新速度比較快,需要跟著時代不斷學習進步。
軟體開發必備技能
1、熟練一門語言
熟練一門語言可以幫助你看懂前人的代碼,熟悉語言的特性,用更好的方式實現功能,同時避免一些意外並且你認為神奇的錯誤。總而言之,熟練一門語言是你進入開發的第一步。
2、面向對象設計
為了應對軟體開發中的面向對象設計思想,開發人員也需要學習一種面向對象的語言。
面向對象設計是一種設計復雜程序的方法,它將代碼分成了單獨的類和對象(類的實例),這些類和對象封裝了一些特定的功能。
3、Linux基礎
開發都是基於類Unix系統的,所以Lunix必定需要接觸,命令通用;而且幾乎所有的後端伺服器用的都是Lunix系統,同時即使你只做前端,也需要很多的接觸系統相關的東西。
4、源代碼管理
管理源代碼是任何軟體開發項目不可或缺的組成部分。在使用源代碼之前,應該有一個網路來共享項目的所有文件。
源代碼管理工具最基本的功能,是保留軟體項目中對文件所做更改的歷史記錄。它還允許多個開發人員同時處理相同的代碼, 並將這些處理代碼融合在一起。中國的軟體行業規模不是很大,有些軟體企業在軟體製作上,也只是採用了一些軟體工程的思想,距離大規模的工業化大生產比較還是有一定的差距;原因有管理體制的問題,市場問題,政策問題,也有軟體工程理論不全面和不完善的問題。所以軟體工程的研究和應用,以及中國軟體行業的進一步發展,都需要一定的既有軟體工程的理論基礎和研究能力,又有一定的實踐經驗的軟體工程科學技術人員來推動。軟體工程的前途是光明的。
軟體服務外包屬於智力人才密集型現代服務業。大量著名外包企業落戶寧波。主要就業去向包括軟體外包與服務企業、信息產品與服務企業,擔任程序員、軟體測試員、項目經理等工作崗位。
軟體工程專業是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它涉及到程序設計語言,資料庫,軟體開發工具,系統平台,標准,設計模式等方面。在現代社會中,軟體應用於多個方面。典型的軟體比如有電子郵件,嵌入式系統,人機界面,辦公套件,操作系統,編譯器,資料庫,游戲等。同時,各個行業幾乎都有計算機軟體的應用,比如工業,農業,銀行,航空,政府部門等。這些應用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量

Ⅸ 晶元設計企業,固件開發 職位,該准備學習些什麼

嵌入式、FPGA 單片機程序

Ⅹ 如何學習嵌入式開發

嵌入式開發的學習其實並沒有那麼難,只要了解學習的體系,掌握正確的學習方法,學習起來並不難。來講一下嵌入式開發都要學些啥!

嵌入式開發的主要學習內容:

閱讀全文

與晶元固件開發需要學習哪些演算法相關的資料

熱點內容
編譯原理如何運用到編程中 瀏覽:14
linux選擇資料庫 瀏覽:375
php兩個數組差集 瀏覽:978
迷你pdf閱讀器下載 瀏覽:432
做一個python小程序 瀏覽:654
pythonossystem和 瀏覽:644
win2008如何搭建ftp伺服器 瀏覽:53
安卓手機為什麼不翻牌 瀏覽:545
刪除pkpm及相關文件夾 瀏覽:480
房貸解壓銀行內部流程 瀏覽:734
安卓手機如何更改語音 瀏覽:599
android紅包實現 瀏覽:733
蘋果的nvme為什麼安卓不用 瀏覽:31
python輸入單詞統計個數 瀏覽:997
腳本軟體提取源碼 瀏覽:281
程序員能給自己的微信錢包刷錢么 瀏覽:72
怎麼讓小天才app查看寶貝的通訊錄 瀏覽:623
dxgpdf 瀏覽:257
哪個命令 瀏覽:51
文件不能打包壓縮 瀏覽:708