在 BeagleBoard-xM 上引导 Linux(转载)

来源:互联网 发布:知乎 儿童科学书目 编辑:程序博客网 时间:2024/05/18 10:33

原文网址: http://www.ibm.com/developerworks/cn/linux/l-beagleboard-xm/index.html

 

在 BeagleBoard-xM 上引导 Linux

 

开始使用这个小的开源平台进行设备开发

Jeffrey M. Osier-Mixon, 技术作家, MontaVista Software, Inc.

 

简介: BeagleBoard.org 最新推出 BeagleBoard 版本 xM,继版本 C 之后开放式硬件 BeagleBoard 又一高度成功的新版本。本文将使用 Angstrom Linux、Android 和 Ubuntu 平台介绍在 BeagleBoard-xM 上引导 Linux® 的必要环境和步骤。

 

 

BeagleBoard 是一个袖珍的参考板,含有一个 Texas Instruments Open Multimedia Application Platform (OMAP) 3 单片系统(SoC)处理器,它包含一个 ARM Cortex-A8 内核、Texas Instruments C64x+ 数字信号处理器和板载图形化引擎,以及集成的双数据速率(DDR)随机存取存储器(RAM)。BeagleBoard 价格比较便宜,适合正在学习 Linux 和小型系统的业余爱好者、学术研究者和专业人员使用。图 1 显示了 BeagleBoard-xM。



BeagleBoard-xM 图片 

在之前的 developerWorks 文章 在 Beagle Board 上引导 Linux 中,我介绍过在 BeagleBoard 版本 C 中引导 Linux,它承载一个 600MHz OMAP3530 处理器、256MB RAM 和 256MB NAND 闪存。版本 xM 更为健壮,有 1GHz OMAP3730 处理器和 512MB RAM。它没有闪存从 microSD 卡引导,但是有很多新接口,包括一个 DB-9 系列的连接器、集成 4 个端口的 Universal Serial Bus (USB) 总线、以及集成的 Ethernet 端口。BeagleBoard-xM 含有更多的版本 C 特性,比如 Digital Visual Interface (DVI)-D 输出、S-video、音频、Joint Test Action Group (JTAG)、以及一个大扩展排针。

以下小节分别向您展示如何寻找所需的组件来源,以及构建和测试控制台。

BeagleBoard-xM 是成套的,附带有一个预格式化的 4GB microSD 卡和一个适配器,您可以将卡插到标准 Secure Digital (SD)/MultiMediaCard (MMC) 插槽,不需要电缆。您需要执行以下操作:

给 BeagleBoard-xM 供电

通常,BeagleBoard 是由一个外部 5V 电源或者一个 USB On-The-Go (OTG) 电缆供电的。然而,这些电缆只能提供 500mA 的电流,仅仅只能启动 xM。强烈推荐您使用一个外部电源 — 一个 5V 的变压器或者一个可以插如您主机上两个 USB 接口上的 Y 型电缆。

  • 电源
    使用一个 5V 外部电源。
  • 串行电缆
    BeagleBoard-xM 提供一个 DB9 凹口(female DB9 port),需要一个串行电缆来将控制台连接到您的主机系统。使用一个直流( 非调制解调器)电缆。如果您的主机系统没有串行接口,使用 DB9-to-USB 电缆。
  • USB 键盘和 USB 鼠标
  • DVI-D 监视器和一个 DVI-D to High-Definition Multimedia Interface (HDMI) 电缆
    注意主板不能通过该连接器发出 Video Graphics Array (VGA) 信号,因此一个标准的 DVI-to-VGA 转换器电缆不能正常工作。
  • 4GB+ microSD 卡和一个读卡器
    您可以覆盖提供的卡上的数据,但是,最好购买一些卡用于不同版本。如果您的主机没有集成读卡器,使用一个 USB 读卡器。

Linux 用户可以使用 minicom,如下面示例所示。Microsoft® Windows® 用户可以使用 Hyperterminal 或 PuTTy,Mac 用户可以使用屏幕、ZTerm 或 MacWise。

将串行电缆连接到 BeagleBoard-xM's DB9 端口和您的主机上,然后在设置模式下以根用户启动 minicom

