6

全志V3S嵌入式驱动开发(开机脚本、程序运行)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131199772
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

全志V3S嵌入式驱动开发(开机脚本、程序运行)

嵌入式-老费 于 2023-06-14 08:10:31 发布 63

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        目前为止的内容,大部分都是和驱动相关的。就算有部分上层代码,也只是为了测试驱动是否ok而编写的。事实上,作为嵌入式设备,它本身其实就是为了实现某个专有功能而设计的。而这些上层应用中,有很大一部分,我们是希望做成开机启动、长期运行的。

        当然,所有这些开机启动的程序最好有一个脚本管理起来,比如我们之前说的auto.sh。今天,我们就来看看,通常这个开机脚本里面一般都有哪些内容,大家来一起分析下。

1、示例脚本



newCodeMoreWhite.png

        这个脚本虽然内容不多,但是很具有代表性,实际开发中遇到的情形,在脚本中都有体现。下面来一起看下。

2、脚本分析

        首先第一行和最后一行都是一个echo语句,虽然我们暂时已经注释掉了,但是还是很有用的,特别是分析调试的时候。它的作用主要有两个,第一,就是确认脚本有没有被执行;第二,确认脚本有没有执行结束。如果希望查找中间的某一段内容有没有被执行到,还可以添加新的echo语句。

        run server这个部分,主要是启动相关的服务器程序。这里主要启动了两个server,一个是ftp,一个是telnet。实际生产当中,还有可能会开启一个http程序,这个根据自己的需求而定。

        接着就是mount sd。这句脚本也是很典型的。实际产品中,有一部分软件或者称之为固件是烧入在spi norflash或者spi nandflash,而客户在使用的时候还需要插入自己的sd卡,这个时候就可以把sd卡mount到指定的目录上面,方便继续读取里面的文件和数据。

        run lcd backlight。这几句作用是为了打开lcd的背光,配合后面的demo程序使用。在我们自己实际的产品中,很多时候,每完成一个步骤,就需要点亮一盏灯,或者更换灯的颜色,这都是很普遍的。等所有的初始化流程都结束了,就需要把所有的灯点亮,或者变换成某一种安全的颜色,比如绿色。

        sleep,也就是等待。有些程序初始化话比较慢,特别是和其他设备沟通,或者自身有一部分机械装置的时候,这个sleep是少不了的。因为和电子、软件比起来,机械部分要慢得多。

        export语句,这里主要是增加环境变量。有一些程序会需要设置一些额外的环境变量,比如LD_LIBRARY_PATH、PATH这样的,不然程序无法运行。所以用export添加必要的环境变量也是十分有必要的。

        run demo program,此时就是添加产品需要启动的服务器程序了。需要长时间运行的程序,就在最后添加一个&,只运行一次的程序,就不需要添加这个&,稍微注意一下。如果需要运行的程序比较多,相互之间存在依赖关系,可以适当地添加sleep,不过这样比较影响系统启动地速度,有利有弊。这里的服务器程序或应用程序,和之前的ftp、telnet还是不同的,上面那部分一般都是通用的开源代码,而现在这部分就是和产品、业务相关的私有代码了。

        最后一个echo之前已经说过了,就是告知当前脚本全部执行完毕,通常在串口调试的时候会比较注意。时间长了,这一行和开头的那一行基本就被注释掉了,看多了也觉得麻烦。

        实际启动的时候,为了加快运行,还会去掉uboot的等待时间,不过这部分因人而异。上面这部分脚本看着简单,其实东西还挺多的,属于小而全的那种。大家可以把它放在自己的产品中,就可以慢慢打造自己的嵌入式应用作品了。

759c911a3d59489da9a2003c6f8f1277.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK