linux内核移植(imx6ull-飞思卡尔)

官方开发板linux内核编译

1.修改顶层makefie

2.配置并编译linux内核

  • make clean //第一次编译Linux内核之前先清理一下
  • make imx_v7_mfg_defconfig //配置Linux 内核
  • make -j16 //编译Linux内核
  • 结果会得到两个我们需要的文件一个linux编译好的镜像内核zImage和一个设备树imx6ull-14x14-evk.dtb

3.linux内核启动测试

  • 修改uboot中的bootargs
    console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
  • 启动内核
    tftp 80800000 zImage
    tftp 83000000 imx6ull-14x14-evk.dtb
    bootz 80800000 – 83000000

4.根文件系统缺失错误

linux启动以后是需要根文件系统的,根文件系统存在哪里是由uboot的bootargs环境变量指定的,bootargs会传递给linux内核作为命令行参数。
没有挂载根文件系统,会提示内核崩溃



在linux内核中添加自己的开发板

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.编译测试

  • 我们可以创建一个编译脚本,mx6ull_alientek_emmc.sh
 #!/bin/sh 
 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 
 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_alientek_emmc_defconfig
 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16 
  • 执行脚本后再启动
    tftp 80800000 zImage
    tftp 83000000 imx6ull-alientek-emmc.dtb
    bootz 80800000 – 83000000


CPU主频和网络驱动修改

1.cpu主频修改

1、设置I.MX6U-ALPHA开发板工作在528MHz

  • 查看cpu信息
    cat /proc/cpuinfo
  • 进入到目录/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 在各频率下的运行时间以及变频次数。

  • 当前cpu频率
    cat cpuinfo_cur_freq

  • 查看 stats 目录下的 time_in_state 文件可以看到CPU在各频率下的工作时间
    cat /sys/bus/cpu/devices/cpu0/cpufreq/stats/time_in_state

  • 调节频率的两种方法
    1.一种在系统里面更改模式governor(调频)策略

2.一种在编译之前更改imx_alientek_emmc_defconfig配置文件

2.使能8线EMMC驱动

Linux内核驱动里面 EMMC 默认是4 线模式的,4线模式肯定没有 8 线模式的速度快,所以本节我们将EMMC 的驱动修改为8线模式。修改方法很简单,直接修改设备树即可,

  • 打开文件 imx6ull-alientek-emmc.dts

  • 修改完成以后保存一下 imx6ull-alientek-emmc.dts,然后使用命令“make dtbs”重新编译一下设备树

  • 编译完成以后使用新的设备树重启Linux系统即可。

3.修改网络驱动

uboot有网络驱动的修改,linux内核也需要修改,因为在一定程度上uboot也是一个系统,麻雀虽小,五脏俱全。

  • 1、修改LAN8720的复位引脚驱动
  • 2、修改LAN8720A的 PHY地址
  • 3、修改fec_main.c文件
  • 4、配置Linux内核,使能 LAN8720驱动
  • 5、修改smsc.c文件
  • 6、网络驱动测试

4.保存修改后的图形配置文件menuconfig

注意的事项

1.首先在图形界面,使能了驱动的选项

2.在.config文件中会生成CONFIG_SMSC_PHY=y

3.同样在drivers/net/phy/Makefile文件也会生成代码

===上述的2会编译3的文件(网络驱动文件)
但是我们在执行make clean 清理工程的以后,2的文件就会被删掉,从而配置文件就会被删除,
导致在编译的时候3的驱动文件就不可能会被编译

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋哥爱做饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值