keil下的s3c2440启动代码分析

上传人:飞*** 文档编号:36275846 上传时间:2018-03-27 格式:DOC 页数:18 大小:154.50KB
返回 下载 相关 举报
keil下的s3c2440启动代码分析_第1页
第1页 / 共18页
keil下的s3c2440启动代码分析_第2页
第2页 / 共18页
keil下的s3c2440启动代码分析_第3页
第3页 / 共18页
keil下的s3c2440启动代码分析_第4页
第4页 / 共18页
keil下的s3c2440启动代码分析_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《keil下的s3c2440启动代码分析》由会员分享,可在线阅读,更多相关《keil下的s3c2440启动代码分析(18页珍藏版)》请在金锄头文库上搜索。

1、由于片面问题,所以可能会看起来不太美观,可以看附件中的内容。ARM 启动代码相当于我们电脑的 BIOS,也就是 ARM 启动时对处理器的 一些初始化及嵌入式系统硬件的一些初始化。由于它直接面对处理器内核和硬 件控制器进行编程,一般都是用汇编语言。一般包括:中断向量表,初始化存 储器系统,初始化堆栈,初始化有特殊要求的断口,设备初始化,变量初始化 等。这几天对着 RealView MDK-ARM 中自带的启动代码研究了一下,遇到问 题又对着数据手册和指令表看了一下,总算对 S3C2440A 的硬件有了一个大致 的了解。学习嵌入式系统重在系统,学习 ARM 只是为学习嵌入式系统铺路, 懒猫比较笨可

