最近换了新的笔记本,就把老的笔记本装了ubuntu,使用体验比虚拟机好很多,就算是老笔记本的配置,带个ubuntu还是非常流畅的,就是要重新配置环境,这篇文章就来记录下环境配置。
| 交叉编译器安装
交叉编译参考交叉编译器安装这篇推文,具体步骤记录得非常清楚。想要获取当前路径,可以使用 pwd 命令:
| 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 zimagetftp 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/zimageimx6ull 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):
| 新字符驱动
字符驱动可以借鉴新字符设备驱动模板这篇文章,里边有完整的相关说明及源代码;从官方下载了linux kernel源码进行编译,遇到如下错误:
cc1: error: code model kernel does not support pic mode 解决方法:打开官方内核源码,在makefile中对应修改一下:
arch ?= armcross_compile ?= arm-linux-gnueabihf-# architecture as present in compile.huts_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
图片如下:
最后加载驱动,然后测试应用程序,到此驱动开发环境基本搭建完成!
工地扬尘监测仪产品概述说明
车载AR导航战争打响,高德三项核心技术储备领先第一步
用模态域分析问题
TI发布业界最高功率的集成型D类音频放大器
台积电采购的EUV设备已超35台占ASML过半产量
i.MX6ULL|快速配置环境配置记录
什么是CIDR (Classless InterDomain
赛普拉斯的NV-SRAM接口解决方案
基于AIN的压电器件及其应用进展综述
全球最大技术分销商英迈宣布将成为微软HoloLens 2首批全球经销商之一
360手机N5现场上手图赏:超强续航+大内存!
无功功率补偿原理及实例分析计算
软通动力天鹤数据复制服务系统V1.0获得华为技术认证书
华为数字能源融合数字技术助力构建新型电力系统
如何快速低成本搭建设备通信监控系统?
3D芯片技术日渐成熟 未来AI人工智能将微型化
交流接触器的组成部分/工作原理/检测方法
linux内核是怎么管理物理内存的呢?
TE为5G的发展都做了哪些准备?
红外测距传感器的原理以及在AGV小车中的应用介绍