嵌入式軟件工程指的是開發(fā)嵌入式軟件的工作。
主要職責:
1、開相關產(chǎn)品的嵌入式軟件(主要包括操作系統(tǒng)的移植,驅(qū)動程序的開發(fā)等);
2、按照研發(fā)流程要求,完成軟件的詳細設計,代碼實現(xiàn),單元測試,集成測試;
3、對開發(fā)的軟件質(zhì)量和進度負責。 所需技能: 1、熟練掌握C/C++,或精通C#客戶端開發(fā),有與C++混合編程經(jīng)驗; 2、熟悉Linux程序開發(fā),Socket網(wǎng)絡編程; 3、精通多進程,多線程,網(wǎng)絡編程,熟悉常用數(shù)據(jù)結(jié)構(gòu)與算法,windows api;
嵌入式只是軟件的一個分支, 軟件工程只是軟件專業(yè)的一門課;軟件可以包括 游戲 ,系統(tǒng),網(wǎng)頁,嵌入式等等 ;嵌入式和游戲門檻高,系統(tǒng)和網(wǎng)頁門檻低;軟件工程和嵌入式都是計算機專業(yè) 大學需要學習的課程。打個比方,你去學土木專業(yè),嵌入式只是造平房,網(wǎng)頁是造樓房,軟件工程只是一個工地上的錘子。至于嵌入式到底是什么東西 比如空調(diào)里的芯片,電飯煲里的芯片,車載系統(tǒng),就是沒有CPU的一些智能東西。
軟件工程嵌入式培養(yǎng)相當于做的是嵌入式上層軟件開發(fā)的,主要是網(wǎng)頁,案桌,iso應用開發(fā)等等,是比較熱門的方向,當然難度也比較大,軟件工程的話就是做應用軟件,主要是C++,java等等,做網(wǎng)站,服務器,簡單來說,一個是專業(yè)性比較強,一個是知識面比較廣,如果是工作的話,軟件工程嵌入式培養(yǎng)比較好,如果是考研的話,軟件工程比較好。
嵌入式軟件工程師前景十分良好。嵌入式領域較新,發(fā)展非常快。同時,很多軟硬件技術出現(xiàn)的時間都不太長,嵌入式軟件工程師專業(yè)人才稀缺,崗位需求很大,同時因為供不應求的市場關系,嵌入式工程師的崗位薪資也不斷增加。
嵌入式領域較新,發(fā)展非常快,很多軟硬件技術出現(xiàn)的時間都不太長(如ARM處理器、嵌入式操作系統(tǒng)、LINUX操作系統(tǒng)),大多數(shù)人沒有條件接觸或進入嵌入式行業(yè),更談不上能有機會接受專業(yè)人士的指導。因此,踏進這個行業(yè)的難度比較大,嵌入式人才稀缺,身價自然也水漲船高。
嵌入式軟件工程師職稱一直是軟件行業(yè)中備受關注的職稱之一。作為一門高度專業(yè)的領域,嵌入式軟件工程師的工作涉及到嵌入式系統(tǒng)的設計、開發(fā)和優(yōu)化等方面。這個領域需要工程師具備扎實的編程技能、良好的團隊合作精神以及對硬件的深入了解。
想要成為一名合格的嵌入式軟件工程師,需要具備以下基本要求:
嵌入式軟件工程師通常需要承擔以下職責:
隨著物聯(lián)網(wǎng)、人工智能等技術的快速發(fā)展,嵌入式軟件工程師的需求也在不斷增長。未來,嵌入式軟件工程師將有著廣闊的發(fā)展前景,可以從事的領域包括但不限于智能家居、智能交通、醫(yī)療設備等。
成為一名優(yōu)秀的嵌入式軟件工程師需要不懈的努力和持續(xù)的學習。只有不斷提升自身的技能和能力,才能在這個競爭激烈的領域中脫穎而出。希望通過本文的介紹,能夠幫助大家更好地了解嵌入式軟件工程師這一職稱,并為未來的職業(yè)發(fā)展做好充分的準備。
其實越是剛畢業(yè),越應該找大公司鍛煉,等有經(jīng)驗了再到小公司,優(yōu)先不是考慮工資。工作不同于學習,是做事,而往往多數(shù)小公司的做事流程規(guī)范性欠佳
嵌入式的開發(fā)領域非常寬闊,上到飛機大炮,下到智能馬桶都存在著嵌入式的技術名詞,那么將嵌入式工程師軟件開發(fā)進行細分的話,實際上大多數(shù)公司都是做應用層業(yè)務需求;比如做人臉識別打卡機的,做GPS導航的,做云終端設備的公司等。
這類的公司,除非已經(jīng)是非常大規(guī)模的,正常是幾十號研發(fā)在運作。人臉打卡,人臉識別模塊是核心,但是硬件和軟件是買的,公司可能制作c++,QT實現(xiàn)上班打卡業(yè)務的工作使用場景,數(shù)據(jù)傳輸,導出導入等相關編程。
GPS導航的,GPS模塊,核心驅(qū)動,Linux,WinCE的,都不需要此公司的開發(fā)者去做開發(fā)。
云終端的,核心接入?yún)f(xié)議可能是買思杰的方案,也有可能買Vmware的方案,再不行的就搞個山寨的spice協(xié)議,rdp協(xié)議這些免費開源的。
以上幾個產(chǎn)品,核心模塊,買之,接口使用之,大多國外技術。硬件方案,要么開發(fā)板生搬硬套要么外包給硬件廠商。
那這些公司的開發(fā)做什么呢?
如果產(chǎn)品UI是的是[QT], 那就寫大量的[C++ ]代碼,各種好的軟件框架,各種多線程,多進程配合。
如果UI是GTK,那就寫大量的C代碼,各種結(jié)構(gòu)體來模擬面向?qū)ο蟮拈_發(fā)思想,當然也可以學習內(nèi)核開發(fā)者寫的牛x框架,比如學習輸入子系統(tǒng),設備驅(qū)動模型啊,binder驅(qū)動模型啊,將內(nèi)核的編程思想靈活運用到應用層編程,寫出穩(wěn)定,拓展性極強的框架就是很牛的人物啦。
真正涉及到Linux底層開發(fā)的偏少,如果一個人真正深入掌握[linux內(nèi)核]的進程管理,時間管理,內(nèi)存管理,文件管理,各種驅(qū)動框架等,能在各種硬件平臺做一個實時操作系統(tǒng)的,還懂裸機,寫點啟動代碼來引導自己的操作系統(tǒng),那就是大牛中的大牛。
回歸到剛進入嵌入式世界探索的孩子們,其實你們目前的水平去分析uboot,分析linux內(nèi)核源碼,是一件很egg疼的事情。
調(diào)用接口來實現(xiàn)多線程,來處理進程通信,來寫socket編程都是難事,甚至還在糾結(jié)指針傳參,糾結(jié)指針數(shù)組和數(shù)組指針,怎么能去看uboot,linux內(nèi)核源碼呢?
或許連C和指針,C程序設計都沒懂多少。而在那里高談大論。不管怎么樣,只要我們基礎扎實了。才能進一步探究[Linux內(nèi)核]框架。
普通二本,即將進入大三,也就是說還有一年左右的時間就要秋招了,就從這個角度出發(fā),該做什么才可以迅速達到好一點的公司的要求。
首先先確定要要不要考研,要考研的話最多考慮去實習兩三個月,然后就要開始做好考研準備了,找工作的事情可以等到春招時再準備。
如果不考研,那么要迅速學會點可以拿的出手的專業(yè)技能,目前你只有c語言和模電數(shù)電的知識,而且模電數(shù)電的知識絕大可能學得很一般甚至忘得也差不多了,但沒有關系,對于嵌入式軟件工程師來說的話,不需要非常多的模電數(shù)電的知識,簡單的電路連接圖(原理圖)會看就行了,至少哪個引腳和哪個引腳相接了能看得懂吧。這么說來公司看得上的就只有你的c語言了,顯然不夠的。
目前個人覺得最好的方式就是趕緊用半年的時間學C51單片機或者STM32,網(wǎng)上的中文教程一堆,隨便買個開發(fā)板學習就好了。問題又來了,視頻資料一堆要學到怎么樣的程度呢,其實很簡單,主要學習的部分有:LED的控制,中斷和簡單的定時器,串口以及pwm就足夠了,如果還有點時間把ADC采集電壓和iic也學一下就可以了,然后再簡歷上直接就寫“熟悉單片機”,代碼寫得不熟沒有關系,關鍵是這些東西是什么,做什么用的,可以驅(qū)動什么設備你能說得出口就行了,面試官不會讓你現(xiàn)場寫這類代碼的。
那面試官會問什么呢?其實面試官問的問題一般也不難,難的他自己也是一知半解的,所以也不會問難的。總體上只會問三類問題:1.你做了啥項目 2. 寫點簡單的純c語言代碼吧 3. 你在校期間做了哪些事情呀。大概就這些了。難不難?不難。項目可以直接做個小玩意比如個智能小風扇或者避障小車(淘寶也有現(xiàn)成的賣,價格也不貴)。c語言代碼刷幾道字符串處理的和一兩道排序題(比如冒泡排序和選擇排序)就ok了。在校做的事情能編多少就編多少。ok,基本都解決了。
那數(shù)據(jù)結(jié)構(gòu)和算法要不要學呢,如果你想去一線大廠比如華為,中興等等,那肯定是要學的,但你這學歷估計是輪不上的了(我們實話實話,少點扯淡),當然要是你項目經(jīng)歷nb,那還有點戲。真要談上數(shù)據(jù)結(jié)構(gòu)和算法,那得去牛客網(wǎng)和leetcode網(wǎng)磨練一段時間才行,鏈表題,隊列題、字符串分割合并題肯定是要熟練的,然后動態(tài)規(guī)劃,二叉樹什么的也盡可能要會手撕代碼。因此,如果不是去大公司的話不需要花太多時間學這些東西,有時間多做做c語言的選擇題和填空題牢固下c語言基礎就行了。
那想多學點技術怎么辦,那就等你進了公司才去慢慢學吧,到那時你可以問導師問老同事,他們會手把手的教你,然后再多實操項目,多解決幾個bug。勤奮點學習的話,待個3-5年就可以逆襲上大一些的公司了,或者也可以直接在本公司當個小組長或者主管,那時該懂的知識都會懂的了。
嵌入式的話,一般對員工能力要求會嚴格一些,現(xiàn)在在求職市場上,嵌入式比其他軟件研發(fā)的職位會少很多,但是待遇一點都不低,在大廠,比如華為,年薪百萬很正常,前提是你能力過硬
軟件工程嵌入式培養(yǎng)相當于做的是嵌入式上層軟件開發(fā)的,主要是網(wǎng)頁,案桌,iso應用開發(fā)等等,是比較熱門的方向,當然難度也比較大。
軟件工程的話就是做應用軟件,主要是C++,java等等,做網(wǎng)站,服務器,簡單來說,一個是專業(yè)性比較強,一個是知識面比較廣。
如果是工作的話,軟件工程嵌入式培養(yǎng)比較好,如果是考研的話,軟件工程比較好。我朋友就是報班在創(chuàng)客經(jīng)過系統(tǒng)性培訓學習了這個,現(xiàn)在出來工作后混的還算不錯。