使用的开发板是正点原子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步骤(一)相关推荐

  1. Linux学习笔记---移植官方linux步骤(二)

    目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...

  2. Linux学习笔记---移植官方uboot步骤(二)

    在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...

  3. Linux学习笔记---移植官方uboot步骤(一)

    目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...

  4. Linux学习笔记(一):Linux常用命令

    linux学习笔记(一):Linux常用命令 ctrl + l 清屏 clear crtl + c 终止操作 Linux常用命令 文件处理命令 ls:list 功能:显示目录文件 选项: -a 显示所 ...

  5. Linux 学习笔记3 -- 常用 Linux 命令的基本使用

    文章目录 1. 学习 Linux 终端命令的原因 2. 常用 Linux 命令的基本使用 3. 终端实用技巧 3.1 自动补全 3.2 曾经使用过的命令 4. Linux 终端命令格式 5. 查阅命令 ...

  6. 【嵌入式Linux学习笔记】基于Linux官方库的标准外设驱动

    对于标准的外设如LED,KEY,PWM等,以及标准通信协议,Linux都自带有标准的驱动库,不需要我们自行编写,只需要配置好相应的GPIO属性和电气属性,即可匹配相应的驱动,在应用程序中直接使用相应的 ...

  7. 黑裙安装linux环境,Linux学习笔记(一) ---- 安装Linux系统

    学习Linux的第一件事情,你得先有个Linux系统,才能知道怎么学吧? 于是安装Linux是第一部,找网上找了不少教程,自己总结了一下,些一个博文先. 我安装的Linux是在VMWare 7.2版本 ...

  8. linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程...

    1.设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序.任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描.2)个别用户工作:个别用户可能希望执行某 ...

  9. 【Linux学习笔记】管理Linux操作系统:软件安装

    目录 一.RPM安装方法 1.查看rpm的版本与用法​ 2.rpm命令用法 3.安装vsftpd软件 二.yum安装 1.建立yum源本地仓库(注意:红帽Linux8是不行的) 2.查看所有库​ 3. ...

最新文章

  1. jvm七种垃圾收集器
  2. 很多优秀人感觉是:让他实际工作,他可能会考虑得很全面,而答题的时候,他就显得比较马虎,完成要求就算结束...
  3. modprobe:用于向内核中加载模块或者从内核中移除模块
  4. 创建python虚拟环境
  5. SaaS 不懂留存!别玩
  6. 一个简单的学生成绩管理软件(ODBC开发)
  7. js中 var a= b || c;
  8. python列表[]中括号
  9. 使用Dev-C++查看vector数组中的变量值
  10. 爬取知乎回答点赞数_python3 爬虫 之只需要问题id爬取知乎问题全部回答
  11. php中的try语句,PHP Try-catch 语句使用技巧
  12. Python数据挖掘框架
  13. OpenSSL笔记-PKCS#1和PKCS#8的区别及分别调用的API
  14. Android 数独游戏开发,强逻辑的梳理
  15. python33个保留字基本含义_Python保留字总结
  16. Ubuntu 22.04 下安装uhd和gnuradio的快捷方法
  17. 信庭嵌入式工作室-嵌入式Linux漫谈之Linux系统
  18. Electron编译报错:include: could not find: ****StdUtils.nsh“的解决
  19. 这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令
  20. amd锐龙笔记本cpu怎么样_如果你要购买笔记本的话!千万不要现在购买AMD锐龙笔记本!因为...

热门文章

  1. 设置 git/npm/bower/gem 镜像或代理的方法
  2. H3C之虚拟路由器冗余协议(VRRP)的原理及应用
  3. LINQ-to-SQL那点事~耳目一新的partial class 和 partial method
  4. 【C012】Python - 基础教程学习(三)
  5. 在Windows XP中轻松发传真
  6. CPU使用时间问题测试
  7. python 核心编程 第一部分
  8. 用canvas实现手写签名功能
  9. .Net AppDomain详解(二)
  10. tp5命令行基础介绍