作者文章归档:dongruibin

RTOS上栈破坏分析--编译器栈金丝雀保护

1.简述要求

  在进行分析RTOS平台上栈破坏相关的内容,首先理解一些必要概念是必须的。

1.1 栈的相关理解

PC,Program Counter, cpu当前正在执行的指令地址,cpu每执行一条指令,pc就跳到下一条指令的地址。 LR,Link Register,保存函数执行完后需要返回的地址。 SP,Stack Pointer,指向栈内存的当前顶部地址。

1.2 编译器ARMCC的栈金丝雀保护机制

  在armcc中可以允许启用--protect_stack 栈金丝雀保护,这个是针对栈内存保护的核心编译选项, 主要是用于检测、防御栈溢出、栈内存踩

Read more

RTOS平台上--代码运行速度提升测试

1.简介

  在实际使用过程中,部分代码,比如需要实时进行处理,比如需要实时卡尔曼处理数据, 算法模块,编解码操作,大量循环,UI操作。   由于部分RTOS设备,代码指令存储在FLASH中,对于存储在内部FLASH的,执行过程中,取指令速度可控,但是实际使用过程中,有些设备 使用了外部flash存储代码(正常量产,一般需要进行多供,降低供应链风险)。 这个会导致部分平台上,我们代码存储在不同flash上,执行过程中,存在速度差异(部分较差的flash,存取指令周期变长)。

2.优化提升

  优化提升,一方面如果平台存在icache,

Read more

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

数据传输安全策略--公钥-私钥

1.简介

在实际使用过程中,在遇到一些重要场合,需要加密存储或者传输一些数据到服务器,这个流程中, 有两个地方可能需要重点关注。结合不同场景,安全汇总到2个方案。

1.1 数据传输安全

数据传输安全,对于HTTP明文传输而言,HTTPS属于较优解决方案,这个过程中可以,有效防止数据泄漏。 但是要注意HTTPS,主要场景是针对传输安全,也就是,固件和服务器通信,通过非对称加密,先确保对端 的身份,再协商对称加密的密钥,然后进行对称加密传输内容。 实际开发过程中: 主要是嵌入式开发场景,由于存储根证书需要较多空间,很多平台会阉割掉,证书校验。部分黑客就会利用 这个漏洞,伪造服务端,侵入网络后,会对

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

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

Android8.1 HAL层内容解析

1.简述

Android的HAL层解析,HAL层主要作用,承上启下。

1.1 向上提供标准接口(给Framework调用)

代码路径:hardware/interfaces/sensors/1.0/ISensors.hal

package android.hardware.sensors@1.0;
interface ISensors {
    getSensorsList() generates (vec<SensorInfo> list);
    setOperationMode(OperationMode mode) generates (Result result);

Read more