当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:介绍了ARM-μCLinux嵌入式系统的结构组成,重点分析了ARM--μCLinux嵌入式系统启动引导的过程实现该系统启动引导的技术难点,提出了一种有效的启动引导方案。 关

摘要:介绍了ARM-μCLinux嵌入式系统的结构组成,重点分析了ARM--μCLinux嵌入式系统启动引导的过程实现该系统启动引导的技术难点,提出了一种有效的启动引导方案。 关键词:嵌入式系统 引导 ARM μCLinux 32位ARM嵌入式处理器具有高性能、低轼耗的特性,已被广泛应用于消费电子产品、无线通信和网络通信等领域。ΜCLinux是专门为无MMU处理器设计的嵌入式操作系统,支持ARM、Motorola等微处理器。目前国内外采用ARM-μCLinux作为嵌入式系统非常普遍。而嵌入式系统的启动引导技术是嵌入式系统开发的一个难点。系统启动引导的成功与否决定了应用程序的运行环境是否能正确构建,即系统启动成功是应用正确运行的前提。 常用的嵌入式系统启动方法是先通过JTAG将嵌入式操作系统内核与进Flash,再由其带的引导程序bootloader完成嵌放式系统的启动引导工作。这种方法要借助昂贵的JTAG设备完成操作系统内核 的烧写工作,并且不能方便地更新嵌入式系统中的软件平台。本文提出一种基于ARM-μCLinux嵌入式系统的启动引导方案,不但可以通过简易的串口方便地更新嵌入式系统内的软件平台,而且成功解决了这种架构的嵌入式系统的启动、初始化、操作系统内核的固化和引导等问题。本文简略说明ARM- μCLinux嵌入式系统的硬件平台和软件平台;描述系统引导程序bootloader的设计,阐述设计时考虑的因素和需解决的技术难点,给出一套可行的引导程序流程;针对μCLinux内核的引导程序,说明μCLinux内核的加载和初始化过程。 1 系统组成 典型的ARM嵌入式系统硬件平台一般包括一个以ARM为内核的处理器、存储器和必要的外部接口与设备。在本系统中,采用内嵌ARM7TDMI的 Samsung公司的S3C4510处理器,存储器使用2MB的Flash和16MB的SDRAM,外部接口除了用于下载和通信的串口,还配备了一个以太网接口,以支持S3C4510的网络功能。 软件平台由以下部分组成:系统引导程序、嵌入式操作系统内核、文件系统。系统引导程序通常也称为bootloader,代码量虽少,但是作用非常大,相当于PC上的BIOS,负责将操作系统内核固化到Flash中和系统初始化工作,然后将系统控制权交给操作系统。嵌入式操作系统内核是嵌入式系统加电运行后的管理平台,负责实时性任务和多任务的管理。ARM7TDMI是一款没有MMU的处理器,因此采用μCLinux作为本系统的操作系统内核。 ΜCLinux是Linux是一个分支,专为无MMU的处理器设计,它继承了Linux强大的网络功能和多任务管理功能,并对内存管理和进程管理进行了改写,满足无MMU处理器的开发要求。文件系统是嵌入式系统软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分。它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。 软件平台固化在Flash中。通常根据软件平台的内容 对Flash的地址空间进行分区,一般分三个区,分别丰放bootloader、μCLinux内核和文件系统。分区的方式一般有两种:一种是根据三个部分预定的存储空量,允许bootloader、内核和文件系统拥有自己固定的分区和首地址;另一种就是按照这三部分的实际分配区间,一个部分紧跟着另一个部分后存储,没有固定的分区和首地址。通常采用第一种方式,虽然可能会浪费一部分Flash空间,但是方便内核的加载和文件系统的挂载,同时也利于系统的调试和开发。而如果充分利用Flash的存储区间,节约成本,那么可采用第二种方式。 2 系统引导程序的设计 系统引导程序bootloader是嵌入式系统加电后执行的第一个程序,进行功能设计时首先要考虑以下问题: (1)将μCLinux内核和文件系统固化在Flash中 目地μCLinux内核和文件系统固化在Flash的手段很多。主机可以通过JTAG口,将内核和文件系统的映像文件烧写到指定的Flash位置上;也可以通过以太网接口,将映像文件下载到Flash中;另外还可以通过串口烧写到Flash。前两种方法的下载速度比后一种方法快得多。在本系统中,采用串口烧写Flash。这是因为一方面配置一个串口方便且廉价,而JTAG烧写还要配置昂贵的JTAG仿真器和相关的驱动程序以及协议转换程序,网口下载还要有以太网支持;另一方面μCLinux默认通过串口打印其运行的信息,那么串口不但可以提供烧写Flash的功能,还可作为调试μCLinux内核的通道。 在本系统中,Flash在刚开始时,只存储了bootloader,还没有存储μCLinux内核和文件系统。因此bootloader在系统加电完成初始化工作后,要初始化一条链接主机和目标机的串口通道,并提供串口下载功能。 图1 (2)系统初始化 因为系统刚加电时,操作系统的内核还没有被加载,系统的初始化工作由bootloader完成。它主要是将系统、初始化存储系统、配置ARM各种模式下的数据栈、使能屏常中断、根据需要切换处理器模式和状态。 (3)μCLinux内核加载方式 固化在Flash中的μCLinux内核有两种运行方式:一种方式是直接在Flash中运行μCLinux自带的引导程序;另一种方式是将固化在 Flash中的内核先拷贝到SDRAM的某一段地址区间,再从该段地址区间的首地址运行uCLinux内核。 第一种方式是bootloader进行系统初始化工作后,跳到内核固化在Flash中的首地址处,将控制权交给μCLinux,开始在Flash中逐句执行内核自带的引导程序,由该引导程序完成内核的加载工作。这种方式是目前很多嵌入式系统启动内核所采用的方式,也是本系统采用的内核加载方式。 第二种方式是bootloader完成系统初始化工作后,把内核的映像文件由Flash拷贝到SDRAM中,再从SDRAM中执行μCLinux内核的引导程序,加载μCLinux内核。 第二种加载方式在SDRAM中运行程序,因此执行速度比第一种方式快一些,并且可以通过RAM快速引导技术实现这种加载方式。其主要是针对NAND型 Flash的情况。与NOR型Flash最大的不同点是:NOR型Flash使用内存随机读取技术,与SDRAM一样,可以直接执行存储在Flash中的程序;而NAND一样,可以直接内存随机读取技术,它是一次读取一整块内存,因此不能直接执行存储在NAND型Flash中的程序,必须把NAND型 Flash中的程序先拷贝到SDRAM,再在SDRAM中执行该程序。但是NAND型Flash价格比NOR型Flash廉价,所以很多嵌入式系统还是采用NOR型Flash(几百K字节)+NAND型Flash(几兆字节)的存储模式。其中NOR型Flash存放可执行的且代码量小的 bootloader和一些必要的数据,而NAND型Flash保存存储量较大的内核和文件系统。 在本系统中,由于采用NOR型Flash存储bootloader、内核和文件系统,所以可以直接访问内核所在地址区间的首地址,执行内核自己的引导程序,而且内核自带的引导程序功能强大,可以方便地内核的加载,向内核传递有关的硬件参数。本系统采用第一种加载方式。 (4)自举模式和内核启动模式的切换 Bootloader一般要实现两种启动模式:自举模式和内核启动模式。自举模式也称为bootstrap模式,该模式的主要作用是目标机通过串口与主机通信,可以接收主机发送过来的映像文件,例如内核、文件系统和应用程序,并将其固化在Flash中,也可以将Flash中的映像文件上传到主机。内核启动模式允许嵌入式系统加电启动后加载μCLinux内核,将系统交由μCLinux操作系统管理。 在本系统中,采用一个开关实现两种模式的切抽象。在系统的Flash中只有bootloader时,首先将开关拔上去,提示系统进入自举模式,加电启动后,bootloader根据开关的状态,进入自举模式,接收主机发送过来的内核和文件系统的映像文件。接着将开关拔下来,提示系统进入内核启动模式,再按链,bootloader根据此时的开关状态进入内核启动模式,加载内核和文件系统,由操作系统接管系统。以后也可以根据需要,设置开关的状态,以提示系统进入不同的启动模式。 (5)地址映射表的配置和重映射 地址映射表的配置包括设置Flash地址空间、SDRAM地址空间、外部I/O地址范围和处理器寄存器地址范围。ARM处理器加电后执行在地址0x0处的代码,因此在加电启动时,首先将存储了bootlader的Flash地址空间设置为0x0-0x200000,将SDRAM的地址空间设置为 0x1000000-0x2000000,当内核引导程序将内核拷贝到SDRAM后,再设置SDRAM的地址空间为0x00x1000000,而 Flash的地址空间为0x1800000-0x1A00000。这需要在内核引导程序中对Flash和SDRAM的地址空间进行重映射。 本文采用的系统启动引导方案流程图如图1。 3 μCLinux内核的加载和初始化 本启动方案中采用μCLinux自带的引导程序加载内核。该引导程序代码在linux/arch/armnommu/boot/compressed目录,其中Head.s的作用最关键,它完成了加载内核的大部分工作;Misc.c则提供加载内核所需要的子程序,其中解压内核的子程序是Head.s调用的重要程序,另外内核的加载还必须知道系统必要的硬件信息,该硬件信息在hardware.h中并被Head.s所引用。 当bootloader将控制权交给内核的引导程序时,第一个执行的程序就是Head.s。下面基于本系统介绍Head.s加载内核的主要过程。 Head.s首先配置S3C4510的系统寄存器;再初始化S3C4510的ROM、RAM以及总线等控制寄存器,将Flash和SDRAM的地址范围分别设置为0x0-0x200000和0x1000000-0x2000000;接着将内核的映像文件从Flash拷贝到SDRAM,并将Flash和 SDRAM的地址区间分别重映射为0x1800000-0x1A00000和0x0-0x1000000;然后调用Misc.c中的解压内核函数(decompress_kernel),对拷贝到SDRAM的内核映像文件进行解压缩;最后跳转到执行调用内核函数(call_kernel),将控制权交给解压后的μCLinux系统。 执行Call_kernel函数实际上是执行linux/init/main.c中的start_kernel函数,中包括处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。 该启动引导方案实现了自举模式和内核启动模式以及两种模式的切换,使得开人员既可以采用自举模式方便地烧写Flash,更新嵌入式系统中的软件平台,又能够切换到内核启动模式,自动安全地启动系统;其次,本方案采用简易的串口通道作业主机与目标系统的通信渠道,既可以方便地将操作系统内核、文件系统和其他应用下载到目标系统中,又可以作为调试μCLinux内核和应用程序通道;此外针对ARM7TDMI的无MMU特性,采用修改后的μCLinux内核引导程序加载操作系统和初始化操作系统环境,解决内核加载的地址重映射问题和操作系统的内存管理问题。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