Linux上input子系统使用

1.简介

  本文档主要记录input子系统使用,我们通过驱动Linux上iic连接的手势识别传感器paj7620来展开。
(于2019年开发瑞芯微平台上使用)涉及到的驱动模块:
DTS设备树input子系统I2C模块workqueue工作队列

2.传感器驱动

2.1 传感器数据结构

构造好传感器的数据结构,涉及到i2c模块,延时工作队列,input_device用来上报消息。

//paj7620传感器
struct gesture_sensor{
    struct i2c_client *client;
    struct delayed_work poll

Read more

Trace32分析Threadx系统

1.简介

本wiki页主要是备份Trace32 分析展讯RTOS(适用展讯UIX8910,展讯W307等平台,操作系统使用ThreadX) dump文件。

 1. 用于系统产生死机dump时,定位系统问题

 2. 用于分析系统在一些场景下,预判系统设定分配资源是否合理

例如当系统处于高负荷状态(视频通话等),此时触发其它操作,例如:定位等,可以通过手动触发dump,来查看,开发中分配的

queue,thread优先级等等,是否合理。

2.Trace32 使用

Trace32 simulator安装完毕后。分析前,请准备好需要分析的dump文件,以及对应的axf文件,如果

是正常发生的dump,

Read more

海外环境下HTTP异常分析

1.背景

使用紫光展锐W307芯片(uws6130e),在海外环境使用海外sim卡(英国网络O2, Three运营商), 在使用使用过程中发现了,HTTP网络请求异常。

2.O2运营商卡

O2运营商卡,http出现的网络现象,socket建立连接后,一旦发送数据,立马会得到对端RST+ACK回复 (也就是无效请求,被拒绝)。其实服务端进行抓包,数据并未到达服务端,由于使用运营商网络 中间节点较多,我们只能从无效请求分析,猜测这个无效请求是由于什么造成的,我们使用python socket 进行尝试模拟这个请求(其实在中国请求正常,在英国这个O2运营商网络上不正常)。 最后锁定了HTTP hea

Read more

yolov5简易测试

1.简介

主要目的就是进行记录安装yolov5的过程,里面包含了简易训练(正负样本图片非常少,不是为了精确度)。

2.安装

安装主要依赖python环境,所以安装好python非常重要

2.1 python安装

建议ptyhon源库设置为清华等国内的源,这个不设置网速慢,或失败!! pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple 或者直接pip.ini指定(windows下,用户/pip/pip.ini )

[global]
timeout = 1000
index-url = http://mirrors.aliyun.

Read more

立创EDA使用

1.概述

立创EDA,是嘉立创公司自研推出(当前阶段,对于PCB打样优惠力度大),我们体验主要从 原理图绘制(原理图库使用),PCB设计,打样等方面对比。 对于用户来讲,原理图设计中,封装库等,立创EDA有一个比较完善的封装库(器件多是嘉立创商城的)。 对于DIY阶段是非常方便的。

2.原理图设计阶段

各家软件基本差不多,如果关心封装,这个EDA软件,可以直接看到嘉立创商城里面的器件。

3.PCB设计

主要是布线,各个层的显示、隐藏,各个软件其实差不多,只是看方便性。 圆弧走线,等长,这些性能其实还是不错(对比AD软件,CPU消耗确实友好不少)

4.实物打样

立创EDA的设计,可以直接导

Read more

HTTPS简要说明

HTTPS的使用现在是越来越广泛,从技术角度HTTPS在HTTP协议基础上,增加了SSL加密 传输,使用非对称加密协商对称加密的密钥,来保证传输的安全性。

1. 证书签发

1)服务方S向第三方机构CA提交信息(公钥,组织信息,个人信息等等)并申请认证
2)CA确认申请者的相关信息
3)信息审核通过,CA向申请者签发认证文件---证书
备注:证书包含,申请者公钥,申请者的组织信息,个人信息,签发机构CA的信息,有效时间
    证书序列号等信息的明文,同时还有一个签名。(也就是明文+CA的签名)
这个签名算法,是使用散列函数计算公开的明文信息摘要,然后采用CA的私钥对信息摘要进行
加密,密文就是

Read more

Wireshark分析HTTPS

1.说明

主要是通过wireshark抓包分析HTTPS通信过程,了解一下HTTPS通信交互流程。 可以较清晰看到TCP的三次握手,四次挥手。

2.实际抓包结果分析

备注:举例的例子,是访问海外服务环境,其实际信号较差,不光可以看到基本握手流程, 也包含了TCP的重传(超时重传、虚假重传)。

2.1 TCP握手流程

上面是TCP的三次握手,1207为客户端,建立的端口,443为服务端HTTPS的端口 1)SYN同步 1207--> 443 2)SYN,ACK 443--> 1207 3)ACK 1207--> 443 连接建立成功 上述过程信号较差(数据连接较不稳定,超时重

Read more

C++多继承内存模型

1.说明

C++允许多继承(区别于java,不能多继承,需要使用接口),但是C++的多继承也带来了 用户层面理解盲区(例如:内存布局等)

2.代码测试

实现一个基础的继承

class A{
public:
    int a;
    int b;
    virtual void function1()
    {
        cout<<"this is class A ,function1 !"<<endl;
    }
};

class B{
public:
    int a;
    int b;
    virtual void 

Read more

Makefile语法

1.make讲解

make命令执行时,需要一个Makefile文件,Makefile文件告诉make命令需要怎么样编译和 链接程序。Makefile文件指引make工具执行。

2.makefile常见模板

###########  target name
# compile all .c file in $(PWD)
SRCS:=$(wildcard ./*.c)   #通配符会自动展开,获取目录下所有c文件列表
#OBJS := $(SRCS:.c=.o) #?????
OBJS = $(patsubst %.c, %.o, $(SRCS)) #替换通配符
OUT := bpool
OUT_

Read more

Android上子线程处理UI更新内容方案

1.简述

子线程里面进行逻辑运算,较耗时(里面有数据采集、滤波、计算等),需要在结果完毕 后通知UI线程进行更新数据,展示给用户看。(实例demo:后台计算GPS测量跑步距离,UI上 显示跑步距离和提醒用户GPS的一些状态)

2.方案简述

新增加一个interface,这个interface里面进行,定义一个状态变更函数接口。 在业务处理里面,进行处理,也就是何时触发,何种操作,UI线程里面,进行刷新 展示内容。

2.1 接口定义
public interface GPSCalculateStatusListener {
    /**
     * 状态变更,通知处理(key value--

Read more