汇编之启动代码
发布日期:2021-05-26 20:04:58 浏览次数:11 分类:技术文章

本文共 2367 字,大约阅读时间需要 7 分钟。

DISABLE_IRQ_ALL EQU (1<<6 :OR: 1<<7)    ;把IRQ中断和FIQ    GET    2440addr.inc    IMPORT    main    IMPORT    PLL_init    IMPORT    BANK_Init    IMPORT    STACK_init    IMPORT    RORWZI_init    PRESERVE8    AREA  boot, CODE, READONLY    ;定义启动代码区域    ENTRY    CODE32vector  ;异常向量入口    B    ResetHandler    ;复位异常,程序一上电就进入该模式    B    UndefHandler    ;未定义异常,程序出现未知异常的时候进入    B    SVIHandler        ;软中断异常,操作系统里系统调试使用    B    PAbortHandler    ;预取指异常,当取指令有问题的时候进入进行修复    B    DAbortHandler    ;取数据异常,当CPU取数据的时候发生问题时进入修正    B    .                ;保留,ARM公司预留没用的异常    B    IRQHandler        ;普通中断    B    FIQHandler        ;快中断                                          ResetHandler    PROC      ;关闭看门狗      LDR R0,=WTCON    ;定义一个指针 *pwtcon      LDR R1,=0x0    ;初始化R1,也就是看门狗的配置值,0表示关闭看门狗功能      STR R1,[R0]    ;*pwrcon = R1      ;屏蔽中断      MRS R0,CPSR    ;先读取CPSR内容,R0=CPSR      ORR R0,#DISABLE_IRQ_ALL     ;把R0的6 7位置1,也就是屏蔽IRQ和FIQ      MSR CPSR_c,R0                 ;把R0的第八位写回到CPSR第八位,实现屏蔽中断            ;配置时钟      BL    PLL_init            ;内存配置      BL    BANK_Init            ;配置堆栈      BL    STACK_init            ;配置RORWZI初始数据      BL    RORWZI_init       ;打开中断      MRS R0,CPSR    ;先读取CPSR内容,R0=CPSR      BIC R0,#DISABLE_IRQ_ALL     ;  把R0的6 7清0,也就是屏蔽IRQ和FIQ      MSR CPSR_c,R0    ;把R0的第八位写回到CPSR第八位,实现打开中断      BL main                  ENDPBeep_init PROC;蜂鸣器     LDR R0,=GPBCON     LDR R1,[R0]     ORR R1, R1,#(1 << 0)     BIC R1, R1,#(1 << 1)     STR R1,[R0]          BX LR   ;子函数返回     ENDPBeep_set    PROC     LDR R4, =GPBDAT     LDR R1, [R4]     CMP R0,#0     BICEQ    R1, #(1 << 0)     ORRNE    R1, #(1 << 0)     STR R1,[R4]         BX    LR     ENDPdelay_ms    PROC     LDR R1, =12000loop_delay    SUB R1,R1,#1    CMP R1,#0    BHI loop_delay    SUB R0,#1    CMP R0,#0    BHI    delay_ms    BX LR        ENDPUndefHandler    PROC    B    UndefHandler    ENDPSVIHandler    PROC    B    SVIHandler    ENDPPAbortHandler    PROC    B    PAbortHandler    ENDPDAbortHandler    PROC    B    DAbortHandler    ENDP    IMPORT irq_dispatch    ;IMPORT    key_irq         ;IMPORT  key_ledIRQHandler    PROC    ;压栈过程    SUB LR,LR, #4    STMFD SP!,{R0-R12,LR};入栈,!表示SP指针自动变        ;中断处理过程    ;BL key_irq         ;BL key_led    BL irq_dispatch        ;出栈    LDMFD SP!,{R0-R12,PC}^    ;出栈,同时调回断点,^表示同时恢复中断的SP SR值到SVC模式的CPSR    ENDPFIQHandler    PROC    B    FIQHandler    ENDP        END

 

转载地址:https://blog.csdn.net/Gaodes/article/details/81737990 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:汇编之创建堆栈
下一篇:数据库入门整理

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月11日 22时13分57秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

html贝塞尔曲线在线,贝塞尔曲线的一些事情_html/css_WEB-ITnose 2019-04-21
Java前台显示近20天的东西_第十次课:前台首页设计及显示商品信息 2019-04-21
java开发web网站的路由设计_理解Web路由(浅谈前后端路由与前后端渲染) 2019-04-21
excel如何把顺序倒过来_在excel中怎么使文字颠倒顺序反过来显示呢? 2019-04-21
php正则表达式获取图片路径,php 常用正则表达式实例(图片地址,与指定内容获取)... 2019-04-21
脚本语言php是什么意思,PHP脚本语言 2019-04-21
matlab数学规划模型,数学规划模型 2019-04-21
视频提取音频php,如何提取视频中的音频,从视频文件中提取出音频输出成MP3格式... 2019-04-21
diy.php添加验证码,织梦dedecms自定义表单中加入验证码 2019-04-21
在php脚本中 通过可以获取,在PHP中,可以使用Unix时间戳获取精确的脚本执行时间。... 2019-04-21
s2-045 php exp,S2-045-EXP.py --Struts2任意代码执行漏洞 (S2-045,CVE-2017-5638) 2019-04-21
linux sdk 窗口句柄,Venus: 针对Linux平台上,对常用的系统API进行面向对象的封装SDK。... 2019-04-21
c语言程序设计 科学出版社习题答案,C语言程序设计(科学出版社)第4章 课后习题参考答案.doc... 2019-04-21
c语言 无错 但只运行一半,求哈夫曼编码时程序运行到一半就终止了,编译无错... 2019-04-21
deepin linux 2014安装,2014.2版本的Deepin虚拟机安装浅谈(就是深度Linux) 2019-04-21
android 限速工具,Android下载器之限速篇 2019-04-21
html刷新ajax实现原理,AJAX的原理—如何做到异步和局部刷新 2019-04-21
html中列表菜单加文字请选择,html中下拉菜单 2019-04-21
读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】 2019-04-21
html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+) 2019-04-21