sudo minicom -s

 

清单 1 显示了 minicom 配置菜单。


            +-----[configuration]------+            | Filenames and paths      |            | File transfer protocols  |            | Serial port setup        |            | Modem and dialing        |            | Screen and keyboard      |            | Save setup as dfl        |            | Save setup as..          |            | Exit                     |            | Exit from Minicom        |            +--------------------------+

 

选择 Serial port setup。生成的子菜单如清单 2 所示。


    +-----------------------------------------------------------------------+    | A -    Serial Device      : /dev/ttyS0                                |    | B - Lockfile Location     : /var/lock                                 |    | C -   Callin Program      :                                           |    | D -  Callout Program      :                                           |    | E -    Bps/Par/Bits       : 115200 8N1                                |    | F - Hardware Flow Control : No                                        |    | G - Software Flow Control : No                                        |    |                                                                       |    |    Change which setting?                                              |    +-----------------------------------------------------------------------+            | Screen and keyboard      |            | Save setup as dfl        |            | Save setup as..          |            | Exit                     |            | Exit from Minicom        |            +--------------------------+

 

如果您的电缆是一个直流串行电缆,串口设备是 /dev/ttyS0。如果您使用的是 USB 转换器,使用 /dev/ttyUSB0。在下一步如果没有文本出现,很有可能您的主机分配了一个不同的设备,因此,从 0 增加到 1 再试一次。对于所有设备,设置是 115200、8 位、无分区、没有硬件或软件流控制。

设置正确后,选择 Save setup as dfl 默认保存该设置,然后点击 Exit。出现 minicom 欢迎消息,如清单 3 所示。


Welcome to minicom 2.3OPTIONS: I18nCompiled on Oct 24 2008, 06:37:44.Port /dev/ttyS0       Press CTRL-A Z for help on special keys

 

想要验证,接通 BeagleBoard-xM 电源,然后按一个键停止引导倒计时。引导载入消息出现,显示 X-loader 和 U-bootTo 版本、构建日期和输出,使用 U-boot 显示具体系统内存、输入和输出通道、扩展板信息、以及主板矫正和管芯 ID,如清单 4 所示。


Texas Instruments X-Loader 1.4.4ss (Aug 19 2010 - 02:49:27)Beagle xM Rev AReading boot sectorLoading u-boot.bin from mmcU-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46)OMAP3630/3730-GP ES1.0, CPU-OPP2, L3-165MHz,OMAP3 Beagle board + LPDDR/NANDI2C:   readyDRAM:  512 MBNAND:  256 MiBIn:    serialOut:   serialErr:   serialProbing for expansion boards, if none are connected you'll see a harmless I2C error.No EEPROM on expansion boardBeagle xM Rev ADie ID #77f600001bf00000015739ea0701c021Hit any key to stop autoboot:  0OMAP3 beagleboard.org #

 

拔掉 BeagleBoard-xM 电源。

监视器电缆

确保在主板接通电源时,决不 插上监视器电缆,因为这会毁坏主板。首先总是要拔掉电源。

将您的键盘和鼠标插入 BeagleBoard-xM 上的 USB 插孔。如果可以的话,将一个网络电缆插入以太网插口。接通主板和 DVI-D 监视器之间的 HDMI-to-DVI 电缆。

下列操作说明只用于启动您的主板和使用这 3 个 Linux 版本运行时。参考资料 中的链接包括构建完整开发环境的开发套件、工具链和操作说明。

Angstrom Linux 是一个专为小型计算机(比如,BeagleBoard-xM)开发的操作系统。在 BeagleBoard-xM 上引导 Angstromis 最快的方法是使用主板附带的 microSD 卡,它含有一个 Angstrom 映像。但是该卡上的映像是一个验证映像,这意味它只为验证主板操作而提供。它不包括一个图形化用户界面(GUI),以及作为一个 RAM 磁盘默认引导;因此当您拔掉电源时您所作的改变都将丢失。

