第一篇:斷點續傳軟件研究論文
在如今的網絡應用中,文件的傳送是重要的功能之一,也是共享的基礎。一些重要的協議像HTTP,FTP等都支持文件的傳送。尤其是FTP,它的全稱就是“文件傳送協議”,當初的工程師設計這一協議就是為了解決網絡間的文件傳送問題,而且以其穩定,高速,簡單而一直保持著很大的生命力。作為一個程序員,使用這些現有的協議傳送文件相當簡單,不過,它們只適用于服務器模式中。這樣,當我們想在點與點之間傳送文件就不適用了或相當麻煩,有一種大刀小用的意味。所以一款簡單有效,且具備多線程斷點續傳的軟件就成為了必要。引言
以往我們軟件開發的程序大多是單線程的,即一個程序只有一條從頭至尾的執行線索。然而現實世界中的很多過程都具有多條線索同時動作的特性。例如,我們可以一邊看電視,一邊活動胳膊,如果不容許這樣做,我們會感覺很難受。再如一個網絡服務器可能需要同時處理多個客戶機的請求等。C++語言的一大特性就是內置對多線程的支持。多線程是指同時存在幾個執行體,按幾條不同的執行線索共同工作的情況,它使得編程人員可以很方便地開發出具有多線程功能、能同時處理多個任務的功能強大的應用程序。自從“多線程下載”技術發明以來,這項技術得到前所未有的關注已是不爭的事實。在“網絡螞蟻”軟件流行開后,許多下載軟件也都紛紛效仿,是否具有“多線程下載”技術、甚至能支持多少個下載線程都成了人們評測下載軟件的要素。“多線程下載”的基礎是WEB服務器支持遠程的隨機讀取,也即支持“斷點續傳”。這樣,在下載時可以把文件分成若干部分,每一部分創建一個下載線程進行下載。系統開發的目的多線程和傳統的單線程在程序設計上最大的區別在于,由于各個線程的控制流彼此獨立,使得各個線程之間的代碼是亂序執行,由此帶來的線程調度問題。由于是多線程進行斷點續傳,還要考慮記錄多個斷點位置,且記錄斷點位置時也要考慮同步互斥等問題。所有這些都使得這一步比較復雜。但是可以明顯提高網絡文件的下載速度。現在,不要說編寫專門的下載軟件,在自己編寫的軟件中,加入下載功能有時也非常必要。如讓自己的軟件支持自動在線升級,或者在軟件中自動下載新的數據進行數據更新,這都是很有用、而且很實用的功能。可行性分析
下載程序功能模塊的實現主要利用了面向對象的c++高級編程語言。
多線程編程技術是c++語言的重要特點。多線程編程的含義是將程序任務分成幾個并行的子任務。特別是在網絡編程中,有很多功能是可以并發執行的。
C++中實現多線程的類有兩種方法:1.擴展Thread類,CreateThread創建線程用它覆蓋Thread類的run方法。2.CFile 文件讀取,生成實現Runnable接口的類并將其它的實例與Thread實例相關聯。
Thread類是負責向其它類提供線程支持的最主要的類,要使用一個類具有線程功能,在C++中只要簡單地從Thread類派生一個子類就可以了。
下載程序的具備友好的用戶界面,而且操作簡單易于被用戶接收,使用此下載程序十分方便,因為軟件的操作思路比較清晰,而且用戶實際操作的內容較少,所以用戶只需要熟練操作計算機即可。因此從使用操作方面看,此系統得開發是可行的用戶需求分析
隨著Internet的發展,進入信息時代后快速獲得網絡共享資源成為很簡單的事情,人們對互聯網也有了很大的依賴性。人們甚至希望只輕松點擊鼠標就可以得到自己想要的東西。比如,針對一些專業的論壇提供了很多相關資料以方便人們閱讀或了解;還有更多的人希望能過下載到他們喜歡聽得音樂、好看的圖片、喜歡的電影等等。也可以看出人們在上網時再也不單是打開瀏覽器來瀏覽網頁,越來越多的人們開始使用下載軟件來獲取資源。同時人們也更希望使用更新更快的下載軟件。
由于用戶下載需求的增大,也要求下載軟件能夠迅速完成對資源的下載。多線程程序設計可以很好的解決程序并發的問題。最恰當的比喻就是用戶會感到CPU似乎同時出現在兩個地方,在下載軟件中應用多線程技術可以理解為將一個下載任務分成若干份來完成,其中的并發控制將使下載的效率大大提高。
在下載任務的管理這一塊,用戶不僅希望下載工具具有下載一個一個資源的功能,而且具有批量下載有些相似的或有關聯的資源的功能。還有些特殊情況下,用戶在下載任務開始后由于種種原因希望放棄資源的下載,這就要求下載工具具有刪除任務的功能了。
為了對下載任務進行掌控,用戶往往具有設置下載任務的線程數,文件下載網址,文件下載存儲目錄和在下載過程中對下載任務的狀態進行監控等功能需求。
鑒于某些軟件使用初學者甚至某些電腦初學者的實際情況,他們往往需要系統有一個格外的幫助文檔,使他們能夠更快、更好地學會使用斷點續傳下載軟件,提高效率。系統設計要點
隨著用戶下載需求的增大,用戶下載的資源越來越大,下載的過程也就越來越久,這就要求下載軟件能夠迅速完成對資源的下載,為了提高下載效率的問題,所以本系統采用多線程的方式來實現下載速率的提高。多線程的優點之一是所有線程都可以訪問相同的全局變量和共享資源,它提供了程序設計的簡捷性與便利性,提高了對信息處理的并發度,但也帶來了數據的訛誤或線程得不到某一資源而被餓死(即死鎖)的可能性。為了避免這些現象的產生,線程在使用共享資源或對象前必須獲得一個約束訪問同步對象的權力,也就是通過同步的機制來控制這種權力的使用,這就是線程的安全問題。長期以來,斷點續傳始終是困擾網蟲們的一大難題,眼看著已經下載到99%的軟件,卻由于突然掉線而前功盡棄的那種沮喪恐怕人人都經歷過,于是本系統采用斷點續傳的方式來設計。
本系統設計的基本目標就是利用編寫一個時下流行的多線程斷點續傳的程序來研究C++多線程與線程安全的機制。功能需求
一部分是服務器的應用程序,主要用于接受客戶端的連接請求,處理客戶的請求,向客戶發送結果和應答信息等;一部分是客戶端的應用程序,主要用于申請連接服務器,向服務器發送請求和處理服務器返回的結果等。
服務器的啟動、客戶端的連接和消息通信:
服務器端必須能夠做3件事情:
(1)服務器要在特定的端口上等待來自聊天客戶的連接請求,并且需要維護一個客戶連接表,以記錄所有成功的連接。
(2)服務器要及時添加共享的文件目錄,從而供客戶端下載
(3)服務器還要具有與客戶端通信的能力。
信息通信
客戶端聊天程序需要完成以下5個功能:
(1)客戶端聊天程序要負責建立和維護與服務器的連接,通過獲取用戶的設置嘗試與服務器的連接,并且隨時檢測連接的狀態。
(2)客戶端聊天程序要把用戶輸入的信息及時發送到聊天服務器。一般情況下,當用戶輸入一行信息并且按下回車鍵之后聊天程序就要把這一行信息發送出去,才能及時地滿足用戶的交互需求。
(3)客戶端聊天程序要隨時準備好接收來自服務器的信息,隨時把接收到的信息顯示出來,讓用戶及時看到對方的響應。
(4)在用戶退出聊天過程時要關閉與服務器的連接。比較好的做法是提前通知服務器,或者直接給服務器發送一條退出通知,使得服務器能夠及時掌握客戶端的連接狀態,把對方客戶的退出信息及時發送到對等實體上。
(5)客戶端與服務哭端連接成功后必須知道服務器端的共享信息,以便自己可以有選擇的進行下載。
第二篇:論文-軟件
【摘要】本文結合現階段中小軟件企業蓬勃發展的背景,結合軟件開發的流程分析及管理中的成本、進度、質量分析。分析了中小軟件企業項目中存在的問題并提出了相應的解決辦法。
【關鍵詞】軟件;管理;項目;軟件企業;生命周期;流程控制
【詳情】隨著我國信息產業特別是軟件產業的蓬勃發展,一批批中小軟件企業不斷涌現。大大推動了我國軟件產業的發展。但是不可忽視的是,有相當部分的軟件企業特別是中小型企業在項目管理方面存在著先天的不足,大多仍然處于一種手工作坊式運營階段,處于有章不循和無章可循的混沌階段,缺乏科學化、系統化的管理,質量和效率都不強。由于處于企業的初創期,中小軟件企業忙于找項目、攬項目,從而忽視了自身的實力和行業專攻,從而造成了什么項目都接、什么活都做的局面,且公司人員較少,分工不明確從而造成了此類軟件企業管理流程混亂,重編碼輕設計,甚至到編碼完成后再回頭編寫、應付各種文檔資料,無論從哪個角度來說,這是沒有任何意義的。軟件項目的開發流程不規范,項目延期、失敗層出不窮。所以如何有效地對項目進行管理,有章可循,對于中小軟件企業來說,是非常有現實意義的。對于廣大的中小軟件企業而言,如何能有效且比較簡單地對自己的軟件項目流程進行管理呢?項目流程管理在軟件項目的開發過程中是非常重要的一環,它貫穿著整個過程,所以有時它也被稱為軟件產品生命周期管理,主要內容包括:立項、策劃、分析、實現、測試、發布、維護等環節。首先我們從軟件工程角度來談談這個問題。我們來說一下軟件工程中開發模型的概念,無論大小,每個項目都必定要遵循一定的開發模型。軟件常用的開發模型包括:瀑布模型、螺旋模型、漸進模型。那么具體到中小軟件企業,在這幾種模型中,我們要注意些什么呢?下面我們針對這幾種常見的模型做一下分析。一般而言,瀑布模型常用于在開發時間內需求沒有或很少變化、分析設計人員對應用領域很熟悉、用戶應用環境穩定、用戶除提出需求以外,很少參與開發工作、需求使用面向過程的語言或編程工具且風險較低的項目。螺旋模型常用于在項目開發早期需求可能有變化、分析設計人員對應用領域很熟悉、用戶可不同程度地參與整個項目的開發過程、使用面向對象的浯言或第四代語言、中等風險項目。漸進模型主要應用于在整個項目開發過程中需求都可能發生變化、分析設計人員對應用領域不熟悉、用戶可參與整個軟件開發過程中、使用面向對象的語言或第四代語言且高風險項目。生存期定義可視軟件項目特性識別和所選軟件開發模型而異,對于軟件生命周期的幾個環節來說,他們并不是孤立的、時間層次非常明顯的,它們之間也存在著時間的重疊交叉甚至錯位。對于項目管理人員來說,要注意區分這幾個階段并在不同的階段定義不同的工作內容并嚴格執行。而具體到中小型軟件企業,由于人員較少,各種工程外小組不太健全。所以,針對這種情況,我們對各個流程進行分解大致分為調查階段、立項階段、策劃階段、分析設計階段、實現階段、測試階段、發布階段、維護階段。在調查階段:我們要采集用戶需求信息、擬定立項建議最后要生成用戶需求文檔及立項建議書。在立項階段:我們需要編制可行性分析報告、立項申請報告并進行評審最后要形成評審記錄。在策劃階段:我們要任命項目經理、建立項目組。并對需求進行分析、評審。根據需求情況對項目進行資源準備(人、財、物)。在此階段要形成軟件需求規格說明書及測試大綱及需求評審記錄。在分析設計階段:我們要進行下面的工作系統設計(含數據庫、界面設計)、設計評審、用例準備、測試計劃評審、項目計劃修訂、復用元素提取根據情況要形成系統設計文檔、集成和驗證測試計劃、系統設計評審記錄、測試計劃評審記錄、項目計劃修訂記錄。在實現階段,我們要進行詳細設計、詳細設計評審、構造軟件(編碼、自測)、模塊測試、組裝測試要形成詳細設計文檔,評審記錄、源程序、相關的測試數據和記錄。在測試階段,我們要進行集成測試、界面凍結、編寫用戶使用手冊、填寫發布申請單之后進行發布申請評審要形成集成測試測試記錄、報告、安裝母盤、用戶使用手冊子版)及產品介紹。在發布階段,我們要編寫培訓教材、進行產品包裝設計、母盤準備、服務人員培訓、光盤刻制、資料印刷、產品包裝、發布產品檢驗、產品發布和交付井進行項目總結。在維護階段,我們要采集產品問題反饋單、登錄問題反饋臺賬、編發產品問題的E—mail、采集、登錄問題反饋跟蹤記錄表、編報問題反饋跟蹤月匯總表、產品問題審核、分類和交付、產品問題回復、本版本產品問題維護、新版產品母盤制作、編、發產品更改公告、問題維護審核、新需求臺賬登錄。眾所周知.影響項目進展的三個維度是成本、進度和質量。如何平衡它們之間的關系,盡力做到快、好、省?在有限資源的情況下將
結果處理得最優?這就是項目中管理的學問了。任何項目要被視為成功,都要必須達到幾個目的,這其中包括質量要求、截止期及成本限制。質量規定給出了一個最終的定義包括項目的形式、適配性和功能,它定義了項目提交給用戶時的最終狀態,而且要確保項目符合這些規定。同時項目的進度也是非常重要的,項目管理的一個重要的職責就是要確定一個合理的交付日期。這就是一處平衡的過程,協調好這三個方面的工作,同時所謂一個項目,進度是主線,其他的因素是圍繞它來做的,同時進度也是項目管理的標尺。所以在項目中一旦將會期確定下來,就要將它轉化為進度表的形式,并告訴你的項目組成員。當編制進度表時,頭腦中要牢記住這個日期。如果你的團隊知道要求完成項目的實際期限,他們將受到更大的激勵,對他們會更有幫助:當團隊成員知道進度的情況時,他們將能夠加快自己的步伐,從而為項目的順利完成做出更大貢獻。合理的進度,不應該讓項目組成員感到緊張。緊張是個人績效的一個主要殺手。緊張的人更有可能犯錯誤,而且一般來說其表現不如最佳狀態:一個人犯的錯誤越多,他對其工作及對其本人的感覺就越糟糕,他就越有可能死火。高死火率意味著高的人員離職率,意味著你要花更多的時間用于更新雇人和重新培訓。緊張的工作環境導致雇員的緊張,他們反過來又導致環境更加緊張。這是一種惡性循環,對于人員短缺的中小軟件企業而言,這顯然是不希望被看到的。作為一個項目來說,如果沒有一個明確的目標。對有些人來說,這種情況可能造成令人難以置信的放松,而對另外一些人來說,它又可能造成難以置信的緊張。那些不知道自己的工作到底是什么的雇員,容易變得緊張;他們拿不準為什么來這里,這意味著不能擔保明天他們還會出現。如果你向你的團隊成員提出了足夠明確的目標,并向 他們展示實現目標的途徑,你的雇員不僅不會緊張,而會真的感覺自己是該項目的一部分。可能還會對自己取得的結果感到自豪。而當項目經理用富有挑戰性的工作和專門技術來影響員工的時候,項目成果的機率就會增大。你不僅應當向你的團隊成員說明目標,而且你應當讓他們參與確定這些目標。并且一般來說讓他們參與計劃的編制,這是絕對必要的。如果你讓團隊成員幫助編制計劃,你將更有可能提早發現可能發生問題的領域。團隊成員也感覺到對項目承擔了更大的義務,因為在使項目啟動方面,他們有某種利害關系。同時,在執行項目時,項目經理一定會面對這樣的要求,即不超出某種成本限制。作為項目經理,應該制定一個比較詳細的預算、計劃,你應當告知你的公司或客戶這項工作確切地說要花費多少成本:出于你的團隊是執行項目的人此時也應該像客戶一樣,也需要盡可能地了解有關成本的信息,所以我們考慮軟件的項目管理的時候,都必須在這幾方面對其加以界定及規范,在日常的項目管理工作中要注重這幾方面的協調、平衡。一個項目組,我們也要關注于組織的建設。一個軟件項目的成功,團隊間的合作及有效溝通也是非常重要的。在交流的過程中,要有效的減少噪音,提高溝通的效率。幾乎在所有的項目管理中,溝通問題是必不可免的,對于一些項目經理來說,溝通不佳意味著“沒人聽我的”,而對于另外的一些經理來說,溝通不暢意味著項目組成員每天到晚一直忙,卻不見多少成績,好多人做著重復的工作,因為彼此之間沒有進行有效的溝通。溝通的方式很多,比如說會議、電話、電郵、甚至行為等等。如果團隊成員看起來不愿意溝通,這并不一定表明他們不愿意合作。相反,他們僅僅可能是不愿意以自己不適應的方式進行溝通。所以,為了鼓勵溝通,我們必須清楚應該選擇哪種溝通渠道,應該選擇哪些條件組合,以得到我們所期望的反應。在項目工作中,萬不能對他人頤指氣使。維持團隊的關系以促進項目組成員齊心協力地工作這才是項目經理所要取得的目標。如果項目經理過多地用權力、金錢或者處罰的手段來影響項目組成員的話,項目失敗的幾率會很大。和其他方面的管理一樣,項目管理既是一門科學又是一門藝術。在平時的管理工作當中,我們不僅要善于將相關的管理知識及管理理論有意識的應用到管理實踐中,我們更要發展藝術性的思維。沒有完全相同的項目環境,外部環境和內部環境是不斷變化的,我們只有在不斷的實踐中探索才能深刻的體會到項目管理的精髓,不斷的成長。同時作為一個項目經理,要有大局觀,要具有系統思維。不要受單一項目的局限,要在一個更大的組織視野下考慮項目的實施。主要參考文獻[1](美)DalaielJ.Paulish.軟件項目管理實用指南[M].白曉顆,邵忠巋譯.北京:機械工業出版杜,2003。[2](美)凱西.施瓦爾貝.IT項目管理[M].王金玉,時梆譯.北京:機械工業出版社,2003。[3](美)克萊門茨,(美)凱茲曼,(美)克萊思.軟件架構評估[M].孫學濤,朱衛東,趙凱譯.北京;清華大學出版社,2002。
第三篇:電影拍攝策劃書-愛情斷點續傳
電影拍攝策劃書
影片名稱:
《愛情斷點續傳》
影片主題:
通過對兩個普通的大學女生在數年后相遇追憶她們共同的大學生活的點點滴滴,包括友情、親情、愛情。兩個女生在共同的環境里由于不同的性格以及不同的處世態度敘寫了兩個人不同的大學生活,然而她們相同的就是在四年的不斷的成功和失敗中成長、變化著。包括人生觀、感情觀。
影片目的:
從不同的側面展現當代中國大學生的面貌和狀態,揭示大學生面對的社會問題,比如就業競爭激烈等等。引導在校大學生應該以怎樣的態度去學習、工作,應該以怎樣的心態去處理親情、友情以及還不成熟的愛情。
影片特色:
影片中兩個女主人公都是攝影愛好者,鏡頭作為人的第三只眼,能夠透過鏡頭看到人的心理,本片巧妙的運用這一點通過兩個人拍攝的照片反映身邊的現象、社會的問題,隨著大學四年時間的不斷邁進,縱向反映兩個人心態的不斷變化和成熟,兩個人之間的橫向對比有反映了大學生群體的不同的性格和心態。
宣傳價值:
在現今影視文化大范圍波及校園的形勢下,大學生電影節、大學生DV大賽已經成為大學文化的重要組成部分,是新生代大學生象征之一,紅地毯甚至已經鋪在了許多大學、高校的舞臺上。東北大學作為發展藝術氛圍的綜合性大學的典范,積極開展DV大賽等類似的文藝活動,但目前仍未有一部稱得上是電影的作品走出校園。
該片演員海選、拍攝、制作以及后期的放映主要在東北大學校內進行,學生的互動、攝制工作的進行必將為校園增加藝術氛圍、豐富學生的課余生活,老師和學生的參與也將促進校園文化的傳播和發展,必將成為學校的一道亮麗的風景線。
將東北大學作為主要拍攝場地,更可以將東北大學悠久而光榮的歷史、優秀的校園環境、優美的綠化環境、現代化的學習環境以及先進的研究環境,完備的學生組織、火熱的社團活動展現出去,讓更多的人認識東北大學,了解東北大學。
商業價值:
大學生電影在越來越受到影視界乃至全社會的關注,其商業價值也越來越受到認可,尤其作為大學生的電影拍攝屬于非職業、非商業性質,自然高昂的拍攝設備令很多熱衷者望而卻步,電影藝術作為跨國界、跨民族、跨信仰的藝術形式更應該跨越其拍攝的設備的價值,作為影視拍攝、制作設備的生產商多年來為電影發展做出了積極的推進作用,因此期望設備的生產商能夠將其升華,以生產設備不單單是要牟取其商業價值更重要的是能夠推進電影藝術的發展,能夠暫時提供一些設備給學生使用。對于企業文化發展、社會輿論效應以及社會影響力的提升都有著很好地推動作用。
除了影片主人公之外出鏡最多的便是主人公使用的數碼單反照相機、照片打印機以及學校電視臺使用的攝像機,本片在使用這些道具原本的拍攝、打印等功能的基礎之上,更加提升了它們在生活中的重要作用和意義。
第四篇:SPI接口軟件模擬研究論文
文 章來源 蓮
山 課 件 w w w.5Y k J.c oM
軟件模擬引言隨著信息社會的發展,網絡和信息家電越來越地出現在人們的生活中。人們普通要求將家庭內的所有家用電器與Internet連接起來,實現主人在遠方用計算機或電話通過Internet對象家庭電設施進行監控。家用電器制造商可以通過網絡對其生產的設備進行售后跟蹤服務;家用電器是故障時能自動按預設的郵件地址來發送電子郵件進行報警。這就需要有一個“家庭網絡中央控制器”。它對外與Internet連接,對內通過家庭內部無線局域網將所有家用電器連接成一體,從而確保信息家電安全地接入Internet。當前,多數研究單位推出的家庭網絡智能控制器,均以pC或準pC機作為硬件平臺,由于價位高而均未被市場容納。嵌入式Internet是近幾年發展起來的一項新興技術。以32位ARM嵌入式微處理器為硬件平臺,通過移植嵌入式操作系統uClinux內核,開發相應的硬件驅動、微型GUI和上層應用軟件,最終實現產品化的嵌入式家庭網絡中央控制器。該系統具有體積小、功耗低、價格便宜的特點。
1 系統的硬件組成本系統以高性能、低價格的S3C4510B為主CpU。它是Samsung公司推出的基于ARM7TDMI核,精簡指令系統的32位高速微處理器。工作電壓為3.3V,內核ARM7TDMI的工作電壓為2.5V,大大降低了芯片的功耗。S3C4510B片上資源:一個總線仲裁器可以根據總線仲裁優先級在片上功能模塊和外圍設備之間進行系統總線控制權分配;8KB指令、數據復用Cache,每128bit為1頁,并可全部或部分設置為SRAM;1個主I2C總線控制器,可作為主發送器或主接收器,能連接多個從設備;2個通用DMA;18個通用I/O口; 2路4線UART口,其中一個支持IrDA 1.0,可用于紅外通信;6組ROM/SRAM/Flash用于管理外部存儲器。另外,可擴展4組動態存儲器和4 BANK擴展I/O設備;2通道帶有DMA傳送方式的HDLC口;1個10M/100M自適應以太網控制器。圖1為家庭網關的硬件框圖,以S3C4510B為基本核心系統,外圍擴展一系列功能模塊。有4×4鍵盤及以屏幕LCD顯示構成良好的人機界面,用于手動本地參數查詢和設定。家庭網關基本系統以SpI接口與pTR3000無線收發模塊相連,同時家庭內部家電控制器也通過SpI接口擴展pTR3000無線模塊。這樣,家庭網關的無線模塊以輪詢的方式與家庭內各家電控制器上無線模塊進行通信,從而組成家庭內部無線子網。家庭網關基本系統只需對SpI口進行操作即可實現與家電通信。實現了家電以家庭網關為中介與Internet在物理層互聯的三個通路:pC通過LAN經由Internet連接到基本系統的以太網口、pC通過Modem經由公司電話網與嵌入式Modem相連再到UART1、電話機經過公用電話網經語音卡連到UART1。
2 uClinux嵌入式操作系統操作系統選用uClinux。它是一個完全符合GNU(GNU’s Not Unix,自由軟件基金會)/GpL(General pulic License,通用公共許可證)公約的完全開放代碼項目,是標準Linux的一個分支,現在由Lineo公司支持維護。它專門針對沒有MMU的CpU,并且專為嵌入式系統做了許多小型化的工作。UClinux經過對標準Linux內核的改動,形成了一個高度優化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,但uClinux仍然保留了Linux的大多數的優點,穩定、良好的移植性、優秀的網絡功能、完備的對各種文件系統的支持以及標準豐富的ApI。它的主要特片如下:①在linux-2.4.x/driver/char/Makefile添加1行:obj_$(CONFIG_SpI)+=SpI.0。在24行obj-y+=mem.o tty_io.o后加pI.o。②在linux-2.4.x/driver/char/Config.in,添加1行:bool'SpI'CONFIG_SpI便于在make me nuconfig時選擇。③在linux-2.4.x/driver/char/mem.c在文件頭部添加:#ifdef CONFIG_SpI /*編譯時選擇該項就執行SpI的初始化函數*/extern void SpI_init(void);#endif在chr_dev_init()函數添加:#ifdef
CONFIT_SpISpI_init();#endif④修改vendor/Samsung/4510b/Makefile,建立起設備節點。在12~35行間,DEVICE部分添加內容SpI,c,29,0。SpI是設備名,c代表字符設備,29是SpI的主設備號,0是SpI的次設備號。⑤make menuconfig時選中SpI編譯,然后直載。啟動后,會看到/proc/devinces中字符設備多了一項SpI 29。S3C4510B有18個通用I/O口,其中高10位可設置為其它功能口。在該系統中,設置p8為中斷接收線,p11模擬主機輸出線MOSI,p12模擬主機時鐘SCK,p13模擬主機輸入線MISO。p8口用于接收pTR3000的發送請求信號。當p8口接收到請求信號時,系統進入中斷處理。中斷處理進程喚醒睡在睡眠隊列SpI_WAIT上的讀進程,讀進程由p12口輸出SCK信號并由p13口讀入數據。值得說明的是,SpI不帶中斷線,在此用p8口做中斷接收線是為了避免操作系統在沒有進行SpI操作時不斷向SCK線發時鐘信號。因此,MSp430F147IpM必須另外與S3C4510B連一個引腳在請求發送數據時發出中斷接收線是為了避免操作系統在沒有進行SpI操作時不斷向SCK線發時鐘信號。因此,MSp430F147IpM必須另外與S3C4510B連一個引腳在請求發送數據時發出中斷請求信號。實現過程如下:Static wait_queue_head_wait;//休眠隊列//讀函數static ssize_t SpI_onlyread(struct file*file,char *buf,size_t count,loff_t *ppos){interruptible_sleep_on(&SpI_wait);//讀進程睡眠等待讀中斷信號if(count>BUFNUM)count=BUFNUM;for(num=0;num>(12-i));//數據輸入}}if(copy_to_user(buf,&SpI_read,count))//數據從內核空間拷貝到用戶這間return-EFAULT;return count;}//寫函數static ssize_t SpI_onlywrite(struct file *file,const char *buf,size_t count,loff_t *ppos){if(count>BUFNUM)count=BUFNUM;if(copy_from_user(&SpI_write,buf,count))//數據從用戶空間拷貝到內核空間return-EFAULT;for(num=0;num>1;iopdata=iopdata^0x1000;//時鐘輸出}}return count;}//中斷響應函數static int SpI_irq(int irq,void *dev_id,struct pt_regs *regs){intpnd=intpnd|0X1;//清中斷位wake_up_interruptible(&SpI_wait);//喚醒睡眠隊列return 1;}//字符設備驅動接口static struct file_operations SpI_fops={owner;THIS_MODULE,read: SpI_onlyread,write: SpI_onlywrite,};//初始化函數int_init SpI_init(void)register_chrdev(29,“SpI”&SpI_fops);//設備注冊函數init_waitqueue_head(&SpI_wait);if(!request_irq(0,SpI_irq,SA_SAMpLE_RANDOM,“SpI”NULL)){ //中斷申請return-EFAULT;}iopmod=(iopmod&0xffffe7ff)=0x1800+iopmod;//設置通用I/O口模式iopcon=(iopcon&0xffffffe0)+0xle+iopcon;//設置通用I/O模式enable_irq(0);//開中斷return 0;}module_init(SpI_init);MODULE_LICENSE("GpL);EXpORT_NO_SYMBOLS;結語實驗證明,模擬的SpI口接收發送數據準確可靠。用戶程序可以以設備文件的形式進行訪問,與標準的SpI接口無異。該方案對于嵌入式家庭網關的研究,以及運用uClinux作為操作系統的嵌入式模擬通信接口,有一定的參考價值
文 章來源 蓮
山 課 件 w w w.5Y k J.c oM
第五篇:軟件結構論文
化學抽象機
摘要:軟件體系結構在軟件工程領域中至關重要,而軟件體系結構描述語言ADL為軟件體系結構的表示和分析提供了語言符號和支持工具。本文主要分析和研究了動態形式化描述語言化學抽象機CHAM的發展及其在軟件體系結構中的應用。
關鍵詞:化學抽象機;軟件體系結構
一、化學抽象機的發展歷程
概述軟件體系結構是當前軟件工程領域的一個研究熱點,是大型軟件開發中必須解決的核心技術。無數的代寫論文軟件工程實踐證明:一個成功的軟件系統往往都有一個好的軟件體系結構。但是在軟件設計、開發、測試、運行以及升級的各個階段,體系結構都不可避免地會發生變化,如何把運行時適應性機制加到復雜的大規模軟件系統中就成為一個重要的工程問題。然而要通過軟件體系結構的研究實現這一目標,首先必須用某種方式描述動態體系結構。
Paola Inverardi和Alexxander L Wolf首先將CHAM應用于描述和分析軟件體系結構。他們充分利用CHAM擅長描述系統動態性和并行性的優點,用CHAM形式化方法描述和分析了軟件體系結構動態操作性語義,在軟件體系結構動態特性描述方面進行了有效的擴展,主張用CHAM模型描述軟件體系結構,并例舉描述了編譯器的體系結構,包括順序多階段編譯器和并行、共享存貯庫的多階段編譯器。基于CHAM的體系結構描述,運用重寫技術和結構歸納證明方法,能夠對體系結構的部分行為屬性進行形式化或半形式化的證明。
二、化學抽象機的含義
化學抽象機CHAM主要用于異步并行計算模型的建模,通過將化學反應和抽象機概念有機結合描述系統狀態變化。它將一個系統的狀態看成化學溶液,溶液由分子組成,分子根據一定的反應規則相互反應又引起新的系統狀態變化。溶液中不同分子可按反應規則平行地進行反應,只要各自反應的分子集不重疊。因CHAM在描述系統動態性、并行性方面的優良特性,所以可較好描述異步并行計算模型,尤其擅長描述如λ計算和CCS進程計算模型。分子是CHAM的基本元素,由一個常數集和操作符集派生而成的句法代數定義;溶液是由有限多個分子的集合,它反映了系統的某種狀態,溶液中的分子根據變換規則進行反應。
三、化學抽象機的應用 化學抽象機在軟件體系結構中的應用,在軟件體系結構中,CHAM可表示成一個三元組CHAM=(M,E,R),其中 分子集M={m|m∈MS∨MI},MS={mS1,…,mSn}為穩定狀態分子集,處于穩定狀態的分子不吸收或釋放電子;電子集E={e1,…,ek},分子可根據自反應規則準備進行進行收或釋放電子,當溶液中有兩種互補電子,即一對釋放-吸收電子時,可根據互反應規則進行反應。規則集R=RS∪RM,RS={r|r∈{mS1=mI1,…,mSj=mIj}∪{mS1=mS1*,…,mSj=mSj*},mSj∈MS∧mIj∈MI,j=1,2,…}是分子自身從吸收電子到釋放電子的過程或分子復制自身過程規則集。同時,CHAM可以描述構件、連接件。用CHAM描述軟件連接件或構件,可表示成一個四元組(MC,ECI,ECO,RC),連接件或構件的分子集反映了連接件或構件的角色集及在角色上進行的輸入輸出操作,相對來說是靜態的,是一種實現上的結構,屬于語法層。輸入電子集是使用該連接器或構件前必須具備的條件,輸出電子集后映的是使用該連接件或構件后的狀態。反應規則集說明了連接件或構件如何運用反應規則從而發生狀態的演變,實質上是連接件或構件的動態行為,是相對動態的,屬于語義層。化學抽象機不僅用在軟件體系結構中,它的思想更是廣泛應用于其他領域的分析,如在后勤保障指揮決策系統結構設計、多智能體的油料保障組織機構設計中。
四、對化學抽象機發展的展望
伴隨著軟件體系結構不斷的新發展,也給基于構件的軟件系統測試中帶來的新問題,而CHAM不僅可用于描述動態軟件體系結構,還可用于測試體系結構,因為CHAM這種對系統狀態變化的描述特別適合于測試系統的行為和功能,Bertolino等人提出從軟件體系結構描述中導出實現層的測試用例,以指導構件系統的集成測試的思想,隨著對CHAM的深入研究,必將有新的應用被提出、對CHAM有更多的了解。