久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2187|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)功能如何通過(guò)程序表達(dá)出來(lái)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:109892 發(fā)表于 2016-5-12 20:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)問(wèn)各位大神我想知道單片機(jī)的功能如何通過(guò)程序表達(dá)出來(lái),主要是如何設(shè)計(jì)函數(shù)結(jié)構(gòu)把功能表達(dá)出來(lái)、
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:120375 發(fā)表于 2016-5-12 20:51 | 只看該作者
作者:肖木木
鏈接:http://www.zhihu.com/question/31013098/answer/52255132
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。


任何計(jì)算機(jī)系統(tǒng)都是軟件和硬件的結(jié)合體,如果只有硬件而沒(méi)有軟件,則硬件是沒(méi)有靈魂的軀殼;如果只有軟件沒(méi)有硬件,則軟件就是一堆無(wú)用的字符。在底層硬件的基礎(chǔ)上,操作系統(tǒng)覆蓋一層驅(qū)動(dòng),屏蔽底層硬件的操作,通過(guò)特定的軟件接口去操作底層硬件,用戶在用戶空間可以很容易的把軟件設(shè)計(jì)目標(biāo)放在策略與需求上,可以很方便的屏蔽掉底層實(shí)現(xiàn),從而很好的完成客戶功能需求。計(jì)算機(jī)系統(tǒng)是軟件和硬件的結(jié)合體。而軟件又分為應(yīng)用層軟件和驅(qū)動(dòng)層軟件。驅(qū)動(dòng)層軟件是應(yīng)用層軟件和底層硬件的紐帶。通過(guò)驅(qū)動(dòng)層軟件實(shí)現(xiàn)對(duì)底層硬件屏蔽。

在裸機(jī)時(shí)代,比如單片機(jī)系統(tǒng),程序員往往是直接操作硬件寄存器,直接設(shè)置硬件。而在Linux操作系統(tǒng)中,硬件驅(qū)動(dòng)程序中實(shí)現(xiàn)對(duì)硬件直接操作,而用戶空間,通過(guò)通用的系統(tǒng)調(diào)用接口,實(shí)現(xiàn)對(duì)硬件操作,應(yīng)用程序沒(méi)有直接操作底層設(shè)備,通過(guò)posix標(biāo)準(zhǔn),應(yīng)用程序的系統(tǒng)調(diào)用往往是被規(guī)定和限值,用戶只能通過(guò)規(guī)定的接口實(shí)現(xiàn)對(duì)底層硬件的操作,導(dǎo)致了應(yīng)用程序在類UINIX操作系統(tǒng)具有非常好的可移植性。


圖2.1 直接操作硬件程序

上圖2.1 是裸機(jī)時(shí)代,應(yīng)用程序和硬件操作糅合在一起,應(yīng)用程序和硬件操作高度耦合的框圖,上述代碼一般很難有良好的代碼互用和移植性。往往從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái),甚至是同一平臺(tái)不同硬件配置都要求很大的代碼改動(dòng),另外從應(yīng)用層來(lái)說(shuō),應(yīng)用與驅(qū)動(dòng)高度耦合,應(yīng)用程序也幾乎難以移植,甚至說(shuō)是沒(méi)有應(yīng)用程序概念,原因在于應(yīng)用與驅(qū)動(dòng)的糾纏不清。


圖2.2 無(wú)操作系統(tǒng)應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序關(guān)系

上圖2.2所示,良好的裸機(jī)代碼框架,設(shè)備驅(qū)動(dòng)層和應(yīng)用層之間有良好的分層思想,用戶可以較好的實(shí)現(xiàn)策略和需求,例如:客戶要求實(shí)現(xiàn)流水燈程序,程序員在底層機(jī)制實(shí)現(xiàn)(硬件操作)的基礎(chǔ)下,可以充分在用戶應(yīng)用程序中把主要精力方法流水燈的實(shí)現(xiàn),即策略。但是在良好的裸機(jī)程序設(shè)計(jì),代碼移植性可能從一個(gè)平臺(tái)移植到另外一平臺(tái)只需要修改少量的底層驅(qū)動(dòng),例如:LED_ON()的實(shí)現(xiàn)。但是在用戶空間,沒(méi)有系統(tǒng)調(diào)用概念,函數(shù)接口千差萬(wàn)別。應(yīng)用程序移植性差。


