嵌入式 - 内核驱动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/rootfssudo chmod 0777 /home/linux/nfssudo 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,实现上网功能
又能通过apt-get工具下载软件,ping 通baidu,实现上网功能
2. 网络模式
1. 桥接模式
Ubuntu虚拟机通过桥接模式以192.168.1.100作为IP地址来操作网卡
Windows系统则通过 192.168.1.200作为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一定也是能够上网的。
该模式的主要功能及局限性为:
上网方式简单,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