网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > 文章  
ARM入门
文章来源: 21control 文章作者: 未知 发布时间: 2006-05-10   字体: [ ]  
 

1 ARM 的启动

 

一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制以及编程使用高级语言 C,C++ 甚至 JAVA 语言,都需要先创建一个适合程序运行的硬件环境,然后初始化或者配置或者剪裁 run-time library, 这些工作都必须在主程序运行前完成,所以一个 startup 程序或者程序组对于一个嵌入式系统来说是非常重要的。要编写 startup 程序,需要对编译器、链接器和汇编器的细节有一定的了解,同时对 ARM 芯片硬件本身的地址分配以及 memory mapping 机制也需要有一些了解。

 

2 ARM 程序的工作过程

 

首先由各种 source file 经过编译产生 object 文件,然后 object 文件经过链接生成 Image 文件,然后通过 ICE 的方法,根据描述文件的指定下载到目标板上的固态存储器指定地址当中,比如 flash EEPROM, ROM 等等。在程序执行之前,根据某些描述文件,将需要读写数据的部分读出放入动态存储器比如 RAM 当中,然后程序从 ROM 开始执行。或者有时为了提高程序的运行速度,也可以将所有的程序 ( 有一些 root 的部分除外,以后会提及 ) 通过一个描述文件放入指定的 RAM 当中,然后程序从 RAM 开始执行,但是这样会耗费大量的动态存储器,所以大部分程序会取折中的方法,将需要快速运行的部分和要读写的部分放入 RAM ( 一般读固态存储器的过程和动态存储器的过程是一样的,但是写就不同了,所以读写的部分一定要放到 RAM ) ,而只读的部分和对速度要求不是那么高的部分放入固态存储器。同时 ARM 结构的异常向量表规定放在地址为 0x00000000 开始的地址空间上,而一般的 CPU 为了提高异常相应速度,会将这个向量段 remap 到其他的 RAM 当中,所以在描述文件当中必须精确指定异常向量跳转程序的地址到 remap 的地方。

 

application 程序执行前,还需要由一些文件描述 application 程序执行的环境。比如系统工作时钟,总线频率。现在一般嵌入式编程语言为 C,C++ 等。如果在使用它们的时候使用的 runtime-library ,那么在程序执行前还需要为这些库函数初始化 heap 。然后 ARM 可能工作在不同的模式,还需要为不同的工作模式设置 stack 。这样,描述链接地址的文件,以及在 application 运行前所有的初始化程序就是 startup 程序组。

 

3 STARTUP 分类

 

这样,将 startup 程序所完成的功能分类。一类是链接地址描述,一类是各种初始化的程序。根据不同的应用,描述文件和初始化程序的内容以及结构和复杂程度都会不同。但是基本上,它们都必须实现以下功能。

 

3.1 描述文件实现功能

 

描述文件可以是链接命令行上简单的几个字符,也可以是一个非常复杂的文件,但是它必须完成如下功能:指定程序下载的地址;指定程序执行的地址。

 

3.2 初始化程序实现的功能

 

初始化程序根据不同的应用,其结构和复杂度也不同,但是它必须完成如下基本功能:异常向量初始化;内存环境初始化;其他硬件环境初始化。

 

--

原文链接: http://www.ednchina.com/Article/html/2006-05/2006510083603.htm

 
推荐文章
·嵌入式Linux平台的多协议路由器
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统的MiniGUI研究和
·基于Linux的移动电话开发技术及
·嵌入式uClinux的内核结构和开发
·基于 GTK+ 和 X-window 的 GUI
·基于Qt/Embedded和Qtopia的GUI设
·恰当选择嵌入式Linux环境下的GUI
·ARM的嵌入式Linux移植体验之操作
·ARM的嵌入式Linux移植体验之基本
·ARM的嵌入式Linux移植体验之应用
·ARM的嵌入式Linux移植体验之设备
·ARM的嵌入式Linux移植体验之Boot
·嵌入式Linux系统中的GUI系统的研
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·ARM的嵌入式Linux移植体
·U-Boot简介
·基于Qt/Embedded的GUI移
·基于Qt/Embedded和Qtopi
·U-BOOT的启动流程及移植
·ARM的嵌入式Linux移植体
·几种Linux嵌入式开发环
·ARM的嵌入式Linux移植体
相关文章
·ARM7系统中实现CF卡存储
·基于μClinux的SoPC应用
·YAFFS文件系统在嵌入式L
·Linux 2.6 内核的嵌入式
·嵌入式系统的人机界面原
·Linux 无线网络技术系列
·Linux 无线网络技术系列
·如何编写Linux设备驱动
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统