I.MX6UL核心模块使用连载-查看系统信息 (二)

2023-10-27 23:30

本文主要是介绍I.MX6UL核心模块使用连载-查看系统信息 (二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下内容已经在Iot-6ULX/EVB-6ULX平台上验证通过,Iot-6ULX/EVB-6ULX介绍如下:

 

 1.Shell测试

shell测试是基于shell环境下的测试,测试过程需要经过一系列的指令操作,相比Qt测试,过程会比较繁琐,但是可以测试完整的功能。

shell测试前,请确认烧写到开发板上的是yocto目录下不带test的dtb文件,或者是Buildroot目录下不带QT界面的根文件系统。软件资源说明见章节2中的内容。

1.1 查看系统信息

1.1.1 查看内核版本

通过以下两种指令方式,都可以查看到内核版本信息:

root@embfly ~# uname -a                        //查看当前操作系统的内核信息

                                                  查看内核版本信息

root@embfly /# cat /proc/version                 //查看当前操作系统版本信息

                                              查看内核版本信息 

通过以上指令,都可以查看到系统内核版本为4.14.98。

1.1.2 查看CPU信息        

通过以下指令,可以查看CPU的相关信息,包括型号、主频、内核等:

root@embfly ~# cat /proc/cpuinfo              //查看CPU相关信息

                                                                查看CPU信息 

1.1.3 查看CPU主频

通过以下指令,可以查看CPU支持的频率:

root@embfly ~# 

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 

                                                       查看CPU当前工作频率

通过以上指令操作,可以看到CPU是支持多个运行频率的。那在所支持的多个频率中,CPU当前的工作频率该如何选择,以及工作频率是否可以修改,这里就要应用到一个内核子系统cpufreq。

cpufreq是一个动态调整cpu频率的模块,用户可以通过cpufreq子系统动态调整处理器频率。当处理器以较低的时钟速度运行时,它们消耗的电能和产生的热量也相对较少。时钟速度的这种缩放可以控制系统在未全力运行时消耗较少电能。

cpufreq 子系统一共提供了五种调控器(governors)供用户选择使用,它们分别是 userspace,conservative,ondemand,powersave和performance。

  • performance:将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。是对系统高性能的最大追求。
  • powersave:将CPU频率固定工作在其支持的最低运行频率上,而不动态调节。是对系统低功耗的最大追求。
  • userspace:系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用,可以通过手动编辑配置文件进行配置。
  • ondemand:随需应变调控器将检查处理器利用率,如果发现其超过阀值,则会将频率设置为可用的最高值。如果调控器发现利用率小于阀值,则会继续降低频率,直到它达到可用的最低值。
  • conservative:与ondemand不同,conservative是平滑地调整CPU频率,频率的升降是渐变式的,会自动在频率上下限调整,和ondemand的区别在于它会按需分配频率,而不是一味追求最高频率。

在使用cpufreq 子系统之前,先检查cpufreq是否已经启用,通过以下指令,查看cpufreq是否开启:

root@embfly ~#/sys/devices/system/cpu/cpu0/cpufreq/ 

                                                  查看cpufreq是否已经启用

从图中可以看到,cpufreq 目录存在,表示系统已经启用了cpufreq。通过以下指令,查看cpufreq可用的调控器:

root@embfly ~# 

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

查看可用的调控器

通过以下指令,查看cpufreq当前的调控器模式:

root@embfly ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  

                                                             查看当前的调控器 

通过以下指令,修改cpufreq当前的调控器模式,这里以powersave为例,修改完成后查看调控器模式是否修改成功:

root@embfly ~# 

echo powersave> /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 

root@embfly ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  

root@embfly ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

                                                              修改cpufreq的调控器模式 

由图中可以看到,cpufreq的调控器模式已经由ondemand修改成了powersave,并且CPU已经工作在了最低的运行频率上。

1.1.4 查看内存使用情况

通过free命令,可以查看内存的使用情况:

root@embfly ~# free -m                       //以 MB 为单位,显示内存使用情况

                                                                查看内存使用情况

关于free命令输出的内容,以下做简单介绍:

  • Mem行(第二行)信息是从操作系统的角度来看内存的使用情况
  • -/+ buffers/cache行(第三行)信息是从应用程序的角度看系统内存的使用情况
  • Swap行(第四行)信息是交换空间的使用情况
  • total:内存总数
  • used:已经使用的内存数
  • free:空闲的内存数
  • shared:当前已经废弃不用
  • buffers:缓冲内存数
  • cached:缓存内存数

从终端的输出信息中可以看到,第二行和第三行的used内存数+free内存数分别都等于Mem行的Total内存数。

本次测试的开发板内存芯片规格为256MB,通过free命令查询到的内存总数为241MB。这是由于系统从加电开始到引导完成,firmware/BIOS要保留一些内存,kernel本身要占用一些内存,最后剩下可供kernel支配的内存才是Mem行的Total内存数。这个值在系统运行期间一般是固定不变的。

1.1.5 查看磁盘使用情况

通过以下指令,可以查看磁盘的使用情况:

root@embfly ~# df -h                         //以易读方式显示磁盘空间和使用情况

                                         板载4GB eMMC开发板磁盘使用情况

                                    板载256MB NAND Flash开发板磁盘使用情况

关于df命令输出的内容,以下做简单介绍:

  • Filesystem列(第一列):代表文件系统对应的设备文件的路径名
  • Size列(第二列):表示分区大小
  • Used列(第三列):表示已用容量
  • Avail列(第四列):表示可用容量
  • Use%列(第五列):表示普通用户空间使用的百分比
  • Mounted on列(第六列):表示文件系统的挂载点

1.1.6 查看FLASH 存储器容量

/proc/partitions文件包含了存储器的分区信息,查看分区信息可以了解板载存储器容量:

root@embfly ~# cat /proc/partitions                  //查看分区信息

                                             板载4GB eMMC开发板存储器容量

mmcblk开头的都属于eMMC存储器的blocks的数量,eMMC每个block大小为512Bytes,把它们所有的blocks加起来就可以算出容量。

                                     板载256MB NAND Flash开发板磁盘使用情况

mtdblock开头的都属于NAND Flash存储器的blocks的数量,NAND Flash每个block大小为1024Bytes,把它们所有的blocks加起来就可以算出容量。

    

这篇关于I.MX6UL核心模块使用连载-查看系统信息 (二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289148

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者