Cache一致性导致的踩内存问题
1. 背景 2. 基于backtrace分析 2.1 原理 2.2 分析 3. 确定受害者身份 3.1 ThreadX的信号量管理机制 3.2 分析 4. 谁踩了这个信号量 4.1 利用Electric Fence原理进行定位 4.2 加大内存检测频率 ...
1. 背景 2. 基于backtrace分析 2.1 原理 2.2 分析 3. 确定受害者身份 3.1 ThreadX的信号量管理机制 3.2 分析 4. 谁踩了这个信号量 4.1 利用Electric Fence原理进行定位 4.2 加大内存检测频率 ...
一、首先确认是否支持硬件watchpoint 二、打开监控模式 三、设置watchpoint 四、参考资料 本文介绍如何使用ARM平台的硬件watchpoint定位踩内存问题,特别是如何在运行过程中自动对特定内存区域添加watchpoint。 在踩内存问题中,最困难的就是找出元凶。常见排查手段如下: 通过gdb打内存断点(添加watchpoint), 看看谁非法访问了...
一、什么是栈溢出 二、GCC栈溢出保护的工作原理 三、开启GCC栈溢出保护 四、参考资料 本文是对Using GCC’s Stack Smashing Protector on microcontrollers的意译,中间插入了较多自己的理解,主要介绍如何在嵌入式实时操作系统(RTOS)中使用GCC的栈溢出保护功能(Stack Smashing Protection,简称SS...
一、背景 二、原理 三、实现 四、优劣点分析 本文介绍一种通过文件描述符重定向终端输入/输出的方法。 一、背景 一些嵌入式设备,一般都会留有调试串口,经由RS232/485标准与PC的COM口相连,将打印输出在PC上显示,并可以接收PC端的输入,如下图所示: 设备出厂部署后,不方便接调试串口,查看设备输出就变得比较困难,不利于问题定位。 如果设备具有联网能力,我们可...
近期换了华为手机,系统是EMUI 8.2.0,在安装google服务的时候颇费了一番周折。 之前能用的一些google服务安装器在该系统上均无法工作,最后从应用汇上下载了一个gms安装软件,可是华为系统提示“该应用会破坏系统,禁止安装”。 开启设置里面的未知来源应用下载,并禁用外部来源应用检查,还是不允许安装。 后来从花粉俱乐部了解到可以通过以下方式安装: 把该apk拷贝到电脑...
一、空口抓包 1. 原理 2. 操作方法 二、实例分析 1. 手机兼容性问题 2. Wi-Fi省电模式 3. 其他适用场景 随着IoT的兴起,越来越多的嵌入式设备内置Wi-Fi模块,具备了网络接入能力。 在开发过程中,难免会遇到各种各样的网络问题,而抓包无疑是分析网络问题最直...
一、安装交叉编译工具链 二、安装arm模拟器qemu 三、通过gdb调试arm程序 四、参考文档 没有开发板,如何调试运行arm程序? 本文主要讲解如何在Ubuntu上搭建arm交叉编译、运行环境。 一、安装交叉编译工具链 安装交叉编译工具链arm-linux-gnueabihf-gcc: sudo apt-get install gcc-arm-linux-gnuea...
一、实现思路 二、使用方法 三、编译方法 在基于RTP的实时码流传输过程中,经常会遇到音视频卡顿、花屏的现象。对于这类问题,如何定位? 下面这个工具可以帮助分析类似问题: https://github.com/sigusr1/rtp_parse_from_pcap 一、实现思路 从传输的角度看,造成卡顿、花屏的常见原因如下: 接收端收到的帧不完整(可能是发送方发的就不完...
实际工作中,我们经常会向其他同事咨询一些技术问题。但是,他给出的答案一定是正确的吗? 近期项目组遇到这么个问题,Android平台上软件解码RTSP实时视频流CPU占用率较高,打算切换到硬件解码。但是在调用硬件解码接口的时候返回失败,原因是视频流的分辨率信息未知,结果又自动切换回了软解。 那么,基于RTSP传输的视频流,一般可以从哪里获取分辨率信息呢? RTSP报文中的SDP,一...
需求 适配方法 方法一:通过va_list传递变参 方法二:宏重定义 方法三:函数指针 性能分析 其他 参考资料 嵌入式开发中经常需要跨平台移植,但是不同平台的系统函数通常不一样,如果能封装一个平台适配层,将底层系统差异和上层业务代码隔离,移植起来将事半功倍。 需求 系统层次结构如下所示: 平台适配...