嵌入式启动之一:资源有限型系统启动

启动即是芯片上电复位要运行的程序,启动作为一个模块独立于操作系统而在,因为操作系统需要通过启动这个模块来加载和引导的。所以启动的英文术语是boot loader。我对boot loader的定义包括两部分:1.加载os 2. 为了让os能够正常运行所要做的硬件和软件初始化工作。

我们常常看到boot loader这个词语用于arm引导linux,X86引导windows等等。可见一般意义上,能用上boot loader都是一些计算能力强并外挂SDRAM的SOC方案。那我们咱们去理解内存资源有限型的嵌入式系统的启动呢?就以51为例。

51体系SOC一般都是内置K字节级别的nor flash用于运行代码,并内置一块K级别较小的ram用于数据读写。很明显这种系统跑不了linux这种高大上的系统,那51的启动都干嘛呢?我们从程序开发流程说起:

1)编写程序,编译,链接成可执行文件。一般在keil集成环境中。

2)keil的二进制工具(类似gcc的objcopy)解释1)中的可执行文件,抽取code和data数据,生成带有加载地址的.HEX格式文件。记住是加载地址,而不是运行地址。

3)烧写.HEX文件数据到nor flash,其根据的是文件中的加载地址。一般来说,代码段的加载地址和运行地址是一样的,这样才能在nor flash中跑起来。但是data是要放在内置ram区域才能可读写的,可是ram掉电会消失啊。所以data是先加载到nor flash的。即data的运行地址在ram区域,而加载地址在flash区域。

4)上电复位后,启动代码会进行硬件初始化,例如时钟,看门狗,串口等等

5)准备好栈,然后把data从加载的地方copy到ram的运行区域(链接地址)

6)初始化好bss,然后就jump到主程序开始跑啦。

简单的嵌入式系统一般没有os,就是上面的流程。这种系统的代码量一般比较小,全部放到内置的nor flash中,没有外挂的nand flash或者card。它可以支持读写卡,但是代码只放到内置的nor flash,而没有放到外置的卡中。

事实上51也可以像arm那样引导操作系统的,当然操作系统不仅对内存有要求,对CPU计算能力也有要求,所以51是不能胜任跑linux的。但是51也能引导并跑简单的操作系统的,例如UCOS等等,只有ram足够大就可以。所以基于51的SOC系统也可以长得像S5PV210这种SOC的系统,代码是放在外置的nand flash或者card中,那启动就要成为一个独立的模块和U启动COS、应用程序放在外置的nand中,上电的时候先通过irom来加载启动的代码到iram中,然后跑启动代码,并在启动代码中引导os。具体待见下一

时间: 2024-12-24 08:40:00

嵌入式启动之一:资源有限型系统启动的相关文章

启动嵌入式间:资源有限的系统启动

启动一个程序,它是在芯片上电复位,以执行,块独立于操作系统而在.由于操作系统须要通过启动这个模块来载入和引导的.所以启动的英文术语是boot loader.我对boot loader的定义包含两部分:1.载入os 2. 为了让os可以正常执行所要做的硬件和软件初始化工作. 我们经常看到boot loader这个词语用于arm引导linux,X86引导windows等等.可见一般意义上.能用上boot loader都是一些计算能力强并外挂SDRAM的SOC方案. 那我们咱们去理解内存资源有限型的嵌

嵌入式启动之三:应用程序的三种存储和加载方式

通过前面嵌入式启动方式的学习,再来理解嵌入式应用程序的三种加载方式是比较容易的.一般意义上,启动是为了引导OS到内存,而应用程序则是操作系统run起来后的用户选择,两者是比较相似的.先根据启动的两种方式来介绍应用程序的加载. 1. 对于资源有限型的嵌入式系统,应用程序在编译.链接之后,会通过二进制工具分析可执行文件的格式,抽出code和data段数据,生成.HEX格式或者.BIN格式,下载到SOC内置的flash中.在上电之后就直接执行了.这种加载方式称为离线加载. 2. 对于资源宽裕型的嵌入式

Linux 嵌入式启动以及优化

转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201312/19-2717.html 第一步: BootLoader -- U boot 1 在cpu/arm926ejs/start.s中 a) b reset ; //jump to reset b) set cpsr ;svc mode ,disable I,F interrupt c)调用lowlevel_init  (在board\xxxx\lowlevel_init.S中 将调用

嵌入式启动之四:S5PV210 IROM BL0启动

三星S5PV210基于A8内核,是arm v7体系,广泛应用于手机和平板解决方案中.市场上也有很多基于S5PV210芯片的开发板(如smart210, gec210等),用于学习高级ARM体系编程.S5PV210跟S5PC11X基本一致,很多人认为两者是同样的SOC,只不过是封装不同,事实上,两者确实略有不同.跟S5PC11X相比,S5PV210没有内置16MSRAM和电源管理模块,解码能力也有些许不同.但从软件使用的角度,两者在内核体系.集成模块.管脚封装上确实有很大的相似性,以致UBOOT在

嵌入式启动之五:基于S5PV210的UBOOT概述

启动引导(boot loader)是包括两个部分:1.引导加载os 2. 为了让os能够正常运行所要做的硬件和软件初始化工作.从OS引导的方式来看,启动又分两种模式,一种是用于开发人员调试的"下载模式",配置好网络环境.网络文件系统变量之后,OS可以从PC宿主机进行引导:另一种是量产产品的启动模式,OS已经存在于产品系统的外存设备中,启动即从外存中加载. 常见的启动引导模块技术如下图: uboot是一个通用的boot loader,被广泛应用于多种芯片架构的不同操作系统的引导.uboo

如何打开一个文本呢?启动进程资源

一句话搞定了,经常看到一些程序在保存为一个txt,或者excel的文件的时候,保存完毕立即打开,其实C#有一个函数可以实现 答案:参数输入文件的绝对路径 ///上面是保存文件的代码System.Diagnostics.Process.Start(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "LogRcptTo.log")); 如何打开一个文本呢?启动进程资源

嵌入式启动之二:资源宽裕型嵌入式系统

上一篇介绍了资源紧缺型嵌入式系统的启动过程,如今介绍资源宽裕型嵌入式系统的启动过程. 内存资源宽裕型操作系统一般都外挂SDRAM,而且CPU的计算能力都比較强,比如基于cortex A.MIPS 74k等核心的SOC. 下图是两种嵌入式系统架构的差别: 图1,对于资源紧缺型系统,内置flash和ram. 上电之前就已经通过烧写工具将代码写到内置flash(nor flas).而iram用于data读写. 图2是资源宽裕型系统.其代码都放在外置存储介质中,如nand.sd卡等,包含引导OS的启动代

嵌入式启动过程笔记

内存. sram:静态内存,价格贵容量大,不需要初始化上电就能用. dram:动态内存,价格便宜容量小,需要初始化后才能使用. 在单片机额中,由于内存小希望开发尽量简单,所以内存适合全部用sram,在pc机中,所需内存大,软件复杂,不在乎dram初始化的开销,所以应该全部选用dram,在嵌入式系统中,内存需求量大而且没有norflash等启动介质.(一般内部有iram就是sram用来启动,运行用dram,我推测的). 外存 norflash:容量小,价格贵,可以和cpu总线直接相连,直接读取,所

System.Diagnostics.Process 启动进程资源或调用外部的命令的使用

经常看到一些程序在保存为一个txt,或者excel的文件的时候,保存完毕立即打开, 启动程序或打开文件的代码 System.Diagnostics.Process.Start(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "LogRcptTo.log")); 在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"