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

news2024/12/25 9:19:41

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.coloradmin.cn/o/644765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

团队管理之性能实施团队日志13

项目经过了,8 个业务系统和 7 个基础架构系统的测试之后,又完成了全链路的两个域的测试,终于进入了尾声。 过程中发现了 257 个问题(只统计了 8 个业务系统),平均每个系统 32.125 个。问题 age 达到 861.77…

「微服务架构模式」编曲与编舞——让系统协同工作的不同模式

介绍 Krzysztof(采访者):商业组织是由专家组成的,他们在他们最了解的领域提供产品或服务,以获得共同的商业成果。例如,营销团队努力争取新客户,销售团队向这些客户销售产品,客户关系…

用4种回归方法绘制预测结果图表:向量回归、随机森林回归、线性回归、K-最近邻回归

文章目录 表格部分数据如下运行效果如下代码解析完整代码附件 表格部分数据如下 附件里会给出全部数据链接 运行效果如下 代码解析 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontPropertiesfont FontP…

FPGA实现USB3.0 UVC 相机彩条视频输出 基于FT602驱动 提供工程源码和QT上位机源码

目录 1、前言2、UVC简介3、FT602芯片解读4、我这儿的 FT601 USB3.0通信方案5、详细设计方案基于FT602的UVC模块详解 6、vivado工程详解7、上板调试验证8、福利:工程代码的获取 1、前言 目前USB3.0的实现方案很多,但就简单好用的角度而言,FT6…

用代码玩转迷你图:手把手教你用编程语言打造简洁易读的数据图表!

前言 迷你图(Mini Chart)最早起源于流程图和组织架构图中的一种简化图形,用于表示一个大型数据集合中的趋势和变化。随着数据可视化技术的发展,迷你图也被广泛应用在各种类型的数据图表中,例如折线图、柱形图、散点图…

【027】C++类和对象的基本概念

C类和对象的基本概念 引言一、类的封装性二、定义一个类三、设计一个类3.1、示例一:设计一个Person类3.1、示例二:设计一个Cube类 四、成员函数在类外实现五、类在其他源文件中实现总结 引言 💡 作者简介:专注于C/C高性能程序设计…

RFID工业读头工作原理和优势

RFID工业读头由天线,耦合元件,芯片,可对RFID标签信息进行读取和写入,在工业上也常作为信息的传输、处理的载体。下面我们就一起来了解一下,工业读头工作原理和优势是什么。 工业读头工作原理 工业RFID读头主要是通过天…

微信小程序嵌入H5页面,最简单的兼容方式web-view

//index.wxml---------------------------------------- <web-view src"{{src}}" />//index.js---------------------------------------- Page({data: {src: "https://dz.wedoyun.cn/mobile/?v20230615",},});

1.6C++双目运算符重载

C双目运算符重载 C中的双目运算符重载指的是重载二元运算符&#xff0c;即有两个操作数的运算符&#xff0c;如加减乘除运算符“”、“-”、“*”和“/”等。 通过重载双目运算符&#xff0c;可以实现自定义类型的运算符操作。 比如可以通过重载加减运算符实现自定义类型的向…

电脑误删文件恢复怎么做?数据恢复,4招就行!

我有定期清理电脑的习惯&#xff0c;一般都会将电脑里的一些垃圾文件删除&#xff0c;但在最近一次的清理中&#xff0c;我不小心把重要的文件当作垃圾文件删除了&#xff0c;请问有什么比较好的解决方法吗&#xff1f;非常感谢&#xff01; 当下电脑的使用越来越频繁&#xff…

抖音seo源码-源代码开发搭建-开源部署(不加密)

抖音SEO矩阵系统源码开发功能模型是指在抖音平台上提高视频搜索排名的一种算法模型。该功能模型包括多个部分&#xff0c;如内容优化、用户交互、社交化推广等&#xff0c;通过对这些因素的优化和提升&#xff0c;达到提高视频搜索排名的目的。具体实现包括使用关键词、标签等优…

谷粒商城p46-配置网关路由与路径重写

软件 &#xff1a; vscode idea 服务&#xff1a; renren-fast&#xff0c;gulimall-product&#xff0c;gulimall-gateway、nacos 前提条件&#xff1a; gateway、renren-fast已经注册到nacos 注意&#xff1a; 1、renren-fast单独注入nacos依赖&#xff0c;不要注入common…

CAD绘制三维图形基础

绘制三维图形的基础操作包括&#xff1a; 1、打开3d绘图窗口&#xff0c;进入3d绘图界面 2、改变绘图视角 3、改变图形的展现形式 4、绘制基本的几何图形 5、掌握对齐等修改功能 6、掌握基础布尔操作 首先是切换工作空间&#xff0c;在界面的右下角有一个类似设置的按钮…

使用VitePress创建个人网站并部署到GitHub

网站在线预览 参考文档&#xff1a; VitePress 创建 GitHub 远程仓库 克隆远程仓库到本地 git clone gitgithub.com:themusecatcher/front-end-notes.git进入 front-end-notes/ 目录&#xff0c;添加 README.md 并建立分支跟踪 echo "# front-end-notes" >>…

配置Kettle连接大数据HDFS

需求&#xff1a;配置Kettle连接大数据HDFS Kettle对接大数据平台的配置 一&#xff0e;软件环境 1.Hadoop集群,版本&#xff1a;Hadoop3.3.0 2.ETL工具Kettle&#xff0c;版本&#xff1a;pdi-ce-7.0.0.0-25 &#xff08;解压命令&#xff1a;*.zip 用 unzip 解压&#xf…

4自由度并联机器狗实现下蹲功能

1. 功能说明 本文示例将实现R328a样机4自由度并联机器狗下蹲的功能。 2. 结构说明 本样机的并联驱动结构与 【R082】4自由度并联四足 类似&#xff0c;两款样机可以对比来看。 本样机腿部的结构如下图所示&#xff1a;驱动核心部分是两个5杆结构的组合。 两个五杆结构图 驱动核…

ASP.NET MVC下的四种验证编程方式

ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表&#xff0c;但是在真正执行目标Action方法之前&#xff0c;还需要对绑定的参数实施验证以确保其有效性&#xff0c;我们将针对参数的验证成为Model绑定。总地来说&#xff0c;我们可以采用4种不同的编程模式来进行针…

手机号码篡改测试-业务安全测试实操(6)

手机号码篡改测试, 用户ID篡改测试 订单ID篡改测试-业务安全测试实操(5)_luozhonghua2000的博客-CSDN博客 手机号码篡改测试 测试原理和方法 手机号通常可以代表一个用户身份。当请求中发现有手机号参数时,我们可以试着修改它,测试是否存在越权漏洞。系统登录功能一般先判断…

计算机视觉研究院重新开启知识星球(前期我们免费加入)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 Column of Computer Vision Institute 满足广大兴趣关注者&#xff0c;最近我们平台重启了”知识星球“&…

聚观早报 |梅西将于14日淘宝开播;李斌回应蔚来全系车型降3万元

今日要闻&#xff1a;梅西将于6月14日上淘宝开播&#xff1b;李斌回应"蔚来全系车型降价3万元”&#xff1b;美国联邦贸易委员会阻止微软收购暴雪&#xff1b;称iPhone15洗系列最高涨价200美元&#xff1b;极兔正与顺丰洽谈入股 梅西将于6月14日上淘宝开播 据悉&#xff…