理论上,CM3中规定上电后CPU是从0地址开始执行,但是这里中断向量表却被烧写在0x0800 0000地址里(Flash memory启动方式),那启动时不就找不到中断向量表了?既然CM3定下的规矩是从0地址启动,SMT32当然不能破坏ARM定下的“规矩”,所以它做了一个启动映射的过程,就是和芯片上 ...
分类:
其他好文 时间:
2018-09-14 11:58:48
阅读次数:
164
一、抢占优先级和响应优先级 STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号 越小,表明它的优先级别越高。 抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断 服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数 A ...
分类:
其他好文 时间:
2018-09-03 15:00:26
阅读次数:
264
STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断。并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图 3到6这个区域被标黑了,这个区域就是内核异常。内核异常不能够被打断,不能被设置优先级(也就是说优先级是凌驾于外部中断之上的) ...
分类:
其他好文 时间:
2018-08-14 14:45:50
阅读次数:
148
2018-06-30 1.进程:对正在运行的程序的一个抽象 2.一个进程就是一个正在执行的程序的实例 3.快速的切换称为:多道程序设计 4.一个进程是某种类型的一个活动,它有程序,输入,输出,以及状态 5..四种主要的事件会导致进程的创建 系统初始化 正在运行的程序执行了创建进程的系统调用 用户请求 ...
分类:
编程语言 时间:
2018-06-30 14:44:17
阅读次数:
139
使用cmake构建嵌入式程序工程时遇到的问题,在此记录以下。 工程框架想把芯片相关的功能抽象出一个hal层,向上屏蔽芯片的API。 每个芯片相关文件会输出一个hal库。 APP相关代码编译后与hal库链接,生成最终的elf可执行文件。 不同于一般在.S汇编文件中编写中断向量表及中断处理函数, 我采用 ...
分类:
其他好文 时间:
2018-06-22 13:36:52
阅读次数:
1096
上一节中说到BIOS会将MBR中的主引导程序(512字节)加载到内存的0x7c00处,其中这512字节的主引导程序是软件程序,是操作系统的一部分,因此也是由操作系统开发者来编写的,BIOS将其加载到内存后,会自动跳到0x7c00处去执行。接下来我们自己实现一个“主引导程序”,功能很简单,就是让它打印 ...
分类:
其他好文 时间:
2018-06-15 22:44:36
阅读次数:
253
信号和 中断是很类似的,只不过是一个是硬件中断,另外一个是软中断。中断是系统对于异步事件的响应。 简单理解就是:中断源 发出 中断信号 在 中断向量表 中执行 中断处理程序 之前保存 现场信息 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序。 中断源发出中断信号,CPU判 ...
分类:
系统相关 时间:
2018-06-02 12:57:24
阅读次数:
187
一、操作系统启动部分主要执行流程 当PC电源打开后,80x86结构的CPU将自动进入实时模式。并从地址 (FFFF:0) 开始自动执行程序代码,这个地址通常是是ROM BIOS中的地址。 PC机的BIOS将执行某些系统检测,并在物理地址0处开始初始化中断向量。 此后,它将可启动设备的第一个扇区(磁盘 ...
分类:
其他好文 时间:
2018-05-19 01:17:46
阅读次数:
173
SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit (2^24)的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次... ...
分类:
其他好文 时间:
2018-04-28 15:39:52
阅读次数:
228
下面以ARM Cortex_M3裸核的启动代码为例,做一下简单的分析。首先,在启动文件中完成了三项工作: 1、 堆栈以及堆的初始化 2、 定位中断向量表 3、 调用Reset Handler。 在介绍之前,我们先了解一下ARM芯片启动文件中涉及到的一些汇编指令的用法。 补充一下,其中DCD相当于C语 ...
分类:
其他好文 时间:
2018-03-27 16:41:52
阅读次数:
291