第一篇:軟件開發(fā)期末總結(jié)
MTTF:平均無故障時(shí)間;MTBF:平均故障間隔時(shí)間
1軟件開發(fā)的本質(zhì):高層概念到低層概念的映射。2.軟件的本質(zhì)特征:構(gòu)造性,演化性
3面向?qū)ο蟮乃膫€(gè)原則:抽象,繼承,多態(tài),封裝。4抽象概念的理解:對抽象事物的理解;歸納概括;總結(jié)事物共同點(diǎn);進(jìn)行邏輯思維和推理 java最大特點(diǎn):簡單,面向?qū)ο?,可移植,最大限度利用網(wǎng)絡(luò) java與C++區(qū)別:全局變量;goto語句;指針;內(nèi)存管理;類型轉(zhuǎn)換;頭文件
7軟件危機(jī): 軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。不僅只軟件不能運(yùn)行,幾乎所有的軟件都存在這些問題,所包含:如何開發(fā)軟件;如何維護(hù)
軟件過程 一系列任務(wù)步驟和框架
8軟件工程: 是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。
9中間件 定義:是位于平臺(硬件和操作系統(tǒng))和應(yīng)用之間的通用服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。目的:提出中間件的概念是為解決分布異構(gòu)問題。分類:基礎(chǔ)中間件;業(yè)務(wù)中間件;領(lǐng)域中間件。構(gòu)件:是系統(tǒng)中實(shí)際存在的可更換部分,它實(shí)現(xiàn)特定的功能,符合一套接口標(biāo)準(zhǔn)并實(shí)現(xiàn)一組接口 組件:組件技術(shù)就是利用某種編程手段,將一些人們所關(guān)心的,但又不便于讓最終用戶去直接操作的細(xì)節(jié)進(jìn)行了封裝,同時(shí)對各種業(yè)務(wù)邏輯規(guī)則進(jìn)行了實(shí)現(xiàn),用于處理用戶的內(nèi)部操作細(xì)節(jié),甚至于將安全機(jī)制和事物機(jī)制體現(xiàn)的淋漓盡致。而這個(gè)封裝體就常常的被我們稱作組件。12 軟件生產(chǎn)線:是共享同樣的體系結(jié)構(gòu)和實(shí)現(xiàn)平臺的軟件系統(tǒng)的集合,它是具有公共的系統(tǒng)需求集的軟件系統(tǒng)。這些需求是針對一組共享公共的設(shè)計(jì)和標(biāo)準(zhǔn)(或構(gòu)件)的產(chǎn)品族,或者是一類特定的行為或任務(wù)。
13操作系統(tǒng)發(fā)展趨勢:操作系統(tǒng)內(nèi)核將呈現(xiàn)多平臺統(tǒng)一的趨勢
14軟件開發(fā)趨勢
開源:兩個(gè)作用,社區(qū)和標(biāo)準(zhǔn)的建立。SOA:面向服務(wù)的體系結(jié)構(gòu);IT治理:公司治理的一部分。
15軟件開發(fā)技術(shù)趨勢(1)下一代Web開發(fā);(2)企
業(yè)應(yīng)用2.0(SOA).(3)系統(tǒng)開發(fā).(4)開發(fā)工具和語言.(5)項(xiàng)目管理及安全 不同的軟件開發(fā)方法(1)結(jié)構(gòu)化開發(fā)方法(2)面
向?qū)ο箝_發(fā)方法(3)統(tǒng)一軟件開發(fā)過程(4)敏捷軟件開發(fā).軟件的體系結(jié)構(gòu):一個(gè)程序或系統(tǒng)各構(gòu)件的結(jié)
構(gòu),他們之間的相互關(guān)系及進(jìn)行設(shè)計(jì)的原則和指導(dǎo)方針;本質(zhì):對復(fù)雜事物的抽象; 一定時(shí)間內(nèi)保持穩(wěn)定 三要素:構(gòu)件的層次結(jié)構(gòu);構(gòu)件之間交互方式;數(shù)據(jù)結(jié)構(gòu)
組成元素從靜態(tài)模式轉(zhuǎn)向動(dòng)態(tài)模式,組件模塊有被動(dòng)調(diào)用轉(zhuǎn)向主動(dòng)調(diào)用以適應(yīng)系統(tǒng)環(huán)境 軟件架構(gòu)技術(shù):根據(jù)項(xiàng)目情況分析系統(tǒng)行為,設(shè)計(jì)系統(tǒng)組件,給出構(gòu)架表示方式,描述構(gòu)架的各個(gè)方面,最后對系統(tǒng)構(gòu)架進(jìn)行精化??蚣鼙燃軜?gòu)更加具體 數(shù)據(jù)庫設(shè)計(jì) 方法:(1)屬性主導(dǎo)設(shè)計(jì)(2)實(shí)體主
導(dǎo)設(shè)計(jì); 遵循原則:(1)信息隱藏(2)適當(dāng)冗余(3)慎用外鍵 數(shù)據(jù)一致性:域完整性,實(shí)體完整性,引用完整性,數(shù)據(jù)有效性 插件 定義:系統(tǒng)運(yùn)行時(shí)的功能單元,是一種遵
循一定規(guī)范的應(yīng)用程序結(jié)構(gòu)編寫出來的程序。呈現(xiàn)方式:運(yùn)行時(shí)根據(jù)外部配置文件來定 基本功能:插件注冊,管理和調(diào)用 軟件質(zhì)量定義 明確聲明的功能和性能需求,明
確文檔化過得開發(fā)標(biāo)準(zhǔn),以及專業(yè)人員開發(fā)的軟件應(yīng)具有的所有隱含特征 軟件需求是進(jìn)行質(zhì)量度量的基礎(chǔ),軟件質(zhì)量特性反應(yīng)了軟件的本質(zhì)。影響軟件質(zhì)量的4個(gè)方面:開發(fā)技術(shù);人員素
質(zhì);成本時(shí)間,進(jìn)度;過程質(zhì)量 軟件項(xiàng)目管理 為了使軟件項(xiàng)目能夠按照預(yù)定的成本,進(jìn)度,質(zhì)量順利完成,對成本,人員,進(jìn)度,質(zhì)量,風(fēng)險(xiǎn)等進(jìn)行分析和管理的活動(dòng)。24 軟件配置: 計(jì)算機(jī)程序(源代碼和可執(zhí)行程序);
描述計(jì)算機(jī)程序的文檔(針對開發(fā)技術(shù)者和用戶); 數(shù)據(jù)(包含程序內(nèi)部和外部)軟件維護(hù)和軟件配置管理的區(qū)別: 維護(hù)是發(fā)生
在軟件以交付給客戶,并且投資運(yùn)行后的一系列軟件工程活動(dòng);軟件配置管理則是當(dāng)軟件項(xiàng)目開始,并且僅僅當(dāng)軟件退出運(yùn)行后在終止的一組跟蹤和控制活動(dòng) 軟件過程成熟度:指一個(gè)特定的軟件過程被顯示定義、管理、度量、和能行的程度 JavaBean開發(fā)的三個(gè)階段:構(gòu)造階段,內(nèi)造階段,執(zhí)行階段; 包含的基本元素:屬性,方法,事件 一個(gè)Java對象具有以下特征就可以是JavaBeans 定制、持久性、通信、反省 簡單的時(shí)說(1)作為一個(gè)類必須被聲明為public(2)必須要有g(shù)et/set方法(3)有構(gòu)造函數(shù)但不能有參數(shù) 29 引發(fā)事件 當(dāng)javaBean觸發(fā)某個(gè)事件是,javabean講點(diǎn)用該事件的監(jiān)聽對象的響應(yīng)函數(shù) 30 監(jiān)聽事件 javabean被添加到某個(gè)類改事件的監(jiān)聽隊(duì)列中,并且具有該事件的響應(yīng)函數(shù),被監(jiān)聽類的此事件被激發(fā)時(shí)被監(jiān)聽類就會(huì)調(diào)用javaBean的響應(yīng)函數(shù)
JDBC工作的四個(gè)主要組件 java應(yīng)用程序,JDBC驅(qū)動(dòng)器管理器、驅(qū)動(dòng)器,數(shù)據(jù)源
數(shù)據(jù)源的種類 用戶DNS、系統(tǒng)DNS 文件DNS 33 java多線程的生命周期 新建狀態(tài);就緒狀態(tài)或可運(yùn)行狀態(tài);運(yùn)行狀態(tài)、阻塞狀態(tài)、消亡狀態(tài) 33 J2EE規(guī)定的web曾包括 jsp頁面、基于web的java applet、以及用于動(dòng)態(tài)生成的html頁面的Servlet構(gòu)成。
作業(yè) 1簡述Servlet設(shè)計(jì)中涉及的類和接口
(1)Servlet interface: 所有的servlet直接或間接實(shí)現(xiàn)這個(gè)interface, 它提供安排servlet與客戶端聯(lián)系的方法.最關(guān)鍵的方法是Service,負(fù)責(zé)處理ServletRequest對象和ServletResponse對象。2)HttpServlet class: 實(shí)現(xiàn)Servlet interface,重寫了Service方法以區(qū)分請求(常見的HTTP請求類型是GET和POST),并調(diào)用相應(yīng)的方法來處理(doGet、doPost)。
servlet接收來自客戶端的調(diào)用請求, 它接收兩個(gè)對象: 一個(gè)是ServletRequest,另外一個(gè)是ServletResponse。
3)HttpServletRequest interface: 概括從客戶端到服務(wù)器之間的聯(lián)系,實(shí)現(xiàn)該接口的對象包含了客戶端的請求信息。
4)HttpServletResponse interface: 概括從Servlet返回客戶端的聯(lián)系,實(shí)現(xiàn)該接口的對象提供了方法,使Servlet向客戶端發(fā)回響應(yīng)。
1.現(xiàn)有數(shù)據(jù)庫db位于名為lz的MS SQL Server
服務(wù)器上,用戶名為sa,密碼為空,請編寫數(shù)據(jù)庫連接dbConnect類,實(shí)現(xiàn)數(shù)據(jù)庫的連接、返回連接對象及重載有關(guān)的close()方法。public class dbConnect {
public dbConnect(){
try{
Class.forName(“com.microsoft.jdbc.sqls
erver.SQLServerDriver”);
}
catch(ClassNotFoundException ee){
}
}
public static Connection getconn()throws SQLException{
String url
=
“jdbc:microsoft:sqlserver://lz:1433;DatabaseName=
db”;
String username= “sa”;
String password= "";
return
DriverManager.getConnection(url,username,password);
}
public static void close(ResultSet rs){
try{
rs.close();
}
catch(Exception ex){
}
}
public static void close(Statement stmt){
try{
stmt.close();
}
catch(Exception ex){
}
}
public static void close(Connection conn){
try{
conn.close();
}
catch(Exception ex){
}
}
private static dbConnect dbconn = new dbConnect();
}
第二篇:軟件開發(fā)心得總結(jié)
有感于網(wǎng)盤開發(fā)過程
有感于網(wǎng)盤開發(fā)過程..............................................................................................................................1
一、軟件開發(fā)個(gè)人體會(huì):.................................................................................................................2
二、做軟件開發(fā)我覺得要明白:.....................................................................................................2
三、在開發(fā)中遇到問題應(yīng)該怎么去解決?......................................................................................2
四、怎么樣才能提高自身的能力?..................................................................................................2
五、怎么樣才能做好軟件開發(fā)?.....................................................................................................2
六、文檔的重要性.............................................................................................................................3
七、我的收獲.....................................................................................................................................3
八、網(wǎng)盤項(xiàng)目開發(fā)的最大體會(huì).........................................................................................................4
九、軟件測試(單體測試和連接測試)..........................................................................................4
常熟理工學(xué)院SIG小組
3/28/2013
一、軟件開發(fā)個(gè)人體會(huì):
1.軟件領(lǐng)域中的知識在于積累。
2.做軟件開發(fā),就類似算數(shù)學(xué)題和世界杯足球賽一樣:重在結(jié)果,而不在乎過程。3.軟件服務(wù)于人類,軟件是在解決一些生活中的問題和錯(cuò)誤,問題決定解決方案。
二、做軟件開發(fā)我覺得要明白:
1.職業(yè)的樂趣:
(A)用自己的智慧去創(chuàng)建新事物的快樂(B)開發(fā)對別人有用的東西(C)不斷學(xué)習(xí)來充實(shí)自己 2.職業(yè)的苦惱:(A)總是追求完美
(B)所有要實(shí)現(xiàn)的功能由他人而定
(C)概念設(shè)計(jì)計(jì)是有趣的,但找Bug總是很苦惱的
三、在開發(fā)中遇到問題應(yīng)該怎么去解決?
1.2.3.4.不明白就多問,不要自已一直去琢磨。
一個(gè)問題如果30分鐘還沒有解決就應(yīng)該考慮是不是問問別人。一個(gè)問題在沒有用過3種以上的方法解決過就不要去問別人。解決問題思路是關(guān)鍵:
相信問題總歸有解決的辦法,就算連技術(shù)上都沒法實(shí)現(xiàn)的問題,相信通過良好的溝通終究也會(huì)有解決的方法。
5.解決問題的前提是:理解別人的意思,理解別人的需求,多溝通,及時(shí)給客戶反饋信息。
四、怎么樣才能提高自身的能力?
1.程序員怎么樣進(jìn)步最快? - 理論結(jié)合實(shí)踐
2.不要怕出錯(cuò),不怕遇到錯(cuò)誤,有錯(cuò)誤就有挑戰(zhàn),這樣才可以進(jìn)步,但不要讓同一個(gè)石頭把你絆倒2次。
五、怎么樣才能做好軟件開發(fā)?
1.首先要明白解決的問題是什么,理解問題,其次再?zèng)Q定怎么解決這個(gè)問題 2.碰到很復(fù)雜的問題,我們就簡單想,把問題簡單化,細(xì)化到能夠?qū)崿F(xiàn)為止
常熟理工學(xué)院SIG小組
3/28/2013
3.出了問題,我們要先分析問題,然后知道引起問題的原因,最后并想出問題的解決辦法 4.我們應(yīng)該從2個(gè)方面去把握一個(gè)項(xiàng)目:從業(yè)務(wù)角度和項(xiàng)目的關(guān)鍵問題上去把握一個(gè)項(xiàng)目
(A)從不同的系統(tǒng)場景
(B)從不同的用戶角色(充當(dāng)什么角色)(C)從不同的系統(tǒng)使用角度(擁有那些權(quán)限)
5.其實(shí)我覺得開發(fā)人員說實(shí)在應(yīng)該要比使用系統(tǒng)的人更了解系統(tǒng)需求,只有真正徹底的了解了項(xiàng)目的業(yè)務(wù)需求,我們才能做真的做好這個(gè)項(xiàng)目
六、文檔的重要性
記得我當(dāng)初剛開發(fā)項(xiàng)目的時(shí)候都是寫個(gè)大致的需求說明書,做一個(gè)E-R圖,畫幾個(gè)大致的數(shù)據(jù)流程圖,然后建立數(shù)據(jù)字典和表結(jié)構(gòu)關(guān)系。再接著搭建一個(gè)開發(fā)環(huán)境,配置幾臺服務(wù)器,劃分一下模塊,分工,我們就可以Coding了,一直到項(xiàng)目結(jié)束了,也沒有完整的設(shè)計(jì)文檔,更沒有完整的測試文檔,雖然這樣的確是很快的完成了Coding工作,感覺上好像節(jié)省了好多成本和開發(fā)時(shí)間,但后期的維護(hù)和Bug 就是經(jīng)常出現(xiàn)的事。
小項(xiàng)目沒有文檔關(guān)系不大,但如果遇到一個(gè)大項(xiàng)目的時(shí)候,那這樣的開發(fā)方式就很有問題很危險(xiǎn)的。
大項(xiàng)目沒有文檔: 首先維護(hù)就很麻煩,也很亂,寫的代碼,過幾天都不知道它是完成什么功能的了,其次系統(tǒng)的穩(wěn)定性和可靠性也讓人懷疑,擴(kuò)展性就不用說了。
七、我的收獲
A.程序員大多都不喜歡寫文檔,我們以前也是特討厭,記得以前都是系統(tǒng)開發(fā)完了,為了應(yīng)付項(xiàng)目驗(yàn)收,就匆匆忙忙的一組人在那里補(bǔ)文檔。在我們的思想里,所謂的文檔就是一些廢話,一句話硬是用十句話來代替的無聊透頂。B.代碼風(fēng)格要規(guī)范
以前做項(xiàng)目,我們都是不怎么去注意代碼風(fēng)格和寫代碼的規(guī)范,都是稍微想一下就直接開始寫代碼了。注釋也很少用,總感覺我們自己寫的代碼,我們怎么會(huì)不知道它做了些什么事呢 ?總覺得我們自己寫的代碼我們怎么會(huì)不知道它是用來做什么的呢。一直都不相信這是個(gè)事實(shí),但事實(shí)上,項(xiàng)目驗(yàn)收后,系統(tǒng)剛開始使用的人少,也就不會(huì)出現(xiàn)潛在的錯(cuò)誤,隨著時(shí)間的增加,久而久之,當(dāng)大量用戶并發(fā)訪問的時(shí)候,系統(tǒng)的Bug 就暴漏出來了,那時(shí)你再用熟悉的Eclipse打開整個(gè)項(xiàng)目的源碼時(shí),再去看自己寫的代碼的時(shí)候,真的發(fā)現(xiàn),我們定義的這個(gè)變量名是什么意思啊 ? 我們的這個(gè)Flag 是用來判斷什么的啊 ?我們的if()中條件不知道是判斷什么? Function()也忘記是什么功能了? 想想好可怕啊。難道真的都忘記了嗎 ?回答是肯定的: 真的忘了。C.心得體會(huì): 通過做該網(wǎng)盤項(xiàng)目,在這2年的鍛煉中,我們才真的體會(huì)到,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),一個(gè)好的程序是先寫好設(shè)計(jì)文檔再進(jìn)行編程的,在設(shè)計(jì)文檔的指導(dǎo)下,才能寫出安全的代碼。如果你不寫文檔,一開始就寫程序,這樣你就不會(huì)按已設(shè)計(jì)好的路線走,而是想到哪寫到哪。小功能還好說,要是大功能,就容易混亂.常熟理工學(xué)院SIG小組
3/28/2013
剛開始我們還很不習(xí)慣這一系列的編程風(fēng)格,很多的規(guī)范,尤其是命名,方法和注釋,都有這著很多限制,讓我們覺得真羅唆,寫個(gè)程序完成功能不就可以了嗎,明明1小時(shí)做完的事情非得讓人用3、4個(gè)小時(shí)去做,我們現(xiàn)在真的明白這樣做的好處了,我們已經(jīng)習(xí)慣這樣的編程風(fēng)格了,這也養(yǎng)成了我們的一個(gè)編程習(xí)慣了,深有體會(huì)啊。
最忙的時(shí)候就是我們成長和收獲最多的時(shí)候。
八、網(wǎng)盤項(xiàng)目開發(fā)的最大體會(huì)
我們覺得項(xiàng)目開發(fā)的開始時(shí)候,應(yīng)該由項(xiàng)目負(fù)責(zé)人很好的對項(xiàng)目是什么項(xiàng)目,具體大概做什么事情,是誰提出來的,目的是解決什么問題,以及里面用到的很多專有名詞做個(gè)細(xì)致的說明,而不是從一開始就分幾本式樣書,給個(gè)靜態(tài)Html 的Demo看看,然后搭建好開發(fā)環(huán)境就按照式樣設(shè)計(jì)書來開發(fā)。
九、軟件測試(單體測試和連接測試)
我們首先認(rèn)為,編寫程序的時(shí)候不要想出了問題再解決,而是要想如何不會(huì)出現(xiàn)問題,要根據(jù)經(jīng)驗(yàn)來預(yù)測可能出現(xiàn)的問題,然后避免出現(xiàn)。
測試,說的直接點(diǎn)就是給軟件找錯(cuò)誤。
很多人認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測試的唯一目的,查找不出錯(cuò)誤的測試就是沒有價(jià)值的測試,實(shí)際上我們不這么認(rèn)為。
我們覺得對開發(fā)人員來說,我們要把測試出來的Bug都應(yīng)該做個(gè)分析,知道錯(cuò)的原因之后,我們就應(yīng)該在下個(gè)項(xiàng)目中防止類似的錯(cuò)誤發(fā)生,而真正來提高我們開發(fā)的效率。
常熟理工學(xué)院SIG小組
3/28/2013
第三篇:648軟件開發(fā)總結(jié)
內(nèi)部
648軟件開發(fā)介紹
一 DM648介紹
DM648屬于TI達(dá)芬奇系列,采用單核C64X+定點(diǎn)CPU,支持最高頻率1.1GHz,有兩個(gè)乘法器支持四個(gè)16bits*16bits(結(jié)果32bits)單個(gè)clock cycle或者八個(gè)8bits*8bits(結(jié)果16bits)單個(gè)clock cycle。還有6個(gè)ALU。
648的片上存儲(chǔ)器有L1P(32KB),L1D(32KB),L2(512KB)648集成了五個(gè)視頻口VPORT,省去FPGA做FIFO,可以節(jié)省產(chǎn)品成本。
648集成了豐富的外設(shè),包括edma(64個(gè)通道),SPI,I2C,UART,EMIF,DDR2,Ethernet,gpio(32個(gè)),McASP,PCI。
二 搭建軟件開發(fā)環(huán)境 2.1操作系統(tǒng)環(huán)境
Win7 32位或win-XP環(huán)境 2.2軟件安裝和配置
需準(zhǔn)備的安裝軟件 Ccs3.3
bios3.08 648dvsdk perl Bios是TI針對DSP開發(fā)的實(shí)時(shí)嵌入式操作系統(tǒng)。
Dvsdk是基于BIOS系統(tǒng)的視頻開發(fā)包。Perl是腳本工具,燒寫程序時(shí)將out文件轉(zhuǎn)換為ais文件。
建議所有軟件安裝到默認(rèn)目錄下,安裝完后
配置操作系統(tǒng)環(huán)境變量
修改BIOS_INSTALL_DIR變量為 C:/CCStudio_v3.3/bios_5_31_08 配置CCS的組件管理器,如圖2-1
點(diǎn)“開始->所有程序->TI->component manager,修改Target Content(DSP/BIOS)->TMS320C64XX為當(dāng)前版本的DSP/BIOS
圖 2-1 2.3 DVSDK目錄文件介紹
默認(rèn)安裝到C:dvsdk_1_11_00_00_DM648目錄下,其中
edma3_lld_1_05_00是edma3驅(qū)動(dòng)包
examples 包含很多基于BIOS的示例應(yīng)用工程,我們參考video_preview示例程序作為框架,添加圖像處理算法和通訊驅(qū)動(dòng)。flashutil 包含flash燒寫工程norwriter,bootloader程序ubl,ais文件生成腳本
ndk_1_92_00_22_eval 網(wǎng)絡(luò)開發(fā)軟件包 pspdrivers_1_10_00 包含了TI提供的很多基于BIOS系統(tǒng)的驅(qū)動(dòng),我們參考其中VPORT的驅(qū)動(dòng),將按幀采集修改為按場采集的功能 xdc_2_95_02 xdc工具安裝路徑,xdc是ccs的子工具,是一個(gè)javascript編譯工具,用于編譯cfg文件,cfg文件在后面講。如圖2-2安裝XDC后,會(huì)在工程的編譯選項(xiàng)界面增加XDC選項(xiàng)。
圖2-2 2.4仿真器
TDS560USB PLUS
在CCS setup界面選擇TDS560USB PLUS platform和C64x+ family的DM648。如圖2-3.圖2-3 三 VPORT+EDMA工作原理 3.1 VPORT介紹
DM648集成了五個(gè)VPORT口,用于視頻輸入輸出,每個(gè)VPORT可以配置為capture或display模式。Capture模式又分為雙通道8bit BT656,單通道16 bit Y/C模式。Display模式又分為單通道8bit BT656, 單通道16 bit Y/C模式。
目前,capture和display模式都采用8bit BT656子模式,PAL視頻編碼芯片和解碼芯片也設(shè)置為BT656模式。3.2 BT656標(biāo)準(zhǔn)簡介
BT656標(biāo)準(zhǔn)將4:2:2格式Y(jié)CbCr數(shù)據(jù)統(tǒng)一封裝在一個(gè)數(shù)據(jù)流中,按照CbYCrY順序排列,Y的數(shù)據(jù)數(shù)量是Cb,Cr的2倍。
BT656數(shù)據(jù)流中,ffh和00h保留用于時(shí)序標(biāo)示。在視頻數(shù)據(jù)每行的開頭和結(jié)尾有標(biāo)示SAV(start of video),EAV(end of video)。SAV和EAV的格式是ffh,00h,00h,XYh,前三個(gè)字節(jié)固定,第四個(gè)字節(jié)包含場標(biāo)示,場消隱狀態(tài)和行消隱狀態(tài),如圖3-1。
圖3-1 3.3 VPORT FIFO 每個(gè)VPORT有一個(gè)FIFO存儲(chǔ)進(jìn)入的數(shù)據(jù)或者從FIFO輸出。
BT656 capture模式中,F(xiàn)IFO分成A、B兩個(gè)通道,如圖3-2,A通道接收VDIN[9-2]管腳的數(shù)據(jù),B通道接收VDIN[19-12]管腳的數(shù)據(jù)。每個(gè)通道又分Y,Cb,Cr三個(gè)緩存,每個(gè)緩存區(qū)有獨(dú)立的讀寄存器。
圖3-2 BT656 display模式中,如圖3-3,只有一路輸出,F(xiàn)IFO分為Y,Cb,Cr三個(gè)緩存區(qū),每個(gè)緩存區(qū)有獨(dú)立的寫寄存器。
圖3-3 VPORT和EDMA配合在FIFO和外部或片上存儲(chǔ)器之間移數(shù)。我們可以編程FIFO的閾值寄存器,當(dāng)FIFO達(dá)到設(shè)置滿度(fullness)(對于捕獲模式)或者低于設(shè)置滿度(對于顯示模式)時(shí),生成EDMA事件,觸發(fā)相應(yīng)EDMA通道移數(shù)。
每個(gè)VPORT對應(yīng)6個(gè)EDMA事件,分別是
VPxYEVTA,VPxCbEVTA,VPxCrEVTA,VPxYEVTB,VPxCbEVTB,VPxCrEVTB 例如,我們用VP0口的A通道做為BT656視頻輸入,VP1口做為BT656視頻輸出。
設(shè)置VP0口A通道Y,Cb,Cr三個(gè)緩存區(qū)的閾值為720,360,360。當(dāng)PAL圖像數(shù)據(jù)傳輸完一行后,三個(gè)緩存區(qū)都達(dá)到閾值,生成VP0YEVTA,VP0CbEVTA,VP0CrEVTA三個(gè)事件,觸發(fā)對應(yīng)的三個(gè)EDMA通道將三個(gè)FIFO緩存區(qū)的一行圖像數(shù)據(jù)移入DDR2緩存區(qū)。
設(shè)置VP1口Y,Cb,Cr三個(gè)緩存區(qū)的閾值為720,360,360。當(dāng)三個(gè)緩存區(qū)數(shù)據(jù)數(shù)量低于閾值時(shí),生成VP1YEVTA,VP1CbEVTA,VP1CrEVTA三個(gè)事件,觸發(fā)對應(yīng)的三個(gè)EDMA通道將DDR2緩存區(qū)的一行圖像數(shù)據(jù)移入三個(gè)FIFO緩存區(qū)。
四 應(yīng)用程序及驅(qū)動(dòng)解析
4.1兩個(gè)重要文件
基于BIOS/DSP系統(tǒng)開發(fā)軟件,有兩個(gè)重要工程文件tcf和cfg文件,如圖4-1中紅圈1和2。
圖4-1
tcf文件包含了DSP/BIOS的配置信息。紅圈3的global settings設(shè)置DSP工作頻率,L1,L2 cache size,大小端,L2 cache 128kB。Memory section設(shè)置程序和數(shù)據(jù)各部分在存儲(chǔ)器中的段地址。
紅圈4 HWI(hardware interrupt)處,添加硬件中斷處理函數(shù)
紅圈5 添加BIOS/DSP的線程
cfg文件包含了庫鏈接路徑信息,使用javascript語言,如圖紅圈6。使用XDC工具編譯cfg文件,生成庫鏈接信息,供C編譯器鏈接庫時(shí)使用。cfg文件常鏈接的庫有vport驅(qū)動(dòng),edma驅(qū)動(dòng)程序。
4.2圖像緩存分配和管理
Edma在VPORT和SDRAM之間搬數(shù),CPU要訪問SDRAM最新的圖像數(shù)據(jù),程序采用多個(gè)圖像緩存區(qū)循環(huán)的方式將這兩個(gè)過程并行化。
應(yīng)用層創(chuàng)建捕獲或顯示通道時(shí),調(diào)用驅(qū)動(dòng)層程序在DDR2分配存放圖像數(shù)據(jù)的緩存區(qū)。分配之前,驅(qū)動(dòng)根據(jù)通道的配置參數(shù)計(jì)算每個(gè)緩存區(qū)的大小。
例如,vp0按場采集,vp1按幀顯示。Vp0的每個(gè)緩存區(qū)的大小是720*288*2,vp1的每個(gè)緩存區(qū)的大小是720*576*2。
應(yīng)用程序使用FVID_dequeue()出隊(duì)函數(shù)和FVID_queue()入隊(duì)函數(shù)或FVID_exchange()交換函數(shù),在應(yīng)用程序和驅(qū)動(dòng)程序之間交換圖像緩存區(qū)。
捕獲和顯示驅(qū)動(dòng)的緩存管理方法不同,如下面兩圖4-2和4-3:
圖中藍(lán)塊表示應(yīng)用程序的圖像緩存區(qū),白塊表示驅(qū)動(dòng)程序的圖像緩存區(qū)。
圖像捕獲緩存區(qū),初始時(shí)所有的緩存區(qū)都在捕獲隊(duì)列里,捕獲驅(qū)動(dòng)程序以循環(huán)的方式填充每個(gè)緩存區(qū)。
當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時(shí),將放有最新圖像數(shù)據(jù)的緩存區(qū)出隊(duì)并返回給應(yīng)用程序,驅(qū)動(dòng)在余下的隊(duì)列里循環(huán)填充,如(a)到(b)和(b)到(e)。
當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時(shí),將一個(gè)空的緩存區(qū)交給驅(qū)動(dòng)程序并加入隊(duì)列,如圖(b)到(a)和(e)到(b)。
當(dāng)應(yīng)用程序調(diào)用FVID_exchange()函數(shù)時(shí),應(yīng)用程序交給驅(qū)動(dòng)一個(gè)空的緩存區(qū),驅(qū)動(dòng)交給應(yīng)用程序放有最新圖像的緩存區(qū),相當(dāng)于同時(shí)調(diào)用FVID_dequeue()和FVID_queue()兩個(gè)函數(shù),如圖(b)到(c)和(c)到(d)。
圖4-2
圖像顯示緩存區(qū),初始時(shí)只有一個(gè)緩沖區(qū)用于顯示,其它緩存區(qū)等待出隊(duì),如圖(a),黃塊表示顯示驅(qū)動(dòng)隊(duì)列里準(zhǔn)備出隊(duì)的緩存區(qū)。顯示驅(qū)動(dòng)程序重復(fù)顯示一個(gè)緩存區(qū)的圖像。
當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時(shí),從驅(qū)動(dòng)獲得一個(gè)緩存區(qū),應(yīng)用程序向它填充顯示數(shù)據(jù),同時(shí)驅(qū)動(dòng)仍然顯示之前的緩存區(qū),如圖(b)和(d)。當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時(shí),應(yīng)用程序給驅(qū)動(dòng)程序一個(gè)準(zhǔn)備顯示的緩存區(qū),同時(shí)驅(qū)動(dòng)將它設(shè)置為當(dāng)前的緩存區(qū),如圖(b)到(c)到(d)。
當(dāng)應(yīng)用程序調(diào)用FVID_exchange()函數(shù)時(shí),應(yīng)用程序給驅(qū)動(dòng)一個(gè)準(zhǔn)備顯示的緩存區(qū),從驅(qū)動(dòng)得到一個(gè)空的緩存區(qū),相當(dāng)于同時(shí)調(diào)用FVID_dequeue()和FVID_queue()函數(shù),如圖(d)到(e)。
圖4-3
4.3 應(yīng)用程序框架介紹
基于dvsdk_install_dir/example目錄下的video_preview示例程序,做為項(xiàng)目軟件框架
應(yīng)用程序主要包含三部分:
Main函數(shù)
Video_preview線程
自添加的中斷處理函數(shù)
許多實(shí)時(shí)DSP應(yīng)用都需要同時(shí)執(zhí)行很多不相關(guān)的功能,這些功能一般是對外部事件的響應(yīng),這些功能就加線程。
DSP/BIOS支持4種線程:
(1)硬件中斷(HWI):頻率可達(dá)200KHz(5us)(2)軟件中斷(SWI):SWI允許HWI將一些非關(guān)鍵處理在低優(yōu)先級上延遲執(zhí)行,這樣可以減少在中斷服務(wù)程序中的駐留時(shí)間。
(3)任務(wù)(TSK):任務(wù)與中斷不同點(diǎn)在于,任務(wù)在執(zhí)行過程中可以被掛起。
(4)后臺線程(IDL):空閑循環(huán),運(yùn)行那些沒有執(zhí)行時(shí)間限制的函數(shù)。
上電加載完操作系統(tǒng)內(nèi)核后,首先執(zhí)行main函數(shù)。
Main函數(shù)執(zhí)行完后,啟動(dòng)video_preview線程,線程生命期直到執(zhí)行結(jié)束后。此線程主要功能有圖像采集,處理,字符疊加,顯示。
Video_preview線程第一步調(diào)用FVID_create()函數(shù)為vp0口創(chuàng)建捕獲通道對象capChan,初始化vp0寄存器,為vp1口創(chuàng)建顯示通道對象disChan,初始化vp1寄存器。
第二步調(diào)用FVID_allocBuffer()為capChan和disChan分別分配三個(gè)圖像緩存區(qū),然后調(diào)用FVID_queue()將三個(gè)緩存區(qū)組成隊(duì)列,同時(shí)為capChan和disChan分配edma通道,設(shè)置edma參數(shù)表。
第三步調(diào)用FVID_control()函數(shù)使能vp0,vp1口,vp0開始捕獲,vp1開始輸出顯示。
第四步調(diào)用FVID_dequeue()從capChan和disChan的緩存隊(duì)列中各出一個(gè)緩存。
第五步 進(jìn)入while(1)循環(huán),在循環(huán)中執(zhí)行兩次FVID_exchange()。FVID_exchange(capChan,pImg1)捕獲新的一場圖像數(shù)據(jù),F(xiàn)VID_exchange(disChan,pImg)顯示新的一幀圖像。捕獲兩次,顯示一次。
FVID_exchange(capChan,pImg1)后面添加圖像處理算法和疊加字符。
4.4添加圖像處理算法
在FVID_exchange(capChan,img)函數(shù)捕獲圖像后添加圖像處理算法。為了減少CPU訪問圖像數(shù)據(jù)時(shí)間,將圖像數(shù)據(jù)和訪問頻率高的中間數(shù)組放在L2 RAM里。DM648 L2的大小512KB,其中128KB用于cache,剩余384KB可用于應(yīng)用程序存放圖像數(shù)據(jù)。
4.5 VPORT驅(qū)動(dòng)調(diào)試方法
VPORT驅(qū)動(dòng)采用BIOS的兩層驅(qū)動(dòng)模型class/mini-driver,BIOS現(xiàn)在抽象定義了三種class驅(qū)動(dòng),PIP/PIO,SIO/DIO,GIO,應(yīng)用程序通過這三類BIOS API接口與mini driver通訊,在一個(gè)應(yīng)用工程中可以同時(shí)使用這三種API 接口。
Mini層通過CSL層訪問外圍硬件的寄存器,存儲(chǔ)器,中斷資源,如圖4-6。
圖4-6 Video_preview應(yīng)用工程中使用了BIOS GIO接口API,如圖4-7是GIO和mini diver層包含的API,F(xiàn)VID函數(shù)是GIO API的宏定義,如下:
#define FVID_create(name, mode, status, optArgs, attrs)
GIO_create(name, mode, status, optArgs, attrs)#define FVID_exchange(gioChan, bufp)
GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)#define FVID_control(gioChan, cmd, args)
GIO_control(gioChan, cmd, args)
圖4-7 VPORT的mini driver層實(shí)現(xiàn)工程vport_bios_dm648_drv_lib.pjt在dvsdk_install_dir/pspdriver目錄下,將其設(shè)置為video_preview_PAL.pjt的依賴工程(Dependent Projects),如圖4-8,這樣應(yīng)用工程重新編譯之后就可以同時(shí)調(diào)試應(yīng)用工程
和mini driver層。
圖4-8 五 flash芯片燒寫程序
在燒寫程序之前需要準(zhǔn)備兩個(gè)文件ubl.ais和video_preview_PAL.ais,使用Dvsdk_install_dirflashutil目錄下的perl腳本命令create_ais.bat將ubl.out和video_preview_PAL.out生成對應(yīng)的ais文件。
Ubl(user boot loader)是DSP啟動(dòng)加載器,DSP上電后會(huì)自動(dòng)將UBL代碼從 flash加載到存儲(chǔ)器中,開始執(zhí)行UBL,ubl先初始化pll,ddr2,emif,再將video_preview_PAL工程從flash加載到存儲(chǔ)器中,然后開始執(zhí)行應(yīng)用程序。
準(zhǔn)備好ais文件后,加載運(yùn)行norwrite工程Dvsdk_install_dirflashutilDM647_8CCSDM648_NORWriter,norwriter包含四個(gè)步驟:
(1)設(shè)備初始化,pll,ddr2,emif初始化。(2)擦寫flash塊0xa000 0000-0xa002 0000,將UBL二進(jìn)制文件寫入該flash塊。
(3)擦寫flash塊0xa002 0000-0xa008 0000,將video_preview工程二進(jìn)制文件寫入該flash塊。
(4)擦寫flash塊0xa060 0000-0xa060 2000,將軸位寫入該flash塊
第四篇:計(jì)算機(jī)軟件開發(fā)技術(shù) 期末復(fù)習(xí)提綱(同濟(jì)大學(xué))
考試時(shí)間:1月6日星期日16:00~17:30共計(jì)90分鐘
卷面分?jǐn)?shù):100分
知識要點(diǎn)
一、數(shù)據(jù)結(jié)構(gòu)
1、概念部分
1)數(shù)據(jù)結(jié)構(gòu)的概念及其三要素
2)數(shù)據(jù)邏輯結(jié)構(gòu)的基本類型(即,線性結(jié)構(gòu)、樹形結(jié)構(gòu)、復(fù)雜結(jié)構(gòu)、集合),數(shù)據(jù)存儲(chǔ)
表示的基本方法(即,順序表示、鏈?zhǔn)奖硎镜龋┘捌涮攸c(diǎn)。
3)棧、隊(duì)列等線性結(jié)構(gòu)的基本概念、性質(zhì)、存儲(chǔ)方式及各自的特點(diǎn)
4)二叉樹的基本概念、性質(zhì)、遍歷以及由遍歷序列構(gòu)造出二叉樹的方法
2、程序與算法
1)快速排序(一趟)、歸并排序(一趟)算法思想及實(shí)現(xiàn)
2)二叉排序樹創(chuàng)建、查找、二分法查找算法思想及實(shí)現(xiàn)
注意:編程題不涉及期中考試考過的部分。
二、數(shù)據(jù)庫
1、了解數(shù)據(jù)庫設(shè)計(jì)的過程。
2、掌握概念模式設(shè)計(jì)方法:E-R圖(UM類圖)。
能根據(jù)數(shù)據(jù)庫需求分析,畫出E-R圖(UML類圖),并將其轉(zhuǎn)換成關(guān)系模式。
3、理解數(shù)據(jù)庫設(shè)計(jì)中關(guān)系模式規(guī)范化的必要性(即數(shù)據(jù)冗余導(dǎo)致更新異常,其根源是存在兩種不好的函數(shù)依賴),以及第一、第二、第三范式的概念及其作用。
4、掌握數(shù)據(jù)庫中常用的數(shù)據(jù)類型(char, varchar, int ,real, datetime, decimal ,money等),并
能用于數(shù)據(jù)表的字段設(shè)計(jì)。
5、掌握SQL中常用函數(shù)(聚合函數(shù)、日期函數(shù))和常用的運(yùn)算(如,比較運(yùn)算,集合包
含IN|NOT IN, 字符串匹配運(yùn)算LIKE等)。
6、理解關(guān)系的完整性約束:如,字段長度,空否,主鍵、外鍵約束,check約束。
7、掌握SQL語言中Select(查詢)、Insert(插入)、Update(更新)和Delete(刪除)語
句的語法格式。
三、C#與軟件開發(fā)
1、面向?qū)ο缶幊讨蓄惻c對象、繼承與派生等基本概念
2、C#的常用控件及其屬性
3、多層次軟件架構(gòu)的基本思想(類劃分:實(shí)體類、邊界類、控制類;軟件體系結(jié)構(gòu)分層部署:數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)訪問層、數(shù)據(jù)表示層)
4、數(shù)據(jù)庫訪問關(guān)鍵步驟、嵌入式SQL語句的構(gòu)造等
第五篇:軟件開發(fā)年終個(gè)人自我總結(jié)
20xx年是我進(jìn)入公司的第一年,也是我的工作能力得到提高和快速發(fā)展的一年,在公司領(lǐng)導(dǎo)的指導(dǎo)和同事以及其它部門的支持配合下,最后在經(jīng)過自己的努力,完成了自己所要完成的各項(xiàng)工作任務(wù),在新的一年來臨之跡,我要對過去一年的工作進(jìn)行一個(gè)全面的總結(jié),以便在今年的工作中能夠有更明確的目標(biāo),盡量克服自己現(xiàn)在所存在的不足,希望能更一步為自己所在的部門增光,做出自己的貢獻(xiàn)。下面是我對去年工作匯總。
一、總結(jié):
1.自身定位:在過去一年,是我進(jìn)公司的第一年,也是我工作的第一年,剛開始在我對工作競爭和自身都不甚了解的情況下,在領(lǐng)導(dǎo)和同事的指導(dǎo)下,我感覺自己已經(jīng)慢慢對人與人的競爭和自身定位有了深刻的了解,因?yàn)橛辛俗晕夷繕?biāo),才能感受到自己的壓力有多大!我的目標(biāo)也不只是完成目前所要做的工作而已,要向其它方面拓展學(xué)習(xí)。
2.定下心來,踏踏實(shí)實(shí):我學(xué)的是計(jì)算機(jī)專業(yè),我的工作也是計(jì)算機(jī)方面的,以前有什么優(yōu)勢,但是踏入工作崗位后才發(fā)現(xiàn),自己學(xué)的只是一個(gè)基礎(chǔ),只是有些方面或許比別人走的快一步,所以一切都要靠自己.自己要定得心下來學(xué)習(xí).成功需要耐得住寂寞,不求最快,但求最好.3.團(tuán)隊(duì)合作:以前在學(xué)?;蛟S你可以靠一個(gè)取得好成績,在工作上你必須要有一個(gè)團(tuán)隊(duì),在一個(gè)部門之中,團(tuán)隊(duì)合作精神顯得尤為重要.以前我做有些事都是一意孤行,但現(xiàn)在已經(jīng)對自己改變了,多聽聽他人意見,會(huì)犯更少錯(cuò)誤,會(huì)更長見識,所以要學(xué)會(huì)與同事之間的合作,做事才更有效。
4.工作情況:在公司一年,對MES大型系統(tǒng)有了個(gè)大概了解,對我們所要學(xué)習(xí)的MES已經(jīng)可以說差不多都掌握,條碼打印機(jī)的維修和設(shè)置掌握,A4打印機(jī)大多數(shù)情況可以維護(hù),pDA、條碼槍已掌握,電腦的系統(tǒng)重裝和維護(hù)已掌握,其它基本設(shè)置可以維護(hù),對新出來的程序掌握和了解也比較快。
5.課外學(xué)習(xí):SQL該學(xué)的已經(jīng)掌握,C#學(xué)習(xí),簡單的程序可以編寫,但有時(shí)還要依靠于網(wǎng)絡(luò)和朋友,需要進(jìn)一步加強(qiáng)。但主要還是以網(wǎng)絡(luò)為主。
二、自身缺點(diǎn)
1.溝通問題:自己的溝通能力只能算一般,因?yàn)閷τ谀承┦碌年U釋還是不怎么好,語言表達(dá)能力有點(diǎn)差,希望通過平時(shí)的交流和溝通來加強(qiáng)。
2.心態(tài)問題:自己對于做某些事過于著急,一心想急切完成,確反而誤時(shí),這個(gè)問題一開始就一直出現(xiàn),現(xiàn)在雖然已經(jīng)基本克服,但也要列入缺點(diǎn)方面,希望以后時(shí)刻注意!
3.學(xué)習(xí)問題:對于課外學(xué)習(xí)C#這方面,我在編程時(shí)感覺困難的時(shí)候有時(shí)候就不愿去做,現(xiàn)在雖然已經(jīng)慢慢改進(jìn)上網(wǎng)搜資料和問問朋友,但有時(shí)候還是克服不了自己。