2、能在上系统之前要几天以强化以下对 S3C2440A 内部结构的 了解。把 MDK 自带的 S3C2440A.S 文件的注释发一下,这些是懒猫结合数据手 册与 ARM 指令表理解了,可能会有错误,放在这里只是引导一下像我一样还 没有入门的兄弟们,希望你们不要害怕 ARM 害怕嵌入式,老毛他老人家说的 对,世上无难事,只怕有心人,ARM 指令就那么多,看一遍不会就多看几遍, 还有一定要学习看软件自带的帮助文件. ;/*/ ;/* S3C2440.S: Startup file for Samsung S3C440 */ ;/*/ ;/* */ ;/*/ ;/* This file is part

3、of the uVision/ARM development tools. */ ;/* Copyright (c) 2005-2008 Keil Software. All rights reserved. */ ;/* This software may only be used under the terms of a valid, current, */ ;/* end user licence from KEIL for a compatible version of KEIL software*/ ;/* development tools. Nothing else gives

4、you the right to use this softwa re. */ ;/*/ ;下面这些参数是与 CPSR 状态寄存器有关 ;参数的由来:这里各个模式的参数是由寄存器 CPSR 的模式位设置 M4:0得来 的, ;比如这里的用户模式,CPSR 的 M4:0设置为 10000 就是 0x10。 ; ;Mode_USR - 用户模式,正常程序执行模式,用于应用程序 ;Mode_FIQ - 快速中断模式,用于高速数据传输和通道处理。 ;Mode_IRQ - 外部中断模式,用于通用的中断处理。 ;Mode_SVC - 管理模式,使用的一种保护模式。 ;Mode_ABT - 数据访问中止模式

5、,用于虚拟存储用存储保护 ;Mode_UND - 未定义指令中止模式,当未定义指令执行时进入此模式。 ;Mode_SYS - 系统模式,用于特权级的操作系统任务。 ;I_Bit - 如果 I 位被置 1,则外部中断被禁止(IRQ is disabled) ;F_Bit - 如果 F 位被置 1,则快速中断被禁止(FIQ is disabled) ;- Mode_USR EQU 0x10 Mode_FIQ EQU 0x11 Mode_IRQ EQU 0x12 Mode_SVC EQU 0x13 Mode_ABT EQU 0x17 Mode_UND EQU 0x1B Mode_SYS EQU 0x

6、1FI_Bit EQU 0x80 ; when I bit is set, IRQ is disabled F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled;-栈初始化定义- ;下面这些主要是栈配置,系统的栈空间设定 ; ;UND_Stack_Size - 未定义模式的栈大小 ;SVC_Stack_Size - 超级用户模式的栈大小 ;ABT_Stack_Size - 数据访问终止模式的栈大小 ;FIQ_Stack_Size - 快速中断模式的栈大小 ;IRQ_Stack_Size - 外部中断模式的栈大小 ;USR_Stack_Size

7、- 用户模式的栈大小 ;ISR_Stack_Size - 总堆栈的大小,也就是也有模式下堆栈相加 ; ;-UND_Stack_Size EQU 0x00000000 SVC_Stack_Size EQU 0x00000008 ABT_Stack_Size EQU 0x00000000 FIQ_Stack_Size EQU 0x00000000 IRQ_Stack_Size EQU 0x00000080 USR_Stack_Size EQU 0x00000400ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_St ack_Siz

8、e + FIQ_Stack_Size + IRQ_Stack_Size);- ;AREA - 是一个伪指令,用于段定义。ARM 的汇编程序由段组成,段是相对 独立 ; 的指令或数据单位,每个段由 AREA 伪指令定义,并定义段的属性。 ; STACK - AREA 指令的一个参数,定义段名称 ; NOINIT - AREA 指令的一个参数,指定本数据段仅仅保留了内在单元, 而 ; 将句初始值写入内存单元,也即将内存单元值初始化为 0; READWRITE - 指定本段为可读可写,数据段默认为 READWRITE。 ; READWRITE(读写)、READONLY(只读) ;ALIGN - 也是

9、一个伪指令,指定对齐方式。ALIGN n 指令的对齐值有两种方 案 ; 即 n 或 2n,这里采用第二种方案即指定后面的指令 8 字节对齐。 ; ;下面这句话的意思是: ;开辟一个堆栈段,段名字为 STACK,定义为可读可写,将内存单元初始化为 0, ;-AREA STACK, NOINIT, READWRITE, ALIGN=3;- ;SPACE - 伪指令,用于分配一块内存单元,并用 0 初始化,与%同义 ;其指令格式为: ; lable SPACE expr ;lable - 内存起始地址标号 expr - 所要分配的内存字节数 ;- Stack_Mem SPACE USR_Stack_

10、Size ;堆栈内存起始地址标号 _initial_sp SPACE ISR_Stack_Size ;汇编代码的地址标号Stack_Top ;堆栈段内容结束, 在这里放个标号,用来获得堆栈顶部地址Heap_Size EQU 0x00000000 ;定义堆大小设置 ;开辟一个名字为 HEAP 可读可写,不初始化内存单的内存单元。AREA HEAP, NOINIT, READWRITE, ALIGN=3 _heap_base ;堆的基址 Heap_Mem SPACE Heap_Size ;堆内存起始地址标号 _heap_limit ;堆结束;-内存初始化定义- ;在一些应用系统中除了扩展 Flas

11、h,RAM 挂接在外部存储器接口上外,可能还 有其它 ;的外设挂接在外部存储器接口上,不同外设的操作时序什么的都是不一样的, 所以 ;在使用这些外设之前必须初始化连接这些外设存储器接口。这里因为没扩展, 所以 ;只定义一个片上内存基地址。 ;-IRAM_BASE EQU 0x40000000 ;片上 SRAM 的基地址,即内存基地 址;-看门狗初始化定义- ;看门狗在防止程序跑飞,进入无限死循环时起着重要作用。有些应用可能用不 上 ;看门狗功能,也可能有些应用会用到外部看门狗。在这个时候内部看门狗必须 禁 ;止,所以有时候会在初始化时将内部看门狗禁止,当以后应用用到时再开启它 。 ;看门狗定时器包括三个寄存器: ;WTCON - 看门狗控制寄存器,设定看门狗定时器模式 ;WTDAT - 看门狗数据寄存器,用于设定超时宽度 ;WTCNT - 看门狗计数寄存器,里面存放的是看门狗定时器当前值 ; ;WT_BASE - 看门狗定时器基地址 ;WTCON_OFS - 看门狗控制寄存器偏移地址,相对于基址 ;WTDAT_OFS - 看门狗数据寄存器偏移地址,相对于基址 ;WTCNT_OFS - 看门狗计数寄存器偏移地址,相对于基址 ;WT_SETUP - 看门狗设置 ;WTCON_Val - 看门狗控制寄存器设置,关闭看门狗 ;WTDAT_Val - 看门狗数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号