QT5鼠标触摸屏键盘支持
QT5从QWS换成了QPA,对应应用程序添加鼠标、触摸屏、键盘的支持:
./xxx -plugin evdevtouch:/dev/input/eventX -plugin evdevkeyboard:/dev/input/eventX -plugin evdevmouse:/dev/input/eventX
也可以通过export环境变量(QT_QPA_GENERIC_PLUGINS)指定。
如果是自己交叉编译的QT源码,编译的时候也要记得加上-mtdev -evdev.-mtdev为多点触摸,-evdev用于鼠标键盘
扩展:
Input输入设备调试相关
Input输入设备调试相关
mice、mouse和event设备:在/dev/input/下面主要有mice、mouse和event这3类设备。mice为所有鼠标节点,可以得到所有鼠标的信息,而且是全局唯一且固定的,即使没有插入鼠标设备,它也是存在的
Input设备调试
查看所有的input设备及相关信息,包括Input Handlers、Name等:cat /proc/bus/input/devices
input event事件分析工具:evtest和getevent(android中提取)
使用hexdump直接查看命令:
cat /dev/input/eventX | hexdump
输出类似于:
//hexdump序列号 秒 微妙 type事件 Code Value
0000000 692c 5e67 20ae 000a 0002 0000 0003 0000
0000010 692c 5e67 20ae 000a 0000 0000 ...
Linux监控文件及目录变动
inotify-tools工具
Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作等inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数
Ubuntu下安装sudo apt-get install inotify-tools
例子#!/bin/bash
cd `dirname $0`
rebuild() {
local build_lock="build.lock"
local pending_lock="pending.lock"
test -f $build_lock && ...
Hisi外设ADC的使用
环境
Platform: Hi3516DV100
Kernel: v3.4
参考代码主要通过操作寄存器
himm (LSADC_CTRL0,0xff5264ff); //配置0寄存器 0x200B0000
himm (LSADC_CTRL2,0x2f); //0x200B0008
himm (LSADC_CTRL4,0x01); //0x200B0010
while(enable)
{
himm (LSADC_CTRL7,0x0f); //0x200B001C
data= readl(LSADC_CTRL3); //0x200B000C
data = (data >> 16);
read_adc_data = data;
himm (LSADC_CTRL6,0x1); //0x200B0018
msleep(100);
}
Hisi内核线程CPU占用高的问题
环境
Platform: Hi3516DV100
Kernel: v3.4
现象内核线程kworker/u:0开机时CPU占用率高
分析查看哪个模块占用CPU:cat /proc/5/stack
原因
占用大量CPU的时候是内核中对mmc模块使用4000~1000的不同频率对插入的模块分别用sd、mmc、sdio类型匹配枚举的过程。SDIO_CAERD_DETECT而悬空或者未接的时候,这个管脚默认是个低电平,而插入SD时该管脚的状态正是低电平,
解决
内核去掉不用的MMC驱动
软件上对不使用的SDIO_CAERD_DETECT复用成其他功能,要么硬件上对该管脚做好弱上拉
Hisi网络接口修改成RMII
环境
Platform: Hi3516DV100
Kernel: v3.4
步骤
修改配置表在生成reg_info的excel表中修改:0x200f0174 2,
修改Uboot修改配置文件hi3516a.h:#define CONFIG_HIGMAC_PHY1_INTERFACE_MODE 2 值修改为1.或者mdio_intf=rmii(#define CONFIG_MDIO_INTF "rmii")
修改Kernel通过menuconfig 配置: Device Drivers
[*] Network device support --->
[*] Ethernet driver support --->
<*> hieth gmac family network device support --->
(6) hieth-gmac phy0 interface mode
#其中, 1 代表 mii, 5 代表 rmii, 6 代表 rgmii,若管脚复用有变化,请重新配置管脚复用关系。
扩展:识别phy ...
Hisi编译与烧写
环境
Platform: Hi3516DV100
Kernel: v3.4
内存DDR(256M)地址空间:
150M
106M
OS
MMZ
0x80000000
0x84000000
0xA0000000
# Memory managed by OS.
# Memory managed by MMZ block anonymous.
# Memory managed by MMZ block jpeg.
注意:
启动参数,“setenv bootargs ‘mem=150M …”
load3516d脚本
编译具体细节可参考SDK里面的文档
u-boot:
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3516a_spinand_config (other: hi3516a_config)
~/dd/Hi3516A_SDK_V1.0.5.0/osdrv/opensource/uboot/u-boot-2010.06$ make ARCH=arm CROSS_COMPILE=arm-his ...
Nginx域名重定向
背景需求想让自己的一级域名地址都直接跳转到博客地址:https://notes.z-dd.online/
配置修改Nginx的配置文件(nginx.conf),或者自己定义的配置文件,在后面添加:
server {
listen 80;
server_name notes.z-dd.online;
rewrite ^(.*)$ https://$host$1 permanent;
}
这样将基于z-dd.net域名的所有http请求都强制跳转到了https上
其他办法(未验证):参考baidu.com的做法,利用meta的刷新作用
index.html<html>
<meta http-equiv="refresh" content="0;url=https://test.com/">
</html>
Nginx配置server {
listen 192.168.1.11:80;
server_name test.com;
location ...
音频POP音、咚啪音问题
背景问题一般带音频的设备可能都会遇到POP音、咚啪音问题,特别是在工作的时候动态切换通道路径,或者开始工作或结束工作的时候。但出现这种问题的原因有很多,要具体分析每种情况,各个击破
分析分析POP音主要原因还是因为电平跳变导致,比如使用MIC咪头时,偏置电压Vbias瞬变,工作中动态切换通道路径等。分析POP音的来源,然后对症下药。例如我遇到有一种情况,我把codec内部输出的通道全断开,但是在切换输入通道的时候还是会听到POP声,那很有可能需要硬件去分析了,电源地平面完整性等,反弹噪声等。
解决总的原则是:规避和削弱改善
规避:控制电源时序和控制使能时序电源时序是指系统中各种芯片电源供电或者断电的时序使能时序是系统供电稳定后由各个控制信号控制的功能模块的使能或关闭顺序
控制使能时序带功放设备噪声先出来之前Mute掉功放,不带功放设备可以使用Mute硬件电路等;正常工作时切换内部音频通路时,切换之前可以将输出(HP,LO)Mute,切换完成后再unMute。
电源时序上电时序:音频IC先上电,然后功放上电掉电时序:功放先断电,然后音频IC断电
削弱改善:
加DRV632(无噼啪声音 ...
RK3399烧写Android固件
环境
Platform: RK3399
OS: Android7.1.2
Kernel: v4.4.103
Host:Ubuntu16.04 X64
这里只讨论在Linux环境下的烧写
烧写工具安装及问题官方upgrade_tool安装下载并解压,并拷贝到系统文件夹,并赋予执行权限。SDK的工具目录下也有。
unzip Linux_Upgrade_Tool_xxxx.zip
cd Linux_UpgradeTool_xxxx
sudo mv upgrade_tool /usr/local/bin
sudo chown root:root /usr/local/bin/upgrade_tool
sudo chmod a+x /usr/local/bin/upgrade_tool
遇到的问题:
upgrade_tool: error while loading shared libraries: libudev.so.1: cannot open shared object file: No such file or directory
64位ubuntu 16.04: sudo a ...
win10搭建flutter开发环境(Android)
背景
Platform: X64
OS: Win10 Desktop
前期准备
Android Studio安装
Android SDK安装
Git for Windows安装
镜像配置由于国内访问Flutter会有些限制,官方给中国开发者提供了镜像站:https://flutter-io.cn配置镜像:在环境变量中新增添加以下2条
PUB_HOSTED_URL:https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL:https://storage.flutter-io.cn
注:详情可参考官方关于镜像的最新动态(Using Flutter in China)
Flutter SDK 安装下载安装有2种下载方式:
直接下载包 下载地址:https://flutter.cn/docs/development/tools/sdk/releases 解压至你需要安装的目录,不要放在需要特殊权限的地方
git获取 git clone https://github.com/flutter/flutter.git -b stable
执 ...
Win10分区问题
背景
Platform: X64
OS: Win10 Desktop
问题及分析
“Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装到GPT磁盘。”
在新买的未装系统的电脑上,容易遇到这个问题。
win10系统的快速启动功能,要求UEFI+GPT格式的硬盘分区。现在新买的电脑默认都是UEFI+GPT,早年的电脑为BIOS(Legace)+MBR,这两者都是一一对应的,如果引导设置为BIOS(Legace)引导,则分区的时候要用MBR分区,同理UEFI引导则用GPT分区。
MBR格式和GPT格式是可以相互转化的,但需注意:此操作都会清空磁盘的所有数据
分区转换在安装系统时,按Shift+F10或者Shift+Fn+F10调出cmd窗口。依次输入下面命令:
diskpart —(启动分区管理工具)
list disk — (列出连接到电脑的所有磁盘及其编号)
select disk x —(选择需要转换分区的磁盘的编号x)
clean —(清除磁盘原有数据)
convert xxx — (选择磁盘转换的类型)xxx代表要转换 ...