使用工具: https://github.com/valinet/ExplorerPatcher
Linux实时监控网卡网速及流量
脚本查看实时速度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/bin/bash ethn=$1 while true do RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') sleep 1 RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') clear echo -e "\t RX `date +%k:%M:%S` TX" RX=$((${RX_next}-${RX_pre})) TX=$((${TX_next}-${TX_pre})) if [[ $RX -lt 1024 ]];then RX="${RX}B/s" elif [[ $RX -gt 1048576 ]];then RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}') else RX=$(echo $RX | awk '{print $1/1024 "KB/s"}') fi if [[ $TX -lt 1024 ]];then TX="${TX}B/s" elif [[ $TX -gt 1048576 ]];then TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}') else TX=$(echo $TX | awk '{print $1/1024 "KB/s"}') fi echo -e "$ethn \t $RX $TX " done |
使用 watch watch -n 1 “ifconfig eth0” watch -n 1 “cat /proc/net/dev”
密码保护:FFMPEG log
i2cdetect 工具简单使用
列出所有I2C设备 i2cdetect -l 返回
1 2 3 4 5 |
i2c-3 i2c xiic-i2c I2C adapter i2c-1 i2c Cadence I2C at ff020000 I2C adapter i2c-2 i2c Cadence I2C at ff030000 I2C adapter i2c-0 i2c xiic-i2c I2C adapter |
列出总线上所有有回应的设备
1 2 3 4 5 6 7 8 9 10 11 |
i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
读取某个设备上的 00~FF的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
i2cdump -f -y 3 0x18 No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 00 00 00 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...? 10: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ?..xxxxxx?.?..?. 20: 00 00 00 00 10 00 00 00 00 00 00 80 80 00 00 00 ....?......??... 30: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?..... 40: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?....... 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 ......?......... 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 80: 00 00 00 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...? 90: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ?..xxxxxx?.?..?. a0: 00 00 00 00 10 00 00 00 00 00 00 80 80 00 00 00 ....?......??... b0: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?..... c0: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?....... d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 ......?......... f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
i2c 写 i2cset ……
ROC-RK3328-PC更换串口波特率
板子默认串口波特率为1500000,我不知道为毛要搞这么高。反正我的U转串是不支持的,需要修改下。 编译时使用的是firefly-rk3328-buildroot.mk,看环境变量为如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
CMD=`realpath $BASH_SOURCE` CUR_DIR=`dirname $CMD` source $CUR_DIR/BoardConfig.mk # Uboot defconfig export RK_UBOOT_DEFCONFIG=firefly-rk3328 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly-rk3328_defconfig # Kernel dts export RK_KERNEL_DTS=rk3328-roc-cc # packagefile for make update image export RK_PACKAGE_FILE=rk3328-package-file # sd_parameter for GPT table export RK_SD_PARAMETER=parameter-recovery.txt # packagefile for make sdupdate image export RK_SD_PACKAGE_FILE=rk3328-recovery-package-file export RK_USERDATA_FS_TYPE=ext4 |
判断uboot的configure为firefly-rk3328,直接找到u-boo……
linxu 线程独占CPU
qt network相关
获取所有活动网卡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
int ipInc = 0; QStringList ipList; ipList.clear(); QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); QList<QNetworkInterface> ipDevList = QNetworkInterface::allInterfaces(); #ifdef Q_OS_ANDROID ipList << "Android Boardcast"; #endif for (int i = 0; i < ipDevList.size(); ++i) { bool ipReady = false; QList<QNetworkAddressEntry> tmpIPlist = ipDevList.at(i).addressEntries(); // 排除所有未连接的网卡 QNetworkInterface tmpNet = ipDevList.at(i); QNetworkInterface::InterfaceFlags interFlags; interFlags = tmpNet.flags(); if(!((interFlags&QNetworkInterface::IsUp) && (interFlags&QNetworkInterface::IsRunning) && (interFlags&QNetworkInterface::CanBroadcast) && (interFlags&QNetworkInterface::CanMulticast) && !(interFlags&QNetworkInterface::IsLoopBack))) { continue; } QString tmpIp; for (int y=0; y<tmpIPlist.size(); ++y) { QNetworkAddressEntry xx = tmpIPlist.at(y); if (xx.ip() != QHostAddress::LocalHost && xx.ip().toIPv4Address() ) { ipReady = true; tmpIp = xx.ip().toString(); break; } } if( true == ipReady ) { ipList << tmpIp + " (" + ipDevList.at(i).humanReadableName() + ")"; if( tmpIp == lastUdpIp ) { autoLinkIpSeqInList = ipInc; } ipInc++; } } qDebug() << "ipList:" << ipList; |
在TCP SERVER中获取CLIENT的IP及端口
1 2 3 4 5 6 7 |
//clientIP = tcpSocket->peerAddress().toString(); // 网上的这种方法不可用,会多出来一些字符 quint32 ipv4 = tcpSocket->peerAddress().toIPv4Address(); char xx[30]; sprintf(xx, "%d.%d.%d.%d",ipv4>>24,(ipv4>>16)&0xFF,(ipv4>>8)&0xFF ,ipv4&0xFF); clientIP = xx; clientPort = tcpSocket->peerPort(); |