基于S3C2410多操作系统启动的设计与实现

发布时间:2010-5-5 13:58    发布者:我芯依旧
关键词: S3C2410 , 操作系统 , 启动
1 引言

嵌入式系统是近年来计算机学科领域一个新的发展方向。尼葛洛庞帝曾在2001年时预言,嵌入式智能电脑将是继PC和Internet之后的最伟大发明。在当今社会中,嵌入式系统已经广泛渗透到我们的工作、生活中的各个领域。随着消费电子行业的飞速发展,嵌入式系统工程师的需求量越来越大,相关课程的学习和培训也越来越多。在众多品牌嵌入式教学实验平台的实际使用过程中,笔者发现了一些问题。

首先是目前的设备利用率不高。大多数设备提供的bootloader只能安装一个操作系统,这让用户能接触到的内容非常有限。其次,由于参加各类竞赛活动的设备对操作系统的需求比较多样,因此每次都必须花时间给设备重新安装所需的操作系统。然而,这样的改动又会对日常的教学活动带来一些不便,操作系统的更改将可能导致课程实验无法正常进行。最后,由于安装操作系统的单一性,使一些初次接触嵌入式系统的用户对它产生了一些狭隘的认识,无法更大地激发大家的学习兴趣。

如果能够实现在一台嵌入式教学实验平台上安装多个操作系统,系统之间彼此互不干扰,并且能够根据用户的要求启动不同的系统,那么上述这些问题将会得到很好的解决。当然,在实际的应用中,我们也可以在某个嵌入式平台上安装多操作系统,从而方便的在不同系统间切换来解决问题。为此,笔者对正在使用的S3C2410开发板做了一些改动,并根据它的实际情况考虑了一套完整的解决方案。

本文首先分析了为何选用U-Boot作为Bootloader, 之后详细介绍了每种嵌入式操作系统在U-Boot下启动所需的一些修改,最后给出了实现的效果图。

2 Bootloader的选择

嵌入式系统的启动如同PC机的启动一样,有一个固定的步骤,通常我们把实现这个启动步骤的程序称为bootloader。bootloader对于嵌入式系统的重要性犹如BIOS对于PC那样。如果没有一个正确的bootloader,系统可能将无法启动。目前,比较常用的bootloader有vivi、U-Boot、E-Boot、blob等,其中E-Boot为Microsoft Windows CE启动专用的bootloader,无法启动其他操作系统。因此,在设计之初选择一个合适的bootloader非常有必要。考虑到 vivi缺少以太网接口芯片AX8876的驱动程序等原因,我们最终决定使用 U-Boot作为开发的bootloader。

U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从 FADSROM、8xxROM、PPCBOOT逐步发展演化而来。目前,它支持LinuxVxWorks,QNX,ARTOS,LynxOS等众多嵌入式操作系统。这是U-Boot中 Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、XScale等常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。目前U-Boot的最新版本为 1.2.0,我们也以U-Boot 1.2.0作为系统的bootloader。与DOS等操作系统类似,U-Boot也具有一个命令行控制台,用户可以通过U-Boot的内建指令来完成一系列的操作,包括传输、读写、运行等。

3 多系统启动的设计

在多系统启动的研究过程中涉及U-Boot、vivi、WinCE、Linux、uCOS等多个系统或软件,其整体框架如下图1所示。

1.gif
图1 多系统启动的整体设计图

该平台的开发过程中涉及了系统的启动方式、设备驱动程序更改、Linux根文件系统、WinCE和Linux系统的配置和编译、多操作系统的安装等多项具体内容。下面我们将详细介绍每种系统在U-Boot下启动所需的一些改动。

3.1 WinCE在U-Boot下的启动

一般情况下,安装WinCE的步骤是先烧写Nboot到block0,再烧写tocblock1到 block1,然后烧写E-Boot到block2,最后用E-Boot通过以太网接口烧写 WinCE镜像文件。其中Nboot是实现从Nand Flash启动,tocblock1则负责保存 E-Boot中设置的各项参数。使用了U-Boot之后,U-Boot代替了Nboot的功能,但tocblock1却缺失了。这造成了E-Boot的参数无法正常保存,最终导致无法正常下载和保存WinCE镜像文件。通过实验发现如果强行保存E-Boot的参数,将造成U-Boot的损坏,整个系统将彻底无法启动。

最终,将定制好的镜像文件NK.nb0直接下载到所对应的内存地址后运行,这样WinCE的启动就成功了。另外,必须注意的一点就是,在加载镜像文件之前,必须先将待用的内存空间擦除,否则可能导致系统启动出错。

