基于百问网imx6ull-qemu开发板的linux驱动开发体验

2023-05-16

目录

  • 1.安装kvm
  • 2.获取百问网imx6ull-qemu开发镜像
  • 3.运行百问网imx6ull-qemu开发镜像
  • 4.获取百问网imx6ull-qemu开发板内核源码和工具链
  • 5.下载百问网快速入门资料
  • 6.设置环境变量
  • 7.为了后续编译驱动,需要先编译内核
  • 8.编译驱动
  • 9.上传驱动以及应用程序
  • 10.更换文件系统

1.安装kvm

sudo apt-get update
sudo apt-get install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
注:可以起到加速的效果

2.获取百问网imx6ull-qemu开发镜像

git clone https://e.coding.net/weidongshan/ubuntu-16.04_imx6ul_qemu_system.git
git clone https://e.coding.net/weidongshan/ubuntu-18.04_imx6ul_qemu_system.git
注:对应不同的ubuntu系统

3.运行百问网imx6ull-qemu开发镜像

./install_sdl.sh
./qemu-imx6ull-gui.sh

4.获取百问网imx6ull-qemu开发板内核源码和工具链

book\@100ask:\~\$ git clone https://e.coding.net/codebug8/repo.git
book\@100ask:\~\$ mkdir -p 100ask_imx6ull-qemu && cd 100ask_imx6ull-qemu
book\@100ask:\~/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
book\@100ask:\~/100ask_imx6ull-qemu\$ ../repo/repo sync -j4

5.下载百问网快速入门资料

git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git

6.设置环境变量

永久生效

     book\@100ask:\~\$ vi ~/.bashrc

在行尾添加或修改:

    export ARCH=arm
    export CROSS_COMPILE=arm-linux-gnueabihf-
    export PATH=$PATH:/home/book/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin

使环境变量生效:

    source ~/.bashrc

临时生效
如果你有很多单板,为了不冲突,你不能使用“永久生效”的办法。比如你有32位的ARM板,也有64位的ARM板,在使用前者时需要设置ARCH=arm,在使用后者时需要设置ARCH=arm64。
这种情况下,可以使用“export”命令设置环境变量,这种设置方法只对当前终端有效:

book\@100ask:\~\$ export PATH=$PATH:/home/book/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
book\@100ask:\~\$ export ARCH=arm
book\@100ask:\~\$ export CROSS_COMPILE=arm-linux-gnueabihf-

手动指定
执行make命令时,可以手工指定ARCH架构、CROSS_COMPILE等变量:

book\@100ask:\~\$ export PATH=$PATH:/home/book/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
book\@100ask:\~\$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

7.为了后续编译驱动,需要先编译内核

book\@100ask:\~/100ask_imx6ull-qemu\$ cd linux-4.9.88
book\@100ask:\~/100ask_imx6ull-qemu/linux-4.9.88\$ make mrproper
book\@100ask:\~/100ask_imx6ull-qemu/linux-4.9.88\$ make 100ask_imx6ull_qemu_defconfig
book\@100ask:\~/100ask_imx6ull-qemu/linux-4.9.88\$ make zImage -jN //编译zImage内核镜像,其中N参数可以根据CPU个数,来加速编译系统。
book\@100ask:\~/100ask_imx6ull-qemu/linux-4.9.88\$ make dtbs //编译设备树文件

注:为了后续编译驱动,需要先编译内核

8.编译驱动

测试驱动为此目录下的led驱动,可以稍作修改,然后编译
01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/02_led_drv_for_boards/100ask_imx6ull-qemu_src_bin

9.上传驱动以及应用程序

ubuntu主机启动nfs
sudo apt-get install nfs-kernel-server
修改/etc/exports,添加类似以下的内容,
/home/book *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
/work *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
注:以上的例子里允许开发板通过NFS访问Ubuntu的/home/book、/work两个目录
ubuntu主机 重启nfs
sudo /etc/init.d/nfs-kernel-server restart
ubuntu主机 测试nfs
可以在Ubuntu上通过NFS挂载自己,验证一下NFS可用:
sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mnt
ls /mnt

