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

news/2024/11/15 0:06:14/

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

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

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

1、示例脚本

#echo "begin to run script"#run server
/usr/sbin/vsftpd &
/home/ftp/busybox telnetd -l /bin/sh &#mount sd
mount /dev/mmcblk0p1 /mnt# run lcd backlight
echo 34 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio34/direction
echo 1 > /sys/class/gpio/gpio34/value#sleep for a while
sleep 1# add some variable definition
export  TSLIB_TSDEVICE=/dev/input/event1
export  TSLIB_CONFFILE=/etc/ts.conf
export  TSLIB_PLUGINDIR=/lib/ts
export  TSLIB_CALIBFILE=/etc/pointercal
export  TSLIB_CONSOLEDEVICE=none
export  TSLIB_FBDEVICE=/dev/fb0#run demo programe
/bin/ts_test &#end of script
#echo "finish script executing"

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

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

3、其他

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

 


http://www.ppmy.cn/news/377336.html

相关文章

鸿蒙分布式软总线技术研究

一、HarmonyOS概述 1.1系统定义 1.1.1 系统定位 HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端…

低功耗芯片间串行媒体总线SLIMbus

转自http://blog.csdn.net/jgw2008/article/details/52704332 低功耗芯片间串行媒体总线SLIMbusTM是基带或移动终端应用处理器与外设部件间的标准接口。SLIMbus规范是MIPI联盟成员共同开发的。MIPI是一个移动工业巨头联盟组织,旨在定义移动应用处理器接口开放标准或…

Linux音频驱动-IIS总线标准

介绍 许多数字音频系统正被引入消费者音频市场,包括CD,磁带,数字声音处理器和数字电视声音。在这些系统中的数字音频信号需要由许许多多( Very-large-scale integration)的IC组成,处理。在音频系统中常见的IC芯片有: A/D and D/A …

音频总线I2S协议

音频总线I2S协议 1 概述 I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。I2S采用了沿独立的导线传输时钟与数据信号的设计,…

IIC总线详解

一、IIC 基础概念 物理层: 1.一个I2C总线中可连接多个I2C通信设备,支持多个主机及多个从机。 2.两线制:一条双向串行通信的数据线(SDA),一条串行时钟线(SCL)数据线用来表示数据&am…

丰田汽车音频总线AVC-LAN

由于公司最近来个丰田欧洲的项目。回看之前接触到的几个丰田项目,发现AVC-LAN是丰田车厂特有的总线接口。所以现在在这里总结一下调试后的经验分享。 首先第一个问题。 什么是AVC-LAN? 在传统的音频系统中,组件间的信息需要是通过并行通信&am…

Intrepid—总线采集测试仿真工具

Vehicle Spy是英特佩斯推出的简单易用高性价比的总线工具,包含分析软件和采集调试硬件,具备对各类总线数据的网络监控、诊断、总线分析、数据采集、节点仿真、自动化测试等功能,目前支持的总线类型包含CAN、CANFD、LIN、FlexRay、车载以太网等…

Linux内核驱动基础-设备树相关总线使用

mmc总线使用实例 broken-cd 表示没有热插拔探测引脚,使用轮询检测 cd-gpios 使用gpio管脚作为热插拔探测引脚 non-removable 表示不能进行热插拔,设备一直连接(比如eMMC) 上面三个选项用于指定热插拔探测选项,如果三个选项都没有指定&…