目录
步骤1:Linux工具和项目布局" >步骤1:Linux工具和项目布局
步骤2:引导序列、时钟系统、存储器和串行接口" >步骤2:引导序列、时钟系统、存储器和串行接口
首页 系统教程 操作系统 嵌入式Linux项目开发的几个步骤

嵌入式Linux项目开发的几个步骤

Feb 05, 2024 pm 12:51 PM
linux linux教程 linux系统 linux操作系统 linux命令 外壳脚本 内存占用 系统版本 linux工具 嵌入式linux 良好的许可证 linux入门 linux学习

微控制器制造商提供的开发板和相关的软件项目例程,在工程师开始新设计时通常能提供很大的帮助。然而,在设计项目的早期阶段完成后,在进一步设计时,制造商提供的软件可能会引发一些问题。

对于使用实时操作系统作为应用程序代码平台的设计来说,也面临着许多挑战。比如,如何有效地将功能分配给不同的并行任务,如何设计可靠的进程间通信,以及如何在硬件上对整个软件包进行测试等问题。

越来越多的OEM厂商发现,避免上述问题的最佳方式是使用基于开源、经过验证、可扩展,并能运行在各种硬件平台上的Linux操作系统来开始新的设计。Linux操作系统在各种计算机硬件平台上的移植数量也是首屈一指的。

Linux的衍生版本已经被广泛应用于各种嵌入式系统中,包括网络路由器、移动电话、建筑自动化控制、电视机以及视频游戏控制台。

虽然Linux被广泛应用并取得成功,但这并不意味着它易于使用。Linux包含的代码超过一百万行,并且运行方式具有明显的”Linux方式”,初学者可能需要一定时间来适应。

因此,本文的目的是为了帮助使用Linux嵌入式操作系统版本——μClinux,来启动一个新的设计项目。本指南将分为五个步骤。为了说明该指南,文中介绍了在意法半导体的STM32F429微控制器上实现的一个μClinux项目,该微控制器采用ARMCortex-M4内核,最高主频为180MHz,并使用了Emcraft的STM32F429DiscoveryLinux板支持包(BSP)。

步骤1:Linux工具和项目布局

每个嵌入式软件设计都从选择合适的工具开始。

工具链是一组连接(或链接)在一起的软件开发工具,它包含诸如GNU编译器集合(GCC)、binutils(一组包括连接器、汇编器和其它用于目标文件和档案工具的开发工具)和glibc(提供系统调用和基本函数的C函数库)等组件;在某些情况下,还可能包括编译器和调试器等其它工具。

用于嵌入式开发的工具链是一个交叉工具链,更常见的叫法是交叉编译器。

GNUBinutils是嵌入式Linux工具链的第一个组件。GNUBinutils包含两款重要工具:

●“as”,汇编器,将汇编代码(GCC所生成)转换成二进制代码

●“ld”,连接器,将离散目标代码段连接到库或形成可执行文件

编译器是工具链的第二个重要组成部分。在嵌入式Linux,它被称为GCC,支持许多种微控制器和处理器架构。

接下来是C函数库。它实现Linux的传统POSIX应用编程接口(API),该API可被用来开发用户空间应用。它通过系统调用与内核对接,并提供高阶服务。

工程师有几种C函数库选择:

●glibc是开源GNU项目提供的可用C函数库。该库是全功能、可移植的,它符合Linux标准。

●嵌入式GLIBC(EGLIBC)是一款针对嵌入式系统优化的衍生版。其代码是精简的,支持交叉编译和交叉测试,其源代码和二进制代码与GLIBC的兼容。

●uClibc是另一款C函数库,可在闪存空间有限、和/或内存占用必须最小的情况下使用。

调试器通常也是工具链的一部分,因为在目标机上调试应用程序运行时,需要一个交叉调试器。在嵌入式Linux领域,GDB是常用调试器。

上述工具是如此地不可或缺,但当它们各自为战时,会花太长时间来编译Linux源代码并将其整合成最终映像(image)。幸运的是,Buildroot(自动生成交叉编译工具的工具)会自动完成构建一个完整嵌入式系统的过程,并通过产生下述任一或所有任务,简化了交叉编译:

●交叉编译工具链

●根文件系统

●内核映像

●引导映像

