QEMU imx6ul開發板環境搭建
文章目錄
0. 前言
最近在基於韋東山老師的imx6ul開發板學習嵌入式linux內容,在此記錄一下自己的操作步驟,更多詳細內容請訪問百問網QEMU。
在不方便使用開發板直接調試的時候,可以使用韋東山老師提供的QEMU虛擬開發板硬件進行簡單調試,非常便捷。
1. 基本環境
- Host:Win10 64bit
- 虛擬機軟件:VMware Workstation Pro 15
- 虛擬機系統:ubuntu 18.04 64bit
可以直接下載百問網提供的虛擬機鏡像:
虛擬機登陸密碼:
123456
2. 安裝KVM
安裝KVM可以加速qemu的運行,在ubuntu終端執行以下指令:
sudo apt-get update
sudo apt-get install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
3. 下載開發板的QEMU鏡像文件
git clone https://e.coding.net/weidongshan/ubuntu-18.04_imx6ul_qemu_system.git
命令執行完成後,會得到ubuntu-18.04_imx6ul_qemu_system
目錄,其結構如下:
4. 運行QEMU系統
進入ubuntu-18.04_imx6ul_qemu_system
目錄,執行以下操作。
4.1 安裝SDL環境
如果是第一次運行QEMU系統,那麼需要安裝SDL環境,命令如下:
./install_sdl.sh
安裝過程中可能會遇到如下錯誤提示信息:
dpkg: dependency problems prevent configuration of libxcb-xfixes0-dev:amd64:
libxcb-xfixes0-dev:amd64 depends on libxcb-shape0-dev; however:
Package libxcb-shape0-dev is not installed.
dpkg: error processing package libxcb-xfixes0-dev:amd64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libxcb-present-dev:amd64:
libxcb-present-dev:amd64 depends on libxcb-xfixes0-dev; however:
Package libxcb-xfixes0-dev:amd64 is not configured yet.
dpkg: error processing package libxcb-present-dev:amd64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libegl1-mesa-dev:amd64:
libegl1-mesa-dev:amd64 depends on libxcb-present-dev; however:
Package libxcb-present-dev:amd64 is not configured yet.
dpkg: error processing package libegl1-mesa-dev:amd64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libgl1-mesa-dev:amd64:
libgl1-mesa-dev:amd64 depends on libxcb-present-dev; however:
Package libxcb-present-dev:amd64 is not configured yet.
dpkg: error processing package libgl1-mesa-dev:amd64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libgles2-mesa-dev:amd64:
libgles2-mesa-dev:amd64 depends on libegl1-mesa-dev; however:
Package libegl1-mesa-dev:amd64 is not configured yet.
dpkg: error processing package libgles2-mesa-dev:amd64 (--install):
dependency problems - leaving unconfigured
Setting up libglib2.0-dev-bin (2.56.4-0ubuntu0.18.04.4) ...
dpkg: dependency problems prevent configuration of libglu1-mesa-dev:amd64:
libglu1-mesa-dev:amd64 depends on libgl1-mesa-dev | libgl-dev; however:
Package libgl1-mesa-dev:amd64 is not configured yet.
Package libgl-dev is not installed.
Package libgl1-mesa-dev:amd64 which provides libgl-dev is not configured yet.
dpkg: error processing package libglu1-mesa-dev:amd64 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libxcb-xfixes0-dev:amd64
libxcb-present-dev:amd64
libegl1-mesa-dev:amd64
libgl1-mesa-dev:amd64
libgles2-mesa-dev:amd64
libglu1-mesa-dev:amd64
libsdl2-dev:amd64
可以通過如下指令進行修復:
sudo apt --fix-broken install
4.2 運行帶GUI的imx6ul模擬器
./qemu-imx6ull-gui.sh //啓動後,登錄名是root,不需要密碼。
4.3 運行不帶GUI的imx6ul模擬器
./qemu-imx6ull-nogui.sh //啓動後,登錄名是root,不需要密碼。
5. 編譯修改Linux內核
5.1 下載內核源碼
git clone https://e.coding.net/codebug8/repo.git
mkdir -p 100ask_imx6ull-qemu && cd 100ask_imx6ull-qemu
../repo/repo init -u https://e.coding.net/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask-imx6ull_qemu_release_v1.0.xml --no-repo-verify
../repo/repo sync -j4
上述命令執行完成後,會得到100ask_imx6ull-qemu
和repo
兩個目錄,100ask_imx6ull-qemu
包含了linux-4.9.88
(linux內核源碼目錄)和ToolChain
(交叉編譯工具鏈目錄)。
5.2 編譯源碼
5.2.1 配置編譯環境(非永久性配置)
由於我的ubuntu虛擬機需要用來編譯不同的開發板,所以採用如下方式配置編譯環境。該方式只對當前終端有效,不會影響其他終端中的開發板源碼編譯。
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
PATH變量的配置需要根據你的ToolChain
所在目錄進行修改。
5.2.2 編譯內核
編譯過程需要lzop工具,因此需要先執行
sudo apt-get install lzop
進行安裝,以免編譯失敗。
cd linux-4.9.88 //進入內核源碼目錄
make mrproper //完全清除以前的配置
make 100ask_imx6ull_qemu_defconfig //基於開發板信息配置linux內核編譯選項
make zImage -jN //編譯zImage內核鏡像,其中N參數可以根據CPU個數,來加速編譯系統。
make dtbs //編譯設備樹文件
編譯完成後,會得到如下文件:
linux-4.9.88/arch/arm/boot/zImage //內核文件
linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull_qemu.dtb //設備樹文件
將編譯生成的zImage
和100ask_imx6ull_qemu.dtb
替換ubuntu-18.04_imx6ul_qemu_system/imx6ull-system-image/
目錄下的zImage
和100ask_imx6ull_qemu.dtb
文件後,執行4.2章節
的qemu-imx6ull-gui.sh
命令即可在QEMU環境下啓動新編譯的內核和設備樹。