摘要: 启动时从绝对地址0x0800 0000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的。 Cortex-M3内核规定中断向量表中第一个32位数据内容为栈顶地址,第二个32位数据内容则是复位中断向量[复位也是中断向量的一种,在M3内核中,复位中断是最高优先级]的入口地址。 这 阅读全文
posted @ 2022-09-08 22:24 流水江湖 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 栈底指的是堆栈指针sp所指的起始位置begin,当有数据进站后,sp+1;当sp指向的地址 begin+length;即栈满,此时的sp指向的即为栈顶。通俗讲,栈底就是第一个进栈的数据,栈顶就是最后一个进栈的数据。 内存分配: 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stac 阅读全文
posted @ 2022-09-08 22:12 流水江湖 阅读(1659) 评论(0) 推荐(0) 编辑
摘要: IAP实现原理 讲完了一些背景知识,我们可以切入正题了。实现IAP的核心原理很简单,就是在flash中保留一个小的升级程序,即boot loader。为了安全起见boot loader一般放在芯片默认启动起始位置,这样即使升级过程中发生错误,芯片依然可以通过重启进入boot。比较标准的方式是一个bo 阅读全文
posted @ 2022-09-08 19:23 流水江湖 阅读(424) 评论(0) 推荐(0) 编辑
摘要: IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的EXPORT ,表示本程序里面用到的变量提供给其他模块调用的。以上两个在汇编和C语言混合编程的时候用到刚看到一篇不错的BLOG,解说C和汇编混编的,虽然貌似是翻译ADS文档的,不过写的挺不错,通俗容易懂,可以看看其实汇编调用C貌似很简 阅读全文
posted @ 2022-09-08 19:17 流水江湖 阅读(228) 评论(0) 推荐(0) 编辑