对嵌入式系统设计师来说,还可以方便地使用一种工具(utility)聚合工具,如BusyBox,这种工具将通常最需要的工具整合在一起。根据 BusyBox的信息页面介绍,“它将许多常用UNIX工具的微型版本整合成一个小的可执行文件。它提供了对大多数你通常会在GNUfileutils和 shellutils等工具中看到的工具的替代。BusyBox里的工具通常比其全功能GNU对应版本的选择少;但所包含选项所提供的预期功能和行为则与对应的GNU所提供的几无差别。对任何小或嵌入式系统来说,BusyBox提供的环境都是相当完整的。”

最后一个重要工具是一款BSP,是为搭载了项目目标MCU或处理器的主板专门做的。

BSP包括预先配置的工具,以及将操作系统加载到主板的引导加载程序。它还为内核和器件驱动器提供源代码(见图1)。

嵌入式Linux项目开发的几个步骤

步骤2:引导序列、时钟系统、存储器和串行接口

典型的嵌入式Linux启动顺序执行如下:

1)引导加载程序固件(示例项目里的U-Boot)运行于目标MCU内置闪存(无需外部存储器),并在上电/复位后,执行所有必需的初始化工作,包括设置串口和用于外部存储器(RAM)访问的存储器控制器。

2)U-Boot可将Linux映像从外部Flash转移到外部RAM,并将控制交接到RAM中的内核入口点。可压缩Linux映像以节省闪存空间,代价是在启动时要付出解压缩时间。

3)Linux进行引导并安装基于RAM的文件系统(initramfs)作为根文件系统。在项目构建时,Initramfs被填充以所需的文件和目录,然后被简单地链接到内核。

4)在Linux内核下,执行/sbin/init。/sbin/init程序按照/etc/inittab中配置文件的描述对系统进行初始化。

5)一旦初始化进程完成运行级执行和/sbin/init里的命令,它会启动一个登录进程。

6)壳初始化文件/etc/profile的执行,标志着启动过程的完成。

通过使能就地执行(ExecuteInPlace——XIP)可以显著缩短启动时间、提升整体性能,XIP是从闪存执行代码的方法。通常,Linux代码是从闪存加载到外部存储器,然后从外部存储器执行。通过从闪存执行,因不再需复制这步,从而只需较少的存储器,且只读存储器不再占程序空间。

以上是嵌入式Linux项目开发的几个步骤的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

centos和ubuntu的区别 centos和ubuntu的区别 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的关键差异在于:起源(CentOS 源自 Red Hat,面向企业;Ubuntu 源自 Debian,面向个人)、包管理(CentOS 使用 yum,注重稳定;Ubuntu 使用 apt,更新频率高)、支持周期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社区支持(CentOS 侧重稳定,Ubuntu 提供广泛教程和文档)、用途(CentOS 偏向服务器,Ubuntu 适用于服务器和桌面),其他差异包括安装精简度(CentOS 精

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

centos如何安装 centos如何安装 Apr 14, 2025 pm 09:03 PM

CentOS 安装步骤:下载 ISO 映像并刻录可引导媒体;启动并选择安装源;选择语言和键盘布局;配置网络;分区硬盘;设置系统时钟;创建 root 用户;选择软件包;开始安装;安装完成后重启并从硬盘启动。

Centos停止维护后的选择 Centos停止维护后的选择 Apr 14, 2025 pm 08:51 PM

CentOS 已停止维护,替代选择包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(与 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商业版,付费许可);5. Oracle Linux(与 CentOS 和 RHEL 兼容)。在迁移时,考虑因素有:兼容性、可用性、支持、成本和社区支持。

怎么看docker进程 怎么看docker进程 Apr 15, 2025 am 11:48 AM

Docker 进程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目录(Linux)。

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

docker镜像失败怎么办 docker镜像失败怎么办 Apr 15, 2025 am 11:21 AM

Docker镜像构建失败的故障排除步骤:检查Dockerfile语法和依赖项版本。检查构建上下文中是否包含所需源代码和依赖项。查看构建日志以获取错误详细信息。使用--target选项构建分层阶段以识别失败点。确保使用最新版本的Docker引擎。使用--t [image-name]:debug模式构建镜像以调试问题。检查磁盘空间并确保足够。禁用SELinux以防止干扰构建过程。向社区平台寻求帮助,提供Dockerfile和构建日志描述以获得更具体的建议。

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

See all articles