嵌入式linux系统开发教程

本文详细介绍了嵌入式Linux系统开发的全过程,从建立开发环境、配置开发主机到移植Linux操作系统、建立根文件系统,再到开发应用程序和烧写系统。重点讲述了Linux在嵌入式领域的应用和选择,并提供了不同应用场景下的开发建议。
AI助手已提取文章相关产品:

在学习嵌入式开发的过程中,尤其是开始入门时,包括各种各样的教程,都是在讲学习linux,很少讲如何利用linux来开发属于自己的嵌入式项目,也就是没有一个全局的概念,简单理解,大概流程如下:

一、建立开发环境

操作系统当然是LInux,或者在win系统下安装虚拟机,通过网络下载相应的GCC交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。

这一步,就相当于在win系统下,要安装一个IDE开发环境,如MDK,IAR等。

二、配置开发主机

主要是配置minicom,也就是串口助手,minicom软件是作为调试嵌入式开发板信息输出的监视器和键盘输入工具,是一个非常方便的工具,我们开发其他嵌入式程序时,其实很多时候也采用串口调试,所以最终原理都是相通的。

配置网络,主要是配置NFS网络文件系统,这个主要是用于下载程序,当然不配置也可以,有很多别的办法。

三、建立引导装在程序的bootloader

常用的bootloader主要有u-boot、vivi等,貌似主流的就是u-boot,这个根据自己具体的芯片进行移植修改。有些芯片是没有内置引导加载程序的,这就需要编写开发板上的Flash的少些程序,当然也可以用windows下的通过JTAG并口和仿真器少些Flash芯片程序,也有linux下的公开源代码的J-Flash程序,所以在设计自己的硬件时,可以预留多种方式。

简单的讲,其实就是要做好一个属于自己板子的u-boot,完成初始化,内核引导,下载、烧写等。

四、移植嵌入式Linux操作系统

如果有专门针对你使用的CPU的Linux再好不过,比如uCLinux、ARM-Linux、PPC-Linux等,如果没有,就要尝试移植专属自己的linux了,然后再添加自己特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于uCLinux这样的系统则需要编译进内核,与内核为一体,再进行调试。

五、建立根文件系统

前面的文章讲述过,没有根文件系统的Linux是无法正常工作的,还需要根文件系统。所以需要下载使用busybox软件来实现制作根文件系统。

再根据自己的应用需要来添加其他程序,默认的启动脚本一般都不会符合应用的需求(因为所有的嵌入式开发都是自由定制的),所以就要修改根文件系统中的启动脚本,它的存放位置至于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂载文件系统的配置文件/etc/fstab,其实就是定制自己要开机启动的程序,具体情况会随着系统的不同而不同,根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生少些映像文件。

六、建立应用程序的Flash磁盘分区

一般会使用jffs2或者YAFF文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用NOR FLASH,有的系统使用NAND FLASH,也有的系统两种flash都使用,那么jffs2的作用是什么呢?

百科里的介绍是:jffs2全名为journalling flash filesystem version2(闪存日志型文件系统第二版),其功能就是管理MTD设备上实现的日志型文件系统,日志系统也是一个完整系统所必须的,不管是windows还是linux,有了这些才不算耍流氓,嘿嘿。jffs2并不准备提供提供类似与传统文件系统的功能,它只会直接在MTD设备上实现日志结构的文件系统,除了提供具有断电可靠性的日志结构文件系统,jffs2还会在它管理的MTD设备上实现"损耗平衡"和“数据压缩”等特性。

MTD(memory technology device内存技术设备),就是各种flash。

七、开发应用程序

应用程序可以放到根文件系统中,也可以放到yaffs、jffs2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,就是类似于uCOS-II的方式。

其实,写到这,这一步才是最终的目的,前面的步骤都是为了这一步,我自己的理解,开发应用程序呈现的方式应该是有三种的:

(1)直接讲应用程序和内核设计在一起,类似与uCOS-II的方式,这种方式就是属于私人订制了,实现的功能种类是比较少的,只是专属,但是稳定性要求高的,比如说复杂交换机、防火墙等,可能更看中linux系统的稳定性和各种优秀的外围资源吧。

(2)基于qt等GUI开发应用程序,之前一直以为qt是linux绕不开的,其实随着了解,不尽然,qt其实就是一个桌面系统,比如说ubuntu,对于高手来说,有没有桌面都是无所谓的,因为所有都是可以通过shell来完成的,使用qt是方便用户使用,所以对于那些需要操作,有屏幕的嵌入式设备,这个是一个很好的方案。比如目前工控触摸屏还有各种手持式带有屏幕的仪表器械,都是这种方式。

(3)没有屏幕,只有简单的人机接口,比如串口,按键,数码管,这种也能实现复杂功能开发,比如说,完全可以开发一个基于linux的PLC,可编程方案,通过脚本实现,这也是一种很好的方案实现。

八、烧写内核、根文件系统、应用程序

无论怎么加载,模块也好,所有的这些开发,过程资料,都是要烧写到flash中的,然后应用程序需要什么,就加载对应的功能程序即可。

九、发布产品

写到最后,发现,之前还是过于迷信linux,不是说linux不好,而是说,对于嵌入式开发工程师来说,没有最好的,只有最适合的,开发一款产品,用什么,不用什么,都是因地制宜的。

比如说一个简单的跑马灯,你非要使用嵌入式linux方案,那就是烧包,只需要一个简单的2051,裸机程序就能开发,既便宜,又好用。

开发一款小型控制器设备,如果功能不太复杂,可以使用稍微高级的CPU,裸机或者ucos等来开发,也很方便,也能做很多定制版的工业小型控制器。

开发一款中高型的控制器设备,功能比较复杂,甚至需要复杂的屏幕交互,比如手机(安卓是linux的亲儿子,OS是linux的亲表弟),取款机,服务器交易系统,那么linux就非常合适了。

![](https://img-blog.csdnimg.cn/20210120233833511.png)

以上就是良许教程网为各位朋友分享的Linux相关知识。

您可能感兴趣的与本文相关内容

本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 Linux 开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍开发所必备的基础知识, 以实用和够为标准进行介绍与嵌入式嵌入式 LinuxLinux 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 开发不相关的知识都在讲述之列。,特别是 LinuxLinux 命令部分,并没有介绍 命令部分,并没有介绍 命令部分,并没有介绍 命令部分,并没有介绍 命令部分,并没有介绍 全部 的 Linux Linux 命令, 命令, 而仅精选嵌入式 仅精选嵌入式 仅精选嵌入式 仅精选嵌入式 LinuxLinux 开发中的常用命令进行介绍。 开发中的常用命令进行介绍。 开发中的常用命令进行介绍。 开发中的常用命令进行介绍。 开发中的常用命令进行介绍。本篇一共分为 本篇一共分为 本篇一共分为 6章,从 章,从 章,从 LinuxLinux Linux 操作系统开始, 操作系统开始, 操作系统开始, 操作系统开始, 循序渐进 循序渐进 循序渐进 地介绍, 到最后 讲述 嵌入式 嵌入式 Linux Linux 开发环境的构建, 开发环境的构建, 开发环境的构建, 开发环境的构建, 为嵌入式嵌入式嵌入式 Linux Linux 开发做准备。各章 开发做准备。各章 开发做准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值