前言
針對(duì)自學(xué)C后,是否可以找到好工作這個(gè)問(wèn)題,我想從C語(yǔ)言的應(yīng)用領(lǐng)域出發(fā)來(lái)展開(kāi)闡述這一問(wèn)題的答案。通常而言,C語(yǔ)言的應(yīng)用領(lǐng)域主要集中在嵌入式開(kāi)發(fā)這塊。嵌入式開(kāi)發(fā)大體可以分為三個(gè)階段:裸機(jī)開(kāi)發(fā),驅(qū)動(dòng)開(kāi)發(fā)和系統(tǒng)移植三個(gè)板塊。
裸機(jī)開(kāi)發(fā)
裸機(jī)開(kāi)發(fā),用通俗易懂的話就是不帶操作系統(tǒng)的嵌入式開(kāi)發(fā)。常會(huì)接觸的芯片有51和STM32。生活常見(jiàn)的產(chǎn)品應(yīng)用有3D眼鏡和遙控器等,其都與裸機(jī)開(kāi)發(fā)有關(guān)。
在裸機(jī)開(kāi)發(fā)中,除了懂C語(yǔ)言,你還要學(xué)會(huì)看電路圖。與此同時(shí),你還需要學(xué)會(huì)看英文芯片手冊(cè)。因?yàn)樵陂_(kāi)發(fā)中,芯片的說(shuō)明使用手冊(cè)通常都是國(guó)外產(chǎn)出的,所以其說(shuō)明書(shū)大多數(shù)都是英文,所以需要你具備閱讀英文閱讀的能力。
總而言之,在裸機(jī)開(kāi)發(fā)中,你需要具備C語(yǔ)言編程能力,英文閱讀能力以及看電路圖的能力。
驅(qū)動(dòng)開(kāi)發(fā)
驅(qū)動(dòng)開(kāi)發(fā)是建立在裸機(jī)開(kāi)發(fā)的基礎(chǔ)之上。驅(qū)動(dòng)開(kāi)發(fā)和裸機(jī)開(kāi)發(fā)一個(gè)最大的不同點(diǎn)就是,驅(qū)動(dòng)開(kāi)發(fā)編寫(xiě)的程序是運(yùn)行在操作系統(tǒng)的上。在驅(qū)動(dòng)開(kāi)發(fā)中,若想要把驅(qū)動(dòng)加載進(jìn)入操作系統(tǒng),則你的驅(qū)動(dòng)需要按照操作系統(tǒng)的編寫(xiě)規(guī)則去進(jìn)行,如此才能把驅(qū)動(dòng)加載進(jìn)入操作系統(tǒng),以此來(lái)完成驅(qū)動(dòng)開(kāi)發(fā)的工作。
在驅(qū)動(dòng)開(kāi)發(fā)中,除了具備上述裸機(jī)開(kāi)發(fā)的所述的技能之外,還需要你具備Makefile,Linux命令,Linux的Shell編程以及Linux設(shè)備驅(qū)動(dòng)原理等知識(shí)。
系統(tǒng)移植
系統(tǒng)移植就是將系統(tǒng)移植到對(duì)應(yīng)開(kāi)發(fā)板上,因?yàn)獒槍?duì)每種特定的開(kāi)發(fā)板,原生操作系統(tǒng)燒錄進(jìn)去不一定可以運(yùn)行,所以此時(shí)就需要對(duì)系統(tǒng)進(jìn)行修改,然后將操作系統(tǒng)燒錄到開(kāi)發(fā)板,才能使開(kāi)發(fā)板正常地運(yùn)行操作系統(tǒng)。
常見(jiàn)的操作系統(tǒng)移植工作有兩大類(lèi),Linux系統(tǒng)移植和Android系統(tǒng)移植。
系統(tǒng)移植是建立在驅(qū)動(dòng)開(kāi)發(fā)技能的基礎(chǔ)上,除了掌握上述驅(qū)動(dòng)開(kāi)發(fā)的技能外,你還需要對(duì)操作系統(tǒng)的整個(gè)運(yùn)行流程都較為熟悉。當(dāng)操作系統(tǒng)在開(kāi)發(fā)板上跑著報(bào)錯(cuò)了的時(shí)候,你才能準(zhǔn)確定位問(wèn)題所在,從而知道如何著手怎么解決此類(lèi)問(wèn)題。
總結(jié)
關(guān)于嵌入式開(kāi)發(fā)的其他細(xì)節(jié),也可以參考我的另一篇文章。希望此問(wèn)題對(duì)于僅掌握C語(yǔ)言的同學(xué)有一定的幫助和認(rèn)識(shí)。如果喜歡我的文章,記得關(guān)注轉(zhuǎn)發(fā)哦!