linux 积累

linux文件夹打包命令

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

---------------------------------------------

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName 

.tar.gz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

--------------------------------------------- 

.bz2

解压1:bzip2 -d FileName.bz2

解压2:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2 

压缩:tar jcvf FileName.tar.bz2 DirName

---------------------------------------------

.bz

解压1:bzip2 -d FileName.bz 

解压2:bunzip2 FileName.bz

压缩:未知

.tar.bz  

解压:tar jxvf FileName.tar.bz  

压缩:未知

---------------------------------------------

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

---------------------------------------------

.tgz

解压:tar zxvf FileName.tgz

压缩:未知

.tar.tgz

解压:tar zxvf FileName.tar.tgz

压缩:tar zcvf FileName.tar.tgz FileName

---------------------------------------------

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

---------------------------------------------

.rar

解压:rar a FileName.rar

压缩:rar e FileName.rar

网络挂载:

mount -o nolock -t nfs 10.6.3.12:/szsa021/usrhome/ben.du/Jiuzhou_M3721/sourcecode/buildroot/output/target/usr/bin  /root

kernel打印:
echo "8  4    1    7" >/proc/sys/kernel/printk
查询打印级别:
cat /proc/sys/kernel/printk

网络烧写image    
1.挂载image到 /root下
mount -o nolock -t nfs 10.6.3.12:/szsa021/usrhome/ben.du/Jiuzhou_M3721/sdk/buildroot-7.4.0.38/output/images  /root    

使用命令前用cat /proc/mtd 查看一下mtdchar字符设备;
#cat /proc/mtd
将九州提供的tool nandwrite拷贝到image下
在服务器上,改变nandwrite/flash_erase的权限;
chmod 777 nandwrite
chmod 777 flash_erase
//kernel
# ./flash_erase /dev/mtd8 0 0
# ./nandwrite -p /dev/mtd8 main.ubo

linux下gpio的控制
echo $1 > /sys/class/gpio/export ---- enable gpio
echo out > /sys/class/gpio/gpio$1/direction ---- 输出输入设置
echo 1 > /sys/class/gpio/gpio$1/value ---- 输出值
例如gpio 193
echo 193 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio193/direction
echo 1 > /sys/class/gpio/gpio193/value

寄存器读写:
写:devmem 0x1802A06F 32 0x00000004
读:devmem 0x1802A06F
应用层修改寄存器的方法,参考busybox中的devmem_main函数,这个函数就是devmem命令的实现,即将寄存器地址mmap到kernel,再读写对应的地址;
内存映射的步骤:
用open系统调用打开文件, 并返回描述符fd.
用mmap建立内存映射, 并返回映射首地址指针start.
对映射(文件)进行各种操作, 显示(printf), 修改(sprintf).
用munmap(void *start, size_t lenght)关闭内存映射.
用close系统调用关闭文件fd.

memory map
# cat /proc/meminfo

/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存

$ ldd --help
Usage: ldd [OPTION]... FILE...
      --help              print this help and exit
      --version           print version information and exit
  -d, --data-relocs       process data relocations
  -r, --function-relocs   process data and function relocations
  -u, --unused            print unused direct dependencies
  -v, --verbose           print all information

--verbose编译选项是表示将整个编译链接过程的中间步骤打印出来;
buildroot中很多模块都是通过下面的定义控制是否打开该编译选项
# To put more focus on warnings, be less verbose as default
# Use 'make V=1' to see the full commands

ifeq ("$(origin V)", "command line")
  KBUILD_VERBOSE = $(V)
endif 
例如编译 uboot
make uboot-rebuild V=1即可打开该选项;

关于libc/glibc等标准库的链接:
在编译uboot的时候,虽然将libc.a链接加载进来,但是编译选项打开了  -nostdlib选项,该选项默认不会使用标准库中的函数;
 -nostdlib
链接的时候不使用标准的系统启动文件和系统库。 没有启动文件和只用你指定的库可以被传递给连接器。与系统库有关的特定的连接选项(例如-static-libgcc 和 -shared-libgcc )将会被忽略。编译器可能会生成memcmp,memset,memcpy和memmove的调用,这些entries通常会被标准库libc中的相关的entries解决。当这个选项被使用的时候,这些入口点应该通过其他的方法被提供。

在alistarter的makefile中有如下定义,关掉即可链接到libc.a标准库;
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)

此外还有如下编译选项:
-nostartfiles
连接的时候不使用标准系统的启动文件。标准系统库通常被使用,除非选项“-nostdlib”和“-nodefaultlibs”被使用。

