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 初始化程序实现的功能
初始化程序根据不同的应用,其结构和复杂度也不同,但是它必须完成如下基本功能:异常向量初始化;内存环境初始化;其他硬件环境初始化。
关键字:存储器 嵌入式 向量
引用地址:
ARM 入门
推荐阅读最新更新时间:2024-05-02 20:24
存储器下半年迎来供不应求?2Q涨势成下半年风向球
存储器产业2024年从价格谷底回升,虽然农历年长假影响供应链拉货意愿、全球经济复苏缓慢,存储器供应链对于第2季实质需求仍有抱持观望,不过上游存储器原厂在第1季供货持续紧缩。 业界预期,即使上半年的市场终端需求不如预期,原厂仍将力撑DRAM及NAND Flash价格温和调涨,为了因应传统旺季报到加剧供应紧俏,不排除第2季再掀起一波补货涨价潮,预料第2季的价格涨势将成为下半年产业风向球。 业界指出,虽然海外代理市场仍维持备货需求,但国内景气陷入低迷阴霾,在外界一片看好存储器需求回温成长下,不乏保守看待的业者认为,短期内存储器市场价格的调涨幅度将趋缓,存储器原厂与终端业者将进入议价拉锯战,藉由供给减少影响,以推升存储器价格走扬。 存储
[半导体设计/制造]
MCS-51单片机内部数据存储器的RAM结构详细解析
内部数据存储器低128单元 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、R
[单片机]
单片机存储器的配置
单片机存储器配置: 片内RAM 128字节(00H—7FH); 片内RAM前32个单元是工作寄存器区(00H—1FH) 片内RAM有128个可按位寻址的位,占16个单元。 位地址编号为:00H—7FH,分布在20H—2FH单元(P.27) 片内21个特殊功能寄存器(SFR)中:地址号能被 8整除的 SFR中的各位也可按位寻址(P.27-28) 可寻址片外RAM 64K字节 (0000H—FFFFH) 可寻址片外ROM 64K字节 (0000H—FFFFH) 片内 ROM 4K字节 (000H—FFFH) 扩展阅读:半导体存储器 存储器配置(片内RAM) 1、片内RAM 128字节(
[单片机]
嵌入式LINUX系统的静/动态集成调试模式
现有的嵌入式LINUX系统开发过程中,所有的工程师都疲惫于使用两种不同的调试模式分别调试系统的内核和应用程序。首先通过一个JTAG调试工具来配置和启动LINUX系统;嵌入式LINUX系统正常运行起来后,就要通过GDB来继续调试工作。 LAUTERBACH公司综合了上述两种传统调试技术特长提供了一种新的LINUX调试技术。 本文以ARM架构上的LINUX系统开发为例,详细介绍和对比这三种不同的调试模式的实现和应用。 静态调试模式 通过JTAG调试接口进行软件调试的工具一般都只能工作在静态调试模式下,处理器和整个系统都必须被同时挂起。然后调试工具通过JTAG接口把处理器和目标系统的当前状态获取并显示出来(
[单片机]
STM32存储器映射
1、Cortex-M3存储器映射 CM3的地址空间有4G,但它只对这4G空间作了预先的定义,把4G空间分成8个块,每块大小为512M,并指出各段该分给哪些设备。具体的实现由芯片厂商决定,厂商可以设计出具有自己特色的产品。下图是CM3的存储器映射图(来自CM3权威指南)。 内部SRAM 区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在这个区的下部,有一个1MB 的位带区,该位带区还有一个对应的32MB 的 “位带别名(alias)区”,容纳了8M 个“位变量”(对比8051 的只有128 个位)。位带区对应的是最低的1MB 地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只
[单片机]
基于PC/104接口的ACM程控测试系统设计
引言 在对飞机附件进行维修时,可以通过模拟飞机时可能出现的不同情况的环境参数,预检测附件的可能工作状态,以期达到合格的维修要求。显然,使用传统的分散型单片机控制检测仪表系统要消耗大量的人力物力,而且很难保证测试系统的精度,系统的可扩展性也较差,随着数字信号处理技术和微电子技术的发展,在一个较小的系统里完成多路参数的实时测量处理成为可能,因此,本文设计了一种分布式的数据测量检测系统,对各路参数进行分布式检测,统一传回主控室上位机进行集中分析处理,同时上位机可以发出相应控制命令,通过控制多路阀门通道的开度组合,得到模拟的待测附件的飞机工作环境。 程控测试系统的特点 本系统通过控制换热器8路阀门的不同开度组合来模拟待测附件的
[应用]
实时嵌入式产品的测试系统设计
引言 嵌入式系统是以应用为中心,以计算机技术为基础,能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。它是先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物。在一些特定领域,它被要求能够实时响应外部的请求并处理相应的计算,最后把结果及时地反馈给用户或者外设。随着嵌入式应用领域的迅速扩大,人们对嵌入式软件质量提出了更高的要求,如何对日益复杂的嵌入式软件进行快速有效的测试成了目前的关注热点。 1 设计原理 1.1 系统需求 本文采用的被测试嵌入式系统如图1所示,是一套运行有飞行控制软件的嵌入式系统。它需要对飞行的姿态、轨迹做出计算,并通过总线的方式与舵机、发动机、导引头、惯性测
[测试测量]
高度集成的嵌入式处理器如何推动工业机器人的发展
随着半导体技术的进步,以及对更智能、更安全和更高效系统的需求不断增长,工业机器人最近几年经历了一场显著的变革。 这场变革的核心是使用先进的嵌入式处理器,这种处理器采用片上系统 (SoC) 架构,集成了包括外设和硬件加速器在内的各种元件。 这些处理器在增强工业机器人的功能方面发挥着至关重要的作用,使它们能够精准、快速和可靠地执行任务。本文中,我们将深入探讨高度集成的嵌入式处理器在推动工业机器人发展方面发挥的作用。 工业机器人和嵌入式处理器简介 工业机器人是指在工业环境中用于执行各种任务的自动化机器,如铰接式机械臂(图 1)等。这些机器人执行的任务范围非常广,从简单的装配操作到焊接、喷漆和物料处理等复杂的制造过程。 图
[机器人]