www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于LPC2210的嵌入式Linux開發(fā)平臺構(gòu)建

     摘要:本文描述了ARM7 與uCLinux 操作系統(tǒng)的特點,詳細討論了基于ARM7 與uCLinux開發(fā)的平臺構(gòu)建過程。利用構(gòu)建好的開發(fā)平臺,通過示例來說明了基于NFS 方式的嵌入式Linux 的應(yīng)用程序開發(fā)流程,該開發(fā)平臺將進一步應(yīng)用于放射性氣體氣溶膠連續(xù)監(jiān)測系統(tǒng)的數(shù)據(jù)采集。

  0 引言

  隨著網(wǎng)絡(luò)、通信、多媒體和信息家電時代的到來,嵌入式系統(tǒng)在經(jīng)歷了近 20 年的發(fā)展歷程之后,進入了一個全新的發(fā)展階段。Linux 操作系統(tǒng)以其穩(wěn)定性好、可靠性高、源代碼公開、可裁剪等優(yōu)點已成為嵌入式領(lǐng)域的一股新興力量,具有巨大的市場潛力和商業(yè)價值。而ARM 處理器是目前應(yīng)用的最為廣泛的嵌入式處理器架構(gòu)。因此,將Linux 操作系統(tǒng)移植到ARM 處理器平臺上并應(yīng)用于實際的產(chǎn)品是最為流行的嵌入式產(chǎn)品解決方案。

  放射性氣體氣溶膠監(jiān)測系統(tǒng)的數(shù)據(jù)采集與處理一般是以 8 位單片機作為控制核心,直接導(dǎo)致硬件電路復(fù)雜、設(shè)計和調(diào)試難度加大、集成度低、穩(wěn)定性差、系統(tǒng)升級難度較大等缺點。因此,本文采用LPC2210+uCLinux 的開發(fā)模式來設(shè)計整個監(jiān)測系統(tǒng)的數(shù)據(jù)采集與處理模塊,能夠很好的提升整個系統(tǒng)的穩(wěn)定性和可操作性。其中LPC2210 是基于32 位ARM7TDMI 內(nèi)核的處理器,uCLinux 操作系統(tǒng)是開放源代碼的嵌入式Linux 的典范之作,主要針對沒有MMU(存儲器管理單元)的處理器,具有良好的可移植性和優(yōu)秀的網(wǎng)絡(luò)功能。

  1 硬件平臺介紹

  硬件平臺采用 LPC2210 為系統(tǒng)硬件核心開發(fā)板,系統(tǒng)框圖如圖1 所示。主要包括:存儲系統(tǒng)、系統(tǒng)接口、用戶接口3 個部分。LPC2000 系列ARM7 處理器I/O 口供電電源為3.3V,內(nèi)核及片內(nèi)外設(shè)供電電源為1.8V,所以,系統(tǒng)設(shè)計為3.3V 應(yīng)用系統(tǒng)。該系列的處理器可以使用外部時鐘源,內(nèi)部PLL 電路可調(diào)整系統(tǒng)時鐘,使系統(tǒng)運行速度更快(CPU 最大操作時鐘為60MHz)。

  該硬件平臺擴展了2MB NOR Flash 和8MB PSRAM。為了方便程序調(diào)試以及最終代碼的固化應(yīng)用,使用LPC2210 外部存儲器接口的Bank0 和Bank1 地址空間。在使用uCLinux操作系統(tǒng)時,NOR Flash 用來存放bootloader 程序,以便于加載并引導(dǎo)放在NAND Flash 中的uCLinux 內(nèi)核。

  LPC2210 具有外部總線接口,設(shè)計電路為16 位總線方式對網(wǎng)卡芯片RTL8019AS 進行訪問,即數(shù)據(jù)總線D0~D15 與網(wǎng)卡芯片的SD0~SD15 連接,由于RTL8019AS 工作電壓是5V,而LPC2210 的I/O 電壓是3.3V,故需在總線上串接470 歐的保護電阻。網(wǎng)卡芯片的Vih 最小值為2.0V,故與LPC2210 連接時不需要加電平轉(zhuǎn)換芯片。


