本次單片機(jī)課程設(shè)計(jì)以失敗告終。本次單片機(jī)的課程設(shè)計(jì)的日程安排如下。
星期二:系統(tǒng)需求分析,系統(tǒng)的總體設(shè)計(jì),硬件設(shè)計(jì)。
星期三:完成系統(tǒng)的軟件設(shè)計(jì)。包括,各部分的流程圖。類存分配,程序算法。編碼
星期四:編碼。
星期五:調(diào)試。
失敗的總結(jié):程序的總體設(shè)計(jì)上有點(diǎn)小問題。說實(shí)話,自己還是不太熟悉從單片機(jī)的角度去看程序。本次總結(jié)的原因也是為了培養(yǎng)從嵌入式系統(tǒng)的角度去設(shè)計(jì)程序。
1,在設(shè)計(jì)階段,并沒有做詳細(xì)的驗(yàn)證,導(dǎo)致程序的總體設(shè)計(jì),有效的缺陷。
2,采用中斷控制程序的模式轉(zhuǎn)換,應(yīng)為中斷存在RETI指令返回。這樣需要修改堆棧,達(dá)到程序的轉(zhuǎn)換,這要求對中斷程序的壓棧,有詳細(xì)的了解。對中斷程序中的寄存器需要設(shè)計(jì)與規(guī)劃,而這一部分,在設(shè)計(jì)階段并沒有考慮到,這導(dǎo)致程序中存在很多隱藏的的bug。
3,沒有避免中斷程序簡單設(shè)計(jì)的原則,而從性能方面考慮實(shí)現(xiàn)。過分追求所謂的完美,所謂的完美并不是完美,而是心中的感覺。系統(tǒng)設(shè)計(jì)階段的首次感覺很重要,他往往決定程序的發(fā)展走向。也是這中原因,導(dǎo)致總體系統(tǒng)設(shè)計(jì)簡單,而實(shí)現(xiàn)難度大。需要用到不常用的技術(shù)。尊重常用的設(shè)計(jì)方式,很重要。
4,也是最重要的,在流程圖到程序的具體映射上沒有規(guī)劃好。個(gè)人覺得從數(shù)據(jù)流程到代碼的映射上應(yīng)該還要經(jīng)過一層抽象。從單片機(jī)的角度去考慮。
5,在軟件設(shè)計(jì)完成后應(yīng)該分析設(shè)計(jì),模擬設(shè)計(jì)。
結(jié)論:
1,尊重成熟的設(shè)計(jì)方式。
2,系統(tǒng)設(shè)計(jì)后應(yīng)該做較為詳細(xì)的模擬。
3,在代碼的映射中要經(jīng)過一層抽象,從單片機(jī)的角度思考問題,規(guī)劃工作區(qū),寄存器。分析每一層中的特性,做詳細(xì)設(shè)計(jì)。比如說,對別人的子程序的調(diào)用處理的特性。處理入口,處理出口恢復(fù)。如果大規(guī)模的調(diào)用,可以設(shè)置專門的工作區(qū)來保護(hù)。
4,面向?qū)ο蟮某绦蛟O(shè)計(jì),面向過程的設(shè)計(jì)方式,和面向硬件的設(shè)計(jì)有所不同。面向?qū)ο笾匾氖菍ο到y(tǒng)總體功能的抽象,面向過程重要的是把握系統(tǒng)的具體過程。面向硬件要在面向過程后,對具體硬件需要一步對資源的抽象,然后再到具體實(shí)現(xiàn)。
5,抽象離不開時(shí)序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|