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

版权声明:本文没有任何版权限制,任何人可以以任何方式使用本文。 https://blog.csdn.net/crazycoder8848/article/details/19913479


一. 尽可能少的修改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小时不间断的服务。这个不间断,可能是几秒钟都不行哦。因此,核心程序在运行时能够重新加载配置,还是很重要的。

阅读更多
换一批

一点想法

01-30

rn我是一个公司的开发负责人(公司三百多人,但开发人员只有十多个),非班科出身,而且是文科rn也正在招人,感觉能招到一个好用的程序员难rnrn1、应届生基本不能用rn 其实一些重点大学的应届生还是很有潜力的,毕竟思维能力与英文水平都强,但问题是,我们是私营企业,每个项目老板都催得紧,几乎几个月就要完成一个项目,没时间培养人rnrn2、能熟悉使用某种语言,有一二年开发经验,并且愿意扎实钻研开发技术,勤奋工作的不多rn 什么软件工程思想、设计什么的能力不需要,有这些能力的程序员很难找,大项目的话那些东西由我在程序员中挑一两个机灵点的带着做,小项目的话就由程序员按自己的理解将就将就做就算了,但光就这样,也难找,稍为有点开发基础的动辄就要5\6千工资,不值这个价钱,如果稍会点面向对象分析,UML,写过一两个项目设计文档的开口肯定要8000以上,以前花重钱招过两个,玩不了半年就走人了,项目分析设计不单单是会点概念和技巧就得了的,更重要的是系统化的思维能力rnrn3、我们的软件不追求技术上第一,只追求客户使用方便,应用到位rn 使用的是最简单的技术,代码编得也可能不好,很多算法什么的可能都很繁琐,每个程序员每天要编上千行代码,哪有时间仔细琢磨呢,所以在效率和算法上我们的项目没什么追求,但为了节省开发时间,对组件化以及模板化的设计还是有要求,在我们的大部分系统中模板化是要求把表示层做成一个模板,用户可根据模板制作规范来制作自己的系统界面rnrn4、我们这种做法从软件工程上讲可能是很差劲的做法,但在中国目前的软件行业来看,可能是最适用的办法,否则过不了半年开发负责人就会被老板炒鱿鱼,因为老板都要求“所见即所得”rnrnrn

没有更多推荐了,返回首页