构建基于Linux的嵌入式应用的一点想法

标签: linux 嵌入式 应用 | 发表时间:2014-02-25 15:29 | 作者:crazycoder8848
出处:http://blog.csdn.net


一. 尽可能少的修改Linux系统的代码。

比较理想的情况是,只修改一行代码。

例如,在 /etc/rc.local脚本的最后,增加一行代码,那就是“/path/to/my_app/start.sh”。通过这一行代码就进入了我们的应用的世界。

这样的修改就很干净,而且这样的修改也很稳定,以后也基本不需要再有什么变化。


二. 不要直接启动我们的应用程序

注意,前一节启动的start.sh还不是我们的应用程序。他相当于用于发射火箭的发射架。start.sh中,可能会做很多准备工作,例如,驱动模块的加载,文件系统的mount,硬件是否就绪的检测,相关文件夹的创建,时间的同步,当前工作目录的设置等等。这些只是在应用启动时执行一次的工作,放在start.sh中做,是比较方便的。如果放在应用程序中做,不仅实现起来麻烦,维护起来也不方便(稍有变动,就得修改编译应用程序的代码)。


三. start.sh的最后一行干什么

start.sh在前面做了各种准备工作。这些都做完了,还要干什么呢?当然是拉起我们的应用程序。但是,如果想让系统的可靠性好一点的话,这里还是不要直接拉起最终的应用程序。而是拉起一个守护程序,例如,Daemon.exe。

Daemon.exe的实现逻辑要超级简单。简单到什么程度呢?简单到几乎不可能有任何bug。只有这样简单的代码,才经得起积年累月的运行而不崩溃。

那么Daemon.exe的任务究竟是什么呢?启动时,从配置文件中读取一个程序列表。将列表中的程序一个个拉起来。然后进入一个循环,监视列表中的程序有没有退出的。一旦遇到退出的程序,就再将他拉起来。


四. 应用程序的实现

上一节中,由Daemon.exe拉起来的程序列表中的程序,才是我们真正的应用程序。他可能由一个或多个可执行程序构成。这些程序的设计要注意什么呢?

1. 尽可能提供一些命令行选项

   例如,-m 5  -d 等。这样,允许我们不用修改代码就能改变系统特性。UNIX中的很多实用程序,基本都支持命令行选项。说到这里,再提一点。如果不是写临时性的非正式程序,最好不要直接使用argv[1]、argv[2]等来获得控制程序的命令行参数。因为这样做,用户就得按照顺序输入各个参数,这就会带来记忆的麻烦。另外,如果程序所需的参数个数发生了变化,可能会造成参数的输入顺序也得跟着变。

2. 通过配置文件提供丰富的特性控制

这样做,主要是提供给用户更大的灵活性。凡是容易有变化的地方,都做成配置项,放到配置文件中。程序根据配置文件的内容,决定应该如何表现。这样能更好的适应用户的需求。

也符合UNIX程序设计的哲学,程序提供的是机制,策略的事交给用户。


3. 核心程序要具有在运行时重新加载配置的能力

程序在启动时,通过配置文件读取了用户的配置,并且跑起来了。如果后面用户改变了配置,怎么办呢?有人可能想,把程序关掉,重新启动一下。对不起,有些高要求的场合是不允许这么搞地。例如,有些核心的程序,通过管道或socket为其他进程提供服务。核心程序挂了,会给使用他的服务的诸多进程造成很大麻烦。所以,核心程序不能挂。当然,使用核心程序的服务的程序可以挂。再例如,有些场合可能需要提供7*24小时不间断的服务。这个不间断,可能是几秒钟都不行哦。因此,核心程序在运行时能够重新加载配置,还是很重要的。

作者:crazycoder8848 发表于2014-2-25 15:29:31 原文链接
阅读:60 评论:0 查看评论

相关 [linux 嵌入式 应用] 推荐:

构建基于Linux的嵌入式应用的一点想法

