<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 嵌入式linux新手入門(mén)手記-搭建基本工作平臺

嵌入式linux新手入門(mén)手記-搭建基本工作平臺

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

  當然,本人已經(jīng)不是電子控制器開(kāi)發(fā)的新手了。從事單片機,DSP開(kāi)發(fā)十多年,但是一直沒(méi)有接觸過(guò)。2014年初由于公司的項目需要,決定引入的平臺進(jìn)行產(chǎn)品研發(fā),從這個(gè)時(shí)候開(kāi)始正式接觸,并開(kāi)始在linux上進(jìn)行工作。到現在差不多1年半,現在將這個(gè)過(guò)程重新整理出來(lái),和大家一起分享,同時(shí)也給自己留一個(gè)記錄。

本文引用地址:http://dyxdggzs.com/article/278045.htm

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

  “嵌入式linux新手入門(mén)手記”會(huì )是一個(gè)系列,記錄我從第一次正式開(kāi)始在linux平臺工作,到完成項目的過(guò)程中各問(wèn)題的解決過(guò)程。當然,作為工作經(jīng)歷的記錄,這個(gè)手記的系列不討論理論方面的知識,只是忠實(shí)的記錄問(wèn)題,以及問(wèn)題的解決過(guò)程和方法。

  首先在這里介紹一下我的開(kāi)發(fā)平臺:TI的AM335x的平臺,硬件已經(jīng)調試完成,在本手記中將不進(jìn)行硬件方面的記錄。主要需要的功能是:接口單點(diǎn)觸摸屏,1024*768 TFT-LCD顯示,GUI的用戶(hù)程序實(shí)現人機交互,100M以太網(wǎng),不需要3D以及圖形加速,256M DDR2,256M nand,一個(gè)SD卡槽,一個(gè)RS232接口。

  首先,要進(jìn)行嵌入式linux開(kāi)發(fā),當然需要搭建計算機的工作平臺,考慮工作的方便和效率,決定在計算機上安裝獨立linux系統,和window做成雙引導。

  2010年時(shí)用過(guò)一段時(shí)間的ubuntu,所以決定還是使用ubuntu,在ubuntu的官網(wǎng)上下載32位版本的14.04(64位的系統驅動(dòng)程序比較難找)。使用ubuntu推薦的Universal--Installer-1.9.5.9工具,將ubuntu的安裝鏡像寫(xiě)入到一個(gè)標準的4GU盤(pán)上(標準的意思是指不要有亂七八糟的功能,可能會(huì )導致兼容性問(wèn)題而無(wú)法啟動(dòng)ubuntu安裝程序。寫(xiě)入時(shí)會(huì )導致U盤(pán)的內容全部丟失,需要先備份U盤(pán)的文件)。

  在windows7的計算機管理中啟動(dòng)磁盤(pán)管理器,我的計算機硬盤(pán)是500G的,分為2個(gè)分區,并格式化為2個(gè)磁盤(pán):C(190G)和D(其余空間),在磁盤(pán)管理器中對D分區進(jìn)行壓縮,壓縮出100G的磁盤(pán)空間出來(lái),對這個(gè)壓縮出來(lái)的100G空間不要做其他處理,退出磁盤(pán)管理器。

  重新啟動(dòng)計算機并進(jìn)入到BIOS中設置啟動(dòng)順序,使計算機能夠從U盤(pán)啟動(dòng)。使用制作好的Ubuntu安裝U盤(pán)啟動(dòng)計算機后,將進(jìn)入到ubuntu的體驗系統中,選擇安裝,然后根據安裝的提示進(jìn)行,這里需要注意2點(diǎn),一是語(yǔ)言的選擇,最好在安裝時(shí)選擇中文,這樣避免后續設置ubuntu時(shí)顯示、輸入法等的問(wèn)題。二是最好不要手動(dòng)指定安裝分區,有ubuntu安裝程序自動(dòng)對之前劃分出來(lái)的100G空間進(jìn)行管理,我的計算機安裝有6G的內存,所以安裝程序將100G空間劃分為一個(gè)6G的交換分區,其他用于安裝ubuntu。然后ubunut會(huì )詢(xún)問(wèn)是否和其他操作系統共存時(shí),一定要選擇和其他操作系統共存,否則會(huì )導致安裝完ubuntu后無(wú)法啟動(dòng)windows的問(wèn)題。

  ubuntu14.04的安裝還是比較智能的,基本不需要自己的其他干涉,就自動(dòng)安裝完成了。

  在安裝完成后,需要對ubuntu進(jìn)行一些設置,這里就不再過(guò)多描述,下面僅對一些和后續嵌入式linux開(kāi)發(fā)有關(guān)的進(jìn)行說(shuō)明:

  另外,我使用的shell是bash,而ubuntu14.04安裝后默認用的是dash,需要修改為默認使用bash。

  1、安裝tftp服務(wù)。嵌入式linux開(kāi)發(fā),尤其是uboot和kernel相關(guān)的開(kāi)發(fā),需要不斷的修改MLO,u-boot,uImage等,這些文件是需要寫(xiě)入到am335x的板載flash上的,如果每次都是用SD,CCS,燒寫(xiě)工具等,是一個(gè)很麻煩的事情。由于uboot支持tftp下載文件并燒寫(xiě)flash,這是一個(gè)較為便捷的方式。

  在自己工作目錄home/XXXX下建立一個(gè)空目錄,取名為tftp;

  給這個(gè)目錄賦予讀寫(xiě)等權限:sudo chmod 777 ./tftp;

  安裝tftp服務(wù):sudo apt-get install xinetd tftpd-hpa tftp-hpa;

  安裝完成后,會(huì )自動(dòng)重新啟動(dòng)xinetd,這時(shí)在/etc下會(huì )出現xinetd.d目錄;

  進(jìn)入到這個(gè)目錄中,執行sudo touch tftpd;

  然后執行sudo gedit ./tftpd,在tftpd文件中添加以下內容并保存退出:

  service tftp

  {

  disable=no

  socket_type=dgram

  wait=no

  user=root

  protocol=udp

  server=/usr/sbin/in.tftpd

  server_args=-s /home/XXXX/tftp

  log_on_success=PID HOST DURATION

  log_on_failure=HOST

  }

  修改/etc/inetd.conf文件:sudo gedit /etc/inetd.conf,增加以下內容:

  tftp dgram udp wait

  root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /home/XXXX/tftp

  修改/etc/default/tftpd-hpa:

  #/etc/default/tftpd-hpa

  TFTP_USERNAME="tftp"

  TFTP_DIRECTORY="/home/XXXX/tftp"

  TFTP_ADDRESS="0.0.0.0:69"

  TFTP_OPTIONS="--secure"

  #Defaults for tftpd-hpa

  RUN_DEAMON="yes"

  OPTIONS="-1 -s /home/XXXX/tftp"

  保存并退出后,重新啟動(dòng)tftp服務(wù):sudo /etc/init.d/xinetd restart

  sudo /etc/init.d/tftpd-hpa restart

  2、安裝nfs服務(wù)。nfs服務(wù)是嵌入式linux開(kāi)發(fā)一個(gè)非常重要的服務(wù),使用這個(gè)服務(wù),可以將計算機上的一個(gè)文件目錄掛載為am335x運行時(shí)的根文件系統,這樣避免不斷燒寫(xiě)flash。

  建立一個(gè)文件夾,用于nfs服務(wù),名稱(chēng)為nfs;

  為安裝nfs服務(wù),修改ubuntu的軟件源,如果不是“main server”,修改為“main server”,然后點(diǎn)擊close,彈出對話(huà)框點(diǎn)擊reload,然后等待處理結束;

  安裝nfs服務(wù),sudo apt-get install portmap nfs-kernel-server

  sudo apt-get install portmap nfs-common

  配置共享文件,編輯/etc/exports,在文件末尾添加一行:/home/XXXX/nfs *(rw,sync,no_root_squash)。用于設置nfs目錄的工作模式,以及用戶(hù)進(jìn)入該目錄的權限為root;

  重新啟動(dòng)nfs服務(wù),sudo /etc/init.d/portmap restart

  sudo /etc/init.d/nfs-kernel-server restart

  檢查nfs服務(wù)是否已經(jīng)配置成功。

  3、設置計算機的網(wǎng)卡。為開(kāi)發(fā)嵌入式linux,我的計算機安裝了2個(gè)網(wǎng)卡,一個(gè)接口的無(wú)線(xiàn)網(wǎng)卡,用于上網(wǎng)。另外一個(gè)100M PCI接口的有線(xiàn)以太網(wǎng)卡,用于連接am335x。將有線(xiàn)以太網(wǎng)卡的IP地址設置為固定:192.168.1.50,子網(wǎng)掩碼255.255.255.0,其他可以不設置。

  4、下載TI的am335x的開(kāi)發(fā)工具包,這里我使用的是2011年獲得的開(kāi)發(fā)包,其中uboot是2011版,以及l(fā)inux3.2.0。配合這個(gè)開(kāi)發(fā)包使用的是arm-none-linux-gnueabi和arm-arago-linux-gnueabi交叉編譯工具。由于種種原因,公司決定使用TI-SDK-AM335X-01.00.00.00中的交叉編譯工具,是arm-linux-gnueabihf-gcc 4.7.3。

  將TI的SDK解壓縮到/home/XXXX/ti-sdk-am335x-evm-01000000目錄;

  將uboot2011解壓縮到/home/XXXX/uboot目錄;

  將linux3.2.0解壓縮到/home/XXXX/kernel目錄;

  修改上述目錄的權限,使得XXXX擁有對這些目錄以及其文件的讀寫(xiě)權限。

  5、修改環(huán)境變量配置,進(jìn)行第一次編譯uboot和kernel。

  編輯~/.bashrc文件,將編譯uboot和kernel需要的環(huán)境變量加入到文件中,并使生效。 下面是需要加入到~/.bashrc中的內容:

  PATH=$PATH:/home/XXXX/ti-sdk-am335x-evm-01000000/linux-devkit/sysroots/i686-arago-linux/usr/bin:/home/XXXX/uboot/am335x/tools:

  上述/home/XXXX/uboot/am335x/tools目錄,在編譯uboot時(shí),會(huì )生成后續用于制作uImage文件的工具,用來(lái)編譯kernel,所以在這里要加入到PATH中。否則后續編譯kernel時(shí)會(huì )出現錯誤。

  編譯uboot時(shí)會(huì )生成用于制作kernel的image的工具,這些工具在編譯kernel是被make調用,所以在編譯kernel時(shí),必須保證之前已經(jīng)正確編譯或uboot,并且沒(méi)有對uboot執行過(guò)clean。

  6、進(jìn)入到uboot的目錄中,編輯兩個(gè)sh文件,用于后續工作使用。

  mkclean.sh,用于執行clean操作:

  #/bin/sh

  make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm O=am335x distclean

  上述執行的命令,使用arm-linux-gnueabihf交叉編譯器,arm體系的CPU,輸出文件保存到./am335x目錄,執行distclean清除所以之前的臨時(shí)文件。

  mkboot.sh,用于執行編譯操作:

  #/bin/sh

  make -j4 CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm O=am335x am335x_evm

  上述執行編譯uboot,其中-j4告訴編譯器使用4線(xiàn)程進(jìn)行編譯,這個(gè)設置取決于計算機CPU的核心數,能夠加快編譯的過(guò)程。

  ARCH=arm指定目標CPU的體系架構。O=am335x指定文件輸出目錄為./am335x,編譯結束后,能夠在這個(gè)目錄下找到MLO,u-boot.img等文件。

  am335x_evm選項告知編譯器使用這個(gè)板的配置對uboot進(jìn)行編譯。

  7、進(jìn)入到kernel目錄中,編輯三個(gè)sh文件,用于后續編譯和安裝kernel:

  mkcln.sh,用于執行clean操作:

  #/bin/sh

  make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm distclean

  make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm am335x_evm_defconfig

  這個(gè)sh將進(jìn)行清除臨時(shí)文件的操作,然后使用arm335x_evm_defconfig文件對kernel進(jìn)行編譯配置。

  mkkn.sh,用于執行編譯操作:

  #/bin/sh

  make -j4 CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm uImage

  make -j4 CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm modules

  交叉編譯kernel并生成uImage文件。

  交叉編譯可動(dòng)態(tài)加載的modules。

  mkins.sh,用于安裝kernel:

  #/bin/sh

  make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm modules_install INSTALL_MOD_PATH=/home/XXXX/nfs

  cp ./arch/arm/boot/zImage /home/XXXX/nfs/boot

  將編譯好的內核zImage和modules文件安裝到nfs文件目錄中。

  在編譯完成后,在kernel/arch/arm/boot目錄下會(huì )生成uImage文件,這個(gè)是linux kernel可引導文件,需要將這個(gè)文件拷貝到nfs或者tftp目錄中。

  8、編譯后的幾個(gè)重要文件:

  編譯uboot將會(huì )生成2個(gè)重要文件,MLO和u-boot.img。其中MLO是第二次引導程序,am335x復位后,內部otp中的引導程序會(huì )啟動(dòng),然后根據LCD_DATA管腳的設置來(lái)加載指定存儲器上的MLO。

  MLO運行后,將加載相應存儲器上的u-boot.img。

  u-boot.img啟動(dòng)后,將根據bootargs和bootcmd環(huán)境變量設置的參數,選擇加載uImage,并啟動(dòng)uImage。

  uImage是kernel的可執行內核鏡像文件。

  9、開(kāi)發(fā)嵌入式linux,需要將am335x通過(guò)串口和計算機連接,并使用計算機的超級終端 進(jìn)行操作。ubuntu下的minicom比較好用。

  現在的計算機一般都沒(méi)有標準的RS232接口,我自己設計了一塊CH340T的通信轉接板,一端連接am335x的UART0,另外一端接計算機的USB口,在芯恒的官網(wǎng)能夠下載到ubuntu的驅動(dòng)程序,下載下來(lái)后insmod成功后,/dev下能夠看到ttyUSBX(X取決于計算機,一般為ttyUSB0)。

  這樣使用USB模擬串口和am335x通信,方便使用。

  下一篇將講述第一次啟動(dòng)am335x。

pid控制相關(guān)文章:pid控制原理


linux相關(guān)文章:linux教程




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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>