圖2.3 Linux系統(tǒng)調(diào)用框圖

操作系統(tǒng)中,需求決定應(yīng)用程序,通過(guò)系統(tǒng)調(diào)用,調(diào)用底層驅(qū)動(dòng),此外,在驅(qū)動(dòng)程序中,把一部分公用的驅(qū)動(dòng)接口抽象出來(lái),如此,程序員只需修改很少量的驅(qū)動(dòng)資源,形成特定的驅(qū)動(dòng)框架。導(dǎo)致用戶只需添加專用的硬件屬性作為平臺(tái)資源,在內(nèi)核中獲取資源,大大解放了設(shè)備驅(qū)動(dòng)開(kāi)發(fā),提高了設(shè)備驅(qū)動(dòng)的通用型。在用戶空間,由于遵循posix標(biāo)準(zhǔn),類UNIX操作系統(tǒng)中,所有操作接口基本一樣,從而方便了應(yīng)用程序的移植,應(yīng)用程序幾乎不要做修改。如圖2.3所示。

Linux操作系統(tǒng)對(duì)于所有的硬件都是當(dāng)做一個(gè)文件來(lái)操作:一切設(shè)備皆文件。Linux設(shè)備文件一般分為字符設(shè)備,塊設(shè)備,網(wǎng)絡(luò)設(shè)備。在Linux系統(tǒng)中,除了網(wǎng)絡(luò)設(shè)備之外,所有的設(shè)備都被映射到Linux的文件系統(tǒng)中。如圖2.4所示。


圖2.4 Linux操作系統(tǒng)與應(yīng)用程序關(guān)系

--------------------------------------------------------------------------------------------------------------------------------------------

講講51,linux,安卓之間的差別。先申明一下,我是實(shí)際工作中沒(méi)有使用過(guò)單片機(jī),我使用單片機(jī)僅僅是用來(lái)參加全國(guó)電子設(shè)計(jì)大賽。工作主要在android driver這一塊。我們這一行很多人說(shuō)單片機(jī)是有瓶頸的,我也不是很清楚。但是實(shí)話實(shí)說(shuō),這鳥(niǎo)東西太簡(jiǎn)單了,沒(méi)啥技術(shù)含量的,你要之后android的龐大。

歡迎點(diǎn)贊。后面會(huì)說(shuō)說(shuō)android,linux,51,32單片機(jī)之間的聯(lián)系與學(xué)習(xí)方法,雖然我也是菜鳥(niǎo),如果你現(xiàn)在看不懂也沒(méi)關(guān)系,有個(gè)映像就行。以后就有方向去學(xué)習(xí)了。想當(dāng)初我真的是一個(gè)人孤孤學(xué)習(xí)linux

===============================================================

補(bǔ)充一個(gè):?jiǎn)纹瑱C(jī)要點(diǎn)亮一個(gè)led等,同樣在安卓上你點(diǎn)亮一個(gè)燈也要驅(qū)動(dòng)的,不然怎么亮呢,只是我們只看到了app。 背后驅(qū)動(dòng),怎么實(shí)現(xiàn)的,安卓架構(gòu),跟單片機(jī)有啥區(qū)別,相同的地方。其實(shí)手機(jī)arm芯片跟單片機(jī)都是嵌入式微處理器,單片機(jī)叫做微控制器。高通,mtk啥的也是嵌入式微處理器~都是一樣的~但是難度你想想看就知道了。


51單片機(jī)大家都知道了,裸機(jī),直接操作硬件,直觀,簡(jiǎn)單,沒(méi)有框架,沒(méi)有系統(tǒng)。

