一、Linux内核编译

1、修改顶层Makefile

第252行修改:

ARCH ?=arm

CROSS_COMPLIE?= arm-linux-gnueabihf-

2、配置并编译Linux内核

make clean

make imx_v7_mfg_defconfig

3、Linux内核启动测试

1、确保以下变量配置

console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

2、将zImage和设备树文件拷贝到tftp服务器目录下

3、下载内核与设备树文件到开发板中,并启动内核

tftp 80800000zImage

tftp83000000 imx6ull-14x14-evk.dtb

bootz80800000 – 83000000

4、前面环境变量root指定的是根文件系统

二、添加自己的开发板

1、添加开发板默认配置文件

cd arch/arm/configs

cp imx_v7_mfg_defconfig imx_alientek_emmc_defconfig

然后就可以直接使用 make imx_alientek_emmc_defconfig来编译内核

2、添加开发板对应的设备树文件

cd arch/arm/boot/dts

cp imx6ull-14x14-evk.dts imx6ull-alientek-emmc.dts

然后需要在arch/arm/boot/dts/Makefile中找到dtb-$(CONFIG_SOC_IMX6ULL),并在此配置中添加imx6ull-alientek-emmc.dtb

3、编译测试

编写imx6ull_alientek_emmc.sh脚本

#!/bin/sh

#清理

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-distclean

#使用默认配置imx_alientek_emmc_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-imx_alientek_emmc_defconfig

#打开图形配置界面

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-menuconfig

#编译Linux

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

三、CPU主频和网络驱动修改

1、CPU主频修改

cat /proc/cpuinfo #查看CPU信息

其中BogoMIPS数值用来衡量处理器运行速度。

目录/sys/bus/cpu/devices/cpu0/cpufreq下的部分文件记录了CPU频率信息:

cpuinfo_cur_freq:当前 cpu 工作频率,从 CPU 寄存器读取到的工作频率。

cpuinfo_max_freq:处理器所能运行的最高工作频率(单位: KHz)。

cpuinfo_min_freq :处理器所能运行的最低工作频率(单位: KHz)。

cpuinfo_transition_latency:处理器切换频率所需要的时间(单位:ns)。

scaling_available_frequencies:处理器支持的主频率列表(单位: KHz)。

scaling_available_governors:当前内核中支持的所有 governor(调频)类型。

scaling_cur_freq:保存着 cpufreq 模块缓存的当前 CPU 频率,不会对 CPU 硬件寄存器进行检查。

scaling_driver: 该文件保存当前 CPU 所使用的调频驱动。

scaling_governor: governor(调频)策略, Linux 内核一共有5中调频策略,

①、 Performance,最高性能,直接用最高频率,不考虑耗电。

②、 Interactive,一开始直接用最高频率,然后根据 CPU 负载慢慢降低。

③、 Powersave,省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个!

④、 Userspace,可以在用户空间手动调节频率。

⑤、 Ondemand,定时检查负载,然后根据负载来调节频率。负载低的时候降低 CPU 频率,这样省电,负载高的时候提高 CPU 频率,增加性能。

scaling_max_freq: governor(调频)可以调节的最高频率。

cpuinfo_min_freq: governor(调频)可以调节的最低频率。

stats 目录下给出了 CPU 各种运行频率的统计情况,比如 CPU 在各频率下的运行时间以及变频次数。

cat /sys/bus/cpu/devices/cpu0/cpufreq/stats/time_in_state #查看CPU在各频率下工作时间

默认配置文件imx_alientek_emmc_defconfig中:

41 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y #配置默认调频策略为ONDEMAND42 CONFIG_CPU_FREQ_GOV_POWERSAVE=y43 CONFIG_CPU_FREQ_GOV_USERSPACE=y44 CONFIG_CPU_FREQ_GOV_INTERACTIVE=y

屏蔽41行,并添加 CONFIG_CPU_FREQ_GOV_ONDEMAND=y

