分类目录归档:RTOS系统

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

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

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

Fatfs相关内容科普

1. FATFS简介

Fatfs是嵌入式上常间的文件系统, 其源文件结构上如下图所示: 该文件系统模块,支持FAT12/FAT16/FAT32。通常配置FATFS时, 需要设置簇大小(cluster size)。 fatfs文件系统上布局

2. Fatfs特性

2.1 复制文件访问

Fatfs模块默认不支持对复制文件的共享控制,仅当文件的打开方式为只读模式,才允许共享控制, 禁止以写入模式对文件进行复制打开,而且打开的文件不允许被重命名和删除,否则会破坏卷的FAT 结构。

2.2 可重入性

不同卷的文件操作是可以重入的,并且可以同时工作,同一个卷是不可重入的,但是可以利用 _FS_REEN

Read more

RT-Thread系统任务调度(最高优先级任务查找)

1.实时系统调度说明

  RTOS实时系统,实时的体现在于,每条命令执行完全可控可预期,市场上较为广泛的有rtthread,threadX等,
其中各类实时系统,任务优先级查找调度,是系统实现实时的一个核心。只有在固定周期内找到最高优先级,才能符合实时要求。

2.实时系统的具体体现

  rtthread内核调度采用位图算法,好处是实现O(1)调度,就是每次调度的时间都是固定的,
无论线程中存在多少个线程,多少优先级,系统可以在一个恒定的时间内选择出最高优先级的线程。要解决固定时间内寻找最高优先级,先解决线程数据结构的存储。

a、每个线程的信息使用线程控制

Read more

zigbee快速使用指南

zigbee型号说明

此处省略写,zigbee协议栈使用:
cc2530-2.5.1a。CC2530是2.4Ghz,芯片其它说明,略。

官方说明

  1. zigbee芯片型号 ,使用TI公司的CC2530芯片。
  2. 协议栈 ,CC2530-2.5.1a,该版本支持了OTA。
  3. 协议栈构成,略。
  4. 本说明纯属自己学习过程笔记,中间如果存在错误,希望大家可以指正。本说明主要是从代码层面快速运用zigbee模块(CC2530)。

zigbee开发

zstack结构

1.协调 路由 终端 听起来就不复杂,
协调--组建网络,发起
路由--中间转发等等呢
终端--最终的设备(可能这么叫不专业)
2.组建网络

Read more

STM32上RTOS内存配置说明

1.说明

  在STM32上进行RTOS(以rt-thread为例)配置动态内存管理方式,我们需要设置一个动态内存管理的访问, 也就是管理区域的大小,起始地址等。

2.管理内存的范围

  在使用操作系统前,先看一下原始的分配情况:startup_stm32f103xe.s

; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
;   <o> S

Read more

RT-Thread上内存分配分析之一

1.简介

  内存分配在RTOS上还是较为常见的,除了一些特殊场合使用的RTOS(不允许malloc,free操作,防止内存碎片), 实际产品中,使用分配内存机制还是较常用。
  RTOS上的内存管理方式,分为常见的动态内存堆管理,和静态内存池管理,其中动态内存管理又分为常见的,小内存分配算法,多内存分配算法(memheap),
slab分配算法等等。RT-Thread上分配算法可以在conf中配置。

RT_USING_SMALL_MEM_AS_HEAP        小内存分配算法
RT_USING_MEMHEAP_AS_HEAP          

Read more