完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嵌入式系统是近年来计算机学科领域一个新的发展方向。尼葛洛庞帝曾在 2001年时预言,嵌入式智能电脑将是继 PC和 Internet之后的昀伟大发明。在当今社会中,嵌入式系统已经广泛渗透到我们的工作、生活中的各个领域。随着消费电子行业的飞速发展,嵌入式系统工程师的需求量越来越大,相关课程的学习和培训也越来越多。在众多品牌嵌入式教学实验平台的实际使用过程中,笔者发现了一些问题。
|
|
相关推荐
4个回答
|
|
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逐步发展演化而来。目前,它支持 Linux、VxWorks,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等多个系统或软件,其整体框架如下图 3.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. 运行效果
在系统启动后,启动界面如图 4.1所示。用户可以根据相关提示选择希望启动的操作系统,如果用户放弃选择,则默认进入 uCOS操作系统。之后,我们又随机进行了一些测试,测试结果表明:每种系统都可以正常、稳定的运行。本平台为支持多操作系统的可视化教学实验平台,主要具有以下功能: (1)在同一设备上实现 WinCE、Linux、uCOS操作系统的共存和选择启动。 (2)在系统启动时显示产品 Logo。 (3)对 bootloader命令行实施密码保护,禁止未经授权用户更改 Flash中的系统数据。 (4)用户可以通过 PC主机和平台的串口通讯选择需要启动的系统。 (5)用户可以通过触摸屏直接选择需要启动的系统,无需连接 PC主机。 5. 结束语 本文以博创公司的 UP-NETARM2410-S作为硬件支持,以 U-Boot作为系统的 Bootloader,在原平台的基础上提供更为友好、更为实用的启动界面,能在同一台设备上完成 WinCE、Linux和 uCOS多操作系统的选择启动,而且启动的每个系统都可以正常、稳定的运行。本文所提出的多系统启动具有良好的推广价值,可适用于多种嵌入式平台。 本文创新点:实现了基于 S3C2410开发板,WinCE、Linux和 uCOS多操作系统的选择启动,不仅具有友好、方便的图形化用户操作界面,而且用户可脱离 PC主机直接选择需要启动的系统。启动后的每个系统都可以正常、稳定的运行。 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 19:31 , Processed in 0.810439 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号