[转]再识Cortex-M3之堆栈】的更多相关文章

Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表的转移: 4)设置系统时钟频率: 5)中断寄存器的初始化: 6)进入C应用程序. (1)按启动代码的次序,先看堆和栈的初始化: Stack_Size EQU 0x00000200 ;定义Stack_Size为0x00000200 AREA STACK, NOINIT, READWRITE, ALIG…
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... :注释 1).标号是可选的,如果有,它必须顶格写.标号的作用是让汇编器来计算程序转移的地址. 2).操作码是指令的助记符,它的前面必须有至少一个空白符,通常使用提个Tab键来产生. 3).操作码后面往往跟若干个操作数,而第一个操作数,通常都给出本指令执行结果的存储地.不同指令需要不同数目的操作数,并…
1.stm32综述 2.寄存器组 3.操作模式和特权级别 4.存储器映射 5.中断和异常 6.其他 Stm32综述 这可以说是我第一款认真学习的单片机了,学完这个就要开启我通往arm9的大门了,接下来把我学到的东西做一个系统的概述: 上图是stm32的系统结构. 使用哈弗体系结构,取指和取数据分离, ICODE指令总线连接到flash闪存指令存储区,这个存储区的地址在0x00000000-0x1FFFFFFF之间,负责取指操作. DCODE数据总线负责在0x00000000-0x1FFFFFFF…
目录 前言 posix 标准接口层设计 模拟器的系统心跳 模拟器的task底层实质 模拟器的任务切换原理 cortex M3/M4异常处理 双堆栈指针 双操作模式 栈帧 EXC_RETURN 前言 如果对硬件任务内核切换不感兴趣的同学可以跳过. 由于任务源码分析开始涉及到接口层,所以在学习源码前,先了解下posix接口层的设计. 本系列接口层会讲解两个: posix标准接口.因为本教程demo在linux上跑freertos时实际使用的就是这个接口. cortex m3/m4架构接口.因为这才是…
一.Cortex M3的GPIO口特性    在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图     从图中可以看出,GPIO口都是接在APB总线上的,而且M3具有两个AHB到APB桥,GPIO则直接接在AHB矩阵上,这样可以减少CPU和DMA控制器之间的竞争冲入,获得较高性能.APB总线桥配置为写缓冲区,使得CPU或DMA控制器可直接操作APB外设,而无需等待总线写操作完成. M3数字I/O功能:高速GPIO口…
ARM架构:  由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类. ARM7:       一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核. ARM9:       一类采用ARMv4或ARMv5架构的,使用哈佛结构的内核. Cortex M3: 采用了ARMv7架构的,使用哈佛结构的内核. Cortex M4: 采用了ARMv7架构的,使用哈佛结构的内核.(较前者最大区:别增加了一个DSP处理功能,SIMD单指令多数据功能.其他区别请自…
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the project was to use the Serial Wire JTAG protocol implemented in the ARM cortex processors for programming the flash memory of it. JTAG was actually imple…
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版本,不过大多的arm7都不带,而大多的arm9的都带.所以一般是arm7跑实时操作系统像ucos做简单的控制应用,而arm9跑linux,cortex是更新一代,分高端的A系列和和低端的M系列,来接arm9和arm7的班 一般情况下ARM7 Cortex-M3 Cortex-M4可以认为是一类,M3…
原地址https://blog.csdn.net/liaoxu02/article/details/48107651 Cortex-M3拥有通用寄存器R0-R15以及一些特殊功能寄存器.R0-R12是最”通用目的“的,绝大多数的16位指令只能使用R0-R7,而32位的Thumb-2指令则可以访问所有的通用寄存器.特殊功能寄存器必须通过专用的指令来访问.通用目的寄存器R0-R7R0-R7称为低组寄存器.所有指令都可以访问,R8-R12称为高组寄存器,只有很少的16位Thumb指令能访问他们,32位…
解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行.但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不…
Brief 本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的原因,但发现自己对计算机的数字表示和运算十分陌生,于是只好恶补一下.以下是恶补后的成果: 基础野:细说原码.反码和补码(http://www.cnblogs.com/fsjohnhuang/p/5060242.html) 基础野:细说无符号整数(http://www.cnblogs.com/fsjohnhuang/p/5078290.html) 基础野:细说有符号整数(http://www.cnbl…
一.前言 IE6~8除了不遵守W3C标准和各种诡异外,我想最让人诟病的应该是内存泄露的问题了.这阵子趁项目技术调研的机会好好的再认识一回,以下内容若有纰漏请大家指正,谢谢! 目录一大坨! 二.内存泄漏到底是哪里漏了? 2.1. JS Engine Object.DOM Element 和 BOM Element 2.2. JS Engine Object的内存回收机制 2.3. DOM Element的内存回收机制 2.4. 两种泄漏方式 三.4种泄漏模式  3.1. Circular Refe…
从C#1到C#3逐步认识委托,由于C#4与C#5对委托改动并不大,故不作说明. 好久没看.NET了,一直在搞HybridAPP,都忘得差不多了,这也是自己从书中摘下笔迹,供日后翻阅. C# 1 1.什么是委托 委托是一种定义方法签名的类型.当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法.(MSDN) 委托类似于 C++函数指针,但它们是类型安全的 委托允许将方法作为参数进行传递 委托可用于定义回调方法 委托可以链接在一起 方法不必与委托签名完全匹配.(…
从写Play初识时,前面各种称赞play如何如何解放java web开发,最后因为网络被墙而无法正常编译,从而想到放弃.从来都有成为web开发高手的想法,今天又再一次进行尝试,惊喜的是有新的进展. 首先,你得FQ,得打破国内网络的桎梏,推荐使用mxvpn,免费得话使用日本线路,但是用的人特别多,导致网络特别慢,建议购买一个月的套餐试试,我反正是买了,效果不错. 其次,你最好把activator的完整包下载下来.这个完整包是包含一个本地的play开发的网站ide,输入activator ui即可,…
春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方, 那他可以先去问鼎广场看看喷泉, 再去教室, 也可以先到体育场跑几圈, 再到教室. 他非常想知道, 从A 点恰好经过k个点到达B点的方案数, 当然这个数有可能非常大, 所以你只要输出它模上1000的余数就可以了. 你…
最近再使用SpringMVC进行页面跳转的时候,不知道发生了什么,始终都无法正确跳转.后来问题解决了,发现是对于转发和重定向没有能很好的理解,以此写篇博客,权当做积累了! 声明:本博客的所有代码,均为模拟问题的代码,将问题从复杂的系统中抽取出来,进行分析! 一.基本配置 备注:只截取了几个比较关键的配置点 SpringMVC配置: <span style="font-family:KaiTi_GB2312;font-size:18px;"><bean class=&q…
// Use enum to create an enumeration. Like classes and all other named types, enumerations can have methods associated with them. // swift 中enum 变化比较大,枚举看起来和类差不多,因为它可以拥有自己的方法了, enum的创建如下 enum Rank: Int {    case Ace = 1    case Two, Three, Four, Five…
在之前的项目中使用过Quartz,但都是基于XML配置定义任务的.目前一个项目应用需要对任务进行创建.暂停.删除等动态管理.所以再次在网上翻了翻,再来好好重新认识下Quartz. 名词解释: scheduler:任务调度器 trigger:触发器,用于定义任务调度时间规则 job:任务,即被调度的任务 misfire:错过的,指本来应该被执行但实际没有被执行的任务调度 Quartz 任务调度的基本实现原理 核心元素 Quartz 任务调度的核心元素是 scheduler, trigger 和 j…
当初学rop学到的ret2syscall,对int 0x80中断了解还不是很深,这次又复习了一遍.虽然很简单,但是还是学到了新东西.那么我们就从ret2syscall开始吧. IDA一打开的时候,就看见函数窗口有超级多的函数,我就意识到,应该是静态编译.这样软件就没调用libc,也就不存在leak libc版本来获取shell地址了.记得以前做过的一道静态编译,利用的是ROPgadget.刚刚试了一下,发现这道题也可以,这个我们最后说. IDA打开后搜索字符串,发现"/bin/sh"字…
高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能.所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升. (参见 HTTP persistent connection). 会话对象具有主要的 Requests API 的所有方法. 我们来跨请求保持一些 c…
1.简介 Fiddler充当第三者,主要是通过AutoResponder标签在客户端和服务端之间,Fiddler抓包,然后改包,最后发送.AutoResponder这个功能可以算的上是Fiddler最实用的功能,可以让我们修改服务器端返回的数据,例如:让返回都是HTTP404或者读取本地文件作为返回内容.宏哥将在实例中介绍利用AutoResponse功能. 2.应用场景 简单介绍几个应用场景: 场景一:生产环境的请求重定向到本地文件,验证结果.这个在实际工作中经常会遇到. 例如:某网站或者系统.…
Brief linkFly的<JavaScript-如果...没有方法>中提及如何手写Math.round方法,各种奇技淫招看着十分过瘾,最让我惊叹的是 ~~(x + )) ,完全通过加法和位运算搞定整数的四舍五入.在好奇心的驱使下重温了一下位运算,并对上述公式加以封装得到适合小数的四舍五入方法 function round(v/*alue*/, p/*recision*/){ p = Math.pow(, p>>> ? : p|) v *= p )|) / p } 在开波前…
一.Breif    大家都知道instanceof一般就是用来检查A对象是否为B类或子类的实例.那问题是JS中没有类的概念更没有类继承的概念(虽然有构造函数),那么instanceof到底是怎样判断A对象是B构造函数的实例呢?本文将对此作分析记录,以便日后查阅. 二.Reference 2 ECMA-262-3 Spec    http://bclary.com/2004/11/07/#a-11.8.6 The production RelationalExpression: Relation…
一.前言            相信大家都熟悉通过字符实体   来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢. 二.初识HTML实体                                                       由于HTML中某些字符是预留的(如>和<等),若要在进行HTML解析出来后能正确显示预留字符,则需要使用字符实体来代替了. 字符实体有三种表示方式: // Named character…
http://www.zembedded.com/cortex-m3-registers-in-depth/ Thanks for the overwhelm response you show in our first tutorial on Cortex_M3 series controllers. This is going to be the second tutorial, where we are going to discuss about the registers availa…
在前面认识C中的结构体中我介绍了结构体的基础知识,下面通过这段代码来回顾一下: #include<stdio.h> #define LEN 20 struct Student{ //定义结构体 char name[LEN]; char address[LEN]; int age; }; int main(int argc, char* argv[]) { struct Student s = { //初始化 }; struct Student * p; //定义一个指向结构体的指针 p = &…
参考出处: http://www.cnblogs.com/mq0036/p/3382732.html http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html 出处中判断哪个是数组指针和指针数组? A int*p1[10] B int(*p2)[10] 首先看看他们的类型,在 VS C++中使用sizeof运算符. printf("%d\n",sizeof(p1));  //结果 40  可以看出是一个数组,每一…
2015年的时候开始接触QT,自学了1个月,由于没有项目驱动,也没人指导,最终还是撇下了,水平也仅限于拖拖控件,做一些简单的界面,对QT的内部机制完全是懵逼的.时隔两年,最近由于公司项目需要使用QT,故重新捡起QT. QT安装:傻瓜式安装,不需要像开发安卓一样繁琐的配置,(安卓开发入门,从安装到放弃).QT Creator界面比较简单清爽(应该是用QT开发的吧),具体怎么用,在实践中摸索才能体会到他的好(手动滑稽) QT Creator相比VS来说慢一点(也有可能是我电脑配置比较低) 也可以在V…
一.前言            相信大家都熟悉通过字符实体   来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢. 二.初识HTML实体                                                       由于HTML中某些字符是预留的(如>和<等),若要在进行HTML解析出来后能正确显示预留字符,则需要使用字符实体来代替了. 字符实体有两种表示方式: // 实体名 &entity…
变量的作用域: 全局变量   -----  可以在函数内部被引用 局部变量   -----  函数内部 -- 只能在函数里面使用,在函数外部不能使用 在函数内部修改全局变量:global   x 缺省参数: 1 - 在函数定义的时候,给了初始值   def   func(a,b,c=0) 2 - c这个参数,在函数调用的时候可以不传值,就是默认值.如果传,那就是传的值 3 - 定义参数的时候,参数不能放在必填参数前面 4 - 缺省参数使用非常广泛,内置的库和第三方库里面大量的使用缺省参数 可变数…