圖 1 系統(tǒng)結(jié)構(gòu)框圖

  2 嵌入式Linux 開發(fā)平臺的構(gòu)建

  本研究采用在宿主機上編寫程序,然后通過交叉編譯生成目標(biāo)平臺上可以運行的可執(zhí)行文件,最后下載到目標(biāo)板的特定位置運行的方法構(gòu)建平臺,即通常稱為的“宿主機+目標(biāo)板”的開發(fā)模式,如圖2 所示。目標(biāo)板分別通過RS-232 串口和RJ-45 以太網(wǎng)接口與宿主機連接。

  宿主機上需要運行 2 個窗口,即宿主機本機操作窗口和串口終端窗口。宿主機操作窗口可以是本機的操作終端,也可以是通過遠程登錄登錄到Linux 服務(wù)器的操作界面。串口終端窗口可以是Linux 下的minicom,也可以是windows 下的超級終端。目標(biāo)板可以看成一臺計算機,串口終端就相當(dāng)于這臺計算機的顯示器,作為人機交互界面。在宿主機編譯、鏈接后得到的可執(zhí)行文件下載到目標(biāo)板上運行。

 

圖2 嵌入式Linux 交叉開發(fā)環(huán)境[!--empirenews.page--]

  2.1 uCLinux 操作系統(tǒng)的移植

  在開始移植操作系統(tǒng)之前,先準(zhǔn)備好移植所需要的軟件包,主要包括:交叉編譯所需的編譯工具包、uCLinux 源碼包、完整的bootloader 程序及根文件系統(tǒng)。上述二種工具包都有眾多版本,本文分別選擇的是uCLinux-dist-20040408.tar.gz、arm-elf-tools-20040427.sh。整個移植工作分為三步:建立交叉編譯環(huán)境;編譯配置內(nèi)核;bootloader 及根文件系統(tǒng)的移植。

  2.1.1 建立交叉編譯環(huán)境

  將工具包 arm-elf-tools-20040427.sh 拷貝到目錄/usr/src 下,為其增加可執(zhí)行權(quán)限(#chmod755 arm-elf-tools-20040427.sh);然后安裝arm-elf-gcc(# ./ arm-elf-tools-20040427.sh),安裝完畢后查看/usr/local/bin 目錄下是否存在arm-elf-gcc 等文件,如存在,表明交叉編譯器安裝成功;最后是添加交叉編譯的路徑,這一步在安裝過程會自動執(zhí)行和保存,并在下次啟動之后仍然有效(#export PATH=$PATH:/usr/local/arm-elf/bin)。至此,交叉編譯環(huán)境已經(jīng)建立完畢。

  2.1.2 交叉編譯uCLinux 內(nèi)核

  在交叉編譯內(nèi)核之前,首先要對編譯選項進行配置。為了配置過程的直觀性,一般選擇“make menuconfig”命令,進入uCLinux v3.1.0 Configuration 界面,主要是設(shè)置嵌入式處理器的型號以及操作系統(tǒng)的版本,然后選擇Default all settings 后進行編譯即可。交叉編譯工作一次由以下命令完成:

  #cd /usr/src/uCLinux-dist // uCLinux-dist 為uCLinux 源代碼所在目錄

  #make distclean // 清除上一次編譯所產(chǎn)生的輔助文件和目標(biāo)文件

  #make menuconfig // 通過文本菜單方式配置uCLinux

  #make dep // 建立源代碼文件的依賴關(guān)系

  #make //編譯內(nèi)核

  編譯結(jié)束之后會在 uCLinux 安裝目錄下建立romfs 和images 兩個目錄。其中romfs 為romfs 文件系統(tǒng)的臨時存放目錄;images 為生成的目標(biāo)代碼目錄,其中romfs.img 為romfs文件系統(tǒng)的映像文件,image.bin 為文件系統(tǒng)和內(nèi)核代碼的目標(biāo)文件。

  2.1.3 bootloader 及根文件系統(tǒng)的移植

  通過 RS-232 串口將完整的bootloader 程序下載到目標(biāo)板的NOR Flash 中。主要工作是在WinXP 下設(shè)置超級終端,波特率38400、8 位數(shù)據(jù)位、1 位停止位、無奇偶校驗位、無流控制。通過運行下載程序,可以將bootloader 下載到NOR Flash 中。

  建立 uCLinux 超級終端,設(shè)置波特率為115200、8 位數(shù)據(jù)位、1 位停止位、無奇偶校驗位、無流控制。命名為uCLinux。然后啟動開發(fā)板,在超級終端中也即嵌入式開發(fā)板的“顯示器”中,可以看到bootloader 的啟動界面,通過FlashFXP 軟件可以將目錄bin、boot、etc下的文件下載到開發(fā)板。

  2.1.4 uCLinux 的啟動

  通過 bootloader 轉(zhuǎn)載和引導(dǎo)剛剛生成的內(nèi)核和文件系統(tǒng)。bootloader 引導(dǎo)內(nèi)核的方式是:將內(nèi)核影像文件和根文件系統(tǒng)下載至PSRAM 中直接啟動,而不是從NAND Flash 中讀入PSRAM,這種方法不需要燒寫Flash。如圖3 是uCLinux 操作系統(tǒng)啟動后的界面。


 


圖3 uCLinux 操作系統(tǒng)的啟動界面

  2.2 NFS 輔助開發(fā)環(huán)境的建立

  網(wǎng)絡(luò)文件系統(tǒng)(NFS,Network File System)是一種將遠程主機上的分區(qū)(目錄)經(jīng)網(wǎng)絡(luò)掛載到本地系統(tǒng)的一種機制,通過對網(wǎng)絡(luò)文件系統(tǒng)的支持,用戶可以在本地系統(tǒng)上像操作本地分區(qū)一樣來對遠程主機的共享分區(qū)(目錄)進行操作。因此,通過建立NFS,把Linux 宿主機上的特定分區(qū)共享到待調(diào)試的目標(biāo)板上,就可以直接在目標(biāo)板上操作Linux 宿主機的特定分區(qū),同時可以在線對程序進行調(diào)試和修改,大大方便了軟件的開發(fā)。故NFS 是嵌入式Linux 開發(fā)的一個重要組成部分,下面詳細說明如何建立NFS 輔助開發(fā)環(huán)境。

  2.2.1 宿主機端NFS 服務(wù)器的配置

  以 root 身份登錄Linux 服務(wù)器,編輯/etc 目錄下的共享目錄配置文件exports,指定共享目錄及權(quán)限等。

  執(zhí)行如下命令編輯文件 /etc/exports:

  #vi /etc/exports

  在該文件中添加如下內(nèi)容:

  /home/work 192.168.0.* (rw, sync, no_root_squash)

  然后保存退出。

  添加的內(nèi)容表示允許 IP 地址范圍在192.168.0.*的計算機以讀寫的權(quán)限來訪問/home/work 目錄。

  其中,/home/work 也稱為服務(wù)器輸出共享目錄;rw 讀寫權(quán)限;sync 數(shù)據(jù)同步寫入內(nèi)存和硬盤;no_root_squash 為NFS 服務(wù)器共享目錄用戶的屬性,如果用戶是root,那么對于這個共享目錄來說就具有root 權(quán)限。

  接著執(zhí)行如下命令,以啟動端口映射:

  #/etc/rc.d/init.d/portmap start

  最后執(zhí)行如下命令啟動 NFS 服務(wù),此時NFS 就會激活守護進程,然后開始*client 端的請求:

  #/etc/rc.d/init.d/nfs start

  在 NFS 服務(wù)器啟動后,還需檢查Linux 服務(wù)器的防火墻等設(shè)置(一般需要關(guān)閉防火墻服務(wù)),確保沒有屏蔽掉NFS 使用的端口和允許通信的主機,主要是檢查Linux 服務(wù)器iptables,ipchains 等選項的設(shè)置,以及/etc/hosts.deny,/etc/hosts.allow 等文件。

  到此,宿主機端 NFS 服務(wù)器配置完成。

  最后在宿主機上進行 NFS 服務(wù)器的回環(huán)測試,驗證共享目錄是否能夠被訪問。在宿主機上運行如下命令:

  # mount –t nfs –o nolock 192.168.0.10:/home/work /mnt

  # ls /mnt

  命令將宿主機的 NFS 輸出共享目錄掛載到/mnt 目錄下,因此如果NFS 配置正確的話,應(yīng)該可以在/mnt 目錄下看到/home/work 共享目錄的內(nèi)容。

  2.2.2 目標(biāo)板端NFS 客戶端的配置

  在宿主機端的設(shè)置成功之后,還需要對客戶端進行相關(guān)的設(shè)置。在目標(biāo)板系統(tǒng)的命令行下,執(zhí)行如下命令來進行NFS 共享目錄的掛載:

  /> mkdir /mnt/nfs //建立宿主機輸出共享目錄的掛載點

  /> mount –t nfs –o nolock 192.168.0.10:/home/work /mnt/nfs

  /> cd /mnt/nfs

  /> ls

  此時,目標(biāo)板終端所顯示的內(nèi)容即為宿主機的輸出目錄的內(nèi)容,即宿主機的輸出目錄/home/work 通過NFS 映射到了嵌入式目標(biāo)板的/mnt/nfs 目錄。由于Linux 默認下不啟動NFS,每次宿主機進入Linux 之后都要重新完成NFS 的啟動和掛載,比較麻煩??梢詫⒁陨系拿顚懭胨拗鳈C的腳本文件/etc/rc.d/rc.local 中,宿主機啟動時會執(zhí)行此文件。[!--empirenews.page--]

  3 嵌入式Linux 應(yīng)用程序的開發(fā)

  完成上述工作之后,嵌入式Linux 開發(fā)平臺搭建成功。在這個平臺上即可以進行相關(guān)應(yīng)用程序的開發(fā)。本文采用NFS 方式進行應(yīng)用程序的開發(fā)。

  基于 NFS 方式的應(yīng)用程序開發(fā),首先在宿主機上通過vi 編輯器進行源代碼的編輯,然后通過交叉編譯,最后生成可執(zhí)行文件,在嵌入式目標(biāo)板端通過NFS 方式掛載宿主機的共享分區(qū),讓應(yīng)用程序直接運行在嵌入式目標(biāo)系統(tǒng),并進行調(diào)試?;?NFS 方式的開發(fā)流程如圖4 所示。



圖 4 基于NFS 方式的開發(fā)流程圖

  當(dāng)開發(fā)人員完成了應(yīng)用程序的調(diào)試之后,可以將調(diào)試好的應(yīng)用程序下載到目標(biāo)系統(tǒng)的Flash 中或者直接編譯到嵌入式Linux 內(nèi)核中,從而最終形成一個獨立的嵌入式應(yīng)用系統(tǒng)。下面介紹一個示例來說明基于嵌入式 Linux的應(yīng)用程序開發(fā)流程。該示例使用MiniGUI的靜態(tài)框、按鈕和編輯框空間,實現(xiàn)一個Login 系統(tǒng)登錄的對話框。對話框中要求輸入用戶名和密碼,如果輸入正確的用戶名和密碼(例如用戶名為51,密碼為888888)則進入系統(tǒng)(顯示一個主窗口),否則彈出錯誤對話框,并要求用戶再次輸入用戶名和密碼。實現(xiàn)本示例之前,必須確保已經(jīng)搭建好MiniGUI 編譯和開發(fā)板上的運行環(huán)境。

  實驗步驟如下:

  第一步:編輯源程序

  在宿主機的工作目錄/home/work 下使用vi 編輯器編輯源程序,源程序名為login.c。

  部分程序源代碼如下:

  // 定義對話框

  static DLGTEMPLATE MyDlg =

  { WS_BORDER | WS_CAPTION,

  WS_EX_NONE,

  2, 50, 235, 190,

  "登錄",

  0,

  0,

  6,

  NULL,

  0

  };

  // 定義對話框中的控件

  static CTRLDATA CtrlInitData[] =

  {

  { "static",

  WS_VISIBLE | SS_SIMPLE,

  25,10, 200, 16,

  IDC_SLOGIN,

  "請輸入用戶名和密碼.",

  0,

  WS_EX_NONE

  },

  { "static",

  WS_VISIBLE | SS_SIMPLE,

  10,40, 60, 16,

  IDC_SUSER,

  "用戶名:",

  0,

  WS_EX_NONE

  },

  { "static",

  WS_VISIBLE | SS_SIMPLE,

  10,80, 60, 16,

  IDC_SPASS,

  "密碼:",

  0,

  WS_EX_NONE

  },

  { "edit",

  WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,

  70,40, 140,25,

  IDC_EUSER,

  "",

  0,

  WS_EX_NONE

  },

  { "edit",

  WS_CHILD | WS_VISIBLE | WS_BORDER | ES_PASSWORD | WS_TABSTOP,[!--empirenews.page--]

  70,80, 140,25,

  IDC_EPASS,

  "",

  0,

  WS_EX_NONE

  },

  { "button",

  WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,

  80,120, 80,25,

  IDOK,

  "確定",

  0,

  WS_EX_NONE

  }

  };

  //設(shè)置用戶名和密碼

  #define USER_NO 3

  static char *g_user[USER_NO] = {"root",

  "51",

  "WXM"

  };

  static char *g_pass[USER_NO] = {"******",

  "888888",

  "2046"

  };

  第二步:修改對應(yīng)的 Makefile.am 文件,設(shè)置編譯login.c 文件

  在命令行下輸入 # make

  當(dāng)命令執(zhí)行完畢之后,會在當(dāng)前目錄下生成名為login 的可執(zhí)行文件。

  第三步:在目標(biāo)板掛載共享目錄,并運行程序。

  /> cd usr

  />usr> portmap&

  [26]

  /usr> mount –t nfs 192.168.0.10:/home/work /usr/pro –o nolock //掛載共享目錄

  />cd /usr/pro

  /usr/pro ./login //運行程序,顯示登入對話框

  第四步:使用目標(biāo)板上的功能鍵 0~9 輸入用戶名和密碼,使用TAB 鍵轉(zhuǎn)移到下一個焦點,使用BACK 鍵刪除已輸入的字符,使用ENTER 確定輸入。當(dāng)用戶名和密碼輸入正確時,登錄成功,登入界面被關(guān)閉,并顯示一個MiniGUI 主窗口。如圖5 示:

圖5 “登入”對話框和歡迎界面

  4 結(jié)束語

  作為實時放射性氣體氣溶膠監(jiān)測系統(tǒng)的數(shù)據(jù)采集系統(tǒng)開發(fā)的重要組成部分,本文通過分析ARM7 和uCLinux 特點,將二者有機結(jié)合,構(gòu)建了ARM7+uCLinux 的嵌入式通用開發(fā)平臺,并展示了應(yīng)用該開發(fā)平臺開發(fā)應(yīng)用程序的詳細過程。該平臺的應(yīng)用克服了大多數(shù)實時監(jiān)測系統(tǒng)因采用8 位單片機為控制核心實現(xiàn)數(shù)據(jù)采集而帶來的硬件電路復(fù)雜、穩(wěn)定性差、升級困難等問題。故本文作者創(chuàng)新點:通過采用ARM7+uCLinux 的嵌入式通用開發(fā)平臺克服了大多數(shù)實時監(jiān)測系統(tǒng)硬件電路復(fù)雜、穩(wěn)定性差、升級困難等缺點;同時采用該開發(fā)平臺在開發(fā)過程中使用NFS 方式下載開發(fā)的應(yīng)用程序,為嵌入式應(yīng)用軟件的開發(fā)節(jié)省了大量的時間,大大提高了開發(fā)效率。


 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

(全球TMT2022年7月19日訊)在2022年"亞馬遜黃金日"期間,全球化IoT開發(fā)平臺服務(wù)商涂鴉智能(Tuya Smart)在領(lǐng)英、推特等社交媒體上發(fā)起了"BornSmart"聯(lián)合營銷活動。智能產(chǎn)品內(nèi)置的智能程序可...

關(guān)鍵字: SMART 亞馬遜 開發(fā)平臺 新加坡

北京2022年3月28日 /美通社/ -- 如果說現(xiàn)在實體制造業(yè)中哪個行業(yè)最火,汽車業(yè)毫無疑問位列其中,隨著新能源與智能化時代的到來,未來十年將是汽車產(chǎn)業(yè)巨變的十年。智能駕駛系統(tǒng)作為新一代智能汽車產(chǎn)業(yè)鏈的重要部分,是汽車...

關(guān)鍵字: 開發(fā)平臺 智能駕駛

(全球TMT2022年3月29日訊)MAXIEYE是一家智能駕駛和智慧出行領(lǐng)域的核心技術(shù)服務(wù)商,廣泛服務(wù)于商用車和乘用車前裝市場。為了確保AI資源平臺算力供給,MAXIEYE分別采用多臺浪潮信息AI服務(wù)器,搭載最新A1...

關(guān)鍵字: 開發(fā)平臺 智能駕駛

(全球TMT2022年3月22日訊)作為國內(nèi)唯一實現(xiàn)汽車智能芯片前裝量產(chǎn)的企業(yè),地平線截至目前芯片的出貨量已經(jīng)超過了50萬片。地平線成為國內(nèi)唯一覆蓋L2到L4的全場景整車智能芯片方案提供商。地平線選擇與浪潮信息合作升級...

關(guān)鍵字: 開發(fā)平臺 汽車智能 智能芯片

北京2022年3月22日 美通社/ -- “智能駕駛芯片的競爭從一開始就是世界杯的決賽,我們的目標(biāo)是世界冠軍”,地平線創(chuàng)始人兼CEO余凱曾談到。在這個領(lǐng)域目前只有三家企業(yè)可實現(xiàn)智能駕駛芯片車規(guī)級的前裝量產(chǎn) -- 英特爾旗...

關(guān)鍵字: 開發(fā)平臺 智能駕駛

憑借ZOHO在低代碼領(lǐng)域15年的積累與沉淀,潛心打造的新一代Zoho Creator開發(fā)平臺幫助IT團隊和業(yè)務(wù)用戶構(gòu)建復(fù)雜、現(xiàn)代及合規(guī)的解決方案,以獲得安全、易用且個性化的低代碼體驗,直面企業(yè)數(shù)字化轉(zhuǎn)型需求。 北京20...

關(guān)鍵字: 代碼 開發(fā)平臺 進程

(全球TMT2022年3月7日訊)云計算公司ZOHO發(fā)布了新一代低代碼工具 -- Zoho Creator聯(lián)合開發(fā)平臺,其功能擴展到涵蓋解決方案的開發(fā)、部署和管理三個階段,旨在通過一站式低代碼解決方案幫助企業(yè)/組織探索...

關(guān)鍵字: 代碼 開發(fā)平臺

(全球TMT2022年1月17日訊)企業(yè)應(yīng)用開發(fā)全球領(lǐng)導(dǎo)者Mendix,a Siemens business宣布,其低代碼軟件快速開發(fā)平臺迎來進入中國市場一周年。Mendix于2021年1月19日將其全球領(lǐng)先的低代碼軟...

關(guān)鍵字: 快速開發(fā) 軟件 開發(fā)平臺

如果世界上有一款能滿足企業(yè)所有數(shù)字化需求的統(tǒng)一平臺,那一定是Zoho Creator。 北京2021年11月23日 /美通社/ -- 近日,企...

關(guān)鍵字: 代碼 開發(fā)平臺 數(shù)字化

(全球TMT2021年11月22日訊)機智云IoT開發(fā)平臺通過多年技術(shù)沉淀,掌握并研發(fā)工業(yè)互聯(lián)網(wǎng)大數(shù)據(jù)平臺技術(shù)、邊緣計算和采集、AI應(yīng)用服務(wù)及5G通訊技術(shù),開發(fā)出工業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)平臺和系列智能化硬件產(chǎn)品,產(chǎn)品涵蓋模組、...

關(guān)鍵字: 開發(fā)平臺 智能化 AI

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