所包含的 microSD 卡有一个大约 117MB 的 File Allocation Table (FAT) 分区,包含以下设备:

  • 引导加载器 X-loader(MLO)和 U-boot (u-boot.bin
  • Linux 内核(uImage
  • 引导脚本(user.scr
  • RAM 磁盘根文件系统(ramdisk.gz
  • 核查文件大小的 md5sum 文件

卡的其余部分未格式化。

引导之前,插入 microSD 卡然后接通电源。引导开始倒计时时,系统自动调用引导脚本。引导加载器文本再一次出现在控制台上,接着是引导消息,显示引导过程,其中包括脚本本身的执行,然后加载内核和 RAM 磁盘,最后启动内核,如清单 5 所示。


mmc1 is availableThe user button is currently NOT pressed.reading boot.scr** Unable to read "boot.scr" from mmc 1:1 **reading user.scr755 bytes readRunning bootscript from mmc ...## Executing script at 80200000mmc1 is availablereading ramdisk.gz19960110 bytes readreading uImage3190568 bytes readBooting from ramdisk ...## Booting kernel from Legacy Image at 80200000 ...   Image Name:   Angstrom/2.6.32/beagleboard   Image Type:   ARM Linux Kernel Image (uncompressed)   Data Size:    3190504 Bytes =  3 MB   Load Address: 80008000   Entry Point:  80008000   Verifying Checksum ... OK   Loading Kernel Image ... OKOKStarting kernel ...Uncompressing Linux.....................................................................[    0.000000] Linux version 2.6.32 (ubuntu@ip-10-204-115-71) (gcc version 4.3.3 ....... 

 

下面是 Linux 引导消息,最后是 Angstrom 徽标和一个登录提示,如清单 6 所示。


.-------.                                          |       |                  .-.                     |   |   |-----.-----.-----.| |   .----..-----.-----.|       |     | __  |  ---'| '--.|  .-'|     |     ||   |   |  |  |     |---  ||  --'|  |  |  '  | | | |'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'                -'  |                '---'The Angstrom Distribution beagleboard ttyS2Angstrom 2010.7-test-20100820 beagleboard ttyS2beagleboard login:

 

以 root 登录,不需要密码。您可以运行基本的 Linux 命令来测试系统。尝试运行 testled,然后观察 BeagleBoard-xM 上的发光二极管。

要查看正在运行的 Angstrom,您需要一个完整的根文件系统和一个匹配的内核。下面说明了如何加载和引导演示映像:

  1. 转到 Angstrom BeagleBoard 演示页阅读操作指南。
  2. 为引导加载器和文件系统从 Angstrom BeagleBoard 页面下载二进制映像。这些文件是您所需要的:
    • mkcard.txt
    • MLO
    • u-boot.bin
    • Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2
  3. 插入一个至少有 4GB 容量的 microSD 卡,然后确定其设备名称。例如,如果您使用的是一个 USB 卡阅读器,使用 fdisk,并寻找一个匹配这个卡参数的磁盘。以下示例显示 /dev/sdg:
    # fdisk -l...Disk /dev/sdg: 3.9 GB, xxx bytes255 heads, 63 sectors/track, xxx cylinders
  4. 卸载卡上的分区,在下面示例中使用您卡的设备名替换 /dev/sdg
    sudo umount /dev/sdg?
  5. 使用 mkcard.txt 脚本对您的 SD 卡进行格式化。

    注意: 确保 您锁定的目标是您的 SD 卡而不是一个系统磁盘。

    在下面示例中使用您卡的设备名替换 /dev/sdg

    chmod +x mkcard.txt ; sudo ./mkcard.txt /dev/sdg

    操作完成后,您的 microSD 卡有两个主分区:

    • 一个 70MB FAT 分区,标记为 boot
    • 一个 ext3 分区,标记为 Angstrom,占用卡的其余容量。

    如果您的系统不能自动挂载这些分区,手工挂载,在下面示例中用您的卡设备名替换 /dev/sdg

    sudo mkdir -p /media/boot ; sudo mount /dev/sdg1 /media/bootsudo mkdir /media/Angstrom ; sudo mount /dev/sdg2 /media/Angstrom

    本例余下部分假设,这些分区已挂载为 /media/boot 和 /media/Angstrom

  6. 将文件解压到根文件系统分区(这可能需要一点时间):
    sudo tar -C /media/Angstrom -xjvf / Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2
  7. 将文件复制到根分区,注意内核映像直接来自根文件系统:
    cp MLO /media/bootcp u-boot.bin /media/bootcp /media/Angstrom/boot/uImage /media/boot
  8. 所有操作完成之后,同步文件系统然后卸载分区:
    sync ; sudo umount /dev/sdg?
  9. 将卡插入 BeagleBoard-xM 然后打开电源。

    注意: 如果第一次引导失败,则会出现这样一个错误:

     Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block...

    重启系统,停止引导倒计时,然后输入以下命令:

    setenv mmcroot /dev/mmcblk0p2 rw

    然后输入 boot 引导系统。

第一次引导需要一段时间,因为系统自身需要配置。Angstrom 徽标出现在监视器上,同时在控制台上每个组件都已配置完成,大约 10 分钟后,Angstrom 登录屏幕出现在监视器上,控制台上出现一个引导提示窗口。使用登录界面建立一个新的用户然后登录,您也可以在控制台上以 root 登录,不需要密码。

Android 已被证实是 BeagleBoard 上一个流行的操作系统,对于 Android 应用程序开发和测试而言该主板并不是一个昂贵的平台。这有几个连接到 BeagleBoard 的 Android 端口。本文使用 rowboat 项目。确保在启动之前连接一个 USB 键盘和鼠标以及一个 DVI 监视器。

  1. 从 Texas Instruments Android DevKit 页面下载预编译的二进制 tarball,务必要找出 BeagleBoard-xM 的预构建映像(beagleboard-xm.tar.gz)。
  2. 解压 tarball:
    tar zxvf beagleboard-xm.tar.gz
  3. 在 README.txt 中阅读操作指南。
  4. 插入一个至少有 4GB 容量的 microSD 卡,确定其设备名称。例如,如果您使用的是一个 USB 读卡器,使用 fdisk 并寻找匹配卡参数的磁盘。以下示例显示 /dev/sdg:
    # fdisk -l...Disk /dev/sdg: 3.9 GB, xxx bytes255 heads, 63 sectors/track, xxx cylinders
  5. 使用提供的脚本格式化您的 SD 卡。

    注意:务必确保 您锁定的目标是您的 SD 卡而不是一个系统磁盘。

    使用您的卡设备替换下面示例中的 /dev/sdg

    mkmmc-android.sh /dev/sdg

    所有操作完成后,同步文件系统然后卸载分区:

    sync ; sudo umount /dev/sdg?
  6. 将 microSD 卡插入 BeagleBoard-xM 并打开电源。

    第一次引导需要一段时间,因为系统本身需要配置。大约 4 分钟后,您应该可以看到 Android 徽标,然后可以看到一个主界面。如果网络没有自动激活,等待 5 分钟左右,然后重新引导。注意,控制台保持活动,以 root 自动登录。

Ubuntu 迅速成为一个流行于上网本(netbook)、移动互联网设备(MID)和其他小型系统的操作系统。Ubuntu 的总公司 Canonical 提供资源来将 Ubuntu 植入 ARM 处理器,比如 BeagleBoard。和 Android 一样 ,确保在启动之前插入监视器以及 USB 键盘和鼠标。

  1. 在 Ubuntu OMAP Maverick Install 页面阅读操作指南。
  2. 下载预编译的二进制映像。务必找到针对 BeagleBoard-xM 的映像:针对 TI OMAP3 计算机的预安装上网本映像ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz)。此时不要解压映像。
  3. 插入一个至少有 4GB 容量的 microSD 卡,确定其设备名。例如,如果您使用的是一个 USB 读卡器,使用 fdisk 然后寻找一个匹配卡参数的磁盘。以下示例显示 /dev/sdg
    # fdisk -l...Disk /dev/sdg: 3.9 GB, xxx bytes255 heads, 63 sectors/track, xxx cylinders
  4. 将映像直接写入卡中。

    注意:务必确保 您锁定的目标是您的 SD 卡而不是一个系统磁盘。

    使用您卡的设备名替换以下示例中的 /dev/sdg

    sudo sh -c 'zcat / ./ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz > /dev/sdg'

    注意:如果您的 BeagleBoard-xM 是版本 A3,您可能需要下载一个不同的内核。查阅 Ubuntu Maverick 安装页获取更多细节。

    所有操作完成后,同步文件系统然后卸载分区:

    sync ; sudo umount /dev/sdg?
  5. 将卡插入 BeagleBoard-xM 然后接通电源。

    第一次引导需要一段时间,因为系统本身需要配置,期间监视器和控制台可能显示黑屏。大约 5 分钟后,控制台上出现 Ubuntu 徽标,接着是一系列系统配置界面,使用插入 BeagleBoard 的鼠标和键盘,回答配置问题。如果网络不能自动激活,等待直至系统完全运转,将其关闭(转到 System 然后选择 Shut Down ),然后重新引导。

控制台不能使 Ubuntu 保持活动状态,您必须通过监视器和键盘或鼠标相互作用。但是,您可以从 Ubuntu Software Center 安装一个 Virtual Network Computing (VNC) 服务器,并通过 VNC 与系统进行交互。

每一个操作系统都有其自己的社区系统,包括网站、wiki、邮件清单和 Internet Relay Chat (IRC) 频道,BeagleBoard 也一样。在您学习 BeagleBoard-xM 和您所选择的操作系统时,可以利用这些优越的资源。

 

学习

  • BeagleBoard.org 是提供所有 BeagleBoard 信息的主要门户网站,包括 BeagleBoard-xM System Reference Manual(PDF)。查看社区生成信息的两个主要的网站是 eLinux.org BeagleBoard wiki 和较小的 wiki on code.google.com。 
  • 主要 Angstrom 网站 中有大量关于 Angstrom 发布版的信息。关于使用所包含的确认映像的信息是在 Diagnostics 页面。您可以从 Angstrom BeagleBoard 演示页面 下载 BeagleBoard 所用的软件(一定要阅读后半页的操作指南)。您也可以使用 Angstrom 的 Narcissus 工具创建一个自定义的预构建映像。
  • 针对 BeagleBoard-xM 的 Android 资源包括 Rowboat Web 网站 以及 Texas Instruments Android DevKit 页。通常,要了解更多 Android 操作系统的信息,从主 Android 页面 开始。 
  • 针对 BeagleBoard-xM 的 Ubuntu 资源包括 eLinux.org 上的 BeagleBoardUbuntu 页 以及 Ubuntu wiki 上的 OMAP Maverick Install 页。通常,要了解更多关于 Ubuntu 操作系统的信息,从主 Ubuntu 页面 开始。 
  • Chris Hallinan 所著的 Embedded Linux Primer, 2nd Ed.(Prentice Hall,2010 年)绝对是学习嵌入式 Linux 的最佳资源。 
  • “在 Beagle Board 上引导 Linux”(developerWorks,2009 年 8 月) 演示如何在 BeagleBoard 版本 C 上引导 Linux。 
  • The Open Source Way 是一个 Wiki,也是一本图书,不久还将成为教科书,其源自社区的内容致力于定义如何处理真实生活中事情,以及在一个新的领域增进开源方法,比如教育、政府、和企业。 
  • 在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。 
  • 在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。 
  • 随时关注 developerWorks 技术活动和网络广播。 
  • 观看 developerWorks 演示中心,包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。

获得产品和技术

  • 以最适合您的方式 IBM 产品评估试用版软件:下载产品试用版,在线试用产品,在云环境下试用产品,或者在 IBM SOA Sandbox for People 中花费几个小时来学习如何高效实现面向服务架构。 

讨论

  • 访问 BeagleBoard 讨论邮件列表 和 BeagleBoard IRC 频道,讨论关于 BeagleBoard 的一切。
  • 欢迎加入 My developerWorks 中文社区。

作者照片:Jeffrey Osier-Mixon

Jeffrey Osier-Mixon 是一名技术作家、开源的拥护者和社区管理员。他撰写关于开源软件的 博客,管理嵌入式 Linux 社区 Meld,并且在 Linux 会议上发表演讲。

 

原创粉丝点击