嵌入式 - 内核驱动1 - 配置linux驱动

一. linux组成

1. bootloader

一个裸机程序,为kernel启动准备环境并引导 kernel 启动

  • 初始化CPU(工作模式)
  • 初始化异常向量表
  • 关看门狗
  • 初始化时钟
  • 关中断
  • 关闭Cache (D-Cache必须关闭)
  • 关MMU
  • 初始化内存
  • 初始化相关设备(串口、emmc、nandflash、网口)
  • 集成相关的协议
  • 搬移内核到内存 (向内核传参---根文件系统类型/位置/ 终端及相关参数)

启动内核后bootloader不在控制CPU,CPU的控制权转交给内个kernel

2. kernel

  • 进程管理 IPC
  • 内存管理 MM
  • 文件管理
  • 网络管理
  • 设备管理

之后加载(挂载)根文件系统

init ->设置环境变量/启动相关服务 -> shell -> userapp

3. rootfs

文件系统---操作系统启动后第一个挂载的文件系统,是一堆文件的集合

配置文件 => 库文件 => 启动脚本 => 命令(系统程序) => 用户程序

二、交叉编译准备

1. tftp

1. 概念

tftp是基于TCP/IP网络协议的一个应用层协议,主要用来实现简单文本的传输,在嵌入式开发中,一般用于开发板和电脑间文件的传输。
比如开发板需要内核镜像文件,可以使用tftp从服务器下载,并在开发板中运行。

2. 配置

1. 下载tftp-hpa 客户端软件

sudo apt-get install tftpd-hpa tftp

2. 配置文件

sudo vim /etc/default/tftpd-hpa
--secure 安全模式
-l 独立性
-c 允许创建文件

3. 创建管理目录路径

mkdir /home/linux/tftpboot //创建tftp管理目录
chmod 0777 /home/linux/tftpboot //为tftp管理目录增加权限

4. 重启服务器

sudo service tftpd-hpa restart

2. nfs

1. 概念

nfs是基于网络的一种分布式文件系统协议,允许主机利用网络来实现目录的挂载。
在嵌入式开发中,通常将开发板的文件系统挂载到Ubuntu的指定目录下,形成共享文件,这样在Ubuntu下编写软件,编译软件,将可执行程序放到共享目录下,开发板即可拿到代码,并执行代码。
有了nfs,就不需要手动拷贝代码到开发板中,提高开发效率。

2. 配置

1. 下载tftp-hpa 客户端软件

sudo apt-get install nfs-kernel-server

2. 配置文件

sudo vim /etc/exports

/home/linux/nfs/rootfs 允许客户端挂载的服务器目录路径
* 允许所有客户端挂载
rw 允许客户端读写
sync 客户端读写后,服务器同步写入磁盘
no_subtree_check 无需检测子目录权限
no_root_squash 保留root权限

3. 创建共享目录路径

sudo mkdir -p /home/linux/nfs/rootfs
sudo chmod 0777 /home/linux/nfs
sudo chmod 0777 /home/linux/nfs/rootfs

4. 修改版本信息

sudo vim /etc/default/nfs-kernel-server

5. 重启虚拟机后重启 nfs 服务

sudo service nfs-kernel-server restart

三、网络配置

1. 双网卡网络

双网卡网络实现Ubuntu既能通过一个网卡与开发板连接,实现tftp及nfs服务,与开发板通信
又能通过apt-get工具下载软件,ping 通baidu,实现上网功能

2. 网络模式

1. 桥接模式

Ubuntu虚拟机通过桥接模式以192.168.1.100作为IP地址来操作网卡
Windows系统则通过 192.168.1.200作为IP地址操作网卡
两个IP地址均是存在的,所以Ubuntu可以作为独立的IP地址来进行 网络操作。
该模式主要功能及局限性为:
作为服务器时必须选择桥接模式,因为服务器必须有真实IP地址,这样才能在网络中被找到。
Ubuntu与Windows作为独立的IP地址来上网,Ubuntu网络是否正常与Windows没有关系,两者网络连接状态是独立的。

2. NET模式

Ubuntu虚拟机通过NAT模式工作时,Windows会认为Ubuntu系统是工作在其上的一款软件,因此会为Ubuntu系统虚拟一个不存在的网卡,即192.168.XX.XX(此IP地址可以通过软件配置)
如果Windows能够正常上网,那么Ubuntu一定也是能够上网的。
该模式的主要功能及局限性为:
上网方式简单,Windows有网的情况下,Ubuntu想要上网,配置为NAT模式最简单快捷。
NAT模式因为Ubuntu地址是虚拟IP地址,所以不能作为服务器IP地址,在网络中也是无法被找到的。
如果只是想Ubuntu上网,而不需要作为服务器被网络终端访问,推荐配置为NAT模式。

3. 配置

不配置成双网卡模式时实现桥接和NET切换

1. 设置

虚拟机 => 设置
选择网络连接

2. 编辑网络

编辑 => 虚拟网络编辑器

选择桥接网络:上网 -- WI-FI

连接板子 -- PCIe

3. 修改网络配置文件

sudo vim /etc/network/interfaces

4. 重启ubutu

sudo shutdown -r now

5. 测试网络

1. 查看网卡信息

ifconfig

2. 能否ping 通 baidu

ping www.baidu.com

相关推荐
老黄编程3 小时前
ubuntu 20.04 代号 focal , ubuntu 22.04 代号为 jammy, ubuntu24.04 代号为 noble
linux·运维·ubuntu
陈震_3 小时前
linux系统(ubuntu)安装mysql8详细教程
linux·运维·ubuntu
LoneEon3 小时前
Ubuntu 部署 Harbor 构建企业级私有镜像仓库
linux·运维·ubuntu·docker·harbor
Clownseven3 小时前
忘记云服务器密码怎么办?阿里云/腾讯云/AWS密码重置官方指南
服务器·阿里云·腾讯云
用户31187945592183 小时前
如何在CentOS 7上安装bzip2-1.0.6-13.el7.x86_64.rpm RPM包(详细步骤)
linux
泡沫冰@3 小时前
shell编程:sed - 流编辑器(2)
linux
Kusunoki_D3 小时前
Linux to go Ubuntu 22.04 不匹配无线网卡 MT7925 的解决方法
linux·ubuntu
oLingXi123 小时前
Unity开发CI/CD工具Jenkins的安装(Windows10)
运维·unity·ci/cd·jenkins