STM32,可以學(xué)習(xí)一下RTOS了,實(shí)時(shí)的小系統(tǒng),ucos II等等許多實(shí)時(shí)系統(tǒng),STM32+ucos II這種組合學(xué)習(xí)方式還是挺好的。STM32比較難的在我印象中一個(gè)是時(shí)鐘樹(shù),因?yàn)槲覀儚?1,沒(méi)有時(shí)鐘樹(shù)的概念12M晶振,時(shí)鐘不要你配置,而比較新的ARM框架,外設(shè)都是有時(shí)鐘的。可能剛剛接觸概念不是很清楚,但是也是很簡(jiǎn)單的。另外一個(gè)是定時(shí)器,什么輸入捕獲模式,定時(shí)器模式,編碼器模式。。。。。強(qiáng)大的多,比起51。總的來(lái)說(shuō)還是簡(jiǎn)單的。因?yàn)槭菦](méi)有框架的原因,代碼量真的很少。你要知道,MTK android 5.1 所有的東西加起來(lái) 10G多,包括bootloader,linux kernel,android framework ,定制的部分。等等。我們接觸的就那些目錄,當(dāng)你去看C++,java代碼時(shí),你就知道面向過(guò)程的代碼真的很容易看。可能有些朋友不知道android的框架,以及android 與linux之間的關(guān)系,以及l(fā)inux驅(qū)動(dòng)與裸機(jī)的關(guān)系,聯(lián)系與區(qū)別。你現(xiàn)在只要知道linux驅(qū)動(dòng)比較大,android框架更大。單片機(jī)簡(jiǎn)單。單片機(jī)一般是C語(yǔ)言,而android一般涉及三種語(yǔ)言:底層linux內(nèi)核C,中間的JNI層是C++,framework和app是java。


學(xué)過(guò)51單片機(jī)的朋友知道,我們要點(diǎn)亮一個(gè)LED燈,是這樣子的P0 = xxx ,我們就點(diǎn)亮了一個(gè),好。一燒寫(xiě),好,燈亮了。linux,上我們要亮一個(gè)燈,有點(diǎn)難了,有了操作系統(tǒng),沒(méi)那么容易了。一般人搞不定了。好,到android,更加難了。但是你想一想手機(jī)芯片也是ARM。亮燈這種肯定都是CPU的管腳操作。上了系統(tǒng)了,難了,點(diǎn)個(gè)燈都費(fèi)勁的。本質(zhì)上是一樣的。很多人都知道單片機(jī)有瓶頸的。原因是會(huì)點(diǎn)硬件,會(huì)點(diǎn)C,輕輕松松就可以亮燈的。入門(mén)容易。



我舉一個(gè)小的例子說(shuō)明一下51,linux,android三者的之間的差別。你就知道是啥區(qū)別。下面是51單片機(jī):

大概是這樣:
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线不卡 | 欧美二区三区 | 免费小视频在线观看 | 日本不卡免费新一二三区 | 91久久久久久久久 | 日韩精品视频中文字幕 | 亚洲日本一区二区 | 成人精品福利 | 国产精品久久久亚洲 | 一级h片| 日韩午夜网站 | 国产精品中文在线 | 亚洲最大av | 成年精品 | 亚洲欧美国产精品一区二区 | 日韩中文字幕久久 | 在线国产一区 | 欧美一级欧美三级在线观看 | av黄色免费 | 亚洲一区二区视频 | 精品欧美二区 | 超碰在线人人 | 视频一区二区三区四区五区 | 国产免费视频 | 日韩电影一区 | 精品一区二区av | 91青娱乐在线 | 日韩精品久久一区 | 国产乱码精品一区二区三区忘忧草 | www日本在线观看 | 国产一级黄色网 | 亚洲精品国产区 | 日韩av在线一区二区 | 91直接看 | 国产中文字幕在线观看 | 综合久久99 | 日韩免费一级 | 亚洲一区国产 | 成人性生交大免费 | 亚洲欧美日韩一区 | 婷婷综合色 |