色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2018-07-25 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/201807/383839.htm

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

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

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

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

          在這點(diǎn)上,有必要建立一個(gè)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ù)庫(kù)頭文件,以及一些系統(tǒng)工具)。獲得這些必要組件的一種方法是安裝用于C的Eclipse集成開發(fā)環(huán)境(IDE)。除解決這個(gè)迫在眉睫的問(wèn)題外,EclipseIDE還可在開發(fā)過(guò)程中的許多其它方面提供幫助,當(dāng)然,詳述EclipseIDE的特性不是本文目的。

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

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

          終端是用于配置Linux主機(jī)和構(gòu)建嵌入式Linux應(yīng)用程序的主要工具。鍵入以下命令來(lái)安裝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)閉先前使用根用戶配置文件的終端,并啟動(dòng)一個(gè)新終端。在命令行中輸入“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)在有兩個(gè)選擇。如果使用VirtualBox中的示例項(xiàng)目,請(qǐng)遵循“makeclean”和“makeall”命令序列。如果準(zhǔn)備一個(gè)全新環(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個(gè)數(shù)據(jù)位、無(wú)奇偶校驗(yàn)、1個(gè)停止位模式),然后按下復(fù)位按鈕,該μClinux項(xiàng)目將啟動(dòng)運(yùn)行。開機(jī)輸出將顯示在串行調(diào)試器上,顯示屏將出現(xiàn)Linux的企鵝標(biāo)識(shí)。

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

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

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

          #include

          intmain(){

          printf(“Hello,worldn”);

          return0;

          }

          必要時(shí)使用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)

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

          在/user文件夾下,輸入:

          makeall

          ./out/bin/hello

          為將hello.c嵌入到LinuxBuildroot里的腳本,修改mk/rootf.mak文件,必要時(shí),使用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



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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