嵌入式技术
2008 年 9 月 01 日
学习如何为嵌入式环境构建一个定制 Linux 发行版,本教程针对的是 Technologic Systems TS-7800 单板计算机。在这篇教程中,将学习交叉编译、启动装载器、文件系统、根文件系统、磁盘镜像和启动过程,您可以在构建系统和创建发行版时选择它们。
在本教程中
本教程首先讨论交叉编译问题,然后讨论 Linux 系统的组成部分,以及它们是如何结合在一起的。本教程还谈到了构建和安装,以及目标系统的配置。
本教程讨论一个特定的目标 Technologic Systems TS-7800,它使用自己的默认启动和 bring-up 行为;其他系统将使用其他的机制,本文不详细地讨论每种可能的启动装载器。
预备知识
本教程针对对目标嵌入式系统感兴趣,或者想学习更多关于 Linux 系统的开发人员。他们将从本教程获益不浅。
本教程使用的主机环境是 Ubuntu,但其他系统也可以。本教程假定用户基本熟悉 UNIX® 或 Linux 系统管理,并且有主机系统的根访问权限。
本教程假定您 shell 是 Bourne shell 的变体;如果您使用的是 C shell 变体,那么提示符可能会不同,需要使用不同的命令来设置环境变量。
对于交叉编译(在嵌入式系统中比较有用),我使用了 2008 年 5 月发行的 crosstool-ng version 1.1.0。您可以从发行站点下载它(参见参考资料)。后面有关于安装和配置它的详细信息。
学习如何构建一个在嵌入式环境中使用定制 Linux 发行版,以驱动 Technologic Systems TS-7800 单板计算机。在这篇教程中,将学习交叉编译、启动装载器、文件系统、根文件系统、磁盘镜像和启动过程,您可以在构建系统和创建发行版时选择它们。
开始之前
目标
本教程展示如何在一个目标系统上安装 Linux。这不是一个预先构建的 Linux 发行版,而是您从头构建发行版。虽然在不同目标系统上安装 Linux 的过程在细节上有差异,但总的原则是相同的。
本教程帮助您构建(如果您有一个合适的目标系统)一个有效的 Linux 系统,您可以在这个系统上使用 shell 提示符。
关于本教程
本教程首先讨论交叉编译问题,然后讨论 Linux 系统的组成部分,以及它们是如何结合在一起的。本教程还谈到了构建和安装,以及目标系统的配置。
本教程讨论一个特定的目标 Technologic Systems TS-7800,它使用自己的默认启动和 bring-up 行为;其他系统将使用其他的机制,本文不详细地讨论每种可能的启动装载器。
先决条件和系统需求
本教程针对对目标嵌入式系统感兴趣,或者想学习更多关于 Linux 系统的开发人员。他们将从本教程获益不浅。
本教程使用的主机环境是 Ubuntu,但其他系统也可以。本教程假定用户基本熟悉 UNIX® 或 Linux 系统管理,并且有主机系统的根访问权限。
本教程假定您 shell 是 Bourne shell 的变体;如果您使用的是 C shell 变体,那么提示符可能会不同,需要使用不同的命令来设置环境变量。
对于交叉编译(在嵌入式系统中比较有用),我使用了 2008 年 5 月发行的 crosstool-ng version 1.1.0。您可以从发行站点下载它(参见 参考资料)。后面有关于 安装和配置它 的详细信息。
关于目标和架构
目标
我选择的目标是一个 Technologic Systems TS-7800(详细信息请参阅 参考资料)。这是一个小型的嵌入式 ARM 系统,同时具有内置的和可移动的 flash 存储,还有一个 SATA 控制器。本教程引导您启动到一个登录提示符,而不需要依赖预先构建的二进制文件。
架构
我选择了 ARM 架构,这便于检查一个给定的二进制文件是主机还是目标,并且便于查看是否发生主机污染。使用一台总功率为 5W,能够安静运行的机器也不错。
交叉编译
什么是交叉编译?
交叉编译是在一个系统上使用编译器来开发在另一个系统上运行的代码。交叉编译对于偶尔使用 UNIX 的用户而言比较少见,因为在默认情况下,只在本系统上安装需要使用的编译器。然而,当以嵌入式系统为目标时,交叉编译就相当常见。即使主机和目标具有相同的架构,也必须区分它们的编译器。它们可能有不同版本的库,或者使用不同的编译器选项构建的库,所以用主机编译器编译的东西在目标系统上不能运行,或者不能像预期的那样运行。
全部0条评论
快来发表一下你的评论吧 !