i.MX6ULL|快速配置环境配置记录

描述

最近换了新的笔记本,就把老的笔记本装了ubuntu,使用体验比虚拟机好很多,就算是老笔记本的配置,带个ubuntu还是非常流畅的,就是要重新配置环境,这篇文章就来记录下环境配置。

| 交叉编译器安装

交叉编译参考交叉编译器安装这篇推文,具体步骤记录得非常清楚。想要获取当前路径,可以使用 pwd 命令:

Uboot

| uboot编译

uboot编译参照uboot初探这篇推文,里边有相关介绍和操作,这里就不做过多介绍。

Uboot

| 从网络启动 Linux 系统

可以通过从网络启动Linux系统这篇文章了解相关内容,在ubuntu20中查看ip地址可以使用 ip addr查看,在win11中可以使用ipconfig查看ip,在保证网线接到同一局域网中,还需要配置uboot才能ping通win11和win11,win11需要关闭防火墙,配置如下:

 

setenv ipaddr 192.168.2.50  //开发板 IP 地址
setenv ethaddr b81d:01:00:00  //开发板网卡 MAC 地址
setenv gatewayip 192.168.2.1  //开发板默认网关
setenv netmask 255.255.255.0  //开发板子网掩码
setenv serverip 192.168.2.55  /服务器地址,也就是 Ubuntu 地址
saveenv  //保存环境变量

 

配置完后再重启开发板,再ping通win11和ubuntu,确保它们都在同一局域网下面。最后再搭建TFTP服务,测试linux能否正常通过网络启动。

测试启动

1、设置环境变量

进入uboot中,输入下面配置:

 

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk-emmc.dtb; bootz 80800000 - 83000000'
saveenv

 

2、下载文件

进入uboot中,输入下面命令:

 

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk-emmc.dtb

 

3、启动内核

进入uboot中,输入下面命令:

 

bootz 80800000 - 83000000

 

| 编译内核

内核的编译可以参考移植内核这篇推文,里边有相关内容介绍及实现过程等。

内核编译配置如下:

 

#!/bin/sh
#编译之前先清理
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean   
#配置Linux内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
#编译Linux内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

 

最终会生成一个很重要的文件,就是zImage文件,下方是它存放在系统中的详细路径:

 

Linux内核镜像文件:
存放路径为 arch/arm/boot/zImage

IMX6ULL EVK开发板对应的设备树文件:
存放路径为 arch/arm/boot/dts/imx6ull-14x14-evk.dtb

 

| 编译根文件系统

根文件系统相关知识可以借鉴根文件系统构建这篇推文,详细介绍了如何从零到一构建一个根文件系统。

uboot配置:

 

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.2.55:/home/noah/linux/nfs/rootfs,proto=tcp rw ip=192.168.2.50192.168.2.1off'
saveenv

 

如果遇到根文件挂载失败的,可以借鉴以下下面的方法:

原因:因为ubuntu的nfs版本为version4,而板子的nfs版本为version2,所以直接挂载上去无法识别

解决方法:在 /etc/default/nfs-kernel-server的最后一行添加以下代码:

 

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

 

具体看下图(使用命令:sudo gedit nfs-kernel-server):

Uboot

| 新字符驱动

字符驱动可以借鉴新字符设备驱动模板这篇文章,里边有完整的相关说明及源代码;从官方下载了Linux kernel源码进行编译,遇到如下错误:

cc1: error: code model kernel does not support PIC mode 解决方法:打开官方内核源码,在Makefile中对应修改一下:

ARCH        ?= arm
CROSS_COMPILE    ?= arm-linux-gnueabihf-
# Architecture as present in compile.h
UTS_MACHINE     := $(ARCH)
SRCARCH     := $(ARCH)

和


KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs 
           -fno-strict-aliasing -fno-common 
           -Werror-implicit-function-declaration 
           -Wno-format-security 
           -std=gnu89 -fno-pie

 

图片如下:

Uboot

Uboot

最后加载驱动,然后测试应用程序,到此驱动开发环境基本搭建完成!






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分