Linux学习笔记---移植官方linux步骤(一)
使用的开发板是正点原子IMX6U-MINI EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植。
这里所说的移植,其实不是自己编写驱动文件等,只是简单的将官方linux中的相关配置文件和文件名修改为自己的名字而已。
目录
拷贝官方原文件
重命名文件夹
修改Makefile
编译源码
内核启动测试
修改配置文件
修改设备树文件
修改Makefile 文件
新建编译脚本文件
修改CPU工作频率
使能8线EMMC驱动
拷贝官方原文件
使用ftp工具将NXP官方的linux文件发送到Ubuntu系统中。
下来在Ubuntu系统中解压linux压缩包
tar -vxif linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
重命名文件夹
解压完成后重命名文件夹
mv linux-imx-rel_imx_4.1.15_2.1.0_ga my_linux
将默认文件夹名重命名为my_linux
修改Makefile
进入到my_linux文件夹中,修改顶层Makefile文件
在Makefile文件中将ARCH 和 CROSS_COMPILE 这两个变量的值直接写死
保存退出。
编译源码
在编译之前,首先清理一下工程。
使用 make clean 命令清理工程
接下来开始编译默认配置文件imx_v7_mfg_defconfig
使用命令 make imx_v7_mfg_defconfig
接下来直接编译linux内核
使用make -j4命令编译linux内核
这个编译的时间会比较长。编译完成后如图所示:
Linux 内核编译完成以后会在 arch/arm/boot 目录下生成 zImage 镜像文件,如果使用设备树的话还会在 arch/arm/boot/dts 目录下开发板对应的.dtb(设备树)文件,比如 imx6ull-14x14-evk.dtb。
内核启动测试
在内核启动先首先要设置好uboot中的环境变量bootargs 内容如下:
如果没有设置则设置 bootargs,设置方法如下:
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
接下来将生成的zImage文件和imx6ull-14x14-evk.dtb文件拷贝到 Ubuntu系统中的tftp目录中。
接下来启动开发板,进入uboot命令模式中。使用ftp命令从Ubuntu系统中下载镜像文件和设备树文件。
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000 - 83000000
这是内核就开始启动
启动成功就就可以查看文件了
Linux内核正常启动后,就可以将NXP官方的配置文件修改为自己的。
修改配置文件
进入到my_linux/arch/arm/configs 文件夹中
将imx_v7_mfg_defconfig 复制一份重命名为 imx_myliux_emmc_defconfig
修改设备树文件
进入到/my_linux/arch/arm/boot/dts文件夹中
复制一份 imx6ull-14x14-evk.dts,然后将其重命名为 imx6ull-mylinux-emmc.dts
修改Makefile 文件
接下来继续在my_linux/arch/arm/boot/dts文件夹中修改Makefile文件。
找到“ dtb-$(CONFIG_SOC_IMX6ULL)”配置项,在此配置项中加入“imx6ull-mylinux-emmc.dtb”
新建编译脚本文件
在my_linux文件夹中新建imx6ull_mylinux_emmc.sh文件
在文件中输入编译脚本
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_mylinux_emmc_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j4
接下来给脚本设置可执行权限
输入命令: chmod 777 imx6ull_mylinux_emmc.sh
接下来就可以使用脚本编译内核了
编译完成结果如下
编译完成以后就会在目录 arch/arm/boot 下生成 zImage 镜像文件。在 arch/arm/boot/dts 目录下生成 imx6ull-mylinux-emmc.dtb 文件。将这两个文件拷贝到 tftp 目录下。
然后重启开发板,在uboot 命令模式中使用 tftp 命令下载这两个文件并启动,命令如下:
tftp 80800000 zImage
tftp 83000000 imx6ull-mylinux-emmc.dtb
bootz 80800000 – 83000000
启动成功后如图
修改CPU工作频率
在串口终端中 进入/sys/bus/cpu/devices/cpu0/cpufreq/文件夹
使用cat cpuinfo_cur_freq命令查看当前CPU工作频率
可以看到CPU当前工作频率为792000
如果要修改CPU工作频率的话,可以修改imx_mylinux_emmc_defconfig配置文件
在Ubuntu系统中 进入/my_linux/arch/arm/configs 文件夹
打开imx_mylinux_emmc_defconfig配置文件
设置CONFIG_CPU_FREQ_GOV_ONDEMAND=y 选项
Linux 内核一共有 5 种调频策略,
①、Performance,最高性能,直接用最高频率,不考虑耗电。
②、Interactive,一开始直接用最高频率,然后根据 CPU 负载慢慢降低。
③、Powersave,省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个!
④、Userspace,可以在用户空间手动调节频率。
⑤、Ondemand,定时检查负载,然后根据负载来调节频率。负载低的时候降低 CPU 频率,这样省电。负载高的时候提高 CPU 频率,增加性能。
修改完成以后重新编译 Linux 内核,编译之前先清理一下工程!因为我们重新修改过默认
配置文件了,编译完成以后使用新的 zImage 镜像文件重新启动 Linux。再次查看
/sys/devices/system/cpu/cpu0/cpufreq/ cpuinfo_cur_freq 文件的值
输入 cat scaling_governor 查看当前的调频策略。
看出当前的 CPU 调频策略为 preformance,也就是高性能模式,一直以最高主频运行。
也可以通过图形化配置界面来设置CPU的调频策略
在Ubuntu系统中进入my_linux文件夹中
输入make menuconfig
选择CPU Power Management
进入CPU Frequency scaling中
进入Default CPUFreq governor
选择 performance
然后保存退出。
然后编译 Linux内核,一定不要清理工程!否则的话我们刚刚的设置就会被清理掉。编译完成以后使用新的zImage 重启 Linux,查看当前 CPU 的工作频率和调频策略。
使能8线EMMC驱动
正点原子 EMMC 版本核心板上的 EMMC 采用的 8 位数据线,Linux 内核驱动里面 EMMC 默认是 4 线模式的,4 线模式肯定没有 8 线模式的速度快,现在讲将 EMMC 的驱动修改为 8 线模式。
在Ubuntu系统中进入到my_linux/arch/arm/boot/dts文件中。打开imx6ull-mylinux-emmc.dts文件
找到734行&usdhc2节点
将内容修改为如下:
&usdhc2 {
pinctrl-names = "default","state_100mhz","state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2_8bit>;
pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
bus-width = <8>;
non-removable;
status = "okay";
};
接下来就要开始修改网络驱动了。
下一篇:Linux学习笔记---移植官方linux步骤(二)
Linux学习笔记---移植官方linux步骤(一)相关推荐
- Linux学习笔记---移植官方linux步骤(二)
目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...
- Linux学习笔记---移植官方uboot步骤(二)
在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...
- Linux学习笔记---移植官方uboot步骤(一)
目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...
- Linux学习笔记(一):Linux常用命令
linux学习笔记(一):Linux常用命令 ctrl + l 清屏 clear crtl + c 终止操作 Linux常用命令 文件处理命令 ls:list 功能:显示目录文件 选项: -a 显示所 ...
- Linux 学习笔记3 -- 常用 Linux 命令的基本使用
文章目录 1. 学习 Linux 终端命令的原因 2. 常用 Linux 命令的基本使用 3. 终端实用技巧 3.1 自动补全 3.2 曾经使用过的命令 4. Linux 终端命令格式 5. 查阅命令 ...
- 【嵌入式Linux学习笔记】基于Linux官方库的标准外设驱动
对于标准的外设如LED,KEY,PWM等,以及标准通信协议,Linux都自带有标准的驱动库,不需要我们自行编写,只需要配置好相应的GPIO属性和电气属性,即可匹配相应的驱动,在应用程序中直接使用相应的 ...
- 黑裙安装linux环境,Linux学习笔记(一) ---- 安装Linux系统
学习Linux的第一件事情,你得先有个Linux系统,才能知道怎么学吧? 于是安装Linux是第一部,找网上找了不少教程,自己总结了一下,些一个博文先. 我安装的Linux是在VMWare 7.2版本 ...
- linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程...
1.设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序.任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描.2)个别用户工作:个别用户可能希望执行某 ...
- 【Linux学习笔记】管理Linux操作系统:软件安装
目录 一.RPM安装方法 1.查看rpm的版本与用法 2.rpm命令用法 3.安装vsftpd软件 二.yum安装 1.建立yum源本地仓库(注意:红帽Linux8是不行的) 2.查看所有库 3. ...
最新文章
- jvm七种垃圾收集器
- 很多优秀人感觉是:让他实际工作,他可能会考虑得很全面,而答题的时候,他就显得比较马虎,完成要求就算结束...
- modprobe:用于向内核中加载模块或者从内核中移除模块
- 创建python虚拟环境
- SaaS 不懂留存!别玩
- 一个简单的学生成绩管理软件(ODBC开发)
- js中 var a= b || c;
- python列表[]中括号
- 使用Dev-C++查看vector数组中的变量值
- 爬取知乎回答点赞数_python3 爬虫 之只需要问题id爬取知乎问题全部回答
- php中的try语句,PHP Try-catch 语句使用技巧
- Python数据挖掘框架
- OpenSSL笔记-PKCS#1和PKCS#8的区别及分别调用的API
- Android 数独游戏开发,强逻辑的梳理
- python33个保留字基本含义_Python保留字总结
- Ubuntu 22.04 下安装uhd和gnuradio的快捷方法
- 信庭嵌入式工作室-嵌入式Linux漫谈之Linux系统
- Electron编译报错:include: could not find: ****StdUtils.nsh“的解决
- 这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令
- amd锐龙笔记本cpu怎么样_如果你要购买笔记本的话!千万不要现在购买AMD锐龙笔记本!因为...