XOS
大吉机器人
微信:Jdrobots
QQ: 278588472
Email:
uunubt@yahoo.com.cn
daiwei20032003@yahoo.com.cn
NetName:
uunubt , AD&D, 复杂问题简单化
展开
-
M0/M3的异常和中断
1. Cortex-M3的异常/中断屏蔽寄存器组注:只有在特权级下,才允许访问这3个寄存器。 名 字 功能描述 PRIMASK 只有单一比特的寄存器。置为1后,就关掉所有可屏蔽异常,只剩下NMI和硬Fault可以响应。默认值是0,表示没有关闭中断。 FAULTMASK ...转载 2019-07-18 08:34:34 · 667 阅读 · 0 评论 -
STM32启动文件详解-比较清晰的一篇
STM32启动文件详解启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载)1. Stack—栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN= Stack_Mem SPACE Stack_Size __initial_sp 开辟栈的大...转载 2019-07-26 13:49:25 · 3276 阅读 · 0 评论 -
STM32中断应用总结
STM32中断应用总结 STM32中断很强大,STM32中断可以嵌套,任何外设都可以产生中断,其中中断和异常是等价的. 中断执行流程: 主程序执行过程可以产生中断去执行中断的内容(保护现场),然后在返回继续执行中断. 中断分类:(可以在参考手册查看)系统异常:内核水平 10个 外部中断:外设水平 60个 有关具体的系统异常和外部中断可...转载 2019-07-26 14:10:37 · 2663 阅读 · 0 评论 -
一、STM32启动文件详细解析
一、STM32启动文件详细解析STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例[cpp]view plaincopy;********************(C)COPYRIGHT2011STMicroelectronics******************** ;*FileName:st...转载 2019-07-22 16:26:02 · 433 阅读 · 0 评论 -
电子书 杜春雷 ARM体系结构与编程
https://pan.baidu.com/s/1AYpTxklTRXCpqGV6hD3UzQ提取码:j7ku原创 2019-07-22 18:00:46 · 3133 阅读 · 6 评论 -
SysTick系统定时器(功能框图和优先级配置)
SysTick系统定时器(功能框图和优先级配置) SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit (2^24)的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。 因...转载 2019-07-26 15:24:30 · 1200 阅读 · 0 评论 -
(4) XOS 源码详解: os_s_xxxx.s 汇编代码的 堆栈空间定义,比较简洁的方式
;**;* @brief 数据段;*AREA StackSpace, DATA ; 数据段定义栈空间StackSpaceSTM32_MspBot SPACE 256 ; 从栈底开始开辟256字节作为栈空间STM32_MspTop ; 空间到...原创 2019-07-26 16:41:33 · 512 阅读 · 0 评论 -
ARM汇编杂项伪指令
杂项伪指令杂项伪指令在汇编编程设计较为常用,如段定义伪指令,入口点设置伪指令,包含文件伪指令,标号导出或引入声明等,该类伪指令如下: 边界对齐: ALIGN。 段定义: AREA。 指令集定义: CODE16 和CODE32。 汇编结束: END。 程序入口: ENTRY。 常量定义: ...原创 2019-07-26 17:38:25 · 1070 阅读 · 0 评论 -
ARM汇编伪指令介绍
ARM汇编伪指令介绍在ARM汇编语言程序里,有一些特殊的助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,这些特殊指令助记符被称为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在ARM的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令...转载 2019-07-26 17:43:20 · 1840 阅读 · 0 评论 -
最全ARM汇编伪指令
在ARM处理器汇编语言程序设计里,有一些特殊的指令助记符。这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊的指令助记符为伪指令,它们所完成的操作称为伪操作。 伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。在ARM处理器的汇编程序中,大体有如下几种伪指令:符号定义伪指令、数据定义伪指令、...转载 2019-07-26 17:46:19 · 3709 阅读 · 0 评论 -
XOS 源码详解3: os_s_xxxx.s 汇编代码的 LDR指令
; PendSV_HandlerPendSV_Handler LDR R2, =OSTcbCurr ; 不必关中断。嵌套中断发生时会自动保存 R0~R3 到 MSP 并恢复 LDR R0, [R2]PendSV_Handler_1; ORR LR, LR, #...原创 2019-07-23 14:33:47 · 713 阅读 · 0 评论 -
cortex M0 软件分层架构 RTOS
原创 2019-08-14 16:32:39 · 838 阅读 · 0 评论 -
STM32的2.02固件库提供的启动文件详解 stm32f10x_vector.s
当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入...转载 2019-07-26 11:01:34 · 1279 阅读 · 0 评论 -
XOS 源码详解2: os_s_xxxx.s 汇编代码的段定义AREA,程序入口ENTRY,程序结尾END.
代码段定义 EXPORT __Vectors;**;* @brief 中断向量;* AREA Vectors, CODE; 系统异常__Vectors数据段定义;**;* @brief 代码段;* AREA Routines, CODE程序入口定义 ENTRY代...原创 2019-07-22 09:03:58 · 373 阅读 · 0 评论 -
M3/M0汇编参考
1. 声明外部变量和导出符号EXTERN OSRunning ; External referencesEXTERN OSPrioCurEXTERN OSPrioHighRdyEXTERN OSTCBCurEXTERN OSTCBHighRdyEXTERN OSIntNestingEXTERN OSIntExitEXTERN OSTask...转载 2019-07-18 18:10:56 · 723 阅读 · 0 评论 -
一文看懂LR寄存器及 BX LR 指令的两种用途
一文看懂LR寄存器不知你在DEBUG程序,又或者阅读操作系统源码时候有没细心观察,从一个普通子函数返回与异常(中断)返回的汇编指令都是BX LR,但是这两者的意义是一样的吗?这篇文章就来揭开LR寄存器的神秘面纱。当单片机涉及函数跳转或者任务调度的时候,理解MCU如何处理堆栈与改变各个通用寄存器的状态尤为重要,下面就来比较一下在不同情况下LR寄存器的意义。上...转载 2019-07-19 09:17:41 · 13165 阅读 · 0 评论 -
汇编跳转指令B、BL、BX、BLX 和 BXJ的区别
已针对原链接错误翻译并更正 跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转:(1) 使用专门的跳转指令。(2) 直接向程序计数器 PC 写入跳转地址值。通过向程序计数器 PC 写入跳转地址值,可以实现在 4GB 的地址空间中的任意跳转,在...翻译 2019-07-19 09:31:19 · 5841 阅读 · 0 评论 -
ARM三个寄存器 : 堆栈指针SP(R13)、连接寄存器LR(R14)和程序计数器PC(R15)
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都是必要的。1、堆栈指针R13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。2、...原创 2019-07-19 09:52:31 · 7493 阅读 · 0 评论 -
STM32/M3/M0关于开关总中断的问题
NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。 具体的数值由芯片厂商在设计芯片时决定。此外, NVIC 还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NMI 的实际功能亦由芯片制造商决定。在某些情况下, NMI 无法由外部中断源控制。在 STM32/Cortex-M3 中是通过改变 CPU 的当前优先级来允许或禁止中断。异常...转载 2019-07-19 11:27:50 · 4561 阅读 · 0 评论 -
ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式
BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式A一、现在先区分下ARM指令集与Thumb指令集 Thumb 指令可以看作是 ARM 指令压缩形式的子集,是针对代码密度的问题而提出的,它具有 16 位的代码密度但是它不如ARM指令的效率高 .Thumb 不是一个完整的体系结构,不能指望处理只执行Thumb 指令而不支持 ARM 指...原创 2019-07-19 15:22:43 · 2641 阅读 · 0 评论 -
嵌入式·实时操作系统 xos介绍
首先,第一个要解决的问题是,为什么我们需要xos?就像最开始学C编程时,老师告诉我们,指针很重要,那时你肯定有一个大的疑问,指针到底有什么好?心里一直犯嘀咕着:不用指针不一样把程序编出来了?现在想想看c语言没了指针,是不是寸步难行呢。回到正题,我们到底为什么需要xos?一般的简单的嵌入式设备的编程思路是下面这样的:main{ {处理事务1}; {处理事务2...原创 2019-07-24 13:33:12 · 2194 阅读 · 0 评论 -
IPSR(中断程序状态寄存器),IPSR包含了当前正在执行的中断服务程序编号,用于识别当前中断。
TinyThread源码分析之中断转载请注明来源:cuixiaolei的技术博客https://github.com/xhawk18/TinyThreadTinyThread 是基于Cortex-M0的小型的OS.知识储备: IPSR(中断程序状态寄存器),IPSR包含了当前正在执行的中断服务程序编号,用于识别当前中断。 Cortex-M0处理器...转载 2019-07-29 14:14:51 · 12508 阅读 · 0 评论 -
《Cortex-M0权威指南》之Cortex-M0编程入门
《Cortex-M0权威指南》之Cortex-M0编程入门转载请注明来源:cuixiaolei的技术博客嵌入式系统编程入门微控制器是如何启动的 为了保存编译号的二进制程序代码,大多数的现代微控制器都会包含片上flash存储器。有些微控制器还可能有一个独立的启动ROM,里面装有Bootloader程序。微控制器启动后,再执行flash的用户程序前,Bootloader会首先运行。...转载 2019-07-29 14:18:25 · 1275 阅读 · 0 评论 -
XOS 详解1: os_s_xxxx.s
XOS中关中断、恢复中断的汇编实现:1.系统函数输入输出中定义;**;* @brief EXPORT & IMPORT;*; 实现的系统函数 EXPORT OSIntDisable ; 备份中断状态并关中断 EXPORT OSIntRestore ; 恢...原创 2019-07-17 15:38:02 · 1621 阅读 · 0 评论 -
xos详解5:PendSV_Handler
; PendSV_HandlerPendSV_Handler LDR R2, =OSTcbCurr ; 不必关中断。嵌套中断发生时会自动保存 R0~R3 到 MSP 并恢复 LDR R0, [R2] ; 如果发生咬尾的多个 PendSV,上半段相当...原创 2019-07-30 16:59:30 · 2722 阅读 · 0 评论 -
支持cortex-M0的OS有哪些?
the Keil Microcontroller Development Kit (MDK) provides a RTX kernel, which is easy to useand free of charge. embOS from SEGGER (www.segger.com), uC/OS-II and uC/OS-III from Micrimm (mi...原创 2019-08-21 10:39:48 · 900 阅读 · 0 评论