自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

[技術(shù)門診第230期] 走進(jìn)嵌入式軟件開發(fā)高質(zhì)高效殿堂

開發(fā)
嵌入式軟件開發(fā)與軟硬件結(jié)合有著非常緊密的聯(lián)系,對工程師的能力有一定的要求,這也決定了進(jìn)入嵌入式軟件開發(fā)領(lǐng)域?qū)⒚媾R更大的困難和挑戰(zhàn)。對于剛開始學(xué)習(xí)嵌入式軟件開發(fā)的工程師,著重學(xué)習(xí)操作系統(tǒng)原理和處理器方面的知識(shí)尤為重要。從業(yè)后,如要實(shí)現(xiàn)高效工作還得掌握開發(fā)所需的各種工具和流程。在實(shí)際工作中,開發(fā)者需要掌握哪些知識(shí)?使用哪些工具?超大工作量與生活如何平衡?本期技術(shù)門診我們一起探討有關(guān)嵌入式軟件開發(fā)那些事。

技術(shù)門診是51CTO社區(qū)品牌欄目,每周邀請一位客座專家,為廣大技術(shù)網(wǎng)友解答疑問。從熱門技術(shù)到前沿知識(shí),從技術(shù)答疑到職業(yè)規(guī)劃。每期一個(gè)主題,站在***最熱的技術(shù)前沿為你引航!

本期特邀C/C++語言專家、軟件開發(fā)專家、系統(tǒng)架構(gòu)師李云先生,將針對嵌入式軟件開發(fā)學(xué)習(xí)過程中遇到的問題給予解答。

本期專家:李云

擅長領(lǐng)域:嵌入式系統(tǒng)軟件開發(fā)、軟件平臺(tái)與框架設(shè)計(jì)、UML建模

專家簡介:摩托羅拉網(wǎng)絡(luò)部軟件架構(gòu)師,資深軟件開發(fā)工程師、51CTO專家博主。專注于嵌入式系統(tǒng)開發(fā)、軟件平臺(tái)與框架設(shè)計(jì)和UML建模。早在2000年開始從事嵌入式軟件開發(fā)工作,包含:操作系統(tǒng)內(nèi)核、文件系統(tǒng)和IP協(xié)議棧的移植,IDE硬盤、以太網(wǎng)芯片和PCI等外設(shè)的驅(qū)動(dòng)開發(fā)。熟悉x86、PowerPC、XScale處理器,以及TI DSP。源碼級(jí)熟悉uC/OS、RTEMS和VxWorks實(shí)時(shí)操作系統(tǒng)的實(shí)現(xiàn),并在這些操作系統(tǒng)和Linux操作系統(tǒng)上有著豐富的軟件開發(fā)經(jīng)驗(yàn)。著有《專業(yè)嵌入式軟件開發(fā) — 全面走向高質(zhì)高效編程》。

查看本期門診精彩實(shí)錄:http://doctor.51cto.com/develop-244.html

參與***技術(shù)門診:http://doctor.51cto.com/

精選本期網(wǎng)友提問與專家解答,以供網(wǎng)友學(xué)習(xí)參考。

Q:李老師,您好!我想請問下,現(xiàn)在常用的嵌入式開發(fā)工具有哪些?哪個(gè)比較好用常用,以前到了解用過RealView MDK 開發(fā)工具,不知它與別的工具有什么不同。

A:你好,從我的個(gè)人經(jīng)驗(yàn)來看,大型的嵌入式軟件開發(fā)大多采用的是基于命令行的開發(fā)方式,很少有采用GUI界面的。即使象VxWorks有那么好用的Workbench,我曾工作的團(tuán)隊(duì)也是基于命令行進(jìn)行開發(fā)工作的。至于RealView MDK,我想它更多地運(yùn)用于基于ARM處理器的嵌入式系統(tǒng)開發(fā)中,是一款很好的開發(fā)工具。至于與其他工具的比較問題,我不能很好地回答。