在目录/sys/devices/system/cpu/cpu0/cpufreq/下查看文件cpuinfo_cur_freq、scaling_governor(当前调频策略)。

超频至700MHz:只需修改设置树文件中cpu0信息,添加 792000 1225000

编译设备树命令:

make dtbs

2、使能8线EMMC驱动

Linux内核驱动默认EMMC是4线模式,将其修改为8线。修改设备树文件。

734 &usdhc2 {735 pinctrl-names = "default";736 pinctrl-0 = ;737 non-removable;738 status = "okay";739};

将其修改为一下内容734 &usdhc2 {735 pinctrl-names = "default", "state_100mhz", "state_200mhz";736 pinctrl-0 = ;737 pinctrl-1 = ;738 pinctrl-2 = ;739 bus-width = <8>;740 non-removable;741 status = "okay";742 };

编译设备树命令:

make dtbs

3、修改网络驱动

NXP官方开发板使用的是KSZ8081,正点原子使用的LAN8720,两款芯片的复位IO不同。需要修改网络驱动。

1、修改LAN8720的复位引脚驱动

屏蔽SPI4使用到的SNVS_TAMPER7和SNVS_TAMPER8管脚,也即GPIO5_IO07、GPIO5_IO08

在ENET1和ENET2中添加两个管脚的配置

2、修改LAN8720A的PHY地址

修改&fec1、&fec2的内容,分别添加

phy-reset-gpios = ;/*网络复位引脚为GPIO5_IO07,低电平有效*/

phy-reset-duration = <26>;/*复位低电平信号持续时间为26ms*/

phy-reset-gpios = ;/*网络复位引脚为GPIO5_IO08,低电平有效*/

phy-reset-duration = <26>;/*复位低电平信号持续时间为26ms*/

3、修改fec_main.c文件

打 开drivers/net/ethernet/freescale/fec_main.c,找到函数 fec_probe,添加一以下代码:

/*设置 MX6UL_PAD_ENET1_TX_CLK 和 MX6UL_PAD_ENET2_TX_CLK

* 这两个 IO 的复用寄存器的 SION 位为 1。*/

void __iomem *IMX6U_ENET1_TX_CLK;void __iomem *IMX6U_ENET2_TX_CLK;

IMX6U_ENET1_TX_CLK= ioremap(0X020E00DC, 4);

writel(0X14, IMX6U_ENET1_TX_CLK);

IMX6U_ENET2_TX_CLK= ioremap(0X020E00FC, 4);

writel(0X14, IMX6U_ENET2_TX_CLK);

设置了ENET1和ENET2的TX_CLK引脚复位寄存器的SION位为1。

4、配置Linux内核,使能LAN8720驱动

-> Device Drivers

-> Network device support

-> PHY Device support and infrastructure

-> Drivers for SMSC PHYs

5、修改smsc.c文件

修改drivers/net/phy/smsc.c文件中的smsc_phy_reset函数。

6、保存.config文件

1、直接另存配置好的.config文件

2、通过图形接面保存配置文件,可使用相对路径(相对Linux内核源码根目录),一般保存在arch/arm/configs/

