• <tbody id="wslfv"><pre id="wslfv"></pre></tbody>
    <span id="wslfv"></span>
    <tbody id="wslfv"><pre id="wslfv"></pre></tbody>
    <th id="wslfv"><track id="wslfv"><rt id="wslfv"></rt></track></th>

    <li id="wslfv"><acronym id="wslfv"></acronym></li>
    更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    建立ARM嵌入式編程環境教程

    • 發布:黨小陽
    • 來源:黨小陽
    • 時間:2018-01-15 15:19

    這篇文章講為何借助PC來開發ARM端的程序,以及開發環境如何搭建。

    ARM開發板接一個顯示器和鍵盤、鼠標是可以直接寫程序的。所以為什么要寫這篇文章呢?【注1】我們先觀察ARM處理器板子上做開發的編程過程,看看會遇到什么困難。

    首先是寫代碼,這里沒什么問題。在linux下最常用的編輯器還是vim,vim的配置還是有一定工作量的,這里不作為重點,自己看尾注【注2】。

    然后代碼寫完需要編譯,處理器性能越差,編譯速度就很慢。第一個問題出現了,當程序很大時,在ARM上直接編譯用時太久,等不了啊,所以人們就想在PC上先編譯好,然后把程序拷貝到開發板上。接著第二個問題出現了,PC上的處理器和ARM上的處理器是不同的,所以PC上編譯的helloworld在ARM上是不能跑的。這個時候我們需要借助一個工具,稱為交叉編譯器,用于在PC上編譯出能在ARM端運行的程序。重復一遍,使用交叉編譯的原因是ARM上的程序編譯速度遠低于PC。如果寫點代碼量不大的程序,直接在ARM端開發也無妨。

    最后代碼需要DEBUG,我們寫好的程序一定不可能是完美的,所以需要進行調試。問題2出現了,程序在ARM上跑,改代碼卻是在在PC上,一次次來回復制編譯好的程序效率就太低了,所以我們需要一個復制文件的工具。有很多種辦法,用U盤拷肯定是太慢啦,在【1】局域網內的【2】兩臺linux系統電腦之間傳文件的最簡潔方式是使用scp命令,從PC上到ARM上;如果是windows系統,可以使用samba服務。

    我們希望在PC端打完編程的全套動作,所以第三個問題就是我們如何在PC上對ARM端程序debug,這個問題用遠程調試來實現,我們在ARM端上使用GDBserver,然后在PC上使用交叉編譯的gdb工具來實現遠程調試。

    如果主機上用的是VMware虛擬機,那么可能會遇到虛擬機內外文件傳遞的問題,不作為重點,自己看尾注【注3】。

    綜上,為了在PC上寫ARM端的代碼我們要用哪些工具呢?【注4】

    交叉編譯工具arm-none-linux-gnueabi-gcc、向開發板拷貝程序的scp命令、遠程調試工具GDBserver。

    我們一一來說一下:

    1.1交叉編譯工具的安裝(在PC上):

    #解壓交叉編譯工具arm-none-linux-gnueabi-gcc安裝包:

    tar xxxxx/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C ./

    #將解壓好的編譯器路徑添加到環境變量中,先打開配置文件:

    sudo vim /etc/profile

    #給profile最后加一行export PATH=$PATH:/home/xxxxx/arm-2009q1/bin,將路徑插進去

    #讓電腦使用改寫后的profile文件

    source /etc/profile

    #重啟之后就安裝好了,可以用arm-none-linux-gnueabi-gcc -v查看版本

    1.2交叉編譯工具的使用(在PC上):

    arm-none-linux-gnueabi-gcc helloworld.c -o helloworld

    2.scp命令的使用(在PC上):

    scp helloworld username@192.168.1.102:/home/username/

    然后在ARM端進入路徑,輸入./helloworld運行就可以了。

    3.1gdbserver的安裝(在PC上):

    #首先找到gdbserver所在位置

    cd xxxxx/arm-none-linux-gnueabi/usr/bin/

    ls gdbserver

    #拷貝到開發板上

    scp gdbserver root@192.168.1.102:/home/root

    #拷貝gdbserver所需的libthread_db庫文件

    cd xxxxx/arm-none-linux-gnueabi/usr/bin/lib

    scp libthread_db.so root@192.168.1.102:/usr/lib

    特別地,有的時候開發板程序用的是libthread_db.so.1,這時候我們用ln做個定向到libthread_db.so就行了(在ARM上)

    cd /usr/lib

    ln -s libthread_db.so ./libthread_db.so.1

    此外,將 gdbserver 可執行文件拷貝到/usr/sbin 下面,這樣就不會只能在 gdbserver 可執行文件夾下才能運行 gdbserver 程序。(在ARM上)

    3.2gdbserver的使用:

    (在PC上)

    #交叉編譯時加-g

    arm-none-linux-gnueabi-gcc test.c -o test -g

    #復制程序

    scp test root@192.168.1.102:/home/root

    (在ARM上)

    #格式gdbserver <Host_IP>:<Ports><Program><Arguments...>

    ./gdbserver 192.168.1.101:1111 ./test

    #192.168.1.101 為虛擬機的 IP 地址;1111 為連接的端口號(自行設置);./test 為將要調試的程序,如果是 Qt 程序需要跑界面則需要在后面增加-qws,-qws 是調試運行的參數。

    (在PC上)

    #格式<.../arm-none-linux-gnueabi-gdb> <.../test>,交叉編譯gdb路徑和程序路徑

    /home/xxxxx/arm-none-linux-gnueabi-gdb /home/xxxxx/test

    #連接ARM端

    target remote 192.168.1.102:1111

    #192.168.1.102 是ARM端的 IP 地址

    3.3gdb調試命令

    完成3.2后,可以采用以下命令進行調試。

    命令:l,參看代碼;

    命令:b main,在 main 處設置斷點;

    命令:b 5,在第五行設置斷點;

    命令:c,繼續執行;

    命令:help target,查詢其他命令。

    尾注:

    【注1】首先說一說為什么要用ARM處理器呢?因為ARM處理器第一功耗小,能用在移動設備上,第二成本低,在家電、工廠的控制中就用的比較多,第三arm處理器可以用linux操作系統,是個小電腦。

    一般的開發,從硬件的復雜程度可以分為三層,第一層是單片機開發,at89s51、stm32和arduino板就在這一層,無人機上用的就是stm32喲;第二層是嵌入式開發,ARM、DSP、FPGA和樹莓派就在這一層;第三層就是我們的PC機,INTEL的各種cpu就在這里啦。

    【注2】 要把vim配置的稍微好用一點還是需要下功夫的,我一般就做以下三個工作:

    1.改寫.vimrc文件的內容,.vimrc是vim的配置文件,在使用前配置vim中的插件、高亮等等的,所謂改寫也就是從網上下載一個配置比較完整的vimrc文件把原來的替換掉;

    2.添加YouCompleteMe和Nerdtree這兩個vim插件,自動補全和文件瀏覽器;

    https://github.com/Valloric/YouCompleteMe

    https://github.com/Xuyuanp/nerdtree-git-plugin

    3.在使用vim的時候用好:vsplit命令,也就是分屏。

    【注3】虛擬機共享目錄的設置:

    使用VMware時,會需要將windows底下的文件傳到虛擬機的linux中,這時候利用VMware Tools可以設置shared folder(共享目錄),利用這個目錄來簡化虛擬機內外的文件傳遞。

    1.VMware Tools的安裝(在PC上):

    這個工具對我們有兩個作用,一個是剛才說的共享目錄,第二個是可以虛擬機的圖形界面可以變大到足夠用。

    首先,點擊VMware菜單欄上的VM-Install VMware Tools…

    然后,進入命令行執行以下操作:

    cd /media/VMware\ Tools #此處務必使用 Tab 鍵補全,不能手動輸入”VMware\ Tools"

    tar zxvf VMwareTools-9.6.2-1688356.tar.gz -C /home/xxxxx #解壓安裝包

    cd ~/vmware-tools-distrib/

    sudo ./vmware-install.pl #進行安裝

    2.共享目錄的設置

    先要停止虛擬機,之后點擊VM->Setting...,進入窗口后Options->Shared Folders->Always enabled,然后添加目錄,打開虛擬機在目錄/mnt/hgfs下就可以找到共享目錄。

    【注4】本文中默認PC和ARM上都是Linux系統,用路由器或網線連成一個局域網。

    本文內容轉載自網絡,本著傳播與分享的原則,來源/作者信息已在文章頂部表明,版權歸原作者所有,如有侵權請聯系我們進行刪除!

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:嵌入式機器學習處理器的技術挑戰和機會
    下一篇:零基礎接觸Qt嵌入式開發

    裸編程怎么做?裸編程具體做法

    嵌入式編程中你必須知道的小知識

    嵌入式C語言編程小知識總結

    有哪些工具可以讓嵌入式開發事半功倍?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美一级高清片,一级欧美免费大片视频,欧美三级在线电影免费 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>