大體說來,一個(gè)好的開發(fā)工具能極大地提高工作效率,但成為一個(gè)專業(yè)的嵌入式開發(fā)工程師這不是至關(guān)重要的一步。因?yàn)槟銜?huì)用這個(gè)別人也會(huì)用,對于我們的能力沒有什么區(qū)分度。就開發(fā)工具方面,成為專業(yè)的嵌入式開發(fā)工程師的關(guān)鍵點(diǎn),在于我們能否理解和掌握開發(fā)工具背后的行為。比如,編譯器是如何編譯整個(gè)項(xiàng)目的?程序文件的結(jié)構(gòu)是怎樣的?調(diào)試時(shí)斷點(diǎn)的原理又是什么?如何通過編寫Makefile來更好地完成項(xiàng)目編譯?等等。這也是我為什么會(huì)在《專業(yè)嵌入式軟件開發(fā)》中加入介紹程序結(jié)構(gòu)和開發(fā)工具相關(guān)篇章的緣故。


Q: 李老師,你好,我是嵌入式初學(xué)者,嵌入式從應(yīng)用層到驅(qū)動(dòng)動(dòng)層的一些實(shí)驗(yàn)都走過了,然后覺得這個(gè)專業(yè)學(xué)的東西太多了,涉及太多的知識(shí),即將畢業(yè),不知道從應(yīng)用層還是從底層入手進(jìn)入這個(gè)行業(yè),本人比較喜歡偏向底層開發(fā),但是自己在這方面的知識(shí)和經(jīng)驗(yàn)還是不足,請問李老師有什么好的意見呢?

A:我相信這是很多新手都會(huì)面臨的問題,我也是曾經(jīng)這樣走過來的。首先,正如您所說,真正的嵌入式軟件開發(fā)需要掌握很多的知識(shí)。從硬件方面,工程師需要完全理解計(jì)算機(jī)的體系結(jié)構(gòu);從軟件方面,工程師需要掌握各種開發(fā)工具、了解程序的結(jié)構(gòu)、精通編程語言等等。正因如此,這決定了從事嵌入式軟件開發(fā)是一個(gè)艱難和長期的學(xué)習(xí)和成長過程,我們先要從思想上樹立這種觀念,這使得我們在成長的過程中不會(huì)因?yàn)槲窇侄艞墶?/p>

短期來看,我覺得您需要從軟件基礎(chǔ)入手,掌握嵌入式軟件開發(fā)所需掌握的各種軟件開發(fā)技能。畢竟,我們一上手工作是以軟件作為切入點(diǎn)的。至于硬件方面的知識(shí),雖然也很重要,但學(xué)習(xí)它的緊迫程度更低一點(diǎn),我們可以邊工作邊積累。

如果您喜歡做底層開發(fā),那我建議您跟著自己的興趣走。有興趣是很難能可貴的一件事!至于知識(shí)和經(jīng)驗(yàn),每一個(gè)新手上路時(shí)都缺乏,這不是根本問題。對您最關(guān)鍵的,或許是能找到一個(gè)符合自己興趣的新工作,這樣就有機(jī)會(huì)成為一個(gè)真正的底層嵌入式軟件開發(fā)人才。

祝您進(jìn)入職場有一個(gè)好的起點(diǎn)!也愿您能堅(jiān)持自己的興趣!

Q:李老師,您好。嵌入式軟件開發(fā)相對而言與硬件結(jié)合更加緊密,但各種芯片又不可能全部掌握。作為軟件開發(fā)人員,您認(rèn)為應(yīng)該對硬件知識(shí)的掌握達(dá)到何種程度?另外需不需要研究算法呢?

A:你好,其實(shí)不論是什么芯片,我們掌握它們的方法都是一樣的:1)能看懂時(shí)序圖。2)能熟練地查閱芯片手冊。這也間接地回答了要掌握到什么程度。
我認(rèn)為您是在問軟件算法對嗎?如果這樣,是否要研究算法取決于工作內(nèi)容。在很多情形下,掌握《數(shù)據(jù)結(jié)構(gòu)》這類書中的算法就夠用了。