3.2 Linux在U-Boot下的启动

在嵌入式Linux系统中,主要分为两个部分:系统内核与根文件系统。其中系统内核包含了操作系统的主要功能、额外功能模块和设备驱动程序。而根文件系统则是内核在加载了之后第一个挂载的文件系统。它是一个特殊的文件系统,如果它无法被正常挂载,则可能导致整个Linux系统启动失败。

为了使linux可以在U-Boot下启动,我们需要做如下一些修改。

首先,我们应保证Linux内核能获取到正确的启动参数。启动参数往往是 bootloader中设置的,Linux内核通过读取bootloader中预设的启动参数来寻找根文件系统的位置。为了读取正确的启动参数,必须要对Linux内核做一个处理。mkimage工具是编译U-Boot时产生的一个工具,它会在原来的可执行镜像文件上增加一个0x40字节的文件头,用于指定诸如CPU架构、操作系统、文件类型、是否压缩、入口地址等各类信息。使用了mkimage工具以后,再搭配使用U-Boot控制台中的命令,就能读取到启动参数了。

其次,在vivi中,最底层的文件系统是bon。vivi有一套bon命令,用于格式化Flash并创建bon文件系统,而MTD(Memory Technology Device)则可以与之共存。最后可以将bon或MTD作为根文件系统。如果不使用vivi的bon文件系统,那么必须在某个地方存放Flash的分区信息。这时,最大的可能就是存放在Linux内核中。如果要直接使用MTD,则可以通过修改代码,在Linux内核中指定分区信息。在找到根文件系统后,Linux便能正常启动了。

3.3 uCOS在U-Boot下的启动

用ARM Develop Suite编译后的uCOS系统可以得到一个二进制的可执行文件 system.bin,下载到编译时设置的入口内存地址即可运行。uCOS的YAFFS文件系统需要bon文件系统的支持,可以用vivi来完成建立bon文件系统的工作,而且必须用汇编语言在U-Boot的start.S文件中对CPU进行初始化,否则将造成uCOS实验无法正常运行。

至此,WinCE、Linux、uCOS三个操作系统在U-Boot下都可以正常启动了。为了更好的完善多系统启动平台,我们还进行了以下三个方面的补充。首先,显示方面主要包含LCD驱动程序,并且在系统启动时显示bmp文件格式的单色 Logo,在屏幕下方显示7种颜色的色块,以验证屏幕是否正常工作。其次,为方便用户的使用,也可以通过触摸屏直接选择需要启动的系统,无需连接PC主机。主要包含加载触摸屏驱动程序,读取校准参数,反馈用户操作,启动系统或者接受用户从键盘发出的命令来启动系统。最后,在系统具有密码保护的情况下,拒绝未经授权的用户登录U-Boot的命令行。因为U-Boot的nand命令组可以对Flash进行格式化操作,这给学校机房的管理带来很多不便。

4 运行效果

在系统启动后,启动界面如图2所示。用户可以根据相关提示选择希望启动的操作系统,如果用户放弃选择,则默认进入uCOS操作系统。之后,我们又随机进行了一些测试,测试结果表明:每种系统都可以正常、稳定的运行。本平台为支持多操作系统的可视化教学实验平台,主要具有以下功能:

(1)在同一设备上实现WinCE、Linux、uCOS操作系统的共存和选择启动。

(2)在系统启动时显示产品Logo。

(3)对bootloader命令行实施密码保护,禁止未经授权用户更改Flash中的系统数据。

(4)用户可以通过PC主机和平台的串口通讯选择需要启动的系统。

(5)用户可以通过触摸屏直接选择需要启动的系统,无需连接PC主机。

2.jpg
图2 启动界面效果图

5 结束语

本文以博创公司的UP-NETARM2410-S作为硬件支持,以 U-Boot作为系统的 Bootloader,在原平台的基础上提供更为友好、更为实用的启动界面,能在同一台设备上完成WinCE、Linux和 uCOS多操作系统的选择启动,而且启动的每个系统都可以正常、稳定的运行。本文所提出的多系统启动具有良好的推广价值,可适用于多种嵌入式平台。

本文创新点:实现了基于S3C2410开发板,WinCE、Linux和 uCOS多操作系统的选择启动,不仅具有友好、方便的图形化用户操作界面,而且用户可脱离 PC主机直接选择需要启动的系统。启动后的每个系统都可以正常、稳定的运行。


作者:薛小艳,支小莉      来源:《微计算机信息》(嵌入式与SOC)2009年第7-2期
本文地址:https://www.eechina.com/thread-11012-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表