版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p> 論文題目 基于ARM技術(shù)的遠(yuǎn)程機(jī)器人控制通信系</p><p> 統(tǒng)設(shè)計(jì) </p><p> 專 業(yè) 電子信息工程 </p><p&
2、gt; 班 級(jí) 08電子信息工程(嵌入式軟件開(kāi)發(fā)) </p><p> 姓 名 *** </p><p> 學(xué) 號(hào) </p><p> 指導(dǎo)教師 ***
3、 </p><p> 2012年 4 月</p><p> 摘要 隨著現(xiàn)代信息技術(shù)的發(fā)展,遠(yuǎn)程機(jī)器人在實(shí)際生活和科研中都發(fā)揮著越來(lái)越重要的作用。而對(duì)遠(yuǎn)程機(jī)器人來(lái)說(shuō),一個(gè)安全可靠的控制通信協(xié)議,是保證遠(yuǎn)程機(jī)器人能正常和安全地被操作的重要因素之一。本文以ARM硬件平臺(tái)和嵌入
4、式Linux操作系統(tǒng)為基礎(chǔ),設(shè)計(jì)了一個(gè)可以在無(wú)線網(wǎng)絡(luò)中實(shí)現(xiàn)遠(yuǎn)程操控的機(jī)器人控制系統(tǒng)。首先闡述了機(jī)器人的軟硬件設(shè)計(jì)和手持控制終端軟件的設(shè)計(jì),重點(diǎn)提出并設(shè)計(jì)了一個(gè)基于TCP網(wǎng)絡(luò)傳輸協(xié)議的新型控制和通信系統(tǒng),增強(qiáng)了機(jī)器人在遠(yuǎn)程控制方面的安全性。</p><p> 關(guān)鍵詞 機(jī)器人;控制;通信;Linux</p><p> ABSTRACT Along with the developmen
5、t of the modern information technology, remote robot plays a more and more important role in real life and scientific research. And for the remote robot, a safe and reliable protocol of control and communication, was one
6、 of the important factors which is to ensure that the remote robot can be operated normally and safety. Based on the ARM hardware platform and embedded Linux operating system, a remote robot control system which can oper
7、ate by remote control in </p><p> KEY WORDS Robot; Control; Communication; Linux</p><p><b> 目 錄</b></p><p><b> 1 前 言1</b></p><p> 1.1 研究背景
8、和意義1</p><p> 1.2 機(jī)器人發(fā)展歷史1</p><p> 1.3 當(dāng)前國(guó)內(nèi)外研究動(dòng)態(tài)2</p><p> 1.4 本論文的主要研究?jī)?nèi)容3</p><p> 2 機(jī)器人總體設(shè)計(jì)4</p><p> 2.1 嵌入式系統(tǒng)概述4</p><p> 2.2 ARM微處
9、理器4</p><p> 2.2.1 ARM微處理器概述4</p><p> 2.2.2 ARM微處理器的特點(diǎn)5</p><p> 2.2.3 ARM微處理器系列5</p><p> 2.3 嵌入式操作系統(tǒng)5</p><p> 2.3.1 嵌入式系統(tǒng)軟件結(jié)構(gòu)體系5</p><p
10、> 2.3.2 嵌入式操作系統(tǒng)簡(jiǎn)介6</p><p> 2.3.3 嵌入式Linux操作系統(tǒng)簡(jiǎn)介6</p><p> 2.4 機(jī)器人總體設(shè)計(jì)方案6</p><p> 3 機(jī)器人嵌入式硬件平臺(tái)設(shè)計(jì)8</p><p> 3.1 嵌入式系統(tǒng)硬件結(jié)構(gòu)8</p><p> 3.2 三星S3C2440A
11、微處理器9</p><p> 3.3 Mini2440開(kāi)發(fā)板9</p><p> 3.4 機(jī)器人嵌入式硬件系統(tǒng)設(shè)計(jì)方案10</p><p> 3.4.1 機(jī)器人嵌入式硬件系統(tǒng)設(shè)計(jì)總述10</p><p> 3.4.2 傳感器系統(tǒng)電路設(shè)計(jì)11</p><p> 3.4.3 動(dòng)力系統(tǒng)電路設(shè)計(jì)12<
12、;/p><p> 3.4.4 無(wú)線通信系統(tǒng)電路設(shè)計(jì)12</p><p> 4 機(jī)器人嵌入式系統(tǒng)平臺(tái)搭建14</p><p> 4.1 構(gòu)建交叉編譯工具鏈14</p><p> 4.1.1 交叉編譯工具鏈簡(jiǎn)介14</p><p> 4.1.2 用Crosstool-ng構(gòu)建交叉編譯工具鏈14</p&
13、gt;<p> 4.2 Bootloader移植15</p><p> 4.2.1 Bootloader簡(jiǎn)介15</p><p> 4.2.2 Uboot移植15</p><p> 4.3 Linux Kernel移植17</p><p> 4.3.1 獲取內(nèi)核源碼17</p><p>
14、; 4.3.2 配置內(nèi)核17</p><p> 4.3.3 編譯18</p><p> 4.4 文件系統(tǒng)構(gòu)建19</p><p> 4.4.1 Yaffs2文件系統(tǒng)簡(jiǎn)介19</p><p> 4.4.2 Yaffs2文件系統(tǒng)移植19</p><p> 5 機(jī)器人嵌入式中控系統(tǒng)軟件和手持控制終端軟件
15、設(shè)計(jì)20</p><p> 5.1 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì)20</p><p> 5.1.1 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì)總述20</p><p> 5.1.2 機(jī)器人中控系統(tǒng)軟件整體程序設(shè)計(jì)20</p><p> 5.1.3 傳感器驅(qū)動(dòng)軟件模塊設(shè)計(jì)21</p><p> 5.1.3.1 USB攝像頭驅(qū)動(dòng)
16、和圖像采集功能實(shí)現(xiàn)21</p><p> 5.1.3.2 GPS數(shù)據(jù)采集22</p><p> 5.1.3.3 電子羅盤數(shù)據(jù)采集22</p><p> 5.1.4 機(jī)器人運(yùn)動(dòng)控制模塊設(shè)計(jì)22</p><p> 5.1.5 機(jī)器人網(wǎng)絡(luò)通信模塊設(shè)計(jì)23</p><p> 5.1.5.1 TCP協(xié)議簡(jiǎn)介
17、23</p><p> 5.1.5.2 Socket編程簡(jiǎn)介23</p><p> 5.1.5.3 機(jī)器人網(wǎng)絡(luò)編程模塊程序設(shè)計(jì)24</p><p> 5.2 機(jī)器人手持控制終端軟件設(shè)計(jì)25</p><p> 5.2.1 機(jī)器人手持控制終端軟件設(shè)計(jì)總述25</p><p> 5.2.2 機(jī)器人手持控制終
18、端軟件設(shè)計(jì)程序整體設(shè)計(jì)25</p><p> 5.2.3 基于QT for Android的UI模塊設(shè)計(jì)26</p><p> 5.2.4 控制通信模塊設(shè)計(jì)27</p><p> 6 機(jī)器人控制通信系統(tǒng)協(xié)議及其實(shí)現(xiàn)分析28</p><p> 6.1 機(jī)器人控制通信系統(tǒng)總述28</p><p> 6.
19、2 機(jī)器人控制通信系統(tǒng)通信機(jī)制29</p><p> 6.2.1 網(wǎng)絡(luò)通信線程29</p><p> 6.2.2 消息包定義29</p><p> 6.2.3 數(shù)據(jù)封包和解包機(jī)制29</p><p> 6.2.4 消息包序列化機(jī)制30</p><p> 6.2.5 登陸和退出機(jī)制30</p&
20、gt;<p> 6.2.6 通信應(yīng)答機(jī)制31</p><p> 6.2.7 數(shù)據(jù)加密機(jī)制31</p><p> 6.2.8 心跳檢測(cè)機(jī)制32</p><p> 6.3 機(jī)器人控制通信系統(tǒng)控制機(jī)制33</p><p> 6.3.1 消息注冊(cè)機(jī)制33</p><p> 6.3.2 消息接
21、收機(jī)制34</p><p> 6.3.3 消息派發(fā)機(jī)制34</p><p> 7 系統(tǒng)分析和總結(jié)36</p><p> 7.1 系統(tǒng)分析36</p><p> 7.1.1 系統(tǒng)分析方法簡(jiǎn)述36</p><p> 7.1.2 壓力通信測(cè)試36</p><p> 7.1.3
22、斷網(wǎng)測(cè)試36</p><p> 7.2 測(cè)試結(jié)論37</p><p><b> 8 總 結(jié)38</b></p><p><b> 參考文獻(xiàn)40</b></p><p><b> 附 錄41</b></p><p><b>
23、致 謝42</b></p><p><b> 前 言</b></p><p><b> 研究背景和意義</b></p><p> 根據(jù)聯(lián)合國(guó)標(biāo)準(zhǔn)化組織采納的美國(guó)機(jī)器人協(xié)會(huì)給機(jī)器人下的定義,機(jī)器人是一種可編程和多功能的,用來(lái)搬運(yùn)材料、零件、工具的操作機(jī);或是為了執(zhí)行不同的任務(wù)而具有可改變和可編程動(dòng)作的專門
24、系統(tǒng)。</p><p> 機(jī)器人技術(shù)是一門綜合了計(jì)算機(jī)、電子、通信、信息、傳感器技術(shù)和人工智能等技術(shù)的體現(xiàn)一個(gè)國(guó)家現(xiàn)代工業(yè)自動(dòng)化、國(guó)家現(xiàn)代科學(xué)技術(shù)水平和經(jīng)濟(jì)實(shí)力的重要標(biāo)志的技術(shù),是當(dāng)今時(shí)代世界各國(guó)高度重視的研究技術(shù),其應(yīng)用領(lǐng)域也日益廣泛。而作為機(jī)器人學(xué)科重要組成部分的遠(yuǎn)程機(jī)器人,具備執(zhí)行目前人類尚無(wú)法執(zhí)行或者難以執(zhí)行的諸如太空探索、探險(xiǎn)、救災(zāi)、搜救和大規(guī)模工業(yè)自動(dòng)化生產(chǎn)等方面的任務(wù)。在目前人工智能技術(shù)尚未成熟的
25、情況下,借助于現(xiàn)代通信技術(shù)和傳感器技術(shù),遠(yuǎn)程機(jī)器人具備了感知外部世界和與外部交流的能力。并且在人類的遠(yuǎn)程操控下,遠(yuǎn)程機(jī)器人也同樣變得越來(lái)越智能。在諸如2011年3月日本福島發(fā)生的核輻射危機(jī)處理和火星探索等任務(wù)中,遠(yuǎn)程機(jī)器人都是重要的執(zhí)行力量。</p><p> 開(kāi)展遠(yuǎn)程機(jī)器人的研究,對(duì)國(guó)家在太空探索、探險(xiǎn)、救災(zāi)、搜救和工業(yè)自動(dòng)化生產(chǎn)等方面都有著重要的意義。</p><p><b&g
26、t; 機(jī)器人發(fā)展歷史</b></p><p> 隨著現(xiàn)代計(jì)算機(jī)技術(shù)和電子技術(shù)的迅速發(fā)展,人類科學(xué)技術(shù)水平每一次的重大變革都意味著不斷有新發(fā)明的機(jī)器代替人類從事某些工作。18世紀(jì)60年代開(kāi)始的第一次工業(yè)革命,出現(xiàn)了諸如“蒸汽機(jī)”、“珍妮機(jī)”等機(jī)器取代人力,人類開(kāi)始運(yùn)用這些機(jī)器開(kāi)始大規(guī)模地開(kāi)展工業(yè)化并開(kāi)始逐步取代手工勞動(dòng)。此后在1946年2月14日,人類歷史上第一臺(tái)計(jì)算機(jī)——ENIAC在美國(guó)賓夕法尼亞
27、大學(xué)誕生,這標(biāo)志著人類使用人工智能成為可能。機(jī)器與人工智能的結(jié)合使得機(jī)器人在人類歷史上出現(xiàn)了。</p><p> 1920年,捷克斯洛伐克作家卡雷爾·恰佩克在他的科幻小說(shuō)《羅薩姆的機(jī)器人萬(wàn)能公司》中首次提出了“機(jī)器人”這一詞語(yǔ)。1959年恩格爾伯格建立的Unimation公司研制出了世界上第一臺(tái)工業(yè)機(jī)器人——“護(hù)士助手”機(jī)器人。</p><p> 機(jī)器人的第二個(gè)重大變革是與傳
28、感器的結(jié)合。由于傳感器的應(yīng)用提高了機(jī)器人的可操作性,人們?cè)囍跈C(jī)器人上安裝各種各樣的傳感器,包括1961年恩斯特采用的觸覺(jué)傳感器,托莫維奇和博尼1962年在世界上最早的“靈巧手”上用到了壓力傳感器,而麥卡錫1963年則開(kāi)始在機(jī)器人中加入視覺(jué)傳感系統(tǒng),并在1965年,幫助MIT推出了世界上第一個(gè)帶有視覺(jué)傳感器,能識(shí)別并定位積木的機(jī)器人系統(tǒng)。</p><p> 此后,隨著現(xiàn)代通信技術(shù)的出現(xiàn),無(wú)線通信技術(shù)成為推動(dòng)機(jī)器
29、人發(fā)展的重要力量。1997年7月4日,美國(guó)火星車-索杰納號(hào)機(jī)器人抵達(dá)火星代替人類進(jìn)行考察,從而開(kāi)啟了人類利用遠(yuǎn)程機(jī)器人在火星探索的歷史。隨后的勇氣號(hào)、好奇號(hào)等火星車也相應(yīng)地抵達(dá)火星,它們的出現(xiàn)給人類在太空探索方面帶來(lái)了巨大的幫助。2011年3月,日本也利用了遠(yuǎn)程遙控機(jī)器人參與福島核泄漏事件的救災(zāi)中。</p><p><b> 當(dāng)前國(guó)內(nèi)外研究動(dòng)態(tài)</b></p><p&g
30、t; 在國(guó)內(nèi),20世紀(jì)90年代末,我國(guó)建立了9個(gè)機(jī)器人產(chǎn)業(yè)化基地和7個(gè)科研基地。產(chǎn)業(yè)化基地的建設(shè),為發(fā)展我國(guó)機(jī)器人產(chǎn)業(yè)奠定了基礎(chǔ)。目前,我國(guó)已經(jīng)能夠生產(chǎn)具有國(guó)際先進(jìn)水平的平面關(guān)節(jié)型裝配機(jī)器人、直角坐標(biāo)機(jī)器人、弧焊機(jī)器人、點(diǎn)焊機(jī)器人、搬運(yùn)碼垛機(jī)器人等一系列產(chǎn)品,不少品種已經(jīng)實(shí)現(xiàn)了小批量生產(chǎn)。盡管機(jī)器人產(chǎn)業(yè)化已呈星火燎原之勢(shì),但仍舊存在著諸多問(wèn)題。除了眾多歷史原因造成制造業(yè)水平低下的原因外,更多的是對(duì)工業(yè)機(jī)器人產(chǎn)業(yè)的認(rèn)識(shí)和定位上存在著不同
31、的觀點(diǎn)。為了推動(dòng)機(jī)器人技術(shù)的研究和發(fā)展,國(guó)內(nèi)一直重視對(duì)學(xué)生開(kāi)展機(jī)器人研究,為了培養(yǎng)青少年在尖端科學(xué)技術(shù)方面的興趣,舉辦了諸如面向大學(xué)生的探索科技、創(chuàng)新思維與實(shí)際行動(dòng)結(jié)合的全國(guó)范圍的全國(guó)大學(xué)生機(jī)器人電視大賽、中國(guó)科學(xué)技術(shù)協(xié)會(huì)主辦的包括機(jī)器人工程設(shè)計(jì)展評(píng)、機(jī)器人足球比賽、VEX機(jī)器人工程挑戰(zhàn)賽、機(jī)器人單項(xiàng)競(jìng)技比賽、FLL機(jī)器人挑戰(zhàn)賽、機(jī)器人擂臺(tái)賽等比賽項(xiàng)目的中國(guó)青少年機(jī)器人競(jìng)賽。此外,在軍事和民用方面,國(guó)內(nèi)企業(yè)注重研究用于開(kāi)展探險(xiǎn)、救災(zāi)的機(jī)
32、器人,其機(jī)器人產(chǎn)品已經(jīng)廣泛應(yīng)用于玉樹(shù)抗震救災(zāi)、廣州亞運(yùn)安保等任務(wù)。</p><p> 在國(guó)外,為了使機(jī)器人能更好的應(yīng)用于工業(yè),各工業(yè)發(fā)達(dá)國(guó)家的大學(xué)、研究機(jī)構(gòu)和大工業(yè)企業(yè)對(duì)機(jī)器人系統(tǒng)開(kāi)發(fā)投入了大量的人力財(cái)力。在美國(guó)和加拿大,各主要大學(xué)都設(shè)有機(jī)器人研究室,麻省理工學(xué)院側(cè)重于制造過(guò)程機(jī)器人系統(tǒng)的研究,卡耐基—梅隆機(jī)器人研究所側(cè)重于挖掘機(jī)器人系統(tǒng)的研究,而斯坦福大學(xué)則著重于系統(tǒng)應(yīng)用軟件的開(kāi)發(fā)。德國(guó)正研究開(kāi)發(fā)“MOVE
33、AND PLAY”機(jī)器人系統(tǒng),使機(jī)器人操作就像人們操作錄像機(jī)、開(kāi)汽車一樣。</p><p> 本論文的主要研究?jī)?nèi)容</p><p> 本論文是以ARM9為硬件平臺(tái)并搭載嵌入式Linux操作系統(tǒng)為基礎(chǔ)的研究手持式可視化遠(yuǎn)程機(jī)器人控制系統(tǒng)的控制通信系統(tǒng)方面的問(wèn)題。所做工作主要包括以下幾個(gè)方面:</p><p> (1)根據(jù)系統(tǒng)需求分析建立基于ARM9微處理器的遠(yuǎn)程
34、機(jī)器人的硬件平臺(tái)及基于嵌入式Linux操作系統(tǒng)的軟件平臺(tái)的遠(yuǎn)程機(jī)器人嵌入式系統(tǒng)平臺(tái)。</p><p> ?。?)構(gòu)建了以ARM9為微處理器和機(jī)器人使用的傳感器為硬件基礎(chǔ)的機(jī)器人端硬件平臺(tái)。</p><p> ?。?)搭建了機(jī)器人端硬件平臺(tái)的嵌入式Linux操作系統(tǒng)平臺(tái),在機(jī)器人端實(shí)現(xiàn)了Uboot、內(nèi)核和文件系統(tǒng)的移植。</p><p> (4)對(duì)機(jī)器人端的控制方式
35、進(jìn)行研究,實(shí)現(xiàn)了對(duì)外圍器件的控制。</p><p> ?。?)基于QT圖形系統(tǒng)設(shè)計(jì)了一個(gè)手持控制終端程序,對(duì)機(jī)器人進(jìn)行手持式可視化遠(yuǎn)程控制。</p><p> ?。?)基于嵌入式Linux平臺(tái),設(shè)計(jì)了一個(gè)高效可靠的基于TCP傳輸協(xié)議的機(jī)器人控制和通信系統(tǒng)。</p><p><b> 機(jī)器人系統(tǒng)總體設(shè)計(jì)</b></p><p
36、><b> 嵌入式系統(tǒng)概述</b></p><p> 根據(jù)IEEE的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”。而國(guó)內(nèi)普遍認(rèn)同的一種的說(shuō)法是,嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能,對(duì)可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)是把計(jì)算機(jī)直接嵌入到應(yīng)用系統(tǒng)中,它融合了計(jì)算機(jī)軟/硬件技術(shù)、通信技術(shù)和微
37、電子技術(shù)。對(duì)嵌入式系統(tǒng)而言,它也是一個(gè)計(jì)算機(jī)系統(tǒng),其構(gòu)架與計(jì)算機(jī)系統(tǒng)相似,可以分成四個(gè)部分:處理器、存儲(chǔ)器、輸入輸出(I/O)和軟件系統(tǒng)。但與計(jì)算機(jī)系統(tǒng)不同的是,嵌入式系統(tǒng)具有系統(tǒng)內(nèi)核小而精簡(jiǎn)、專用性強(qiáng)、高實(shí)時(shí)性或者分時(shí)性和高穩(wěn)定性等特點(diǎn)。</p><p><b> ARM微處理器</b></p><p><b> ARM微處理器概述</b>
38、</p><p> ARM(Advanced RISC Machines),既可認(rèn)為是一個(gè)公司的名字,也可認(rèn)為是對(duì)一類微處理器的統(tǒng)稱。ARM(Advanced RISC Machines)處理器是Acorn計(jì)算機(jī)有限公司面向低預(yù)算市場(chǎng)設(shè)計(jì)的RISC微處理器。更早稱作Acorn RISC Machine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集。一般來(lái)講比等價(jià)32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的
39、所有優(yōu)勢(shì)?;贏RM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場(chǎng)份額,ARM技術(shù)正在逐步滲入到人們生活的各個(gè)方面。到目前為止,ARM微處理器及技術(shù)已經(jīng)廣泛應(yīng)用到各個(gè)領(lǐng)域,包括工業(yè)控制領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費(fèi)類電子產(chǎn)品、成像和安全產(chǎn)品等。</p><p> ARM微處理器的特點(diǎn)</p><p> ARM處理器的三大特點(diǎn)是:耗電少功能強(qiáng)、16位/32位雙指令集和合作伙伴眾多
40、。</p><p> ?。?)體積小、低功耗、低成本、高性能。</p><p> (2)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件。</p><p> ?。?)大量使用寄存器,指令執(zhí)行速度更快。</p><p> (4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成。</p><p> (5
41、)尋址方式靈活簡(jiǎn)單,執(zhí)行效率高。</p><p> (6)指令長(zhǎng)度固定。</p><p><b> ARM微處理器系列</b></p><p> 目前,ARM推出的處理器內(nèi)核主要包括:ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex和SecurCore等。其合作公司根據(jù)ARM公司的處理器內(nèi)核設(shè)計(jì)出自己的處理器,例如:
42、德州儀器的Omap和飛思卡爾的iMX等系列處理器。每個(gè)系列都是針對(duì)不同的應(yīng)用場(chǎng)合的,其擁有不同的特性。</p><p><b> 嵌入式操作系統(tǒng)</b></p><p> 嵌入式系統(tǒng)軟件結(jié)構(gòu)體系</p><p> 嵌入式系統(tǒng)軟件結(jié)構(gòu)主要可以分為設(shè)備驅(qū)動(dòng)、操作系統(tǒng)、應(yīng)用程序開(kāi)發(fā)庫(kù)和應(yīng)用程序等四個(gè)層次,如圖 2-1所示。</p>
43、<p> 圖 2-1 嵌入式系統(tǒng)軟件結(jié)構(gòu)圖</p><p><b> 嵌入式操作系統(tǒng)簡(jiǎn)介</b></p><p> 嵌入式操作系統(tǒng)是一種用途廣泛的系統(tǒng)軟件,其主要負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動(dòng);它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過(guò)裝卸某些模塊來(lái)達(dá)到系統(tǒng)所要求的功能。嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟
44、件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。嵌入式操作系統(tǒng)與普通的計(jì)算機(jī)操作系統(tǒng)相比,除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件功能等,還有系統(tǒng)功能可裁剪、代碼通常固化在ROM里面以及與嵌入式微處理器緊密集合等特點(diǎn)。</p><p> 常見(jiàn)的嵌入式操作系統(tǒng)有:Linux、uClinux、WinCE、Android、PalmOS、Symbian、eCos、uCOS-II、VxWo
45、rks和iOS等。</p><p> 嵌入式Linux操作系統(tǒng)簡(jiǎn)介</p><p> 嵌入式Linux是在Linux操作系統(tǒng)的基礎(chǔ)上,為了能使其在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行而進(jìn)行裁剪修改的一種操作系統(tǒng)。由于Linux操作系統(tǒng)是一個(gè)開(kāi)源的操作系統(tǒng),其特點(diǎn)是免費(fèi),資源多,開(kāi)發(fā)成本低。嵌入式Linux既繼承了這一開(kāi)源的特性,又具有嵌入式操作系統(tǒng)的高效精簡(jiǎn)的特性。</p><p
46、> Linux應(yīng)用領(lǐng)域非常廣泛,主要的有信息家電、PDA、機(jī)頂盒、數(shù)據(jù)網(wǎng)絡(luò)、遠(yuǎn)程通信、醫(yī)療電子、交通運(yùn)輸計(jì)算機(jī)外設(shè)、工業(yè)控制、航空航天領(lǐng)域等。</p><p><b> 機(jī)器人總體設(shè)計(jì)方案</b></p><p> 本文設(shè)計(jì)的遠(yuǎn)程機(jī)器人控制系統(tǒng),是基于ARM9嵌入式微處理器和嵌入式Linux操作系統(tǒng)的嵌入式系統(tǒng)平臺(tái)上實(shí)現(xiàn)的一個(gè)遠(yuǎn)程機(jī)器人控制系統(tǒng)設(shè)計(jì)方案,如
47、圖 2-2所示。該機(jī)器人依靠ARM微處理器和嵌入式Linux操作系統(tǒng)作為中控系統(tǒng),同時(shí)結(jié)合攝像頭、電子羅盤、GPS等傳感器感知周圍環(huán)境,通過(guò)對(duì)無(wú)線網(wǎng)卡的操作,實(shí)現(xiàn)對(duì)外界的信息交互,從而實(shí)現(xiàn)上位機(jī)對(duì)整個(gè)機(jī)器人的遠(yuǎn)程控制以及機(jī)器人對(duì)周圍環(huán)境信息進(jìn)行采集和處理的功能。</p><p> 圖 2-2 機(jī)器人總體設(shè)計(jì)框架圖</p><p> 在整個(gè)設(shè)計(jì)方案中,遠(yuǎn)程機(jī)器人硬件系統(tǒng)共分為兩部分:機(jī)器
48、人端和嵌入式手持控制終端(也可用PC終端替代)。對(duì)于機(jī)器人端,整個(gè)嵌入式中控系統(tǒng)負(fù)責(zé)控制所有的傳感器和動(dòng)力驅(qū)動(dòng)器以及無(wú)線網(wǎng)絡(luò)設(shè)備,其與外界通信的唯一通道為無(wú)線網(wǎng)絡(luò)。對(duì)于嵌入式手持終端,本設(shè)計(jì)是采用了一臺(tái)基于TI Omap3630嵌入式微處理器的Android平板電腦。在軟件設(shè)計(jì)方面,嵌入式手持終端,只需開(kāi)發(fā)一個(gè)上位機(jī)控制程序即可。而對(duì)機(jī)器人而言,需要為其構(gòu)建一個(gè)嵌入式Linux操作系統(tǒng),并在該系統(tǒng)平臺(tái)上開(kāi)發(fā)一個(gè)嵌入式中控系統(tǒng)軟件來(lái)全面控
49、制機(jī)器人。</p><p> 機(jī)器人嵌入式硬件平臺(tái)設(shè)計(jì)</p><p><b> 嵌入式系統(tǒng)硬件結(jié)構(gòu)</b></p><p> 嵌入式系統(tǒng)的硬件部分可以分為三層:核心處理器、外圍電路和外圍設(shè)備,如圖 3-1所示。</p><p> 圖 3-1 嵌入式系統(tǒng)硬件結(jié)構(gòu)圖</p><p> 核心
50、處理器是嵌入式系統(tǒng)的核心部件,負(fù)責(zé)控制整個(gè)嵌入式系統(tǒng)的運(yùn)作。</p><p> 外圍電路包括嵌入式系統(tǒng)的內(nèi)存、I/O端口、復(fù)位和電源電路、對(duì)外設(shè)的接口電路等。隨著微電子技術(shù)的發(fā)展,許多常用的接口電路已經(jīng)被集成到核心處理器中。</p><p> 外部設(shè)備:嵌入式系統(tǒng)與真實(shí)環(huán)境交互的各種設(shè)備,包括存儲(chǔ)設(shè)備(如SD CARD)、I/O設(shè)備(如鍵盤、鼠標(biāo)、LCD等)和打印設(shè)備(打印機(jī)、掃描儀等
51、)。</p><p> 實(shí)際中,嵌入式設(shè)備的硬件配置非常靈活。除了CPU和基本的外圍電路,其余部分都可以根據(jù)不同應(yīng)用進(jìn)行裁剪。</p><p> 三星S3C2440A微處理器</p><p> S3C2440A是基于ARM920T核的16/32位RISC微處理器,運(yùn)行頻率高達(dá)400MHz,主要面向手持設(shè)備以及高性價(jià)比、低功耗的應(yīng)用,適用于開(kāi)發(fā)各類高端手持、小型
52、終端以及網(wǎng)絡(luò)應(yīng)用產(chǎn)品,具有非常豐富的片上資源,比如LCD、SDRAM、NAND FLASH、DMA等接口。</p><p> S3C2440A集成如下片上功能:</p><p> ?。?)1.2V內(nèi)核,1.8V/2.5V/3.3V儲(chǔ)存器,3.3V擴(kuò)展I/O,16KB指令Cache(I-Cache)/16KB數(shù)據(jù)Cache(D-Cache)</p><p> ?。?
53、)外部?jī)?chǔ)存控制器(SDRAM控制盒片選邏輯)</p><p> ?。?)集成LCD專用DMA的LCD控制器(支持最大4K色STN和256K色TFT)</p><p> ?。?)4路擁有外部請(qǐng)求引腳的DMA控制器</p><p> ?。?)3路URAT(IrDA1.0,64-Byte Tx FIFO,64Byte Rx FIFO)</p><p&g
54、t;<b> (6)2路SPI</b></p><p> ?。?)IIC總線接口(多主支持)</p><p> ?。?)IIS音頻編解碼器接口</p><p> (9)AC`97編解碼器接口</p><p> ?。?0)1.0版SD主接口,兼容2.11版MMC接口</p><p> ?。?1)
55、2路USB主機(jī)控制/1路USB期間控制(ver1.1)</p><p> ?。?2)4路PWM定時(shí)器/1路內(nèi)部定時(shí)器/看門狗定時(shí)器</p><p> ?。?3)8路10位ADC和觸摸屏接口</p><p> ?。?4)具有日歷功能的RTC</p><p> (15)攝像頭接口(支持最大4096x4096的輸入,2048x2048縮放輸入)&
56、lt;/p><p> ?。?6)130個(gè)通用I/O,24個(gè)外部中斷源</p><p> ?。?7)電源控制:正常,慢速,空閑,睡眠模式</p><p> (18)帶PLL的片上時(shí)鐘發(fā)生器</p><p> Mini2440開(kāi)發(fā)板</p><p> 為了使本設(shè)計(jì)更加專注于機(jī)器人控制通信系統(tǒng)部分的設(shè)計(jì),本設(shè)計(jì)硬件系統(tǒng)主要
57、采用了具備整個(gè)嵌入式硬件系統(tǒng)功能的Mini2440開(kāi)發(fā)板。Mini2440開(kāi)發(fā)板是由廣州友善之臂計(jì)算機(jī)科技有限公司開(kāi)發(fā)的一款基于三星S3C2440A微處理器的開(kāi)發(fā)板。它具有最基本的系統(tǒng)配置如下:</p><p> ?。?)CPU:Samsung S3C2440A,主頻400MHz,最高533Mhz 。</p><p> ?。?)SDRAM:板載數(shù)據(jù)總線為32bit的64M SDRAM,SD
58、RAM 時(shí)鐘頻率高達(dá)100MHz。</p><p> ?。?)Flash Memory:板載256M Nand Flash,掉電非易失。板載2M Nor Flash,掉電非易失。</p><p> (4)主要接口和資源:</p><p> ?。ˋ)板上集成4線電阻式觸摸屏接口,可以直接連接四線電阻觸摸屏。</p><p> ?。˙)1個(gè)主U
59、SB接口,1個(gè)從USB接口。</p><p> ?。–)1路立體聲音頻輸出接口(標(biāo)準(zhǔn)3.5mm接口),1路麥克風(fēng)接口。</p><p> ?。―)1個(gè)100M以太網(wǎng)RJ-45口(采用DM9000網(wǎng)卡)。</p><p> ?。‥)1個(gè)SD/MMC卡存儲(chǔ)接口。</p><p> ?。‵)攝像頭(Cemera) 引出CPU內(nèi)部全部攝像頭信號(hào)引腳。
60、</p><p> ?。℅)3個(gè)串行口。COM0為RS232 DB9接口(亦引出TTL接口),COM2和COM3為2.0mm間距。</p><p> ?。℉)1個(gè)PWM控制蜂鳴器。</p><p> ?。↖)1個(gè)34pin 2.0mmGPIO接口。</p><p> (J)1個(gè)40pin 2.0mm系統(tǒng)總線接口系統(tǒng)時(shí)鐘源和RTC :12M無(wú)
61、源晶振,內(nèi)部實(shí)時(shí)時(shí)鐘。</p><p> 機(jī)器人嵌入式硬件系統(tǒng)設(shè)計(jì)方案</p><p> 機(jī)器人嵌入式硬件系統(tǒng)設(shè)計(jì)總述</p><p> 整個(gè)機(jī)器人就是一個(gè)典型的嵌入式系統(tǒng),其硬件的設(shè)計(jì)就是一個(gè)嵌入式硬件系統(tǒng)。在這個(gè)嵌入式硬件系統(tǒng)中,具備三個(gè)最重要的組成部分:電源及復(fù)位系統(tǒng)、最小系統(tǒng)和外設(shè)。而本設(shè)計(jì)采用了廣州友善之臂計(jì)算機(jī)科技有限公司的Mini2440開(kāi)發(fā)板,
62、其具備了基礎(chǔ)的電源及復(fù)位最小系統(tǒng),同時(shí)也是本設(shè)計(jì)提出的嵌入式中控計(jì)算機(jī)硬件系統(tǒng)核心部分。本設(shè)計(jì)需要完善的電路設(shè)計(jì)就是適應(yīng)機(jī)器人功能的外圍電路。</p><p> 本設(shè)計(jì)的機(jī)器人,主要需要設(shè)計(jì)的外圍電路主要是傳感器系統(tǒng)電路設(shè)計(jì)、動(dòng)力系統(tǒng)電路設(shè)計(jì)和無(wú)線通信系統(tǒng)電路設(shè)計(jì)。這三部分的電路設(shè)計(jì)與Mini2440的接口都是通過(guò)直接和三星S3C2440A的GPIO相連而實(shí)現(xiàn)的。整個(gè)機(jī)器人的硬件總體設(shè)計(jì)如圖 3-2所示。<
63、;/p><p> 圖 3-2 機(jī)器人硬件設(shè)計(jì)總體設(shè)計(jì)圖</p><p><b> 傳感器系統(tǒng)電路設(shè)計(jì)</b></p><p> 傳感器系統(tǒng)是機(jī)器人的感官系統(tǒng),如人體的眼睛和耳朵等器官,具備感知外部世界的能力。在本設(shè)計(jì)的遠(yuǎn)程機(jī)器人中,操作人員無(wú)法直接感知機(jī)器人所在地方的環(huán)境信息,這對(duì)于機(jī)器人來(lái)說(shuō),必須要求其具備一個(gè)對(duì)周圍環(huán)境信息采集的傳感器系統(tǒng)
64、。在本設(shè)計(jì)中,機(jī)器人的傳感器系統(tǒng)實(shí)現(xiàn)的功能包括采集圖像、所在經(jīng)緯度和運(yùn)動(dòng)方向信息等功能。故該傳感器系統(tǒng)包括以下三個(gè)組件:攝像頭、GPS和電子羅盤。由于攝像頭是采用USB接口,GPS和電子羅盤都是采用串口接口,而Mini2440已經(jīng)具備了USB和串口接口,故以上三個(gè)器件只需將其與Mini2440相應(yīng)的接口連接起來(lái)就可以了。具體連接圖如圖 3-3所示。</p><p> 圖 3-3 傳感器系統(tǒng)電路設(shè)計(jì)圖</p
65、><p><b> 動(dòng)力系統(tǒng)電路設(shè)計(jì)</b></p><p> 機(jī)器人的動(dòng)力系統(tǒng)是機(jī)器人的最基本部件,是驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng)的重要保障。常見(jiàn)的機(jī)器人運(yùn)動(dòng)方式有輪式移動(dòng)、仿人二足移動(dòng)、仿人多足移動(dòng)和飛行移動(dòng)等方式。仿人二足移動(dòng)、仿人多足移動(dòng)和飛行移動(dòng)等方式對(duì)成本、體積和穩(wěn)定性要求都非常高,在電路設(shè)計(jì)和程序控制方面同樣是非常復(fù)雜。在目前的實(shí)際應(yīng)用中,相當(dāng)多的機(jī)器人都是采用輪式移
66、動(dòng)的方式,如火星車等機(jī)器人。對(duì)于本設(shè)計(jì)而言,整個(gè)機(jī)器人采用履帶輪式移動(dòng)的方式。整個(gè)動(dòng)力系統(tǒng)電路設(shè)計(jì)包含三個(gè)部件:兩個(gè)直流電機(jī)和一個(gè)L298N電機(jī)驅(qū)動(dòng)器。</p><p> L298N是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)4A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以
67、用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)一臺(tái)兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。</p><p> 該動(dòng)力系統(tǒng)與Mini2440的連接方式采用直接GPIO
68、控制,如圖 3-4所示。</p><p> 圖 3-4 機(jī)器人動(dòng)力系統(tǒng)電路設(shè)計(jì)圖</p><p> 無(wú)線通信系統(tǒng)電路設(shè)計(jì)</p><p> 機(jī)器人要與外部世界通信,必須具備一個(gè)通信系統(tǒng)。隨著現(xiàn)代通信技術(shù)的發(fā)展,WIFI、2G和3G等現(xiàn)代通信技術(shù)都非常成熟,已經(jīng)廣泛應(yīng)用于各行各業(yè)。本設(shè)計(jì)采用了目前成本比較低的WIFI方案,該方案有效通信距離可達(dá)300米左右,并且
69、可以頻道無(wú)需付費(fèi)使用,滿足驗(yàn)證本設(shè)計(jì)的實(shí)驗(yàn)條件。由于Mini2440具備了USB接口,對(duì)于本設(shè)計(jì)而已,只需要連接一個(gè)USB無(wú)線網(wǎng)卡即可。故機(jī)器人采用了TP-LINK WN721無(wú)線網(wǎng)卡,連接圖如圖 3-5所示。</p><p> 圖 3-5 無(wú)線通信系統(tǒng)連接圖</p><p> 機(jī)器人嵌入式系統(tǒng)平臺(tái)搭建</p><p><b> 構(gòu)建交叉編譯工具鏈&
70、lt;/b></p><p><b> 交叉編譯工具鏈簡(jiǎn)介</b></p><p> 嵌入式開(kāi)發(fā)一般都要使用交叉編譯環(huán)境。所謂交叉編譯就是在一臺(tái)機(jī)器上編譯軟件,其生成的軟件在另一臺(tái)不同類型處理器的機(jī)器上運(yùn)行。對(duì)于ARM處理器平臺(tái)來(lái)說(shuō),其處理器性能一般不足以支撐編譯適合自身架構(gòu)運(yùn)行的軟件。這就需要在X86機(jī)器上編譯生成適合ARM機(jī)器上運(yùn)行的軟件,在X86上編譯
71、的ARM架構(gòu)代碼的編譯器就是交叉編譯器。通常,對(duì)于不同的處理器,需要制作特定的交叉編譯工具鏈。</p><p> 用Crosstool-ng構(gòu)建交叉編譯工具鏈</p><p> Crosstool是由美國(guó)人Dan Kegel開(kāi)發(fā)的一套可以自動(dòng)編譯不同匹配版本的gcc和glibc,并作測(cè)試的腳本程序。它是一個(gè)開(kāi)源項(xiàng)目,但由于其近年來(lái)停止更新,最高只支持gcc 4.1.1和glibc 2.
72、3.6的版本,并且在編譯超過(guò)Linux 2.6.9以上的內(nèi)核時(shí),會(huì)出現(xiàn)錯(cuò)誤。而crosstool-ng則一直保持更新,現(xiàn)在最新能夠建立gcc 4.5.3版本及glibc 2.9版本,在編譯高版本的Linux內(nèi)核時(shí)也不會(huì)產(chǎn)生錯(cuò)誤,因此一般采用crosstool-ng來(lái)代替crosstool。</p><p> 使用crosstool-ng構(gòu)建交叉編譯工具鏈的主要步驟如下:</p><p>
73、 下載crosstool-ng源碼:</p><p><b> 執(zhí)行命令:</b></p><p> # hg clone http://crosstool-ng.org/hg/crosstool-ng</p><p> ?。˙)然后更新到最新的版本:</p><p><b> # hg pull<
74、;/b></p><p> 通過(guò)執(zhí)行上述兩個(gè)命令,已經(jīng)得到了最新版本的crosstool-ng源碼了。</p><p> 修改交叉編譯器針對(duì)的構(gòu)架:</p><p> ?。ˋ)解壓源碼后,使用圖形化工具配置crosstool-ng:</p><p> # make menuconfig</p><p>
75、(B)在出現(xiàn)的圖形界面中修改交叉編譯器選項(xiàng)以針對(duì)的ARM9構(gòu)架:</p><p> Target options ---></p><p> *** Target optimisations ***</p><p> (armv4t) Architecture level </p><p> (arm9tdmi) Emit a
76、ssembly for CPU </p><p> (arm920t) Tune for CPU</p><p><b> 編譯工具鏈:</b></p><p> 配置完后,在crosstool-ng編譯目錄下執(zhí)行命令:</p><p> # ct-ng build.4。</p><p&
77、gt; crosstool-ng就會(huì)自動(dòng)從網(wǎng)上下載相應(yīng)的源碼包通過(guò)編譯,制作出ARM9平臺(tái)的交叉編譯工具鏈。得到的交叉編譯工具鏈將用來(lái)編譯Bootload、Linux kernel、文件系統(tǒng)和應(yīng)用程序。</p><p> Bootloader移植</p><p> Bootloader簡(jiǎn)介</p><p> Bootloader類似PC的BIOS與硬盤MBR
78、中的引導(dǎo)程序,是操作系統(tǒng)啟動(dòng)時(shí)第一個(gè)運(yùn)行的程序。其作用就是在操作系統(tǒng)加載內(nèi)核運(yùn)行之前,完成對(duì)硬件的初始化。Bootloader與交叉編譯工具鏈一樣,對(duì)于不同的處理器架構(gòu)和硬件設(shè)計(jì),其實(shí)現(xiàn)也是不相同。Bootloader的工作一般分為兩個(gè)階段:Stage1是使用匯編語(yǔ)言實(shí)現(xiàn)對(duì)硬件相關(guān)部分的支持,如硬件初始化,設(shè)置CPU時(shí)鐘等。Stage2是用C語(yǔ)言實(shí)現(xiàn)的與硬件不相關(guān)的部分工作,包括檢測(cè)系統(tǒng)內(nèi)存映射,將Linux Kernel和文件系統(tǒng)映像
79、從Flash加載到RAM空間中等工作。</p><p><b> Uboot移植</b></p><p> Uboot是一個(gè)著名常用的開(kāi)源Bootloader程序,支持X86、ARM、MIPS和PowerPC等架構(gòu)的處理器。由于移植Uboot到三星S3C2440A微處理器上的過(guò)程過(guò)于繁瑣和復(fù)雜,本文僅對(duì)移植關(guān)鍵部分作出說(shuō)明。</p><p>
80、; 獲取Uboot源碼:</p><p> (A)克隆Uboot源碼:</p><p> # git clone git://git.denx.de/u-boot.git</p><p> ?。˙)切換到2010.03版本:</p><p> # git checkout v2010.03</p><p>
81、此時(shí)我們就得到了Uboot 2010.03版本的源碼。</p><p> 建立自己的處理器平臺(tái)的目標(biāo)編譯項(xiàng):</p><p> (A)在Uboot-2010.03的根目錄下面的Makefile中為robot2440建立編譯項(xiàng),以sbc2410x為模板例子。在Makefile中加上對(duì)mini2440板子的支持,將這個(gè)編譯項(xiàng)命名為robot2440:</p><p>
82、; robot2440_config : unconfig</p><p> @$(MKCONFIG) $(@:_config=) arm arm920t robot2440 NULL s3c24x0 </p><p><b> 各項(xiàng)的意思如下:</b></p><p> arm:CPU的架構(gòu)(ARCH)</p><
83、;p> arm920t:CPU的類型(CPU),其對(duì)應(yīng)于cpu/arm920t子目錄。</p><p> robot2440:開(kāi)發(fā)板的型號(hào)(BOARD),對(duì)應(yīng)于board/ robot2440目錄。</p><p> NULL:開(kāi)發(fā)者/或經(jīng)銷商(vender),NULL為沒(méi)有。</p><p> s3c24x0:片上系統(tǒng)(SOC)。</p>
84、<p> ?。˙)設(shè)置交叉編譯工具鏈,修改頂層Makefile的CROSS_COMPILE定義如下:</p><p> CROSS_COMPILE=arm-linux-</p><p> ?。–)以sbc2410x為模板例子,在/board目錄下建立robot2440文件夾,并在include/configs/中建立開(kāi)發(fā)板的配置頭文件,拷貝sbc2410x的文件到robot
85、2440和include/configs/中,并將sbc2410x命名的文件和定義改為robot2440。</p><p> 修改cpu/arm920t/start.S,根據(jù)S3C2440A數(shù)據(jù)手冊(cè)設(shè)置其時(shí)鐘,修改其代碼實(shí)現(xiàn)自動(dòng)識(shí)別從NAND Flash啟動(dòng)或者從Nor flash啟動(dòng)。</p><p> 根據(jù)Mini2440開(kāi)發(fā)的硬件設(shè)計(jì)手冊(cè),增加NAND Flash讀寫函數(shù),實(shí)現(xiàn)N
86、AND Flash的讀寫操作,從而能加載Uboot、內(nèi)核和文件系統(tǒng)硬件到NAND Flash中。</p><p> 增加對(duì)分區(qū)表的設(shè)置,該分區(qū)表需要與內(nèi)核設(shè)置的一致。</p><p> 生成相應(yīng)平臺(tái)的uboot映像:</p><p> # make robot2440_config </p><p><b> # make
87、</b></p><p> 至此,適應(yīng)S3C2440A微處理器的uboot已經(jīng)成功編譯出來(lái),將其用Jlink燒寫到NAND Flash中。</p><p> Linux Kernel移植</p><p><b> 獲取內(nèi)核源碼</b></p><p> 從Linux官網(wǎng)中下載2.6.32.2版本內(nèi)核源
88、碼:</p><p> # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz</p><p><b> 配置內(nèi)核</b></p><p> Linux kernel 2.6.32.2已經(jīng)對(duì)Mini2440開(kāi)發(fā)板提供了完善的支持,在配置內(nèi)核的過(guò)程主要
89、包括以下幾個(gè)部分:</p><p> ?。ˋ)修改arch/arm/mach-s3c2440/mach-mini2440.c中的分區(qū)表信息為:</p><p> static struct mtd_partition mini2440_default_nand_part[] = {</p><p><b> [0] = {</b></
90、p><p> .name = "Uboot",</p><p> .size = 0x00060000,</p><p> .offset = 0,</p><p><b> },</b></p><p><b> [1] = {</b>&l
91、t;/p><p> .name = "Param",</p><p> .offset = 0x00060000,</p><p> .size = 0x00020000,</p><p><b> },</b></p><p><b> [2] = {
92、</b></p><p> .name = "Kernel",</p><p> .offset = 0x00080000,</p><p> .size = 0x00500000,</p><p><b> },</b></p><p><b
93、> [3] = {</b></p><p> .name = "Root",</p><p> .offset = 0x00580000,</p><p> .size = SZ_256M - 0x00580000,</p><p><b> }</b></p
94、><p><b> };</b></p><p> (B)修改頂層Makefile文件中的編譯器為交叉編譯工具鏈:</p><p> ARCH ?= arm</p><p> CROSS_COMPILE ?= arm-linux-</p><p> ?。–)從網(wǎng)上獲取yaffs源碼,對(duì)內(nèi)核打上
95、補(bǔ)丁,增加對(duì)yaffs2文件系統(tǒng)的支持,進(jìn)入yaffs解壓文件的根目錄,執(zhí)行補(bǔ)丁命令:</p><p> # ./patch-ker.sh ../linux-2.6.32.2/</p><p> 在Linux kernel的配置選項(xiàng)中選中yaffs2文件系統(tǒng)的支持:</p><p> File systems ---></p><p&
96、gt; [*] Miscellaneous filesystems ---></p><p> [*] JFFS2 write-buffering support</p><p><b> 編譯</b></p><p> 配置好內(nèi)核選項(xiàng)后,編譯內(nèi)核image:</p><p> # make Mini24
97、40_defconfig</p><p> # make zImage</p><p> 至此,內(nèi)核的移植已經(jīng)完成,將arch/arm/boot/zImage文件下載到NAND Flash中。</p><p><b> 文件系統(tǒng)構(gòu)建</b></p><p> Yaffs2文件系統(tǒng)簡(jiǎn)介</p><
98、;p> YAFFS,Yet Another Flash File System,是一種類似于JFFS/JFFS2的專門為Flash設(shè)計(jì)的嵌入式文件系統(tǒng)。與JFFS相比,它減少了一些功能,因此速度更快、占用內(nèi)存更少。YAFFS提供了寫均衡,垃圾收集等底層操作。</p><p> Yaffs2文件系統(tǒng)移植</p><p> Mini2440廠家已經(jīng)提供了一個(gè)比較強(qiáng)大的yaffs2文
99、件系統(tǒng),本設(shè)計(jì)對(duì)uboot和內(nèi)核進(jìn)行了移植,已經(jīng)支持了yaffs2文件系統(tǒng)。故Mini2440自帶的yaffs2文件系統(tǒng)完全具備在新uboot和內(nèi)核上運(yùn)行的基礎(chǔ)。本設(shè)計(jì)將廣州友善之臂計(jì)算機(jī)科技有限公司提供的Mini2440的yaffs2文件系統(tǒng)裁剪了QTOPIA 和QT EMBEDDED 4.6.3程序,重新配置啟動(dòng)腳本,使之適應(yīng)本設(shè)計(jì)的運(yùn)行要求。</p><p> 機(jī)器人嵌入式中控系統(tǒng)軟件和手持控制終端軟件設(shè)
100、計(jì)</p><p> 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì)</p><p> 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì)總述</p><p> 機(jī)器人中控系統(tǒng)軟件是機(jī)器人控制的核心軟件,負(fù)責(zé)對(duì)整個(gè)機(jī)器人的運(yùn)動(dòng)控制、信息采集和遠(yuǎn)程控制處理工作。該中控系統(tǒng)是基于嵌入式Linux系統(tǒng)而設(shè)計(jì)的,應(yīng)用了Linux驅(qū)動(dòng)、網(wǎng)絡(luò)編程和多線程編程等知識(shí)。根據(jù)機(jī)器人的功能要求,其軟件控制部分共分為傳感器軟件模塊、
101、運(yùn)動(dòng)控制模塊和網(wǎng)絡(luò)通信模塊,如圖5-1機(jī)器人中控軟件系統(tǒng)框架圖所示。</p><p> 圖 5-1 機(jī)器人中控軟件系統(tǒng)框架圖</p><p> 機(jī)器人中控系統(tǒng)軟件整體程序設(shè)計(jì)</p><p> 機(jī)器人中控系統(tǒng)軟件在軟件實(shí)現(xiàn)上,采用Linux的多線程編程技術(shù)和網(wǎng)絡(luò)通信技術(shù),可以更好的滿足對(duì)機(jī)器人各個(gè)部件控制和網(wǎng)絡(luò)通信的實(shí)時(shí)要求。多線程程序采用多任務(wù)、并發(fā)的工作方
102、式,可以提高應(yīng)用程序響應(yīng)時(shí)間并且改善程序結(jié)構(gòu)。</p><p> 機(jī)器人中控系統(tǒng)軟件主要通過(guò)四個(gè)線程來(lái)實(shí)現(xiàn):主線程、網(wǎng)絡(luò)消息服務(wù)器線程和網(wǎng)絡(luò)消息處理線程以及心跳線程,如圖5-2所示。</p><p> 圖 5-2 機(jī)器人中控系統(tǒng)軟件整體程序設(shè)計(jì)說(shuō)明圖</p><p> 傳感器驅(qū)動(dòng)軟件模塊設(shè)計(jì)</p><p> 1、USB攝像頭驅(qū)動(dòng)和圖
103、像采集功能實(shí)現(xiàn)</p><p> 本設(shè)計(jì)采用的基于中星微ZC301芯片的USB攝像頭的驅(qū)動(dòng)已經(jīng)被Linux內(nèi)核支持了,對(duì)于USB攝像頭采集圖像功能,只需利用Linux系統(tǒng)提供的V4L接口編程就可以實(shí)現(xiàn)。對(duì)V4L編程主要有以下幾個(gè)步驟:</p><p><b> 打開(kāi)設(shè)備;</b></p><p><b> 設(shè)置設(shè)備的屬性;<
104、;/b></p><p> 設(shè)定傳輸格式和傳輸方式;</p><p><b> 開(kāi)始傳輸數(shù)據(jù);</b></p><p><b> 關(guān)閉設(shè)備。</b></p><p> 對(duì)于機(jī)器人中控系統(tǒng)而言,進(jìn)行圖像采集,只需調(diào)用底層實(shí)現(xiàn)的功能函數(shù)即可。對(duì)攝像頭控制,先要調(diào)用libCam_OpenCa
105、mera功能函數(shù)打開(kāi)該設(shè)備并對(duì)其進(jìn)行初始化,設(shè)置采集圖像的大小。在設(shè)置完成后,調(diào)用libCam_OpenCamera功能函數(shù)獲取到格式為JPEG的圖像數(shù)據(jù)。</p><p> /*打開(kāi)和初始化攝像頭*/</p><p> int libCam_OpenCamera(char *camera_dev, int w_size, int h_size)</p><p>
106、; /*獲取圖像函數(shù)*/</p><p> int libCam_GetImage(char* image_data, int image_size) </p><p><b> 2、GPS數(shù)據(jù)采集</b></p><p> 本設(shè)計(jì)采用的GPS設(shè)備是支持串口傳輸?shù)?,Linux 操作系統(tǒng)從一開(kāi)始就對(duì)串口提供了很好的支持。GPS上電后會(huì)自動(dòng)
107、傳輸當(dāng)前經(jīng)緯度等數(shù)據(jù)到串口上,只需要往串口讀取數(shù)據(jù)就可以了。串口編程主要有以下幾個(gè)步驟:</p><p><b> 打開(kāi)串口;</b></p><p> 設(shè)置串口屬性,如設(shè)置波特率;</p><p><b> 讀寫串口;</b></p><p><b> 關(guān)閉串口。</b&g
108、t;</p><p> 對(duì)于機(jī)器人中控系統(tǒng)而言,進(jìn)行GPS數(shù)據(jù)采集,只需調(diào)用功能函數(shù)libGPS_ReadGPS,GPS數(shù)據(jù)就存儲(chǔ)到gpsData結(jié)構(gòu)體變量中。</p><p> /*讀GPS數(shù)據(jù)*/</p><p> int libGPS_ReadGPS(int fd, struct gpsData *data)</p><p>
109、3、電子羅盤數(shù)據(jù)采集</p><p> 本設(shè)計(jì)采用的電子羅盤同樣是支持串口數(shù)據(jù)傳輸?shù)?,機(jī)器人中控系統(tǒng)讀取其數(shù)據(jù)只需調(diào)用功能函數(shù)libCom_ReadDegree往串口讀數(shù)據(jù)即可,函數(shù)返回值即為當(dāng)前地磁偏角的度數(shù)。</p><p> /*讀電子羅盤數(shù)據(jù)*/</p><p> int libCom_ReadDegree()</p><p>
110、 機(jī)器人運(yùn)動(dòng)控制模塊設(shè)計(jì)</p><p> 機(jī)器人需要實(shí)現(xiàn)運(yùn)動(dòng),必須要提供前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止功能。對(duì)于這五個(gè)功能,是靠驅(qū)動(dòng)兩個(gè)直流電機(jī)來(lái)實(shí)現(xiàn)的。通過(guò)使能L298N電機(jī)驅(qū)動(dòng)板上的M1EN和M2EN兩個(gè)引腳,使電機(jī)處于受控狀態(tài)。分別給M1+、M1-和M2+、M2-加上低電平或者高電平,就能實(shí)現(xiàn)以下五個(gè)功能。對(duì)機(jī)器人中控系統(tǒng)而言,這五個(gè)功能就相當(dāng)于五個(gè)狀態(tài),而要控制機(jī)器人只需調(diào)用libDriver_rob
111、ot功能函數(shù),傳入相應(yīng)的狀態(tài)就可驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng)。</p><p> /* 機(jī)器人運(yùn)動(dòng)控制函數(shù) */</p><p> int libDriver_robot(unsigned int ctrlStatus)</p><p><b> 運(yùn)動(dòng)狀態(tài):</b></p><p> #define ROBOT_STATUS_
112、NONE 0x00</p><p> #define ROBOT_STATUS_RUN 0x01</p><p> #define ROBOT_STATUS_STOP 0x02</p><p> #define ROBOT_STATUS_UP 0x03</p><p> #defi
113、ne ROBOT_STATUS_DOWN 0x04</p><p> #define ROBOT_STATUS_RIGHT 0x05</p><p> #define ROBOT_STATUS_LEFT 0x06</p><p> 機(jī)器人網(wǎng)絡(luò)通信模塊設(shè)計(jì)</p><p><b> 1、TCP協(xié)
114、議簡(jiǎn)介</b></p><p> TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transport layer)通信協(xié)議。其具有的特點(diǎn)如下:</p><p> ?。?)面向連接的傳輸;</p><p> ?。?)端到端的通信;</p><p> (3)高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;<
115、/p><p> (4)全雙工方式傳輸;</p><p> (5)采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列;</p><p> ?。?)緊急數(shù)據(jù)傳送功能。</p><p> 2、Socket編程簡(jiǎn)介</p><p> 對(duì)于TCP協(xié)議數(shù)據(jù)通信,要先建立連接。服務(wù)器端要先調(diào)用socket()函數(shù)創(chuàng)建一個(gè)TCP套接字,函
116、數(shù)bind()將本地IP地址綁定在一起,并可指定服務(wù)器的端口號(hào)和接受的客戶端的IP地址范圍。然后調(diào)用函數(shù)listen()將套接字轉(zhuǎn)化為傾聽(tīng)套接字。當(dāng)有連接到來(lái)的時(shí)候,accept()返回一個(gè)新的套接字與客戶端通信。當(dāng)客戶端通過(guò)connect()和服務(wù)器建立連接后就可以通過(guò)read()和write()傳送數(shù)據(jù)。通信完成通過(guò)close()關(guān)閉套接字。</p><p> 3、機(jī)器人網(wǎng)絡(luò)編程模塊程序設(shè)計(jì)</p&g
117、t;<p> 本設(shè)計(jì)利用了TCP協(xié)議和Linux Socket編程,實(shí)現(xiàn)了基礎(chǔ)的網(wǎng)絡(luò)庫(kù),提供了非阻塞方式連接服務(wù)器、讀寫網(wǎng)絡(luò)數(shù)據(jù)和創(chuàng)建服務(wù)器以及檢測(cè)超時(shí)連接等功能函數(shù)。</p><p> 由于進(jìn)行網(wǎng)絡(luò)通信的時(shí)候,網(wǎng)絡(luò)很有可能會(huì)遇到異常的情況。為了處理這種情況,本設(shè)計(jì)采用了非阻塞的方式來(lái)進(jìn)行網(wǎng)絡(luò)通信。對(duì)套接字sock設(shè)置為O_NONBLOCK后,通過(guò)函數(shù)fcntl(sock, F_SETFL, O
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于arm的robocup的足球機(jī)器人畢業(yè)論文
- 畢業(yè)論文+機(jī)器人的運(yùn)動(dòng)與控制
- 基于Android系統(tǒng)的遠(yuǎn)程機(jī)器人控制技術(shù).pdf
- 基于ARM的護(hù)理服務(wù)機(jī)器人遠(yuǎn)程監(jiān)護(hù)控制系統(tǒng).pdf
- 機(jī)器人搜救畢業(yè)論文
- 消防機(jī)器人畢業(yè)論文
- 工業(yè)機(jī)器人畢業(yè)論文
- 智能機(jī)器人畢業(yè)論文
- 基于web的遠(yuǎn)程機(jī)器人控制技術(shù)的研究.pdf
- 足球機(jī)器人畢業(yè)論文
- 基于ARM9的機(jī)器人遠(yuǎn)程控制系統(tǒng)研究.pdf
- 基于網(wǎng)絡(luò)的遠(yuǎn)程機(jī)器人控制技術(shù)研究.pdf
- 基于外骨骼技術(shù)的機(jī)器人遠(yuǎn)程控制.pdf
- 畢業(yè)論文-足球機(jī)器人控制系統(tǒng)設(shè)計(jì)
- 基于串行通信技術(shù)的機(jī)器人實(shí)時(shí)控制研究.pdf
- 基于ARM的機(jī)器人控制系統(tǒng)設(shè)計(jì).pdf
- 管道清潔機(jī)器人畢業(yè)論文
- 畢業(yè)論文外文翻譯(機(jī)器人)
- 畢業(yè)論文外文翻譯--機(jī)器人
- 基于網(wǎng)絡(luò)的遠(yuǎn)程機(jī)器人嵌入式控制與通信研究.pdf
評(píng)論
0/150
提交評(píng)論