学习嵌入式之驱动
一、基础搭建
1.基础:
c语言 | 软件编程语言 |
数据结构 | 软件编程思想 |
2.驱动实现目标
- 如果将Linux系统细致到开发板平台上?
- Liunx系统与硬件设备的适配
3.自我能力的锻炼
- 继续强化C语言
- 锻炼大型代码阅读和分析能力
- 学习大型项目的代码搭建和管理的能力
- 大型项目的软件编程思想
- 硬件调试能力
- 软件代码的开发和集成能力
- Linux系统配置能力
4.Linux系统功能
(1)内存管理:虚拟地址和物理地址的映射和管理
(2)多任务的管理:管理多任务的状态
(3)网络的管理:网络的协议栈
(4)多任务间的通信:进程、线程、管道、共享内存
(5)文件系统的管理
5.shell功能(用户不能直接操作内核原因)
- 保障Linux内核安全
- shell命令解释器
6.移植Linux系统到IMX6ULL平台需要的文件列表
(1)bootloader:初始化硬件设备,引导内核启动,为加载内核做准备 u-boot.imx
(2)内核镜像:Linux内核核心代码(屏蔽底层不同的硬件,为上层应用提供统一接口,实现5大功能) zimage
(3)设备树文件:硬件设备资源信息 imx6ull-alientek-emmc.dtb
(4)文件系统:与用户交互的系统 rootfs.tar
7.IMX6ULL板子存储图
8.启动方式
(1)USB启动:上电后从USB连接的设备中读取系统文件信息并启动
(2)SD卡启动:上电后从SD卡设备中读取系统文件信息并启动
(3)EMMC启动:上电后从EMMC设备中读取系统文件信息并启动
(4)Nand Flash启动(无法使用):上电后从Nand Flash设备中读取系统文件信息并启动
9.SD烧录
Windows系统烧录方法:
mfqtool:NXP官方提供的工具,实现系统烧录,烧录到SD卡上
二、配置Uboot启动烧录
1.烧录原理
2.烧录方式(3种)
(1)直接烧录到emmc
(2)烧录到SD卡
(3)每次从服务器下载,只把Uboot烧到SD中,Uboot起来之后,需要的文件,从Ubuntu中服务器下载,DDR又文件,通过NFS方式挂载在文件系统下,有点在于,重新修改内核和设备树,只需要更新Ubuntu的文件,文件系统修改也可同步,Uboot不用更新
3.网络配置
(1)NAT模式:
- (1)Windows有网,Ubuntu就有网
- (2)Ubuntu的IP地址是虚拟的
- (3)因为(2),所以NAT模式不能作为服务器,(band不了);
(2)桥接模式
- (1)Windows与Ubuntu公用同一个网卡,但网络是独立的;
- (2)Ubuntu的IP地址是独立的
- (3)桥接模式可以作为服务器,上网比较难(网络拥挤,需要的IP更多);
- (4)学校不得行!学校一个账号只有一个IP地址;
ping -》 操作开发板(ifconfig)- 》串口线-》安装minicom工具-》apt-get工具集
4..配置tftp服务器
配置tftp的管理目录:下载从管理目录中下载,上传向管理目录中上传
5.配置nfs服务器
- 上电 ->SD卡启动 ->uboot ->
- tftp 80800000 zImage
- tftp 83000000 imx6ull-alientek-emmc.dtb
- bootz 80800000-83000000
- ->uboot 设置bootargs 参数:说明文件系统通过nfs挂载到 192.168.1.100:/home/inux/nfs/rootfs 文件夹下