在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 【E問E答】嵌入式項(xiàng)目中使用Linux有哪些技巧?

            【E問E答】嵌入式項(xiàng)目中使用Linux有哪些技巧?

            作者: 時間:2017-09-27 來源:網(wǎng)絡(luò) 收藏

              步驟2:引導(dǎo)序列、時鐘系統(tǒng)、存儲器和串行接口

            本文引用地址:http://www.biyoush.com/article/201709/364890.htm

              典型的啟動順序執(zhí)行如下:

              1)引導(dǎo)加載程序固件(示例項(xiàng)目里的U-Boot)運(yùn)行于目標(biāo)MCU內(nèi)置閃存(無需外部存儲器),并在上電/復(fù)位后,執(zhí)行所有必需的初始化工作,包括設(shè)置串口和用于外部存儲器(RAM)訪問的存儲器控制器。

              2)U-Boot可將映像從外部Flash轉(zhuǎn)移到外部RAM,并將控制交接到RAM中的內(nèi)核入口點(diǎn)??蓧嚎s映像以節(jié)省閃存空間,代價是在啟動時要付出解壓縮時間。

              3)Linux進(jìn)行引導(dǎo)并安裝基于RAM的文件系統(tǒng)(initramfs)作為根文件系統(tǒng)。在項(xiàng)目構(gòu)建時,Initramfs被填充以所需的文件和目錄,然后被簡單地鏈接到內(nèi)核。

              4)在Linux內(nèi)核下,執(zhí)行/sbin/init。/sbin/init程序按照/etc/inittab中配置文件的描述對系統(tǒng)進(jìn)行初始化。

              5)一旦初始化進(jìn)程完成運(yùn)行級執(zhí)行和/sbin/init里的命令,它會啟動一個登錄進(jìn)程。

              6)殼初始化文件/etc/profile的執(zhí)行,標(biāo)志著啟動過程的完成。

              通過使能就地執(zhí)行(ExecuteInPlace——XIP)可以顯著縮短啟動時間、提升整體性能,XIP是從閃存執(zhí)行代碼的方法。通常,Linux代碼是從閃存加載到外部存儲器,然后從外部存儲器執(zhí)行。通過從閃存執(zhí)行,因不再需復(fù)制這步,從而只需較少的存儲器,且只讀存儲器不再占程序空間。

              本文的示例項(xiàng)目基于STM32F429MCU。事實(shí)上,用戶可能會發(fā)現(xiàn),開始時,STM32F4系列MCU的外設(shè)初始化不容易掌握。幸運(yùn)的是,意法半導(dǎo)體開發(fā)了一些工具來幫助解決這一問題。STM32CubeMX初始化代碼生成器(部件編號UM1718)屬于最新的。該工具包括外設(shè)初始化的每一個細(xì)節(jié),在配置外設(shè)時,會顯示警告和錯誤、并警告硬件沖突。

              對小型Linux項(xiàng)目來說,STM32F429MCU內(nèi)部閃存足夠用。重要的是要記住:Linux項(xiàng)目中使用多個二進(jìn)制映像(引導(dǎo)加載程序、Linux內(nèi)核和根文件系統(tǒng)):這些都需要閃存扇區(qū)邊界對齊。這就避免了在裝載一個圖像時,另一圖像被部分刪除或損壞的風(fēng)險。

              步驟3:在主機(jī)上安裝Linux

              要構(gòu)建一個嵌入式Linux項(xiàng)目,一臺Linux主機(jī)是必需的。對于WindowsPC,最好是安裝OracleVirtualBox,以創(chuàng)建“一臺”512MbyteRAM和16Gbyte硬盤的新虛擬機(jī)。

              有許多Linux版本可用;據(jù)筆者的經(jīng)驗(yàn),Debian就是與VirtualBox環(huán)境相匹配的一款。這款Linux主機(jī)必須能夠訪問互聯(lián)網(wǎng),以便下載針對這款A(yù)RMCortex-M目標(biāo)MCU的GNU交叉編譯工具。設(shè)計(jì)師將創(chuàng)建一個類似于圖1所示的樹形結(jié)構(gòu),并將交叉構(gòu)建工具提存到/tools文件夾。

              在這點(diǎn)上,有必要建立一個ACTIVATE.sh腳本。只需使用下列代碼就可實(shí)現(xiàn)。(......>是提取到的GNU工具文件夾路徑):

              exportINSTALL_ROOT=.......>

              exportPATH=$INSTALL_ROOT/bin:$PATH

              exportCROSS_COMPILE=arm-uclinuxeabiexport

              CROSS_COMPILE_APPS=arm-uclinuxeabiexport

              MCU=STMDISCO

              exportARCH=arm

              在干凈的Linux系統(tǒng)中安裝GNU工具,但其使用并非自給自足,實(shí)際上還需要其它系統(tǒng)的配合。其運(yùn)行實(shí)際上依賴于若干其它系統(tǒng)組件(如主機(jī)C/C++ 編譯器、標(biāo)準(zhǔn)C函數(shù)庫頭文件,以及一些系統(tǒng)工具)。獲得這些必要組件的一種方法是安裝用于C的Eclipse集成開發(fā)環(huán)境(IDE)。除解決這個迫在眉睫的問題外,EclipseIDE還可在開發(fā)過程中的許多其它方面提供幫助,當(dāng)然,詳述EclipseIDE的特性不是本文目的。

              現(xiàn)在,是時候啟用Linux終端工具了:點(diǎn)擊“應(yīng)用程序(Applications)”,然后“附件(Accessories)”和“終端(Terminal)”(見圖2)。

                

            2.jpg

             

              圖2:Linux包含的“終端(Terminal)”工具和“文件(Files)”、一種類似Windows資源管理器的圖形化工具。

              終端是用于配置Linux主機(jī)和構(gòu)建嵌入式Linux應(yīng)用程序的主要工具。鍵入以下命令來安裝Eclipse和其它所需工具:

              su[輸入根用戶密碼]

              apt-getinstalleclipse-cdt

              apt-getinstallgenromfs

              apt-getinstalllibncurses5-dev

              apt-getinstallgit

              apt-getinstallmc

              準(zhǔn)備該Linux項(xiàng)目的最后一步是下載STM32F429DiscoveryBuildroot,并解壓到/uclinux文件夾。

              步驟4:用Buildroot構(gòu)建μClinux

              現(xiàn)在有必要關(guān)閉先前使用根用戶配置文件的終端,并啟動一個新終端。在命令行中輸入“mc”,并使用導(dǎo)航器導(dǎo)航到“Documents”,然后輸入 “uClinux”命令。按Ctrl+O并激活LinuxARMCortex-M開發(fā)部分,并運(yùn)行“.ACTIVATE.sh”命令。再次按下 Ctrl+O并進(jìn)入“stm32f429-linux-builder-master”文件夾。

              用戶現(xiàn)在有兩個選擇。如果使用VirtualBox中的示例項(xiàng)目,請遵循“makeclean”和“makeall”命令序列。如果準(zhǔn)備一個全新環(huán)境,使用“make”命令。約30分鐘后,新的μClinux映像將可用,如下所示:

              outubootu-boot.bin

              outkernelarcharmbootxipuImage.bin

              outromfs.bin

              將這些新映像寫入閃存。如果使用Windows和ST-LINK工具,下面的代碼將工作:

              ST-LINK_CLI.exe-ME

              ST-LINK_CLI.exe-P“u-boot.bin”0x08000000

              ST-LINK_CLI.exe-P“xipuImage.bin”0x08020000

              ST-LINK_CLI.exe-P“romfs.bin”0x08120000

              將串行調(diào)試器(serialconsole)連接到目標(biāo)電路板(外部RX=>PC10、外部TX=>PC11、115200bits/s、8個數(shù)據(jù)位、無奇偶校驗(yàn)、1個停止位模式),然后按下復(fù)位按鈕,該μClinux項(xiàng)目將啟動運(yùn)行。開機(jī)輸出將顯示在串行調(diào)試器上,顯示屏將出現(xiàn)Linux的企鵝標(biāo)識。

              步驟5:創(chuàng)建“你好,世界”應(yīng)用

              現(xiàn)在,按照代碼示例和下面的說明,將一個用戶應(yīng)用添加到μClinux項(xiàng)目中。

              創(chuàng)建:“stm32f429-linux-builder-master/user/src/hello.c”文件:

              #include

              intmain(){

              printf(“Hello,worldn”);

              return0;

              }

              必要時使用Tab鍵,創(chuàng)建:“stm32f429-linux-builder-master/user/Makefile”文件:

              CC=$(CROSS_COMPILE)gcc

              LDFLAGS?=$(CFLAGS)

              target_out?=out

              all:checkdirs

              [Tab]$(CC)$(LDFLAGS)src/hello/hello.c-o$(target_out)/bin/

              hello$(LDLIBS)

              [Tab]-rm-rf$(target_out)/bin/*.gdb

              checkdirs:

              [Tab]mkdir-p$(target_out)/bin

              clean:

              [Tab]-rm-rf$(target_out)

              通過activate.sh腳本,在不激活交叉編譯環(huán)境下,在主機(jī)測試“Hello,world”這個應(yīng)用。

              在/user文件夾下,輸入:

              makeall

              ./out/bin/hello

              為將hello.c嵌入到LinuxBuildroot里的腳本,修改mk/rootf.mak文件,必要時,使用Tab鍵。(粗體字表示新行開始處):

              ...

              user_hello:

              [Tab]make-C$(user_dir)CROSS_COMPILE=$(CROSS_

              COMPILE)CFLAGS=$(ROOTFS_CFLAGS)target_

              out=$(target_out_user)

              $(rootfs_target):$(rootfs_dir)$(target_out_busybox)/.config

              user_hello

              [Tab]cp-af$(rootfs_dir)/*$(target_out_romfs)

              [Tab]cp-f$(target_out_kernel)/fs/ext2/ext2.ko$(target_out_romfs)/lib/modules

              [Tab]cp-f$(target_out_kernel)/fs/mbcache.ko$(target_out_romfs)/lib/modules

              [Tab]cp-f$(target_out_user)/bin/*$(target_out_romfs)/usr/bin

              需對mk/defs.mak文件做最后修改。加入以下幾行:

              ...

              user_dir:=$(root_dir)/user

              target_out_user:=$(target_out)/user

              user_dir:=$(root_dir)/user

              target_out_user:=$(target_out)/user

              一旦在目標(biāo)MCU上建成、下載并運(yùn)行映像,就可在/usr/bin目錄中找到該應(yīng)用程序以及其它已有的應(yīng)用程序。在連接到Discovery板的終端上鍵入“hello[回車]”,可對該應(yīng)用進(jìn)行測試。


            上一頁 1 2 下一頁

            關(guān)鍵詞: 嵌入式 Linux

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