1.ubuntu交叉编译器环境变量设置
vim /etc/profile
export PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-9-2019-q4-major/bin
export PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin
2.常用搜索命令
grep -nR "字符串" path
find path filename
3.ssh远程连接
ssh -p prot root@192.168.2.101
scp -P port xxx root@192.168.2.101:~/
4.挂载ubuntu的/home/learn目录到开发板的/mnt目录
mount -t nfs -o nolock,vers=2 192.168.1.100:/home/learn /mnt
5.内核编程中虚拟地址和物理地址的转换
虚拟地址 转 物理地址: virt_to_phys( *addr );
物理地址 转 虚拟地址: phys_to_virt( *addr );
6.设置linux开机自动加载内核模块
#(1).将.ko文件的内核模块存放在指定位置(使用 uname -r 查看内核版本)
cp xxx.ko /lib/modules/内核版本
#(2).建立模块间的依赖关系
cd /lib/modules/内核版本
depmod -a
#(3).在/etc/modules文件末尾加上新增的模块
vim /etc/modules
#增加内容:
xxx.ko
7.uboot启动内核的环境变量设置
# 根文件系统在mmc的第三个分区
# 内核镜像 zImage 在 /boot 目录下
# 设备树文件 xxx.dtb 在 /boot 目录下
setenv bootargs 'console=ttySAC2,115200 root=/dev/mmcblk1p3 rootwait rw'
setenv bootcmd 'mmc dev 1; ext4load mmc 1:3 40007000 /boot/zImage; ext4load mmc 1:3 43000000 /boot/exynos4412-itop-elite.dtb; bootz 40007000 - 43000000;'
saveenv
8.查看cpu、内存、硬盘等内核信息
- 1).查看当前cpu的运行频率(单位:KHZ)
# 查看当前cpu运行的频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
# 查看当前CPU能运行的最大频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
# 查看当前CPU能运行的最小频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
- 2).查看cpu信息
cat /proc/cpuinfo
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对能源管理的支持,有以下几个可选支持功能:
- 3).查看内存
#看当前内存大小,已用空间等等
sudo cat /proc/meminfo
- 4).查看系统运行时间(第一个参数是系统从启动到现在经历的秒数,第二个参数 说的代表cpu空闲的时间)
cat /proc/uptime
- 5).查看内核IO地址映射(物理内存地址分配情况)
cat /proc/iomem
- 6).查看内核版本
cat /proc/version
- 7).查看内核函数
cat /proc/kallsyms
- 8).查看系统启动参数
cat /proc/cmdline
- 9).查看硬盘信息
cat /proc/diskstats
- 10).查看中断
cat /proc/interrupts
9.修改屏幕亮度
echo 128 > /sys/class/backlight/backlight/brightness
10.linux内核input子系统框架
11.linux内核pwm子系统框架
12.linux内核i2c驱动框架
13.linux内核framebuffer框架
14.linux内核usb总线框架
15.查看usb设备信息:速度
cat /sys/kernel/debug/usb/devices
16.内核函数likely
和unlikely
likely(x)代表x是逻辑真(1)的可能性比较大;
unlikely(x)代表x是逻辑假(0)的可能性比较大。
17.配置overlayfs
vim /etc/fstab
:
/dev/mmcblk0p1 /boot vfat rw 0 1
# /dev/mmcblk0p3 is misc partition, no filesystem
/dev/mmcblk0p2 /recovery ext4 defaults 0 0
/dev/mmcblk0p4 /media/root-ro ext4 ro,errors=remount-ro,noauto 0 0
/media/root-ro / overlay lowerdir=/media/root-ro,upperdir=/media/root-rw/overlay,workdir=/media/root-rw/overlay-workdir 0 0
/dev/mmcblk0p5 /media/root-rw ext4 defaults 0 0
/dev/mmcblk0p6 /opt ext4 defaults 0 0
/dev/mmcblk0p7 /data ext4 defaults 0 0
# tmpfs /tmp tmpfs nodev,nosuid,size=1G 0 0
18、linux配置静态ip
# 修改ip
sudo vim /etc/network/interfaces.d/eth0
# 重新启动网络服务
sudo /etc/init.d/networking restart