arm-none-eabi-addr2line和arm-none-eabi-objdump使用笔记 arm-none-eabi-addr2line 是一个用于将地址转换为文件名和行号的工具,用于在嵌入式系统中调试程序时定位代码位置。命令的一般格式是:arm-none-eabi-addr2line -e <可执行文件> <地址>
010 Editor常用语法 010editor 是一款十六进制编辑器,和 winhex 相比支持更灵活的脚本语法,可以对文件、内存、磁盘进行操作,是二进制分析中十分强力的工具,能够解析多种文件格式并以友好的界面呈现。其强大的内部引擎使得任何人都可以定制所需的解析脚本或解析模板。
在C++文件中调用C文件定义的函数需要加 extern “C“ { 最近犯了了一个低级错误,在集成一个厂商的算法时,(C++文件)总是提示找到不函数的定义错误;所以一直怀疑是厂商给的算法库中没有打包该函数的定义;最后跟厂商battle了好久,发现厂商给的库中的头文件没有加 extern “C” ,特用此文记录一下该问题;
充电打嗝与DPM 当设备检测到VBUS输入时,会配置自己的充电电流,因此会充适配器拉取相应的电流;但是充电器 具有额定功率的限制,如果充电电流超出了适配器的输出能力,比如5V/1A适配器,设备设置充电电流 为2A,当设备从充电器抽取电流时,会将充电器的电压拉低;当适配器的电压降低到VBAT+Vpro时,设 备内部充电IC会触发保护,导致充电停止;充电停止后,充电器5V又恢复正常,又开始充电,又拉低, 充电停止。。。。
list_for_each 详解 该宏写的很巧妙,将0地址强转为TYPE类型,在对其中的MEMBER进行取址,将该地址转为size_t类型就获得了MEMBER类型在TYPE类型中的偏移位置。上面的代码中遍历链表时下次访问的内存为pos->next,故在每次遍历时对pos->next进行预热,从而提升性能。container_of的作用表示先求出结构体成员(即member)在结构体(即type)中的偏移量,然后再根据member的地址(即ptr)来求出其所在结构体的地址。list_entry就表示ptr所在的结构体的地址,就是指针;
使用位域导致代码大小变大 使用位域导致代码大小变大问题场景:代码大小优化过程中,使用位域操作能够,有效的利用代码空间;因此在将一个结构体中的两个成员如下EAR_ACK_E leftAckFlag;EAR_ACK_E rightAckFlag;改为EAR_ACK_E leftAckFlag:4;EAR_ACK_E rightAckFlag:4;觉得代码大小会有优化;实际编译...
代码中指定数组Flash存放位置 const unsigned char gImage_Cry[153600] __attribute__((at(0x08035800))) = {此处写数据};参考https://blog.csdn.net/yifeng0710/article/details/74940909使用之后会发现Ro_data 暴增!!也就是代码大小增加很大------增大原因是MDK在代码与指定地址中间自动添加了0x0...
LPUART和USART LPUART(Low-power universal asynchronous receiver transmitter),低功耗的通用异步串行口。特点:用电量少。USART(Universal synchronous/asynchronous receiver transmitter), 通用的同步/异步串行口。在STM32L431芯片上有3个这样的端口,这些端口除了具有串行通信功能外,还支持其他的一些功能,例如Smart Card Mode,LIN,IrDA SIR ENDEC 等。...
串行数据(SPI/I2C/UART/USB)的时钟同步 串行数据的时钟同步一、串行数据的时钟同步问题串行数据的发送(如USB,UART,I2C, SPI等)是通过一条数据总线发送,于是就有如果通过一条数据总线连续发送连续的01信号给接收设备,由于发送者和接受者的时钟频率不同,信号的同步是个问题,举个例子,接受者接收到一段连续时间的低电平,无法得知这究竟代表3个0还是10个0。二、I2C和SPI数据的时钟同步解决上面的问题的办法I2C和SPI是在传输数据信号的同时,附加一个时钟信号,用来同步两端的数据传输,接受者可以在时钟信号的辅助下进行数据采样,就能正确
RO、RW和ZI数据解析 Keil编译成功的最后会有如下信息,便是程序代码的数据信息:Code:代码的大小RO:常量所占空间(read only)RW:程序中已经初始化的变量所占空间(read - write)ZI:未初始化的static和全局变量以及堆栈所占的空间(zero init)映像文件(image)的组成映像文件就是指烧录到ROM中的bin文件,也称为image文件。以下用Image文件来称呼它。Image文件包含了RO和RW数据。之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要
回声消除(Echo Cancellation)理解 理解下回声消除(Echo Cancellation)基本原理(只是基本原理,非专业):回声的产生就是speeker的传来的声音又被mic接收,传给对方的话产生回声,回声消除的原理就是mic接收的声音将speeker传过来的声音减掉就是没有回声的原始声音;注意减的时候,有个时间延时(这个貌似需要算法计算)...
SPI协议讲解 SPI ( Serial Peripheral Interface,串行外设接口)是一种同步、串行通讯接口规格,常用于短距离通讯,主要是在嵌入式系统中。此接口由Mototola公司推出,已成为一种事实标准(没有统一的协议规范,但是基于其广泛的使用,根据实际使用中大家通用的习惯形成了一个类似行规的标准)。对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。SPI是一种高速的,全双工,同步的通信总线。分为主(master)、
基于Nucleo-F401RE点个灯(KEIL) 今天捡了个Nucleo-F401RE(其实是同事离职后,收拾他桌子时发现他遗留下来的);看着这块板子做的挺精致,拿来玩玩!搜索了点资料如下CN2的短接线主要是将SWD连接到了F401芯片上,若想用这块板子的st_link调试其他设备,可将跳线去除,将CN4用线连接到其他设备。• STM32F401RET6微控制器,基于ARM Cortex-M4处理器,带DSP,最高支持84MHz主频• 支持Arduino UNO R3 Shield扩展板,微控制器所有IO口引脚通过排针座引出• ST-LINK/
电容的作用 电容是电路设计中最为普通常用的器件,也常常在高速电路中扮演重要角色。在电子线路中的作用一般概括为:通交流、阻直流。电容通常起滤波、旁路、耦合、去耦、转相等电气作用。用作贮能元件也是电容器的一个重要应用领域,同电池等储能元件相比,电容器可以瞬时充放电,并且充放电电流基本上不受限制,可以为某些设备提供大功率的瞬时脉冲电流。电容的用途非常多,主要有如下几种:1. 隔直流:作用是阻止直流通过而让交流通过。2. 旁路(去耦):为交流电路中某些并联的元件提供低阻抗通路。旁路电容:旁路电容,又称为退耦电容,