linux内核默认imx6速率配置,Linux4.1.15内核移植-imx6ull相关推荐

  1. linux内核默认imx6速率配置,iTOP-iMX6开发板-设备树内核-缺省文件文件的配置

    本文档主要讲解在iTOP-iMX6Q/D/PLUS 开发板的设备树内核(4.1.15)的缺省文件配置. 这里以 imx6q(imx6d 和 plus 的类似)的 qt 系统内核编译为例,Ubuntu1 ...

  2. LINUX系统开启故障排错及linux-4.16.8内核编译安装,虚拟机实验(非生产环境)...

    Centos6启动 POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs -- ...

  3. linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...

    原因:没有安装make工具,安装一下 root@ubuntu:~/linux-4.9.2#apt  install  make 再重试,又出错 root@ubuntu:~/linux-4.9.2#ma ...

  4. IMX6移植Linux4.1.15内核时需要添加矩阵按键的设备树信息

    之前在Linux3.0.35内核移植过按键的信息,请点击链接查看:3.0.35内核移植 本篇文章记录在IMX6开发板移植4.1.15内核时,添加矩阵按键的设备树信息. 1.具体添加的设备树信息 下面是 ...

  5. I.MX6开发板移植Linux4.1.15内核之TSC2007触摸屏设备树信息的添加

    之前写过一篇3.0.35内核移植关于TSC2007触摸屏驱动移植的文章.里面对TSC2007.c驱动程序的分析比较清晰,点击链接查看:点击链接查看 本篇文章,主要记录在4.1.15内核移植的过程中,对 ...

  6. i.MX6ULL系统移植 | 移植NXP官方linux4.1.15内核

    更新时间 更新内容 2021-11-15 初稿完成 2022-07-28 更新网络驱动移植部分 一.NXP官方linux内核 1. 下载 NXP官方linux仓库地址为:https://github. ...

  7. linux/Centos 安装GTX-1080Ti 显卡 配置显卡驱动 cuda cudnn

    os: centos 6.9 显卡 :1080 TI cuda :cuda-10.0 cudnn:cuDNN v 7.3.1 CentOS 6.9安装NVIDIA GTX1080显卡驱动,直接说安装步 ...

  8. Linux 2.6.19.x 内核编译配置选项简介(内核裁剪)

    Linux 2.6.19.x 内核编译配置选项简介 Code maturity level options 代码成熟度选项 Prompt for development and/or incomple ...

  9. Linux内核入门-如何获取Linux内核源代码、生成配置内核

    如何获取Linux内核源代码 如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包.除 ...

  10. arm linux 内核配置,Linux + ARM驱动开发环境配置(内核配置与编译)

    要想编写驱动,首先是建立内核目录树. ** 1.查看ARM开发板的内核版本 ** uname -a 我的arm开发板的版本是3.4.39 ** 2.安装必要的软件包 ** sudo apt-get i ...

最新文章

  1. php soap模块的安装
  2. 清除linux缓存命令
  3. linux shell 计算器 除0,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  4. 【收藏】windows下 Mysql 错误 Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist
  5. leetcode 703. 数据流中的第 K 大元素(堆)
  6. java找不到符号IOException_java:7: 找不到符号
  7. [转]JAVA自动装箱和拆箱
  8. 初始jquery事件-动态添加的新元素没有绑定上旧元素的事件
  9. C++11并发之std::mutex
  10. android怎么执行命令,Android程序中执行adb命令
  11. 为什么登录MySQL会闪退_MySql登录时闪退的快速解决办法
  12. WSO2 ESB / EI / AM 汉化方法
  13. 我所理解的网络游戏一:网游的顶层设计
  14. [paper] Meta-Learner LSTM
  15. 类似微信5.x朋友圈的弹出框评论功能
  16. nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 异常
  17. 保姆式RecyclerView下拉刷新、上拉加载更多Kotlin
  18. 图解:如何理解与实现散列表
  19. 2017 年这些令人印象深刻的智能音箱
  20. 45招绝密Windows操作系统小技巧大汇总

热门文章

  1. 计算机视觉研究院总结了算法50经典面试题
  2. git拉取远程仓库命令代码
  3. 23. 电容触摸按键实验
  4. imdisk虚拟光驱安装linux,imdisk虚拟磁盘驱动器如何加载iso文件?大白菜ImDisk加载iso文件教程...
  5. QTreeView实现圆角样式
  6. Origin抗锯齿和出现大C
  7. 带中文说明书OSLO Light 6.2-ISO 1CD光学软件
  8. 十大排序算法总结与实现
  9. 面试官:什么是TCP粘包?粘包原因?如何解决?
  10. 机器学习——LASSO算法