-nodefaultlibs
连接的使用不使用标准系统库。只有你指定的库才能够传递给连接器。与系统库有关的特定的连接选项(例如-static-libgcc 和 -shared-libgcc )将会被忽略。标准的启动文件通常会被使用,除非-nostartfiles选项被使用。
编译器可能会生成memcmp,memset,memcpy和memmove的调用,这些entries通常会被标准库libc中的相关的entries解决。当这个选项被使用的时候,这些入口点应该通过其他的方法被提供。

这些选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件。

uboot可以使用tftpput命令将memory保存到tftp中;
U-boot> tftpput 0x80000000 0x100000 10.8.7.205:test_1.bin

buildroot用make show-source可以看到每个module对应的git:
ben.du@szsa02:~/./sourcecode/buildroot$ make show-source

串口测试:
cat /dev/ttyS  +[table键]
echo testSerialCharString > /dev/ttyS0
 

进程前后台

# jobs      //查看任务,返回任务编号n和进程号
# bg  %n   //将编号为n的任务转后台运行
# fg  %n   //将编号为n的任务转前台运行
# ctrl+z    //挂起当前任务
# ctrl+c    //结束当前任务

反向删除:删除si文件夹之外的所有文件
ls | grep -v si | xargs rm -r

查看linux kernel版本信息的两种方法:
1、cat /proc/version
2、uname -a

查看挂载状态:
cat /proc/mounts

可用readelf -h 查看库文件*.o目标文件是大端还是小端。
File: ./sdk/lib/libtuya_iot.a(uf_file.c.o)
ELF Header:
  Magic:   7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, big endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          17992 (bytes into file)
  Flags:                             0x70001007, noreorder, pic, cpic, o32, mips32r2
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         66
  Section header string table index: 65

libcurl enable
Target packages > Libraries > Networking
[*] libcurl  

buildroot在编译之前会根据.config 文件来检查output/build/package 的6个文件,做相应的步骤:
.stamp_configured,  此文件表示已经配置过
.stamp_downloaded, 此文件表示源码已经下载过,没有此文件会重新下载
.stamp_patched, 此文件表示已经打过补丁
.stamp_extracted  此文件表示已经压过
.stamp_builted 此文件表示源码已经编译过  
.stamp_target_installed  此文件表示软件已经安装过
想要从新执行哪一步,就把对应的.stamp_文件删除就行

modularizes features,即以可加载内核模块方式编译,而不是内建内核模块(built-in module)。

Linux Project下MIPS Memory Map --- TLB(Translation Lookaside Buffer)

MIPS addr:
访问register,需要访问uncache addr:0xA0000000
访问ram,需要访问cache addr:0x80000000

User Space/Kseg2/KSeg3 -> 0x20000000~0xFFFFFFFF(Physic)
0x00000000~0xFFFFFFFF
                            Virtual Address                Physical Address                                        
cacheable  kseg3(512M)        0xE0000000                    0x20000000~                
cacheable  kseg2(512M)        0xC0000000                    0x20000000~                        
uncacheable kseg1(512M)        0xA0000000                    0x00000000                    
cacheable  kseg0(512M)        0x80000000                    0x00000000
cacheable  kuseg(2GB)        0x00000000                    0x20000000~    

//强制卸载
umount  -l  /mnt

dmesg命令可以查看开机的启动log,查看usb设备。
使用dmesg命令来识别出USB设备名
dmesg是一个重要的用于打印或者控制内核环形缓冲区的命令。环形缓冲区是一种数据结构,
它存放着内核操作数据的信息。

suspend入口:
echo "freeze" > /sys/power/state
echo "standby" > /sys/power/state
echo "mem" > /sys/power/state

有些进程会自动重启,无法完全kill掉,可以在/tmp路径下touch一个跟进程名称一样的文件,
这样可以避开这个问题。

WIFI模块中,AP和STA模式中分别意思是{
1、AP:也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。
一般家庭或办公室使用的无线路由器就是一个AP。
2、STA站点就是每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。            
}