- - CSDN博客架构设计推荐文章
尽可能少的修改Linux系统的代码. 比较理想的情况是,只修改一行代码. 例如,在 /etc/rc.local脚本的最后,增加一行代码,那就是“/path/to/my_app/start.sh”. 通过这一行代码就进入了我们的应用的世界. 这样的修改就很干净,而且这样的修改也很稳定,以后也基本不需要再有什么变化.

嵌入式Linux 无限光明的未来

- Shan - LinuxEden开源社区-Linux伊甸园
嵌入式Linux是将Linux操作系统进行裁剪修改,使之能嵌入到计算机系统上运行的一种操作系统. 嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性,被广泛应用在移动电话、个人数字助理. 阅读全文 | 邮件推荐 | 评论回复.

嵌入式Linux冷启动一秒进入QT

- 王雪松 - Solidot
一位嵌入式系统开发者在博客上演示了在一台嵌入式Linux设备上冷启动载入一个QT应用程序,整个过程仅仅只需一秒钟. 冷启动中用的组件包括了UBoot(2009-01),Linux kernel(2.6.31-rc7)和Qt Embedded Open Source 4.6.2. 他还公开了一份幻灯片文档,介绍了修改方法,如何减少启动时间.

浅析嵌入式Linux系统的构成和启动过程

- - CSDN博客架构设计推荐文章
在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结.  一、嵌入式Linux系统构成. 上图是一个嵌入式Linux系统的典型结构,划分成了4个区:. 1、Bootloader区存放的是Bootloader,它负责嵌入式系统最初的硬件初始化、驱动和内核加载.

Linux应用之Pop VS Geek

- - 笨兔兔
这个世界上有主流的大众流行应用,但也从不缺乏Geeker. 一直以来,在Linux的应用中,总会有不少人向你推荐vim之类的工具. 这事,icebird自己也干过,但我们也不能否认大众应用的巨大作用. 如果没有这些大众应用程序,计算机就根本不可能普及. 然而,这个世界上有主流的大众流行应用,但也从不缺乏Geeker.

2011年50最佳Linux应用

- tackwell - 笨兔兔
由Techradar在Linux Format杂志读者调查所得,2011年50最佳Linux应用. 声明:笨兔兔原创文章,博客文章遵循CC协议,转载需注明@笨兔兔,本文链接地址. 文稿投递|文章写作规范|欢迎加入QQ群:121584708(此群已满);2群:170591351;Gtalk群:ibentutu@roomchinese.appspotchat.com.

出色的Linux教育应用

- - Solidot
Alison Xue 写道 "Linux平台上有大量的开源教育软件,其中不乏能满足教师和教育机构需要的高品质软件. 教育机构都在研究如何减少开销节省费用,但同时又要保质保量. 出色的开源Linux教育软件代表了一种低成本的解决方案,帮助教师更好的管理学生学习进程. 这些优秀的软件包括:Moodle,Rogo,iTALC,Matterhorn,Fedena,等等.

Linux下高效数据恢复软件extundelete应用实战

- - CSDN博客系统运维推荐文章
推荐:10年技术力作:《高性能Linux服务器构建实战Ⅱ》全网发行,附试读章节和全书实例源码下载. 作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候改如何快速、有效地恢复数据呢. 本文我们就来介绍一下Linux系统下常用的几个数据恢复工具.

使用epoll 在 linux 上开发高性能应用服务器

- - C++博客-首页原创精华区
epoll是linux提供一种多路复用的技术,类似各个平台都支持的select,只是epoll在内核的实现做了更多地优化,可以支持比select更多的文件描述符,当然也支持 socket这种网络的文件描述符. linux上的大并发的接入服务器,目前的实现方式肯定都通过epoll实现. 有很多开发人员用epoll的时候,会开多个线程来进行数据通信,比如一个线程专门accept(我个人早些年在FreeBSD用kqueue的时候,由于对内部机制没有基本了解也这样搞),一个线程收发,或者接收和发送都用各自独立的线程.

Linux应用自动删除n天前日志

- - 操作系统 - ITeye博客
Linux应用总结(1):自动删除n天前日志. linux是一个很能自动产生文件的系统,日志、邮件、备份等. 虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情. 不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧.