Linux驱动:操作步骤
一、uboot在SD卡已经下载好了
二、tftp协议传输数据只允许传输指定目录下的文件,所以将kernel文件放在cat后面的目录下
三、nfs文件下放对应的rootfs
四、uboot启动倒计数时间到,将自动将SD卡中的kernel和.dtb文件加载到内存。我们需要在倒计时结束前通过tftp和nfs协议将另一份kernel和.dtb文件传输过来让uboot启动
五、uboot命令(uboot倒计数结束前将按 enter 将暂停倒计数,进入uboot命令行)
(一)所有环境变量都以字符串形式存在
(二)help和?:帮助
(三)printenv:打印环境变量
(四)reset:自动重启
(五)setenv 环境变量名 环境变量值 (saveenv 环境变量名,保存后才有效):重设环境变量值
(六)setenv 环境变量名:删除环境变量
六、启动步骤
(一)参数设置
(二)连通ubuntu:ping 虚拟机IP
(三)下载文件
1.连接服务器 setenv serverip ip(ubuntuip)
2.①tftp 0x8080 0000 zImage ②tftp 0x8300 0000 .dtb
3.bootz 0x8080 0000 - 0x8300 0000:启动内存0x8080 0000地址处的内核
(四)内核恐慌(kernel panic):内核运行发生致命错误(跟文件系统挂载失败)
解决:setenv bootargs root=/dev/nfs nfsroot=192.168.1.3:/home/linux/imx6/rootfs ip=192.168.1.100 console=ttymxc0,115200 init=/linuxrc
1.root 根文件系统类型
2.nfsroot nfs根文件系统的位置 远端某ip地址主机下的目录
3.ip 内核启动阶段使用的ip地址
4.console 控制台指定为串口0
4.init 指定init进程(启动的第一个进程)
七、内核编译
.config 保存make menuconfig配置的结果
obj-$(CONFIG_FUN) += fun.o -------obj-y += fun.o
obj-$(CONFIG_FUN1) += fun1.o - -----obj-n += fun1.o
Makefile 根据.config中的配置对内核模块进行(选择性)编译
(一)官方下载linux kernel源码:4.1.15
(二)将源码拷贝到ubuntu并解压
(三)进去内核源码顶层目录,后续编译所有操作才顶层目录即可
(四)拷贝默认配置 所有默认配置都在arch/arm/configs/目录下
①cp arch/arm/configs/imx_alientek_emmc_defconfig .config
②make imx_alientek_emmc_defconfig
(五)在驱动对应目录下创建.c文件后,修改Makefile和Kconfig
(六)make menuconfig修改配置选项
(七)make all -j8 :成功arch/arm/boot目录下会生成zImage