修改MAC地址{
//wlan无线
ifconfig wlan0 down
ifconfig wlan0 hw ether 24:72:60:46:A7:CF
ifconfig wlan0 up
//eth网口
ifconfig eth0 down
ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX
ifconfig eth0 up

Robot log tool,MQTT server连接:
深圳MQTT server:1. IP: 10.6.3.13       szsa03
/usr/mnt_app/run_cleaner.sh
修改WIFI AP,深圳的WIFI AP:Robot 1qaz2wsx
setup_wifi_connection()
{
if [ ! -f /usr/mnt_app/cfg/wifi.conf ]; then
  sed '/network={/,/}/d' /etc/wpa_supplicant.conf > /tmp/wpa_supplicant.conf
  wpa_passphrase Robot 1qaz2wsx >> /tmp/wpa_supplicant.conf &
else
  cp /usr/mnt_app/cfg/wifi.conf /tmp/wpa_supplicant.conf
fi

  wpa_supplicant -B -i wlan0 -c /tmp/wpa_supplicant.conf > /dev/null 2>&1 &
  udhcpc -i wlan0 > /dev/null 2>&1 &
}

1、iwlist 命令:{
用于对/proc/net/wireless文件进行分析,得出无线网卡相关信息
# iwlist wlan0 scanning 搜索当前无线网络
# iwlist wlan0 frequen 显示频道信息
# iwlist wlan0 rate 显示连接速度
# iwlist wlan0 power 显示电源模式
# iwlist wlan0 txpower 显示功耗
# iwlist wlan0 retry 显示重试连接次数(网络不稳定查看)
# iwlist wlan0 ap 显示热点信息
# iwlist --help 显示帮助信息
# iwlist --version 显示版本信息
}

2、iwconfig {
系统配置无线网络设备或显示无线网络设备信息。iwconfig 命令类似于ifconfig命令,
但是他配置对象是无线网卡,它对网络设备进行无线操作,如设置无线通信频段
auto 自动模式
essid 设置ESSID
nwid 设置网络ID
freq 设置无线网络通信频段
chanel 设置无线网络通信频段
sens 设置无线网络设备的感知阀值
mode 设置无线网络设备的通信设备
ap 强迫无线网卡向给定地址的接入点注册
nick<名字> 为网卡设定别名
rate<速率> 设定无线网卡的速率
rts<阀值> 在传输数据包之前增加一次握手,确信信道在正常的
power 无线网卡的功率设置
}

WIFI配置:{
//追加WIFI SSID
wpa_passphrase Robot 1qaz2wsx >> /tmp/wpa_supplicant.conf

//使能wlan0
ifconfig wlan0 down
ifconfig wlan0 up

//获取wifi状态
wpa_cli -iwlan0 -p /tmp/wpa_supplicant status | grep wpa_state
//连线AP的方式
都在沒有透過rvc-client的情況下

1. 直接輸入 /usr/mnt_algorithm/bin/connect_ap.sh robot_test Alizsz667
    看是否可以看到COMPLETED
    有看到的話,再輸入 udhcpc -i wlan0
    看能不能要到ip,重開,一樣是在沒有連線的情況下
2. 先輸入
/usr/mnt_algorithm/bin/set_wifi_mode.sh 0
看ifconfig是否有出現wlan0, wlan1
如果有的話輸入
 /usr/mnt_algorithm/bin/connect_ap.sh robot_test Alizsz667
後面同1. 的流程

//
wpa_passphrase Ali_sz Alizsz666 >> /tmp/wpa_supplicant.conf &
wpa_supplicant -B -i wlan0 -c /tmp/wpa_supplicant.conf > /dev/null 2>&1 &
udhcpc -i wlan0 > /dev/null 2>&1 &

//重新连接其他的WIFI AP
# ./usr/mnt_algorithm/bin/disconnect_ap.sh 
# ./usr/mnt_algorithm/bin/connect_ap.sh Robot 1qaz2wsx

grep指令{
grep -srn "PLATFORM" ./  --binary-files=without-match
}

查看已经加载的驱动模块的信息:{
  lsmod   能够显示驱动的大小以及被谁使用  
  cat /proc/modules    能够显示驱动模块大小、在内核空间中的地址
  cat /proc/devices    只显示驱动的主设备号,且是分类显示 
         /sys/module          下面存在对应的驱动的目录,目录下包含驱动的分段信息等等。 
}

echo "test" > /sys/power/wake_lock ,让系统不要进入睡眠模式。

addr2line debug:
~/output/host/opt/ext-toolchain-for-mcu-arm/bin/arm-none-eabi-addr2line -e stm32f103ve_bank2_app.elf -f 08039516

Dos删除文件指令{
/f 表示强制删除文件 
/s 表示子目录都要删除该文件 
/q 表示无声,不提示 
/a 根据属性选择要删除的文件 
D:\>del D:\Robot\*.* /f /s /q /a

Dos删除空文件夹指令:
D:\>rd D:\Robot\ /s /q


/e 表示子目录包括空目录都复制
//Dos拷贝
copy c:\hello\11.txt d:\word
xcopy c:\hello d:\word /s /e
}

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值