Q:李老師,您好!我在學(xué)習(xí)嵌入式的過程中,發(fā)現(xiàn)總是不能專注于一種平臺(tái)來學(xué)習(xí),今天學(xué)兩下Linux,明天就開始玩Android,老是無法專注,對此您有好的建議嗎?

A:這可能和我們自己的定位有關(guān) — 不清楚以后到底要干什么。

我個(gè)人覺得學(xué)習(xí)Linux與學(xué)習(xí)Android是不大一樣的。前者側(cè)重于操作系統(tǒng),后者則更側(cè)重于應(yīng)用框架;前者是用C語言,后者則更多的是Java。相比之下,做Android應(yīng)用(不是驅(qū)動(dòng)等)的門檻更低。對于沒有多少工作經(jīng)驗(yàn)的人來說,從事Android是一件好事。從就業(yè)前景來講,移動(dòng)互聯(lián)網(wǎng)是個(gè)大趨勢,因此Android所需的開發(fā)工程師數(shù)量會(huì)很大。

做軟件開發(fā)有一些內(nèi)容我們要注意。比如,真正的高水平是指我們能掌握一定的開發(fā)方法、能理解軟件開發(fā)的困境、有很強(qiáng)的設(shè)計(jì)能力、熟悉計(jì)算機(jī)體系結(jié)構(gòu)和操作系統(tǒng)實(shí)現(xiàn)原理等。可以說,這些內(nèi)容與具體是Linux或Android是無關(guān)的(還可以是其它的VxWorks或iOS什么的),我更傾向于將Linux和Android開發(fā)理解為是一條幫助我們理解困境和掌握技能的一種途徑。

對于您的問題,我認(rèn)為自己可以問幾個(gè)問題:1)我是新手嗎?如果是,我認(rèn)為學(xué)Android應(yīng)用開發(fā)是更好的選擇,畢竟我們需要有一份工作,以便以后獲得更多的學(xué)習(xí)機(jī)會(huì)。2)我是個(gè)能堅(jiān)持的人嗎?如果是,則無論現(xiàn)在學(xué)什么都行。在工作中我們還是有很多機(jī)會(huì)去改變自己的選擇的,只要我們能堅(jiān)持沒有什么學(xué)(做)不好的。

總而言之,請根據(jù)自己的性格特點(diǎn)和愛好去定位好自己要做什么。一旦定位好了,您現(xiàn)在不能專注的問題也就解決了。

Q:我現(xiàn)在有個(gè)困惑,你書中提到,對于軟件質(zhì)量,軟件設(shè)計(jì)是根本,這個(gè)我也很有感觸。一個(gè)設(shè)計(jì)不良的軟件產(chǎn)品,不僅影響質(zhì)量,也帶來很大的維護(hù)、擴(kuò)展的困難,但設(shè)計(jì)好不好怎樣來考量呢?這是架構(gòu)師的職責(zé)?還有你怎么看待工具和流程的關(guān)系,因?yàn)槲野l(fā)現(xiàn)在我的公司有很多工具可以讓我們使用,比如review board等,但我發(fā)現(xiàn)很少人將它用起來,很多時(shí)候很多低級(jí)錯(cuò)誤我認(rèn)為都是可以通過review的方式來控制的,但由于缺少這一環(huán)節(jié)硬性的流程控制,很少人用它。說了一堆,有點(diǎn)沒有頭緒一樣,因?yàn)檫@些都是我有疑惑,但又不知問題在哪,期待您能解答,也同時(shí)能幫忙理出一個(gè)頭緒來,謝謝!

A:正如我在書中所說,設(shè)計(jì)質(zhì)量的度量是軟件行業(yè)的一個(gè)難點(diǎn),所以設(shè)計(jì)好壞的考量很難用某種具體的指標(biāo)去表示。真正了解設(shè)計(jì)質(zhì)量的人正是一線的軟件工程師,盡管如此,也很難用某種具體的指標(biāo)將工程師的這種“心知肚明”表達(dá)出來。

軟件的設(shè)計(jì)質(zhì)量必須由軟件開發(fā)架構(gòu)師去把控,就我的工作經(jīng)驗(yàn),軟件行業(yè)的混亂很大程度上與缺乏高質(zhì)量的軟件開發(fā)架構(gòu)師有很大的關(guān)系。

