如何在实时操作系统(RTOS)中使用GCC栈溢出保护(SSP)功能
一、什么是栈溢出 二、GCC栈溢出保护的工作原理 三、开启GCC栈溢出保护 四、参考资料 本文是对Using GCC’s Stack Smashing Protector on microcontrollers的意译,中间插入了较多自己的理解,主要介绍如何在嵌入式实时操作系统(RTOS)中使用GCC的栈溢出保护功能(Stack Smashing Protection,简称SS...
一、什么是栈溢出 二、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传递变参 方法二:宏重定义 方法三:函数指针 性能分析 其他 参考资料 嵌入式开发中经常需要跨平台移植,但是不同平台的系统函数通常不一样,如果能封装一个平台适配层,将底层系统差异和上层业务代码隔离,移植起来将事半功倍。 需求 系统层次结构如下所示: 平台适配...
一、 TCP连接建立过程 1. 三次握手 2. 同时打开 3. 自连接 二、 TCP连接断开过程 1. 四次挥手 2. 同时关闭连接 三、 常见问题 1. 为什么要三次握手建立连接 2. 为什么要四次挥手断开连接 3. 为什么TIME...
一、 背景 二、 backtrace 1. 栈帧 2. 编译优化 3. 通过追踪栈变化回溯函数 4. 程序实现 三、 栈保护 四、 参考资料 本文主要介绍在arm平台回溯函数调用栈(backtrace)的方法。 一、 背景 嵌入式设备开发过程中,难免会遇到各种死机问题。这类问题的定位一直是开发人员的噩...