LPC2104的Boot与Remap详解(一)---(原创)
Boot Loader的启动流程和开发经验总结
Boot Loader的启动流程和开发经验总结Windows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统。
在形形色色的嵌入式设备世界里,一款CE系统通常只会针对某一种硬件平台生成。
一般来说,Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。
其中,0AL开发最基本的一步是板级支持包(BSP),而BootLo ader设计则在BSP开发中具有极为关键的地位。
1.什么是BootLoader嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。
其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟、中断控制寄存器等,完成内存映射、初始化MMU等。
第二部分是装载程序,将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中并执行。
(1)什么是板级BSP?BSP(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,主要是为了支持操作系统,使之能够更好的运行于硬件主板。
不同的操作系统对应于不同形式的BSP,例如WinCE的BSP和Linux的BSP相对于某CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的。
所以,BSP一定要按照该系统BSP的定义形式来写,这样才能与上层OS保持正确的接口,良好的支持上层OS。
(2)什么是Boot Loader在BSP中有一个重要的组成部分就是BootLoader,它是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好环境。
一般来说,在嵌入式世界里BootLoader 是严重地依赖于硬件的,因此想建立一个通用的BootLoader 几乎是不可能的。
主板复位电路图精解
主板复位电路复位包括按POWER键,按RESET键或CTRL+ALT+ DEL或软件的复位因此复位故障包括不复位,复位后自动消失等故障。
一、复位原理首先,电源启动后,由ATX电源发出电源正常信号PWRER OK即ATX PWRGD,经反相器HCT14整形后,输出CLROFF信号,进入南桥82371,对其内部寄存器进行清零,同时输入与非门HC132。
当电压达到额定值,且稳定以后,电压控制芯片发出VRMPWRGD信号,也输入VHC132,这两信号进入VHC132X 逻辑运算,输出信号,经HCT14整形后,由HCT14的PIN10输出信号,经处理形成POWROK信号,对南桥及北桥进行复位。
南桥复位后,再发出RSTDRV信号,经处理形成ISA RST ,IDERSTDRV 对ISA插槽及IDE接口进行复位,发出PCI RST信号,对PCI插槽进行复位,复位后主板开始工作。
当按RESET键进行热启动时,U18的PIN9信号为触发复位。
当在设置或WIN98或按CTRL+ALT+DEL进行软关机时,由371发出BIOSRST信号,在U18的PIN9处输入信号,.触发复位。
二、检修流程(ISA RESET不正常)1、U18 VHC132的PIN9输入波形不为1)5165电压控制芯片或其相关电路如C85等损坏,信号不正常;2)C159、CT26、C356漏电引起4V电压低;3)软启动与BIOSRST 相关电路有关。
2、U18 VHC132的PIN10 CLF OFF 信号(不正常)1)C48漏电;2) U19损坏;3、 U18的第8脚波形正常,但南桥发出的RSTDRV信号不正常(查U19的PIN13应为)1)用动态分析法观察U21的10脚是否为,判断是否U21坏;2)南桥复位信号PWPOK信号不正常,检查相关电容是否漏电或断开连线检查南桥是否损坏(测量反向阻值);3)检查南桥工作条件,检查32K晶振上是否正常,CMOD放电电压VBAT 2.8V是否正常, ,14.318MHZ、48MHZ、33MHZ频率是否正常,RN29、RN30排阻是否正常;3.3V、5V、3.6V、3VSB是否短路,若以上条件都正常可判断为南桥坏。
CNC维护必会技:BOOT整体数据备份与恢复
CNC维护必会技:BOOT整体数据备份与恢复对FANUC CNC中的数据进行保存或恢复,有两种形式:整体数据的输入/输出和个别数据的输入/输出。
1. 整体数据的输入/输出【BOOT画面操作】通常的系统启动时,计算机引导系统(BOOT SYSTEM)将自动把系统软件从FROM传送到工作DRAM,用户不会意识到BOOT SYSTEM 的存在。
维护时,可通过BOOT画面菜单操作。
比如,当维修更换印刷线路板时须暂时保存数据(更换主板或主板上的FROM&SRAM模块或存储器&主轴模块时,存储器中的全部数据会丢失),可使用BOOT画面把全部数据保存到存储卡,以便快速恢复。
通过BOOT画面备份数据,备份的是CNC数据整体,下次恢复和调试其他相同机床时,可迅速完成。
但是数据为打包形式,是FANUC 的专用文件格式,一般用户无法在计算机中看到文件的内容。
2. 个别数据的输入/输出【通常画面操作】用个别数据输入/输出功能,可以逐个输出CNC参数、加工程序、定时器计数器等PMC参数、螺距误差补偿量、用户宏程序变量值、刀具偏置数据、梯形图、维护信息等。
通过存储卡(读卡器)传输到个人计算机上,用写字板或OFFICE WORD可直接打开查看和编辑。
两种形式的区别如表2所示。
表2 FANUC 0i系列系统CNC数据保存形式区别项目整体数据保存个别数据保存存储卡输出媒介存储卡RS232数据形式二进制形式文本形式适用场合维修时设计调整时下面详述BOOT画面下CNC整体数据备份与恢复,即用存储卡(CF卡)通过PCMCIA接口保存或恢复CNC打包数据。
注意了,USB接口在BOOT画面下无效。
存储卡插拔方法不正确的存储卡插入可能导致接口损坏或不能读卡的故障。
存储卡的插入步骤如下:(1)确认存储卡的“WRITE PROTECT”(写保护)是关断的(可以写入)。
(2)将存储卡(CE标志朝外)可靠插入存储卡插槽中。
不可用力过猛,否则容易损坏插针,存储卡上有插入导槽,如方向反了,则不能正确插入或显示“CARD NOT EXIST(卡不存在)”的错误信息。
ARM处理器Remap的详解
1)使用它的NANDboot模式。为什幺NANDboot会比较快,那是
因为2410里面有块小石头SteppingStone,一块4KBSRAM,它是映射在
0x0的。启动程序会自动被copy到这个石头里面。自然异常向量的入口放
到这个地方,一样可以达到比NOR boot快的启动、异常响应速度。
ARM处理器Remap的详解
0.什幺是Remap
我的理解是:在ROM从0x0用几句指令引导系统之后,把RAM映
射到0x0就是Remap。
1.Remap的作用
当ARM处理器上电或者Reset之后,处理器从0x0取指。因此,必
须保证系统上电时,0x0处有指令可以执行。所以,上电的时候,0x0地址
处必定是ROM或者Flash(NOR)。但是,为了加快启动的速度,也方便可以
Remap寄存器的相应bit置1完成的。如Atmel AT91xx
2)如果处理器没有专门的寄存器,但是memory的bank控制寄存器
可以用来配置bank的起始地址,那幺只要把RAM的起始地址编程为0x0,
也可以完成remap。如samsung s3c4510
3)如果上面两种机制都没有,那幺Remap就不要做了。因为处理器
实现决定了SDRAM对应的bank地址是不能改变的。如Samsung S3c2410.
3.Re了。为了达到Remap的
目的,就是加快启动的速度和异常处理速度,一定要初始化异常堆栈和建立
异常向量表的。
4.如果象2410那样不能Remap的话怎幺办?
2)如果你对NOR Boot情有独衷,那幺你只好把你的异常向量的入口
copy到SDRAM里面,实现所谓的High Vector
主板RESET分析
主板RESET分析我们知道,对于计算机用户来说,RESET在多数情况下都是一种正常的人为操作。
最熟悉的就是在机箱前面板上有一个专门用于执行RESET操作的RESET按键,还有在某些高级操作系统如WIN95/98/2000的启始菜单中也有重新启动的功能。
但您在实际工作中一定也遇见过非人为的RESET现象,有时甚至令您莫名其妙,因为当时您不希望系统RESET。
那么这时出现的RESET现象就是不正常的,是一种故障。
这一故障可能我们经常使用电脑的人都遇见过。
我们现在就要分析一下有关RESET的原理及造成RESET故障的可能因素。
主要包括下列内容:一、RESET的分类、原理及实现过程。
二、导致非正常RESET的可能因素。
三、工程测试。
四、生产中的相关问题分析。
一、RESET的分类、原理及实现过程1、RESET的分类:从用户的使用角度来分,可分为正常RESET和非正常RESET。
正常RESET 即用户由于某种原因人为执行的RESET操作;非正常RESET即非人为的操作,是由于系统工作不正常后由BIOS引起的Soft RESET或某种情况下硬件上的信号干扰造成的。
从原理上来分,可分为硬件引起的RESET和操作系统或BIOS引起的Soft RESET。
这两种引起RESET的原因都可能是正常的,也可能是非正常的。
2、RESET的原理:无论是正常RESET还是非正常RESET,或者硬件RESET还是Soft RESET,其最根本的原理都是相同的,最终反映到硬件逻辑上都是引发主板上的南桥或ICH发出PCIRST#而引起的。
下面我们集中讨论一下RESET的原理:首先介绍重要的信号PCIRST#: PCIRST#是由南桥或ICH发出的一个信号,发出的目的原意是为了复位挂在PCI总线上的设备,而现在PCIRST#的意义已经不仅仅限于PCI设备,它已经成为整个系统全面复位的控制信号,通过控制其它设备的RESET信号来达到系统全面复位的目的。
主板的复位原理
主板复位原理当主板加电后,各相电源输出稳定,南桥就会收到一个PWR_GD的信号,南桥接到这个信号后,会产生一个初始的PCIRST#信号,送出到复位的门电路,复位门电路收到这个信号后,通过逻辑转换分为三个RST信号,一个是PCIRST1#,一个是PCIRST2#(有的主板上定义为DEVRST#和SLOTRST#)另一个为IDERST#。
PCIRST1#是用来复位板载设备的,如IO,BIOS,网卡,北桥,1394芯片等。
PCIRST2#是用来复位PCI槽上的设备的。
IDERST#是用来复位IDE设备的。
再说一下CPURST#的产生流程。
北桥的电压及时钟条件满足后,接到传送来的PCIRST#1信号后,便通过内部电路转换为CPURST#来对CPU进行复位。
我只描述了一个简单的流程,不同的板,RST信号的细分也不太一样。
但都是大同小异的。
PCI上有复位,而CPU上没有复位,这就说明初始的PCIRST#这个信号是正常的,而CPU的RST是由北桥来完成,而北桥的RST由PCIRST#1来完成,这样我们就找到了思路,首先,我们要查北桥的工作条件,一般INTEL8XX系列的芯片组,北桥需要三组基本工作电压,AGP的VDDQ1.5V,DDR的VCC_DDR 2.5-2.7V,CPU的主供电Vcore1.4-1.7V左右。
(845D的板,还会有1.8V的电压)我们首先要保证这三组电压正常,并且没有短路,然后就是要查北桥工作所需要的时钟信号,这个可以通过跑时钟线路来完成,看时钟芯片的正面和背板都有什么信号通至北桥。
进而查出那个时钟信号不对。
这些基本条件查过后,我们就要查PCIRST#2的线路了,由于PCIRST#2信号同时供给IO,BIOS,北桥,1394,网卡这些设备,所以它们之中的任何一个部分出了故障,都会导致PCIRST#2信号被拉低,以至北桥不能正常复位,从而影响CPURST#的正常,我们可以量测这些设备的复位引脚,看电压是否为3V,或是达到3V,在触发RST开关的时候,这个引脚上的复位信号能否被正常的拉低,如果电压不够3V,或是不能拉低,就有可能是此元件不良,我们可以割断这根复位信号线,或是挑开这个引脚,或是干脆换掉这个元件,来看CPURST#是否正常。
集成电路ic上电复位
集成电路ic上电复位
集成电路(IC)上电复位是指在IC接通电源后,通过特定的复位电路将IC复位到初始状态的过程。
在IC上电复位中,一般使用专门的电路将IC中的所有寄存器和逻辑电路都初始化到一个已知的初始状态,以确保IC在正常工作之前被正确地启动。
这个初始状态可以是全为0或全为1,具体取决于IC的设计要求。
常见的IC上电复位电路主要有以下几种形式:
1. 外部复位引脚(RESET Pin):IC通常会提供一个专门的RESET引脚,当电源接通时,将RESET引脚拉低(或高)可以实现复位功能。
2. 复位电路(RESET Circuit):IC内部可能集成了一个复位电路,通过监控电源电压或者时钟信号,当电源和时钟信号符合一定条件时,自动触发复位功能。
3. 电源管理芯片(Power Management IC):一些大型IC可能会使用独立的电源管理芯片,负责管理IC的电源供应和复位功能。
需要注意的是,不同的IC可能会使用不同的复位电路设计和复位触发条件,因此在使用IC时,需要仔细查看相关的技术资料和规格说明,了解具体的复位方式和要求。
BOOT详解
1 U-Boot简介U-Boot,全称Universal BootLoader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,VxWorks, QNX, RTEMS, ARTOS,LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD,FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR,VxWorks, LynxOS, pSOS, QNX, RTEMS,ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot 项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。
就目前来看,U-Boot 对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。
其它系列的处理器和操作系统基本是在2002年11月PPCBOOT改名为U-Boot后逐步扩充的。
从PPCBOOT向U-Boot 的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心WolfgangDenk[以下简称W.D]本人精湛专业水平和持着不懈的努力。
当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOTLOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
在PROTEUS中使用ARM处理器及uC-OS-II移植理解——LPC2124
3.IRQ.S分析
通过定义宏:
$IRQ_Label HANDLER $IRQ_Exception_Function来实现LPC 2124的多个中断源共用一段异常处理代码的目的。
SUB LR, LR, #4 ; 计算返回地址
STMFD SP!, {R0-R3, R12, LR} ; 保存任务环境
LDMFD SP!, {R0-R3, LR} ;出栈
SUBS PC, LR, #4
如果在CPSR中没有禁止中断,那么每执行一条指令,处理器会检查是否有FIQ或者IRQ中断发生。若有中断发生,当且仅当PC指更新后,即处理器对下一条指令进行取指发生后,处理器才会进入到中断的服务程序中。因此保存在LR中的指是PC-4,此处的PC是更新后的PC,由于ARM处理器是三级流水线的结构,因此返回地址是LR-4,返回到的地址是将要执行,但是被中断了指令。
在PROTEUS中使用ARM处理器及uC-OS-II移植理解——LPC2124.txt
在PROTEUS中使用ARM处理器及uC/OS-II移植理解——LPC2124
LPC2124是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU的微处理器,并带有256k的嵌入的高速Flash存储器和16k的片那静态RAM。128位宽度的存储器接口和独特的加速结构使得32位代码能够在最大的时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式,将使得代码规模降低超过30%,而性能的损失却很小。
LPC2124片那Boot装载程序实现在系统编程(ISP)和在应用编程(IAP)。1ms可以编程512字节。整片擦除只需要400ms。此外还有4路A/D转换器,转换时间低于2.24us;2个32位定时器,6路PWM输出、RTC、看门狗和多个串行接口。LPC系列微处理器的抗干扰能力强,在很多应用中得到了使用。
单片机boot电路
单片机boot电路引言:单片机(Microcontroller)是一种集成了微处理器、存储器和外设接口的微型计算机系统。
在嵌入式系统中,单片机起着至关重要的作用。
而在单片机的启动过程中,boot电路则起着关键的作用。
本文将介绍单片机boot电路的原理、功能和使用。
一、boot电路的原理:boot电路是单片机系统中用于启动和加载程序的关键电路。
它通常由复位电路、时钟电路和下载电路组成。
其中,复位电路用于将单片机初始化到一个已知的状态,时钟电路提供系统所需的时钟信号,而下载电路则用于通过外部接口将程序加载到单片机中。
二、boot电路的功能:1. 复位功能:复位电路通过将单片机的复位引脚拉低来实现复位操作。
当单片机复位时,它会重新开始执行程序的启动过程,使系统恢复到初始状态。
复位功能对于确保系统的稳定性和可靠性至关重要。
2. 时钟功能:时钟电路为单片机提供稳定的时钟信号。
时钟信号用于同步单片机内部各个模块的工作,确保它们按照正确的时间序列进行操作。
时钟功能对于实现精确的计时和数据同步至关重要。
3. 下载功能:下载电路是单片机启动过程中的关键部分。
它通过外部接口(如串口、USB等)将程序加载到单片机的存储器中。
下载功能使得我们可以方便地更新和修改单片机的程序,提高了系统的灵活性和可维护性。
三、boot电路的使用:在实际应用中,我们可以根据具体的需求设计和使用boot电路。
以下是一些常见的boot电路设计要点:1. 复位电路设计:复位电路应该确保在系统上电、复位信号失效或异常情况下,能够将单片机可靠地复位到初始状态。
常用的复位电路设计包括电容复位电路、电源监测复位电路等。
2. 时钟电路设计:时钟电路的设计应考虑到系统对时钟信号的精确度和稳定性的要求。
常用的时钟电路设计包括晶体振荡器电路、RC振荡器电路等。
3. 下载电路设计:下载电路设计应与单片机所支持的下载方式相匹配。
常用的下载电路设计包括串口下载电路、USB下载电路等。
LPC启动过程和重映射概念
LPC启动过程和重映射概念LPC启动过程和重映射概念2010年01月17日星期日23:261.LPC2200的启动过程:(1)芯片启动时,是从0地址开始,但是这时引导程序被映射到了地址0,所以这时启动的就是引导程序。
(2)引导程序检查ISP引脚的状态和BOOT【1】和BOOT【0】,根据不同的状态,将不同的内容映射到地址0,例如0x80000000或者0x40000000,这个要看你的配置了,从而进行重新映射。
(3)重新映射后,就跳转到0再运行,这时候实际上运行的是0x80000000或者0x40000000的程序了。
注意:设置RW和RO的目的是为了告诉编译器把生成的代码放在存储器的什么地方。
代码实际是存在0x80000000或者0x40000000那里的,只是通过映射的方式,将前面的中断向量表部分映射到地址0去了。
、2.bootLoader 的功能:(1)功能:开启串口下载(2)过程:首先,是通过检测P0.14口的状态。
如果为低电平,则运行ISP的程序,它是BOOTLOADER的一部分,这段程序是引导串口接收数据并放进片内FLASH中;如果P0.14口的状态不为0,那么它就检测你是运行片内FLASH 的程序还是外部FLASH的。
先说说片外的FLASH,因为我们下载片外FLASH时是把BIN文件烧进去的,所有的代码都是在一起的,这是什么意思呢,最开始是RO段的程序,紧接着是RW段的程序,但是执行时为了提高执行速度,把RO段放ROM区,RW段放RAM区,这动作是怎么实现的呢,其实就是在进行运行复位程序前就已经重映射了,具体是怎么实现的呢,其实就是一段程序搬运程序,由硬件实现,呵呵。
如果是片内的,个人认为应该是一样的过程,只是速度快些而已。
无论怎么样,复位,PC肯定指向0x00000000,但是它从这个地址取出了一个跳转指令,跳到了bootloader区,为什么这么说呢,明明这一区域放的是中断向量表吗?呵呵,不错,但是这个向量表它源于bootloader区,所以相当于执行它的bootloader一样拉,接下来就要检测是否要下载(对P0.14进行检测,看是否是低电平),如果不下载就执行用户程序。
SpringBoot核心原理实现及核心注解类
SpringBoot核心原理实现及核心注解类Spring Boot是一个基于Spring框架的快速应用开发框架,它使用了一种约定大于配置的方式,旨在简化Spring应用的开发和部署。
Spring Boot的核心原理实现主要包括自动配置、起步依赖和注解。
首先,Spring Boot使用自动配置来简化Spring应用的配置工作。
自动配置是通过条件注解来实现的,Spring Boot会根据项目中的类路径和已配置的条件来自动配置应用程序。
它会扫描类路径上的各种配置文件,并根据文件中的配置来自动配置应用程序所需的各种组件,例如数据源、JPA和Web服务器等。
这样,开发人员就无需手动配置这些组件,可以直接使用它们。
其次,Spring Boot的起步依赖是一种特殊的依赖管理机制。
起步依赖是预先配置的一组依赖项,用于快速构建特定类型的应用程序。
起步依赖会自动添加所需的依赖项,而无需手动配置。
例如,如果您正在开发一个Web应用程序,只需添加名为spring-boot-starter-web的起步依赖,Spring Boot就会自动添加所需的所有Web相关依赖项,如Spring MVC和Tomcat等。
总之,Spring Boot的核心原理实现是通过自动配置、起步依赖和注解来简化Spring应用的开发和部署。
自动配置通过条件注解实现,根据项目中的类路径和已配置的条件来自动配置应用程序。
起步依赖是一种特殊的依赖管理机制,能够快速构建特定类型的应用程序。
注解则用于标识和控制应用程序中的各种组件。
通过这些核心原理的实现,Spring Boot能够大大减少开发人员的配置工作,提高开发效率。
LPC2104的Boot与Remap详解一---原创
LPC2104的Boot与Remap详解一---原创LPC2104的Boot与Remap详解(一)---(原创)开场白最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。
其中,比较困扰和麻烦的两个名词术语就是“Boot”与“Remap”。
同时,在网上也经常见到有网友就这两个技术名词提出疑问。
好在当今网络是如此发达,使得我们可以很快就得到许多老师和老鸟的解答。
经过这一段时间的阅读与实践,算是将这个概念基本给理出了个头绪,借此机会,以自己的理解总结一下,贴到BBS上来,与广大网友们分享,如有不当之处,板砖且慢,因为我贴此文的目的是抛“砖”引“玉”,不是引“砖”!Bow!两个专业名词—非易失性存储器和易失性存储器非易失性存储器:指掉电后在相当长时间内依然能有效保存数据的存储器。
如EEPROM, EPROM,FLASH等。
易失性存储器:指掉电后迅速丧失存储能力的存储器。
如SRAM,SDRAM等。
参考读物:3G时代存储器众生相(电子设计技术2005年第2期)OK,一切就绪,Let's GO!引言随着半导体工艺技术与处理器设计技术的不断提高,嵌入式处理器的速度愈来愈快;而非易失性存储器的读取速度却远远跟不上CPU 的发展。
传统的单片机运行模式——机器代码存储在非易失性存储器(如ROM,FLASH),在运行时由CPU直接从其中取出指令执行——逐渐显得力不从心。
如果继续沿用传统的程序运行模式,那么在绝大多数时间内高速CPU将处于空闲等待状态,这既浪费了CPU的计算能力,也无法实现高密度数据流的实时处理与传输。
而在短期之内,半导体工业界尚无法实现低成本的非易失性高速存储器技术。
为了解决上述处理器和非易失性存储器之间速度不匹配的矛盾,工程师们在嵌入式系统领域内引用了Boot技术和Remap技术。
而要正确理解Boot技术和Remap技术,必须先建立Memory Map(存储器映射)的概念。
ARM处理器的Boot与Remap.
ARM处理器的Boot与Remap
全部作者:
于克兵吕志明
第1作者单位:
中国地质大学(北京)
论文摘要:
以ARM为处理器的嵌入式系统,在进入操作系统之前需要执行1段初始化代码,叫做Boot。
它主要负责系统的初始化,包括:中断向量初始化、时钟初始化、MPU初始化、各种处理器模式的堆栈初始化和Image文件的RW段与ZI段的初始化。
处理器每次处理中断都要从非易失性存储器读中断向量表,Remap(重映射)操作可以把中断向量表映射到更快、更宽的RAM中,从而加快了启动速度和中断响应速度,也使更改中断向量表成为可能。
关键词:
Boot; Remap;中断向量表;嵌入式系统 (浏览全文)
发表日期:
2007年07月20日
同行评议:
(暂时没有)
综合评价:
(暂时没有)
修改稿:。
LPC启动过程和重映射概念
LPC启动过程和重映射概念LPC启动过程和重映射概念2010年01月17日星期日23:261.LPC2200的启动过程:(1)芯片启动时,是从0地址开始,但是这时引导程序被映射到了地址0,所以这时启动的就是引导程序。
(2)引导程序检查ISP引脚的状态和BOOT【1】和BOOT【0】,根据不同的状态,将不同的内容映射到地址0,例如0x80000000或者0x40000000,这个要看你的配置了,从而进行重新映射。
(3)重新映射后,就跳转到0再运行,这时候实际上运行的是0x80000000或者0x40000000的程序了。
注意:设置RW和RO的目的是为了告诉编译器把生成的代码放在存储器的什么地方。
代码实际是存在0x80000000或者0x40000000那里的,只是通过映射的方式,将前面的中断向量表部分映射到地址0去了。
、2.bootLoader 的功能:(1)功能:开启串口下载(2)过程:首先,是通过检测P0.14口的状态。
如果为低电平,则运行ISP的程序,它是BOOTLOADER的一部分,这段程序是引导串口接收数据并放进片内FLASH中;如果P0.14口的状态不为0,那么它就检测你是运行片内FLASH 的程序还是外部FLASH的。
先说说片外的FLASH,因为我们下载片外FLASH时是把BIN文件烧进去的,所有的代码都是在一起的,这是什么意思呢,最开始是RO段的程序,紧接着是RW段的程序,但是执行时为了提高执行速度,把RO段放ROM区,RW段放RAM区,这动作是怎么实现的呢,其实就是在进行运行复位程序前就已经重映射了,具体是怎么实现的呢,其实就是一段程序搬运程序,由硬件实现,呵呵。
如果是片内的,个人认为应该是一样的过程,只是速度快些而已。
无论怎么样,复位,PC肯定指向0x00000000,但是它从这个地址取出了一个跳转指令,跳到了bootloader区,为什么这么说呢,明明这一区域放的是中断向量表吗?呵呵,不错,但是这个向量表它源于bootloader区,所以相当于执行它的bootloader一样拉,接下来就要检测是否要下载(对P0.14进行检测,看是否是低电平),如果不下载就执行用户程序。
boot方案
boot方案在计算机系统中,启动(boot)是指系统在电源打开后,完成硬件初始化和软件加载的过程。
为了确保系统能够正确启动并运行,需要制定合理的boot方案。
一、硬件初始化在boot过程中,首先需要进行硬件初始化。
硬件初始化是指对计算机硬件进行各种设置和配置,使其能够正常工作。
硬件初始化包括以下几个方面:1.1 电源管理初始化:确保电源稳定供电,同时优化电源管理模块,提高节能效果。
1.2 CPU初始化:设置CPU运行模式、时钟频率和内存管理,保证CPU能够正确运行。
1.3 内存初始化:对内存进行检测和配置,确保内存能够正常使用。
1.4 设备初始化:初始化各种设备,包括硬盘、显卡、网卡等,使其能够正常工作。
二、软件加载硬件初始化完成后,需要进行软件加载。
软件加载是指将操作系统和其他必要的软件从存储介质(如硬盘、光盘等)中加载到内存中,并执行相应的初始化操作。
软件加载包括以下几个步骤:2.1 引导加载程序(bootloader)的加载:引导加载程序是boot过程中的第一段程序,负责加载操作系统。
它通常存储在硬盘的引导扇区或其他特定的位置。
2.2 操作系统的加载:引导加载程序会加载操作系统的内核和相关的驱动程序到内存中,并执行操作系统的初始化操作。
2.3 配置文件的加载:一些软件需要读取配置文件进行初始化,因此需要将配置文件从存储介质中加载到内存中。
三、系统启动软件加载完成后,系统进入启动过程。
系统启动包括以下几个阶段:3.1 内核初始化:操作系统内核接管控制权,进行各种初始化操作,如进程管理、内存管理等。
3.2 服务启动:系统开始启动各种服务,如网络服务、文件系统服务等。
3.3 用户登录:系统完成启动后,用户可以进行登录,并开始使用系统。
四、启动优化为了提高系统的启动速度和性能,可以采取一些优化措施:4.1 延迟加载:将一些不必要的服务和驱动程序延迟加载,等到需要使用时再加载。
4.2 并行加载:将一些可以并行加载的任务同时进行,提高加载效率。
面试rem的原理
面试rem的原理面试REM的原理一、引言近年来,随着前端技术的迅猛发展,响应式布局(Responsive Web Design)成为了Web设计领域的热门话题。
而REM(Root EM)作为一种响应式布局的实现方式,也备受关注。
本文将深入探讨REM的原理,并分析其在实际应用中的优势和局限性。
二、REM的概述REM是指相对于根元素(html)的字体大小的单位。
在REM布局中,通过设置根元素的字体大小,再配合使用REM单位来定义其他元素的尺寸,从而实现页面的自适应布局。
当浏览器窗口尺寸改变时,根元素的字体大小也会跟着改变,进而影响整个页面的布局。
三、REM的原理1. 根据屏幕宽度计算根元素的字体大小:在响应式布局中,首先需要根据设备的屏幕宽度动态计算根元素的字体大小。
一种常见的做法是使用媒体查询,根据不同的屏幕宽度设置不同的字体大小,例如:```@media screen and (max-width: 768px) {html {font-size: 14px;}}```这样,当屏幕宽度小于等于768px时,根元素的字体大小为14px。
2. 使用REM单位定义其他元素的尺寸:在REM布局中,我们可以使用REM单位来定义其他元素的尺寸。
由于REM是相对于根元素的字体大小计算的,所以可以保证页面的比例关系在不同屏幕尺寸下的一致性。
例如,如果根元素的字体大小为16px,那么1REM就等于16px。
通过设置元素的宽度、高度、边距等属性为REM单位,可以使得页面元素随着根元素字体大小的改变而自适应调整。
3. 使用媒体查询调整根元素的字体大小:除了根据屏幕宽度计算根元素的字体大小外,我们还可以使用媒体查询在不同的屏幕尺寸下调整根元素的字体大小,以适应不同的设备。
例如,我们可以设置在屏幕宽度小于等于320px时,根元素的字体大小为12px:```@media screen and (max-width: 320px) {html {font-size: 12px;}}```这样,当用户在小屏幕设备上浏览网页时,页面元素会自动根据根元素的字体大小进行缩放,以适应屏幕尺寸。
rem布局原理解析
rem布局原理解析移动端的屏幕⼤⼩各异,尤其是安卓机,千奇百怪,各种尺⼨的机型都有,⽽且有1倍屏,2倍屏,3倍屏之分,作为精益求精的前端,我们希望找到⼀种完美适配各种机型的⽅案。
rem是现在主流的移动端⾃适应布局⽅案,本⽂主要介绍了rem布局的原理和通⽤⽅案原理⾸先说⼀下,我们想要达到的⾃适应效果是什么。
很简单:元素、字体⼤⼩能随着屏幕⼤⼩(⼀般相对于宽度来说)变化⽽变化,在⼤⼀点的屏幕上,尺⼨⼤⼀些;在⼩⼀点的屏幕上,尺⼨⼩⼀些;尺⼨的⼤⼩和屏幕⼤⼩成正⽐。
最简单最直接的⽅案就是直接⽤百分⽐设置元素的尺⼨。
我们⽤百分⽐设置元素⼤⼩可以实现元素尺⼨的⾃适应,但是⽆法实现字体⼤⼩的⾃适应,⽽且尺⼨转化为百分⽐计算很⿇烦,还有就是元素尺⼨的⾼很难相对屏幕宽度设置百分⽐。
百分⽐适⽤于某种具体场景,不是通⽤解决⽅案。
其实我们需要的是⼀个和屏幕宽度正相关的单位,⽽且这个单位要和px很容易互相转化。
这样我们就可以使⽤这种单位进⾏元素尺⼨和字体⼤⼩的设置。
那么css中存在这种单位吗?答案是:不存在的。
不过不要灰⼼,我们可以借助rem来实现这种我们需要的单位。
rem是⼀个相对单位,1rem等于html元素上字体设置的⼤⼩。
我们只要设置html上font-size的⼤⼩,就可以改变rem所代表的⼤⼩。
这样我们就有了⼀个可控的统⼀参考系。
我们现在有两个⽬标:rem单位所代表的尺⼨⼤⼩和屏幕宽度成正⽐,也就是设置html元素的font-size和屏幕宽度成正⽐rem单位和px单位很容易进⾏换算,⽅便我们按照标注稿写css这⾥有⼀个前提,⽆论是设置html的font-size和屏幕宽度成正⽐,还是换算单位,我们都是以我们的标注稿为参考的。
移动端的标注稿⼀般是640px(iphone5)或者750px(iphone6/7/8),现在750px⽤的⽐较多⼀些,我们假设标注稿是750px的。
这⾥的750px是指设备的实际尺⼨,也是UI标注稿的实际尺⼨。