Lazy loaded image
🥳嵌入式Linux开发
Linux驱动基础01-开发环境搭建和资料下载
Words 2648Read Time 7 min
2024-9-11
2025-4-24
type
date
slug
category
icon
password

一、VMware 安装虚拟机

1.1 虚拟机安装

2024年5月13日 VMware 宣布个人用途的 VMware Workstation Pro 将免费:VMware Workstation Pro: Now Available Free for Personal Use - VMware Workstation Zealot
  1. 参考这里安装VMware Workstation Pro 17
  1. 阿里云镜像-ubuntu-releases镜像下载ubuntu,强烈建议下载18.04(后面驱动学习需适用百问网
    qemu
    100askTeamUpdated Feb 5, 2025
    ,支持18.04版本)
  1. 参考网络安装镜像,并设置硬件资源
  1. 参考这里更新软件源,22.04 参考这里更新软件源

1.2 共享文件夹

  1. 解决共享文件夹不显示问题
  1. 设置自动挂载共享文件夹
echo '.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0' | sudo tee -a /etc/fstab

1.3 网络配置

预备知识
物理连接
开发板和PC接在交换机上,虚拟机通过桥接真实网卡,实现VMnet0虚拟网卡之间的连接。由于网卡网关设置192.168.1.1,开发板和虚拟机配置为同一网段。
notion image
网络配置
  1. NAT 网卡:Ubuntu 通过它上网,只要 Windows 能上网,Ubuntu 就能上网。与Windows使用相同的IP。
    1. 桥接网络:Ubuntu 通过它跟开发板联通
      1. 添加桥接网卡
        1. notion image
          建立桥接网络,会在Ubuntu和Windsows生成新的网络适配器。
      2. 配置桥接网卡
      3. PC 配置(配置与否取决于桥接的物理网卡)
        桥接到USB网卡的话需配置,若桥接到PCIE网卡,PC本身网卡通过DHCP上网,网段不好调整,则本配置可忽略,曲线救国。和pcie网卡设置统一网段。
        notion image
        Vmware 配置
        修改虚拟网络配置
        notion image
        将VMnet0 桥街道USB网卡上
        notion image
        确认 ens36 没有 IP 后,它就是要设置的桥接网卡。点击它右边的“设置”图标,在弹出的设置界面内,点击“IPV4”切换出设置页面,之后选择“Manual”表示手工设置 IP 地址,在“Address、Netmask、Gateway”输入框分别填入:192.168.1.101、255.225.225.0、192.168.1.1。填写完毕后,点击“Apply”
        notion image
        开发板配置
        /etc/init.d/S40network restart
        三者验证(若单向,关闭防火墙)
        windows(PING ubuntu 和 开发板)
        开发板 (PING ubuntu 和 Windows)
        Ubuntu(PING 开发板和 Windows)

    二、搭建开发环境

    2.1 使用 MobaXterm 远程登录 Ubuntu

    其他

    2.2 Trae/Cursor 开发环境

    参考资料
    1. Guide to VSCode
      Guide to VSCode
    1. vscode阅读linux内核源代码 - 知乎
    安装步骤
    1. 安装Trae
    1. 点击远程开发,输入 ssh 信息
    1. 打开对应开发路径

    2.3 BSP 下载和工具链配置

    2.3.1 一键初始化开发环境

    2.3.2 下载 BSP

    1. 下载 Linux-4.9.88
      1. 压缩后传回windows
        1. 注意:在 Windows 解压内核时会提示一些错误,会提示是否覆盖文件,选择“覆盖”即可。这是 因为 Linux 下的文件区分大小写,a.c 和 A.c 以不同的文件,但是 Windows 下不区分大小写, 这 2 个文件是同一个。这些错误不会影响我们阅读源码。
      1. 更新源码

        2.3.3 配置交叉编译工具链

        1. 打开vim ~/.bashrc,编辑
          1. 设置生效并测试
            1. 测试交叉编译工具链

              2.3.4 测试编译内核、内核模块

              1. 编译内核
                1. 编译内核模块
                  1. 安装内核模块到nfs_rootfs(参考3.3 开发板挂载 Ubuntu 的 NFS 目录之间传文件
                    1. 安装内核和模块到开发板上,以下操作在开发板上
                      1. 最后重启开发板,它就使用新的 zImage、dtb模块了。

                      2.4 安装 QEMU

                      2.4.1 发行版

                      下载,执行命令:
                      安装运行环境,执行命令:
                      运行QEMU,执行命令:

                      2.4.2 源码

                      代码在以下链接:
                      下载方法:

                      三、PC、虚拟机和开发板间文件传输

                      3.1 使用 FileZilla 在 Windows 和 Ubuntu 之间传文件

                      notion image

                      3.2 使用 FileZilla 在 Windows 和开发板之间传文件

                      同上,略

                      3.3 开发板挂载 Ubuntu 的 NFS 目录之间传文件

                      什么是NFS协议?
                      NFS实现了一个跨越网络的文件访问功能,如下图可以简要说明其原理。其整个架构为Client-Server架构,客户端和服务端通过RPC协议进行通信,RPC协议可以简单的理解为一个基于TCP的应用层协议,它简化命令和数据的传输。NFS最大的特点是将服务端的文件系统目录树映射到客户端,而在客户端访问该目录树与访问本地文件系统没有任何差别,客户端并不知道这个文件系统目录树是本地的还是远在另外一台服务器。
                      notion image
                      为什么要挂载ubuntu的nfs目录?
                      调试开发板文件系统内的某个应用程序时,需要在开发板和ubuntu系统间多次进行编译、拷贝等操作。因此可以在调试阶段,让开发板挂载ubuntu的nfs目录,以提高调试效率,加快研发速度。
                      1. 确定 ubuntu 的桥接网卡 IP
                      1. 安装nfs服务
                        1. 打开nfs服务器配置文件/etc/exports,指定nfs服务器共享目录及其属性,内容如下: /nfsroot *(rw,sync,no_root_squash)
                          • /nfsroot:指定/nfsroot为nfs服务器的共享目录
                          • *:允许所有的网段访问,也可以使用具体的IP
                          • rw:挂接此目录的客户端对该共享目录具有读写权限
                          • sync:资料同步写入内存和硬盘
                          • no_root_squash:root用户具有对根目录的完全管理访问权限
                          • no_subtree_check:不检查父目录的权限
                          Ubuntu安装nfs服务器的过程就完成了,可以执行下面这个命令查看nfs服务器的共享目录:
                          showmount -e localhost
                      1. 在开发板上执行 mount nfs 命令
                         

                        四、资料下载

                        本教程为百问网驱动大全学习笔记,开发版为imx6ull pro。
                        百问网所有资料分 4 类:
                        1. 开发板配套资料(原理图、虚拟机、烧写工具等),放在百度网盘
                        1. 录制视频过程中编写的文档、源码、图片,放在 GIT 仓库
                        1. u-boot、linux 内核、buildroot 等比较大的源码,放在 GIT 仓库
                        1. 视频,在线观看,放在百问网、B 站等网站
                        notion image
                        百问网 git 仓库地址
                        驱动的学习需要下载快速入门和驱动大全资料。后面引用路径样式 doc_and_source_for_drivers/path1/path2/filename.xxx,省略了本地文件夹地址。
                        git工具常用命令

                        参考资料

                        1. 需科学上网
                          1. Video preview
                        上一篇
                        Guide to Linux System
                        下一篇
                        Linux驱动基础02-第一个内核模块

                        Comments
                        Loading...