- 博客(47)
- 收藏
- 关注
原创 函数调用与HardDefault异常处理定位
函数调用与HardDefault异常处理定位R13(SP:stack pointer):栈顶指针,R14(LR:Link Register):保存要执行的下一条要执行指令的地址,一般用于函数调用和异常处理。R15(PC:Program Counter):保存当前程序运行到的地址。当程序调试时出现错误时会进入harddefault中断回调函数中。此时链接寄存器LR中的值可能就是harddefault的地址,无法正确判断出错的位置。 此时需要通过堆栈指针SP来追踪错误的位置。一般是从栈顶开始往
2024-09-09 09:59:13 209
原创 LWIP相关知识
4、 LwIP时基:LwIP也是一个内核,与操作系统一样,也是由时基驱动的,LwIP作者为了能让内核正常运行,也引入了一个时钟来驱动,这样子可以处理内核中各种定时事件,如ARP定时、TCP定时等。3、移植网卡驱动:ethernetif.c文件就是存放这些底层驱动函数的,LwIP的contrib包中就包含这个文件的模板,我们需要在这个基础上修改。5、协议栈初始化:想要使用LwIP,那就必须先将协议栈初始化,我们就创建一个函数,在函数中初始化协议栈,注册网卡,设置主机的IP地址、子网掩码、网关地址等。
2024-08-24 12:52:59 204
原创 KeilMDK制作FlashDriver
①在ECU OTA 程序升级过程中,需要执行一段比较特殊的代码,这段代码实现对自身flash的擦除与写入,又称flash driver;②为了安全的考虑,会尽可能的避免在代码中固化有对flash空间进行擦除或写入的操作,主要为了避免在程序跑飞时误调用该部分代码,使软件代码部分受到破坏;③在OTA开始后,会先传入flash driver到RAM中,再开始刷写APP。
2024-08-10 12:36:28 1064
原创 嵌入式软件中状态机的几种操作
现态:是指当前所处的状态。条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
2024-08-09 22:18:20 318
原创 程序从编译到被执行的流程
5、添加行号和文件标示,这样才能在调试和编译出错的时候知道是那个文件的哪一行。1、删除所有的#define,并展开所有的宏定义,说白了就是字符替换。2、处理所有的条件编译,#ifdef #ifndef #endif,3、处理#include 将其指向的文件差插入到该行。6、保留#pragma编译器指令,因为编译器需要使用。1、预处理:有出c文件到i文件。4、连接:有o文件到exe文件。4、优化后生成相应的汇编代码。2、编译:由i文件到s文件。3、汇编:由s文件到o文件。
2024-06-29 20:28:04 273 1
原创 中断简介(中断介绍)
当cup运行时由于外部某事件发生请求CPU去处理,CPU停止当前正在执行的程序转而去执行外部请求事件,当外部请求事件执行完毕后继续返回之前执行程序的地方继续执行程序。4、软件要完成的动作:在中断向量表中跳转到对应的中断服务函数,判断中断源处执行对应的函数。a.以按键产生外部中断为例,首先对中断源进行配置,如配置中断源为电平的下降沿。c.对ARM核进行配置,对cpsr的I位进行配置 ,配置为1时标志不相应中断,配置为0表示相应中断。b.对中断控制器进行配置,为了保证中断能上报ARM核需要使能中断控制器。
2024-06-13 11:37:34 165
原创 matlab 反查表(simulink反查表 :Model Based Calibratiion Toolbox 工具箱 ,cage工具箱)
matlab 反查表(simulink反查表 :Model Based Calibratiion Toolbox 工具箱 ,cage工具箱)
2024-05-28 15:24:43 485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人