开发板配置网络
QEMU运行时,Ubuntu是Host即宿主机,QEMU给它分配的IP是10.0.2.2。
QEMU模拟的imx6ull板子是Guest即客户机,它会自动获取IP,也可以自己设置。
Guest可以通过10.0.2.2访问Host,Host不能访问Guest。
Guest中可以使用ifconfig命令查看IP,如果没有IP,可以如下设置:
[root@qemu_imx6ul:~]# ifconfig eth0 10.0.2.15
开发板挂载主机nfs目录
QEMU模拟的imx6ull开发板,可以去访问10.0.2.2,比如使用NFS挂载:
[root@qemu_imx6ul:~]# mount -t nfs -o nolock,vers=3 10.0.2.2:/home/book/nfs_rootfs /mnt
如果一切正常,在开发板上就可以通过/mnt目录访问Ubuntu的/home/book/nfs_rootfs目录了。

10.更换文件系统

如果你修改过内核,或是修改过设备树文件。
那么可以用上面2个文件去替换QEMU中的zImage和100ask_imx6ull_qemu.dtb。
QEMU中的zImage和100ask_imx6ull_qemu.dtb,通过打开qemu-imx6ull-gui.sh就可以知道这2个文件的位置,一般是位于imx6ull-system-image目录
安装好百问网提供的QEMU后,你可以得到一个imx6ull-system-image目录,里面有名为rootfs.img的文件,它就是根文件系统:
你可以在Ubuntu下直接修改rootfs.img,不过要先挂载,执行以下命令:
sudo mount -o loop rootfs.img /mnt
你就可以在/mnt目录下对其中的文件进行操作了,也可以把Ubuntu中的文件复制进去。
注意:修改完毕后,要执行以下命令:
sudo umount /mnt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于百问网imx6ull-qemu开发板的linux驱动开发体验 的相关文章

  • linux软链接的创建、删除和更新

    大家都知道 xff0c 有的时候 xff0c 我们为了省下空间 xff0c 都会使用链接的方式来进行引用操作 同样的 xff0c 在系统级别也有 在Windows系列中 xff0c 我们称其为快捷方式 xff0c 在Linux中我们称其为链
  • 进程、线程、多进程、多线程的优缺点和区别

    进程 xff1a 是并发执行的程序在执行过程中分配和管理资源的基本单位 xff0c 是一个动态概念 xff0c 竞争计算机系统资源的基本单位 线程 xff1a 是进程的一个执行单元 xff0c 是进程内科调度实体 比进程更小的独立运行的基本
  • Postman 汉化(Postman中文版)

    1 首先从官网下载postMan安装包 postman官网下载地址 Download Postman Get Started for Free 2 下载postMan 汉化包 app zip postman汉化包 Releases hlmd
  • UDP的客户端和服务器端的实例(VC6.0实现)

    服务器端程序 xff1a UdpServer cpp Defines the entry point for the console application include 34 stdafx h 34 include lt stdio h
  • STM32中关于串口中断的调试(不断进入发送中断的原因)

    说来惭愧 xff0c 前日在调试stm32f10系列的单片机的时候 xff0c 想做一个关于串口发送的状态机 xff0c 每隔100毫秒发送一次命令 没有用DMA xff0c 就是想单纯的使用发送中断来数据 xff0c 结果在调试的时候一直
  • Psoc Creator 入门——空工程的建立

    最近在做psoc 4000芯片的开发 xff0c 现在简单的说说怎么利用psoc creator进行开发 首先 xff0c 安装psoc creator xff0c 我使用的版本是4 0 安装过程省略 xff0c 赛普拉斯官网有下载链接 x
  • mbedtls使用openssl生成的自签名证书进行TLS实验

    目录 1 使用openssl生成自签名证书2 VS2013编译mbedtls3 mbdtls默认对证书的要求4 mbdtls测试例子详解5 运行测试程序 1 使用openssl生成自签名证书 openssl是一个安全套接字层密码库 xff0
  • IIC的通信波形分析

    关于IIC xff0c 不解释它的历史了 xff0c 有兴趣自己去百度看看 xff0c 本文的图片是由周立功的LAB6021逻辑分析仪抓取的 xff0c 通信的波形是抓取的cypress的psoc 4000芯片得到的 最近项目需要用到触摸I
  • linux下的CSV文件操作

    先介绍一下什么是csv文件 xff0c 这是一种简单的文本文件 xff0c 也被称为逗号分隔值文件 主要是用于存储简单的数据 xff0c 下面在weindows下用UE简单生成一下文件 然后用excel打开 这就是一个简单的csv文件 xf
  • GNU makefile入门——刚开坑,没有干货

    一个完整的makefile文件包含5个部分的内容 xff1a 显示规则 xff0c 隐含规则 xff0c 变量和指示符 xff0c 注释 显示规则 xff1a 包括目标 xff1a 依赖规则 命令 隐含规则 xff1a make根据目标文件
  • Renesas CS+ for ca cx入门(一)

    这是一篇关于Renesas的CS 43 for ca xff08 以下简称CA xff09 的入门简介 xff0c 在网上关于这个IDE的使用方法比较少人讲述 xff0c 兴许使用的人比较少吧 另一个类似的IDE是CS 43 for cc
  • 单片机——按键扫描

    按键扫描 xff0c 我想应该是比较简单的单片机应用了 xff0c 但是有时候看起来简单的东西反而不好写 本文拿大部分人觉得简单的按键扫描聊聊我工作至今对于软件结构的理解 嗯 xff0c 对的 xff0c 是结构 xff0c 不是架构 xf
  • keil的错误: Error: Encountered an improper argument 的解决方法

    将附件中的文件下载然后放到keil一下的安装目录中即可C Keil v5 UV4 xff0c 选择替换即可 文件链接 xff1a http download csdn net download ma57457 10118005 官方说的是支
  • 嵌入式软件没有层次感的原因

    因为软件是一个人写的 xff01 xff01 xff01
  • 博客网站转移

    我的博客会慢慢的转移到新的网站上 xff0c 新的地址为oopsrtos com xff0c 新博客会对arm 体系结果做更深入的探讨 xff0c 主要是关于实时操作系统内核开发的研究 最近在研究FPU xff0c 从内核层解释在操作系统中
  • keil工程中找不到头文件的可能原因

    今天用keil写一个串口调试程序 xff0c 编译工程时 xff0c 总是找不到type h头文件 xff0c 而该文件又是必须的 于是 xff0c 重新看设置 xff0c 头文件路径已经包含到工程里了 xff0c 头文件也已经添加到工程里
  • 在NAND FLASH上建立YAFFS2文件系统

    在NAND FLASH上建立YAFFS2文件系统 xff08 一 xff09 By on 2006 07 22 经过了半个多月的努力 xff0c 终于搞定nandflash的mtd驱动和上层的yaffs2文件系统 这半个多月来几乎每天都要和
  • 个人学习笔记-矩阵的四则运算

    目录 1 矩阵的四则运算1 1 矩阵的乘法运算1 2矩阵的加法运算1 3矩阵的减法运算 2 接口测试输出结果 1 矩阵的四则运算 1 1 矩阵的乘法运算 span class token comment 矩阵乘法 C语言实现分解步骤 xff
  • 单片机通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB

    参考资料 xff1a 这些单片机接口 xff0c 一定要熟悉 xff1a UART I2C SPI TTL RS232 RS422 RS485 CAN USB SD卡 秒懂所有USB接口类型 xff0c USB接口大全 1 UART UAR
  • PCB中走线与电流的关系

    参考资料 xff1a 超强整理 xff01 PCB设计之电流与线宽有八种关系 1 前言 PCB的载流能力取决与以下因素 xff1a 线宽 线厚 xff08 铜箔厚度 xff09 容许温升 PCB走线越宽 xff0c 载流能力越大 但走线宽度

随机推荐