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

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式IoT

前言


隨著芯片技術(shù)的發(fā)展,嵌入式已經(jīng)不再是傳統(tǒng)的單片機開發(fā)模式,需要一些硬件操作的板子,現(xiàn)在qemu這種模擬硬件的手段非常好,通過直接在電腦上仿真后,然后再移植到真實的設(shè)備上,這樣大大減少了下載程序的時間,同時也方便問題的定位和分析,通過這種方式,進行業(yè)務(wù)邏輯層的開發(fā)更加的高效合理。本文主要介紹在qemu上搭建樹莓派3b的開發(fā)環(huán)境。

準(zhǔn)備條件:

Ubuntu16.04

下面的實驗步驟在Ubuntu16.04上進行,盡量保證環(huán)境的一致性。

01

代碼編譯

對于一個環(huán)境,我們往往需要進行源代碼工程的構(gòu)建,所以現(xiàn)在我們選擇的是rt-thread操作系統(tǒng)進行相關(guān)的開發(fā)工作。

1.1 工具鏈的準(zhǔn)備

推薦采用gcc-arm-8.3-2019.03-x86_64-aarch64-elf進行源代碼的編譯,由于官方下載速度非常慢,所以我放到網(wǎng)盤上提供下載。

鏈接: https://pan.baidu.com/s/1ZAba3xbhad-BnimCo5VDGA

提取碼: a6t5

解壓到opt目錄下。

1.2 編譯rtt工程

在github上的rt-thread上進行下載

git clone git@github.com:RT-Thread/rt-thread.git

切換到rt-thread/bsp/raspberry-pi/raspi3-64目錄,輸入scons開始編譯

最后生成kernel8.img文件就是可執(zhí)行文件。

02

qemu的安裝

直接通過Ubuntu進行sudo apt-get install qemu安裝的qemu版本較低,不支持arrch64體系架構(gòu),所以我們需要去下載安裝最新版本的qemu,到官網(wǎng)上下載即可。


下載完成后解壓文件。

或者從github中clone代碼

git clone git@github.com:qemu/qemu.git

git submodule update --init --recursive


2.1 編譯qemu

由于最新版本的qemu只是源代碼,所以還需要進行qemu的編譯。

查看當(dāng)前所有支持命令

./configure --help|less

可以看到如下信息

其中我們可以看到aarch64-softmmu,aarch64-linux-user,aarch64_be-linux-user。對于這三個編譯選項:

aarch64-softmmu:

一般選擇,用來跑os的,已經(jīng)開了軟件mmu。

aarch64-linux-user:

用于跑app

aarch64_be-linux-user :

與上面不同的是,用來跑big-endian的app程序。

編譯

./configure --target-list=arm-softmmu,aarch64-softmmu --enable-debug --enable-sdl

make

make install

03

運行raspi鏡像

正常情況下,當(dāng)安裝完成后,在控制臺輸入qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio就可以看到程序正常的運行起來了。

3.1 啟動調(diào)試

如果要啟動調(diào)試,可以輸入以下的命令

qemu-system-aarch64 -M raspi3 -kernel rtthread.elf -serial null -serial stdio -s -S

-S 表示guest虛擬機一啟動就會暫停

-s 表示監(jiān)聽tcp:1234端口等待GDB的連接

第一步:

開一個窗口,輸入aarch64-elf-gdb.

第二步:

等待連接操作,然后輸入target remote localhost:1234連接

第三步:

打開需要調(diào)試的文件,輸入路徑file /home/bigmagic/work/raspberry-pi/src/rt-thread/bsp/raspi3-64/rtthread.elf這個路徑是需要調(diào)試的文件。


到這里就配置完成了。

3.2 調(diào)試技巧

首先可以輸入layout src打開源代碼顯示窗口。

斷點

輸入斷點可以是函數(shù)名稱,可以是行號,可以是某個文件的具體函數(shù)。

break main //也可以寫 b main

或者文件的第20行。

break 20

演示效果如下:

其中c是continue的簡寫。會向下執(zhí)行,執(zhí)行到斷點處。

如果我們想刪除某個斷點,有兩種方法:

1 delete 命令 簡寫d

delete break 刪除所有的斷點

delete break n 刪除某個斷點 n為斷點號

2 clear 命令

clear 行號 刪除設(shè)在某一行的斷點

查看斷點信息:info b 查看所有斷點信息。

單步調(diào)試

進入函數(shù)內(nèi)部單步調(diào)試step,簡寫s。

安裝函數(shù)一行一行執(zhí)行next,簡寫n。

04

總結(jié)

嵌入式開發(fā)過程中,往往避免不了與硬件打交道,但是通過qemu這種模擬硬件的方式,往往能夠很好的加快調(diào)試的手段,在出現(xiàn)問題的時候,可以借助gdb等調(diào)試工具進行分析,也加快了開發(fā)的速度,是一種比較好的手段。

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