全国统一服务热线:400-123-4657

站内公告:

诚信为本,市场在变,诚信永远不变...

联系我们CONTACT

地址:青海省海南藏族自治州正蓝旗达均大楼48号
传真:+86-123-4567
手机:19421793160
邮箱:admin@youweb.com

400-123-4657

行业资讯

当前位置: 首页 > 新闻动态 > 行业资讯

嵌入式项目中使用Linux的技巧【开云手机在线登陆入口】

2025-07-09点击量:391

本文摘要:微控制器制造商的开发板,以及他们与开发板一起获取的软件项目例程,在工程师著手一个新的设计时可以获取相当大协助。

微控制器制造商的开发板,以及他们与开发板一起获取的软件项目例程,在工程师著手一个新的设计时可以获取相当大协助。但在设计项目已完成其早期阶段后,更进一步设计时,制造商获取的软件也可能会造成一些问题。  用于实时操作系统作为应用于程序代码平台的设计还面对着许多挑战,比如如何将功能分配给有所不同的并行任务、如何设计低可信的进程间通信、以及如何在硬件上测试整个软件包等问题。  更加多的OEM厂商找到,防止上述两个问题的最差方式,是用于基于开源、经过检验、可拓展、可运营在有所不同硬件平台的操作系统Linux开始新的设计。

就早已被重制到各种计算机硬件平台的操作系统的数量来说,Linux首屈一指。Linux的派生版本已运营在十分普遍的嵌入式系统中,还包括:网络路由器、移动电话、建筑自动化掌控、电视机和视频游戏控制器。

  虽然Linux被顺利用于,但并不意味著它很更容易用于。Linux包括的代码多达一百万行,其运作具有独特的Linux方法论味道,初学者有可能无法很快掌控。

  因此,本文的主旨是为用于Linux的嵌入式操作系统版本Clinux,开始一个新的设计项目,该指南共计分成五个步骤。为了解释该指南,本文讲解了在意法半导体的STM32F429微控制器(ARMCortex-M4内核,最低180MHz)上的一个Clinux项目构建,用于了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)。  图1:用作STM32F429Discovery板的EmcraftBSP的主要部件  步骤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的继续执行,标志着启动过程的已完成。

  通过使能就地继续执行(ExecuteInPlaceXIP)可以明显延长启动时间、提高整体性能,XIP就是指存储器继续执行代码的方法。一般来说,Linux代码就是指存储器读取到外部存储器,然后从外部存储器继续执行。通过从存储器继续执行,因仍然须要拷贝这步,从而只需较较少的存储器,且只读存储器仍然占到程序空间。

  本文的示例项目基于STM32F429MCU。事实上,用户可能会找到,开始时,STM32F4系列MCU的外设初始化不更容易掌控。幸运地的是,意法半导体研发了一些工具来协助解决问题这一问题。STM32CubeMX初始化代码生成器(部件编号UM1718)归属于近期的。

该工具还包括外设初始化的每一个细节,在配备外设时,不会表明警告和错误、并警告硬件冲突。  对小型嵌入式Linux项目来说,STM32F429MCU内部存储器充足用。最重要的是要忘记:嵌入式Linux项目中用于多个二进制光碟(引领读取程序、Linux内核和根文件系统):这些都必须存储器扇区边界偏移。

这就防止了在装载一个图像时,另一图像被部分移除或损毁的风险。  步骤3:在主机上安装Linux  要建构一个嵌入式Linux项目,一台Linux主机是必须的。


本文关键词:开云手机在线登陆入口

本文来源:开云手机在线登陆入口-www.wdnn518.com