Linux内核
默认配置文件保存在arch/arm/configs文件下
/bin/sh: 1: lzop: not found
arch/arm/boot/compressed/Makefile:180: recipe for target 'arch/arm/boot/compressed/piggy.lzo' failed
make[2]: *** [arch/arm/boot/compressed/piggy.lzo] Error 1
make[2]: *** 正在等待未完成的任务....
CC arch/arm/boot/compressed/misc.o
arch/arm/boot/Makefile:52: recipe for target 'arch/arm/boot/compressed/vmlinux' failed
make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
arch/arm/Makefile:316: recipe for target 'zImage' failed
make: *** [zImage] Error 2
make: *** 正在等待未完成的任务....
出现这个安装lzop
zImage存放在 ,./arch/arm/boot文件夹, 设备树存放在./arch/arm/boot/dts文件夹
编译单个的dts文件, 直接在顶层目录make对应的.dtb文件就行了
来源
内核官方, www.kernel.org, 有各个额版本的
NXP会挑选一个重点维护其中一个, 相当于官方的BSP或者说SDK供用户使用
正点原子使用NXP的Linux添加修改过的内核给用户时候用, 讲解的是NXP的内核
目录分析
-
arch: 架构相关zImage存放在/arch/arm/boot文件夹, 设备树存放在./arch/arm/boot/dts文件夹
- bllock块设备相关, emmc等
- crypto加密相关
- Documentation:文档相关目录, 最常用的是devicetree/bindings这个目录下的描述设备树绑定的信息
- firmeare: 固件相关的目录
- fs: 文件系统相关
- include: 头文件
- init: 初始化相关
- ipc: 进程之间通信
- kernel: 内核相关
- lib: 库相关
- mm: 内存管理
- net: 网络相关
- samples: 例程
- scripts: 脚本
- security: 安全相关
- sound: 音频相关
- tools: 工具
- urs:
- virt: 虚拟化
生成的vmlinux, Image, zImage, uImage区别
vmlinux生成的最初的文件, 没有压缩, 很大
Image内核镜像文件, 取消掉一些符号表之类的信息
zImage: 使用gzip压缩的文件
uImage: 老板的uboot专用的镜像, 多加了一个头部
启动流程
移植
对已ing的配置文件存放在arch/arm/configs
直接移植官方的文件没有根文件系统, 发现可以正常启动
添加开发板
就是添加一个默认的配置文件, 一个设备树
在移植之前要保证可以正常的启动, , 使用现成的文件系统, 设置bootcmd和bootargs, Bootcmd通过网络启动
在运行的时候会使用bootcmd中的命令自动启动
=> setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
设置串口以及默认的根文件
把usdhc2的内容更该为emmc版本
修改主频
使用root@ATK-IMX6U:~# cat /proc/cpuinfo
可以查看cpu信息, BogoMIPS是Linux系统中衡量处理器运行速度的一个“尺子”,处理器性能越强,主频越高,BogoMIPS值就越大。BogoMIPS只是粗略的计算CPU性能,并不十分准确。但是我们可以通过BogoMIPS值来大致的判断当前处理器的性能。
进入到目录/sys/bus/cpu/devices/cpu0/cpufreq中,此目录下会有很多文件
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(调频)可以调节的最低频率。
可以在arch/arm/configs文件中文件中, CONFIGS_CPU_xxx设置各种模式的使用, 可以在图形界面进行配置, 一般把cpu的模式配置为ondemand模式, 在图形界面CPU Power Mangagement->CPU Frequency scaling -> Default CPUFreq governor (ondemand) —>进行设置