2017-10-23

姓名:袁永輝? ? ? 學(xué)號:17101223423

轉(zhuǎn)載自:http://mp.weixin.qq.com/s/DNAWHRqcDfcggWYt8uVHrg

【嵌牛導(dǎo)讀】:我們大家應(yīng)該都使用過mp3播放器 但大家了解它的軟件組織結(jié)構(gòu)么 本文就通過分析給大家介紹一下它的軟件組織框架

【嵌牛鼻子】:開發(fā)流程 軟件架構(gòu) 驅(qū)動(dòng)程序? fatfs文件系統(tǒng) 操作函數(shù)

【嵌牛提問】:程序員需要給文件系統(tǒng)提供三個(gè)對底層硬件的操作函數(shù)是什么?

【嵌牛正文】:

做過一個(gè)簡單的MP3,可以放歌曲,顯示歌曲目錄、歌曲名和歌曲作者,還可以顯示溫度和時(shí)間,今天心血來潮,分享一下它的軟件組織形式,希望對MP3感興趣的朋友有所幫助。

先上一張MP3項(xiàng)目開發(fā)流程圖,讓大家有個(gè)框架。

圖片發(fā)自簡書App

這里的重點(diǎn)是軟件架構(gòu),所以在上一張程序樹狀圖:

圖片發(fā)自簡書App

里面的程序包括各個(gè)驅(qū)動(dòng)設(shè)備的驅(qū)動(dòng)程序和fatfs文件系統(tǒng)。

在上一張主函數(shù)中調(diào)用的資源圖:

圖片發(fā)自簡書App

主函數(shù),也可以說是應(yīng)用程序的資源就來自這些位置,也就是說我想建一座房子材料——什么水泥、沙子、磚頭。。。都是從這里面取的。第一張項(xiàng)目寬架圖告訴我們要做的是去準(zhǔn)備這些材料,然后再去考慮那些材料不好找,這就是所謂的項(xiàng)目開發(fā)重點(diǎn)。

MP3的設(shè)備驅(qū)動(dòng)程序包括SD卡的驅(qū)動(dòng)程序,VS1003硬件解碼芯片的驅(qū)動(dòng)程序,DS1302的驅(qū)動(dòng)程序,sensor的驅(qū)動(dòng)程序,顯示驅(qū)動(dòng)程序等。這些驅(qū)動(dòng)程序存儲(chǔ)的位置都是單片機(jī)的flash。

針對每個(gè)驅(qū)動(dòng)程序我遵循的都是三文件形式——.c+.h+.config,源文件+資源輸出+源文件配置文件,這種規(guī)范在一些大公司里面所采用的,具有較好的可移植性。對于程序員我們應(yīng)盡可能做到讓程序不帶“策略”,這是軟件設(shè)計(jì)的共同目標(biāo)。(再以后我將談到機(jī)制和策略的編程思想)。這樣我們寫的驅(qū)動(dòng)程序才具有更高的靈活性。

這里設(shè)計(jì)的技術(shù)難點(diǎn)還有一個(gè)FatFs文件系統(tǒng)的移植。文件系統(tǒng)是為了明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)。說起文件系統(tǒng)必須相對于存儲(chǔ)設(shè)備才有意義。這里是用來管理Sd卡上面的文件。

文件系統(tǒng)的層次叫驅(qū)動(dòng)程序要高一層,為什么這么說呢,上一張圖你就明白了:

圖片發(fā)自簡書App

程序員需要給文件系統(tǒng)提供三個(gè)對底層硬件的操作函數(shù),我們才能利用文件系統(tǒng)對硬盤(disk)上面的設(shè)備進(jìn)行管理和使用。

這三個(gè)函數(shù)分別是:sd_read();sd_write();RTC();他們分別是SD讀扇區(qū),SD卡寫扇區(qū),系統(tǒng)時(shí)鐘。(可能還需要提供更多的函數(shù)接口,但是SD卡讀寫扇區(qū)是必須要有的)。

文件系統(tǒng)接受了這三個(gè)資源便可以對Sd卡進(jìn)行管理了。

應(yīng)用程序就是實(shí)現(xiàn)了吧SD卡上面的MP3文件或者wma文件通過文件系統(tǒng)提供的函數(shù)接口找出來,發(fā)送到數(shù)據(jù)流設(shè)備上,也就是解碼芯片上,解碼流程我們不需要知道,這是芯片內(nèi)部集成的,無需人工參與。輸出到音頻輸出設(shè)備就行了。

說到這個(gè)里,我們的MP3就可以運(yùn)行了——把程序下到單片機(jī)上面,上電,應(yīng)用程序就開啟了!聽歌吧~~~

補(bǔ)充:

這里沒有使用到操作系統(tǒng),不能實(shí)現(xiàn)多進(jìn)程同時(shí)進(jìn)行工作,每次只能實(shí)現(xiàn)一個(gè)硬件工作。如果加入操作系統(tǒng),我們可以看到的效果就會(huì)是MP3一邊顯示歌詞,溫度、時(shí)間,一邊放歌曲,操作系統(tǒng)是個(gè)很好玩的東西,有興趣的可以移植uCOS II,這個(gè)比較小,AVRX也可以,在做這些之前,花點(diǎn)時(shí)間去了解軟件層面上的各個(gè)層之間的調(diào)度關(guān)系,少走彎路。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,673評論 9 468
  • mark:因?yàn)樽罱恢闭{(diào)試(維護(hù))客戶的EFM32,和其他系列的Atmel芯片。對atmel不熟悉,做點(diǎn)功課。 1...
    Berry521閱讀 693評論 0 2
  • > > > < < < 經(jīng)常聽人感慨羅丹的那句名言:生活中不是缺少美,而是缺少發(fā)現(xiàn)美的眼睛。我也在此之列,可真正...
    默默huangjuan閱讀 584評論 2 4
  • 寫作的人難免會(huì)遇到兩件事刺激寫作心情,一是被罵,二是被打擊。我會(huì)寫作文以來,被罵和被打擊的次數(shù)之多,難以計(jì)數(shù),但受...
    一默如雷閱讀 311評論 0 1
  • 如果不出意外的話三年以后你應(yīng)該研二了,寫這些是為了證明我自己是可以活成我想要的樣子。 三年三個(gè)大目標(biāo) ...
    凡人橘子閱讀 399評論 0 0

友情鏈接更多精彩內(nèi)容