1、汇编启动代码之看门狗
看门狗其实就是一个定时器,硬件上就是SOC内部的一个内部外设
看门狗不用分析原理图,
关键性操作寄存器
WTCON(xE270_0000) bit5 是开门狗的开关 1代表开,0代表关
2、汇编写启动代码之设置栈和调用C语言1
1、C语言运行需要和栈的意义
“C语言运行需要” 需要一定的条件,这些条件都是由汇编提供的。
C语言运行需要栈
栈的特点:自动进入,自动退出,C语言的局部变量,都是在栈中运行的。
如果我们汇编部分没有给C设置 合理的栈地址,那么C语言中的局部变量地址就会螺孔,整个程序就死掉了。
2、CPU模式各模式下的栈
每种模式下都有自己独立的sp寄存器(sp),为什么这么设计?
如果各个模式都使用用一个寄存器SP,那么就意味做成个程序都是一个栈,如果你的应用程序一旦出错,(譬如栈溢出),就会连累操作系统的栈。
解决方案,各个模式下使用不同的栈,操作内核使用自己的栈,每个应用程序也使用自己独立的栈,这样各设置各的,一个损坏不会连累其他。
系统复位后,默认是进入SVC模式
如何访问SVC模式下的栈?
先将模式设置为SVC,再直接操作SP。
3、查阅文档并设置栈指针至合法位置
栈必须是当前可用的一段内存地址
当前CPU刚复位,外部SRAM尚未初始化,目前可用内存只有内部的SRAM。(因为他不需要初始化即可使用),
SVC Stack 1.5k D0037780---D0037D80
栈有4中:
满减栈
满曾栈
满栈: 进栈:先移动指针,再存 出栈:先出数据,再移动指针
空减栈
空曾栈 :进栈:先指针向下移动,再存 处栈:指针先上移动
在ARM中,ATPCS(ARM关于程序应该怎么实现的规范)要求使用满减栈
结iROM_application_note 中的menory map
4、汇编语言和c 语言的互相调用
吧 cfunction
3、 汇编写启动代码之设置栈和调用C语言2
1、C函数的表写和被汇编语言调用
在工程中新建并且添加一个C语言的源文件,
4、 汇编写启动代码之开启icache
1、什么是cache ,有什么用
cache是一种内存,叫高速缓存
从容量来说 CPU < 寄存器 < cache < DDR
从速度来说 CPU > 寄存器 > cache > DDR
210内部有32kB ichche 和 32KB dcache ,ichche 是用来缓存指令的;dcache 是用来缓存数据的。
CPU是不能读内存的,需要通过寄存器中转。
2、iROM中BL0对cache操作
mrc p15,0,r0,c1,c0,0; // 读出cp15的c1到r0中
//bic r0, r0, #(1<<12) // bit12 置0 关icache
orr r0, r0, #(1<<12) // bit12 置1 开icache
mcr p15,0,r0,c1,c0,0;
上一篇:ARM中B __Main和B Main的区别
下一篇:ARM裸机驱动中的main函数调用前的准备工作
推荐阅读最新更新时间:2024-11-04 11:17