對于工具與流程的使用習(xí)慣,這需要公司的文化去強(qiáng)化。我們的工作特點(diǎn)可能平時(shí)太隨意,只要工作做完就行,而沒有考慮讓自己專業(yè)做事。其實(shí),對工具和流程的使用習(xí)慣能在某種程度上反映我們的?;P纬墒褂昧?xí)慣之前,需要公司領(lǐng)導(dǎo)層面鼓吹其重要性,并由各項(xiàng)目負(fù)責(zé)人帶頭去做好,否則很難真正落實(shí)。

Q:李老師您好,我是一名大一的學(xué)生,上的是??疲瑢W(xué)的是計(jì)算機(jī)應(yīng)用技術(shù)專業(yè),課程是IT運(yùn)維方面的,不過我想未來做嵌入式開發(fā),現(xiàn)在在跟著學(xué)習(xí)數(shù)字電路和單片機(jī),有C語言基礎(chǔ),我想問下老師,對于我未來走進(jìn)嵌入式領(lǐng)域,該怎樣學(xué)習(xí),以及尋找實(shí)習(xí)單位時(shí)怎樣選擇?謝謝老師!

A:你好,如果有C語言和單片機(jī)的基礎(chǔ),我建議自己可能先鞏固這兩門內(nèi)容??梢哉f,學(xué)好這兩門對于嵌入式軟件開發(fā)的學(xué)習(xí)非常有幫助。第二步可以考慮做一些實(shí)際或虛擬的軟件項(xiàng)目,在此我推薦您看我的書。該書除了可以讓您對開發(fā)工具、開發(fā)環(huán)境和操作系統(tǒng)原理有深入的掌握外,書中所提供的學(xué)習(xí)環(huán)境也可以用于編程實(shí)踐。

第三步可以考慮選擇某一款處理器以對之進(jìn)行深入的學(xué)習(xí)。比如,ARM就是很不錯(cuò)的學(xué)習(xí)目標(biāo)處理器。
有了以上三步后,我覺得您需要通過工作來加深各方面知識(shí)的理解,這是一個(gè)長期的過程。其中可能根據(jù)您的能力增長需要學(xué)習(xí)各方面的內(nèi)容,這或許不是我在這里能簡單回答的了。

對于實(shí)習(xí)單位,以現(xiàn)在的就業(yè)形勢來看,我覺得只要單位愿意接收,且自己覺得有東西可學(xué)就行了。當(dāng)然,如果實(shí)習(xí)單位與嵌入式系統(tǒng)開發(fā)有關(guān)就***了。剛開始我們要求不要太高,相比待遇,學(xué)習(xí)機(jī)會(huì)更重要。
 

責(zé)任編輯:彭凡 來源: 51CTO
相關(guān)推薦

2009-11-07 19:15:51

嵌入式軟件開發(fā)

2023-01-27 23:46:36

嵌入式軟件技巧

2022-02-14 23:17:16

Gitlab嵌入式工具

2010-04-21 13:22:20

Windows CE

2022-01-13 23:15:29

Docker開發(fā)嵌入式

2012-04-06 14:23:53

技術(shù)門診Android

2022-02-16 22:30:51

嵌入式軟件開發(fā)工具

2011-01-14 13:13:23

嵌入式Linux開發(fā)

2009-08-17 09:11:53

手機(jī)應(yīng)用軟件開發(fā)

2011-04-18 11:34:34

嵌入式軟件測試

2009-07-17 16:06:59

ARM嵌入式開發(fā)

2023-04-27 07:06:18

2022-12-14 08:06:08

2023-01-04 09:37:16

2010-03-26 11:23:59

無線嵌入式控制技術(shù)

2011-03-02 08:47:08

IT技術(shù)周刊

2020-11-16 12:25:08

技術(shù)資訊

2021-06-21 15:52:21

技術(shù)資訊

2010-01-13 09:15:35

嵌入式

2011-07-05 15:42:02

QT 嵌入式 Embedded
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)