本来花了大价钱买了原子哥的Linux开发板,寒假前以为很快就能返校,所以果断把板子留在了学校。人算不如天算,2020这个大灾大难的鼠年这么不太平,这段时间真是闲够了,是时候走出舒适区,继续学习Linux了!
本文参考韦东山老师制作的qemu虚拟开发板,分享自己的Linux驱动开发学习!
我们最终都要远行,最终都要跟稚嫩的自己告别。也许路途有点艰辛,有点孤独,但熬过了痛苦,我们才能得以成长。
我的qemu压缩分享:
链接:https://pan.baidu.com/s/1iqPKT3CmWt4pgQDFkjWKTg
提取码:80r1
复制这段内容后打开百度网盘手机App,操作更方便哦
需要提醒的是,搭建过程中需要合适的路径输入相应的命令。
sudo apt-get update
sudo apt-get install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
sudo apt-get install git
cd /home/clay/linux/qemu/new
git clone https://git.dev.tencent.com/weidongshan/ubuntu-16.04_imx6ul_qemu_system.git
镜像目录结构及说明如下,尤其要注意红框中的部分,在后期的嵌入式驱动开发中要进行替换!
cd /home/clay/linux/qemu/new/ubuntu-16.04_imx6ul_qemu_system-release
./install_sdl.sh // 提示输入用户密码,等待安装完成
如果遇到一依赖关系报错,输入
sudo apt-get install -f
修复依赖关系
./qemu-imx6ull-gui.sh // 启动后,登录名是root,无需密码
关于更多qemu具体操作案例,可以参考百问网。
完整的嵌入式Linux系统包含:bootloader、Linux内核、设备树、根文件系统。QEMU可以略过bootloader而直接启动内核,这给开发带来了便利。
git config --global user.email "you\@example.com"
git config --global user.name "Your Name"
/home/clay
目录
cd /home/clay
git clone https://git.dev.tencent.com/codebug8/repo.git
mkdir -p 100ask_imx6ull-qemu && cd 100ask_imx6ull-qemu
../repo/repo init -u https://dev.tencent.com/u/weidongshan/p/manifests/git -b linux-sdk -m imx6ull/100ask-imx6ull_qemu_release_v1.0.xml --no-repo-verify
../repo/repo sync -j4
vi ~/.bashrc
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/clay/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
上述在
.bashrc
中设置交叉编译工具链参数是永久生效的,若要仅对当前终端生效,直接在终端中敲入上述三行代码即可!
cd /home/clay/100ask_imx6ull-qemu/linux-4.9.88
make mrproper
make 100ask_imx6ull_qemu_defconfig
make zImage -j4
make dtbs
编译内核时可能会因为缺少lzop报错,安装lzop即可解决:
sudo apt-get install lzop
。
./arch/arm/boot/zImage
目录下得到内核文件,在./arch/arm/boot/dts/100ask_imx6ull_qemu.dtb
得到设备树文件./imx6ull-system-image
文件夹下。cd /home/clay/linux/qemu/new/ubuntu-16.04_imx6ul_qemu_system-release/imx6ull-system-image
sudo mount -o loop rootfs.img /mnt
/mnt
目录访问根文件系统,进而也可以对其中的内容进行修改sudo umount /mnt
./qemu-imx6ull-gui.sh
sudo apt-get install nfs-kernel-server
sudo vim /etc/exports
/home/clay
目录/home/clay *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
sudo /etc/init.d/nfs-kernel-server restart
sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/clay /mnt
ls /mnt
,看看是否和/home/clay
下的内容一致,一致则说明挂载成功!需要注意的是,以下配置qemu的NFS,应该在qemu打开的模拟板子终端输入命令!
ifconfig eth0 10.0.2.15
mount -t nfs -o nolock,vers=3 10.0.2.2:/home/clay/linux/qemu/NFS /mnt
/home/clay/linux/qemu/NFS
目录了。据韦老师讲,qemu会随着视频的录制添加相应的外设,也就意味着需要更新qemu。
新版本可以在新建的目录下,执行下列命令,而原来旧版本的下载目录可以直接删除!
git clone https://git.dev.tencent.com/weidongshan/ubuntu-16.04_imx6ul_qemu_system.git