rv1126-rv1109-RkLunch.sh

news2024/11/25 3:54:45

RkLunch.sh是个脚本,来自哪里

书接上回:rv1126-rv1109-瑞芯微的 IPC 程序_旋风旋风的博客-CSDN博客

修改之后

屏蔽了两行之后,就没有开机自启rklunch了:

#        [ -f /oem/RkLunch.sh ] && source /oem/RkLunch.sh

就是运行source /oem/RkLunch.sh

这里就跑了RkLunch.sh脚本

#!/bin/sh

check_linker()
{
        [ ! -L "$2" ] && ln -sf $1 $2
}

network_init()
{
	ethaddr1=`ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}'`

	if [ -f /data/ethaddr.txt ]; then
		ethaddr2=`cat /data/ethaddr.txt`
		if [ $ethaddr1 == $ethaddr2 ]; then
			echo "eth HWaddr cfg ok"
		else
			ifconfig eth0 down
			ifconfig eth0 hw ether $ethaddr2
		fi
	else
		echo $ethaddr1 > /data/ethaddr.txt
	fi
	ifconfig eth0 up && udhcpc -i eth0
}

post_chk()
{
	#TODO: ensure /userdata mount done
	cnt=0
	while [ $cnt -lt 30 ];
	do
		cnt=$(( cnt + 1 ))
		if mount | grep -w userdata; then
			break
		fi
		sleep .1
	done

	network_init &
	check_linker /userdata   /oem/usr/www/userdata
	check_linker /media/usb0 /oem/usr/www/usb0
	check_linker /mnt/sdcard /oem/usr/www/sdcard

	# if /data/rkipc not exist, cp /usr/share
	rkipc_ini=/userdata/rkipc.ini
	default_rkipc_ini=/tmp/rkipc-factory-config.ini

	if [ ! -f "/oem/usr/share/rkipc.ini" ]; then
		media-ctl -p | grep os04a10
		if [ $? -eq 0 ] ;then
			ln -s -f /oem/usr/share/rkipc-os04a10.ini $default_rkipc_ini
		fi
		media-ctl -p | grep imx335
		if [ $? -eq 0 ] ;then
			ln -s -f /oem/usr/share/rkipc-imx335.ini $default_rkipc_ini
		fi
		media-ctl -p | grep imx415
		if [ $? -eq 0 ] ;then
			ln -s -f /oem/usr/share/rkipc-imx415.ini $default_rkipc_ini
		fi
	fi
	tmp_md5=/tmp/.rkipc-ini.md5sum
	data_md5=/userdata/.rkipc-default.md5sum
	md5sum $default_rkipc_ini > $tmp_md5
	chk_rkipc=`cat $tmp_md5|awk '{print $1}'`
	rm $tmp_md5
	if [ ! -f $data_md5 ];then
		md5sum $default_rkipc_ini > $data_md5
	fi
	grep -w $chk_rkipc $data_md5
	if [ $? -ne 0 ] ;then
		rm -f $rkipc_ini
		echo "$chk_rkipc" > $data_md5
	fi

	if [ ! -f "$default_rkipc_ini" ];then
		echo "Error: not found rkipc.ini !!!"
		exit -1
	fi
	if [ ! -f "$rkipc_ini" ]; then
		cp $default_rkipc_ini $rkipc_ini -f
	fi

	if [ ! -f "/userdata/image.bmp" ]; then
		cp -fa /oem/usr/share/image.bmp /userdata/
	fi

	if [ -d "/oem/usr/share/iqfiles" ];then
		rkipc -a /oem/usr/share/iqfiles &
	else
		rkipc &
	fi
}

post_chk &

很简单的一个脚本,于是我剖析一下脚本,究竟是做了啥

这里是关键!                rkipc &

 ./oem/usr/bin/rkipc

运行了这个可执行文件进入摄像头预览demo:rkipc

\rk\rv1126_rv1109\buildroot\package\rockchip\rkipc\Config.in

config BR2_PACKAGE_RKIPC
	bool "rockchip rkipc"
	select BR2_PACKAGE_CAMERA_ENGINE_RKAIQ
	select BR2_PACKAGE_WPA_SUPPLICANT
	select BR2_PACKAGE_FREETYPE
	help
	  rockchip rkipc

choice
prompt "Platform type"
	default BR2_PACKAGE_RKIPC_RK3588
	help
	  Select a platform type.

config BR2_PACKAGE_RKIPC_RK3588
	bool "Compile for rk3588 ipc"
	select BR2_PACKAGE_ROCKIT
	depends on BR2_PACKAGE_RKIPC

config BR2_PACKAGE_RKIPC_RK3588_MULTI_IPC
	bool "Compile for rk3588 multi ipc"
	select BR2_PACKAGE_ROCKIT
	depends on BR2_PACKAGE_RKIPC

config BR2_PACKAGE_RKIPC_RV1126
	bool "Compile for rv1126 ipc"
	select BR2_PACKAGE_RKMEDIA
	depends on BR2_PACKAGE_RKIPC

config BR2_PACKAGE_RKIPC_RV1126_BATTERY_IPC
	bool "Compile for rv1126 battery ipc"
	select BR2_PACKAGE_ROCKIT
	select BR2_PACKAGE_VENDOR_STORAGE
	depends on BR2_PACKAGE_RKIPC
endchoice

\rk\rv1126_rv1109\buildroot\package\rockchip\rkipc\rkipc.mk

RKIPC_SITE = $(TOPDIR)/../app/rkipc
RKIPC_SITE_METHOD = local

RKIPC_DEPENDENCIES = camera-engine-rkaiq wpa_supplicant freetype common_algorithm

ifeq ($(BR2_PACKAGE_RKIPC_RK3588), y)
    RKIPC_CONF_OPTS += -DCOMPILE_FOR_RK3588=ON
endif

ifeq ($(BR2_PACKAGE_RKIPC_RK3588_MULTI_IPC), y)
    RKIPC_CONF_OPTS += -DCOMPILE_FOR_RK3588_MULTI_IPC=ON
endif

ifeq ($(BR2_PACKAGE_RKIPC_RV1126), y)
    RKIPC_DEPENDENCIES += rkmedia rkfsmk
    RKIPC_CONF_OPTS += -DCOMPILE_FOR_RV1126_RKMEDIA=ON
endif

ifeq ($(BR2_PACKAGE_RKIPC_RV1126_BATTERY_IPC), y)
	RKIPC_DEPENDENCIES += rockit rktoolkit
	RKIPC_CONF_OPTS += -DCOMPILE_FOR_RV1126_BATTERY_IPC=ON
endif

$(eval $(cmake-package))

编译相关的东西

主要代码在./app/rkipc

 

 这里就一个app了,后续大家有兴趣自己跟了,我到此为止了.我只是剖析一下开机自启的流程和原理,app代码部分就分析了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033784.html

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

相关文章

基于微信小程序的驾校报名系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有:驾校教练的主要功能有:管理员的主要功能有:具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考论文参考源码…

动手学深度学习(pytorch版)第二章-2.2数据预处理Note-pandas

1. 创建 import osos.makedirs(os.path.join(.., data), exist_okTrue) data_file os.path.join(.., data, house_tiny.csv) with open(data_file, w) as f:f.write(NumRooms,Alley,Price\n) # 列名f.write(NA,Pave,127500\n) # 每行表示一个数据样本f.write(2,NA,106000\…

平板用的触控笔什么牌子好?性价比高的触控笔推荐

随着平板电脑的普及,越来越多用户为了方便都选择了电容笔,电容笔已经完全代替了我们的手指,并且使我们的书写速度得到了极大的提升。然而,因为其的独特的重力压感功能与芯片技术,导致了原装笔的售价一直居高不下&#…

深入探析NCV7356D1R2G 单线CAN收发器各项参数

NCV7356D1R2G深力科是一款用于单线数据链路的物理层器件,能够使用多种具碰撞分解的载波感测多重存取 (CSMA/CR) 协议运行,如博世控制器区域网络 (CAN) 2.0 版。此串行数据链路网络适用于不需要高速数据的应用,低速数据可在物理介质部件和微处…

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示: 要使用xpath定位这个div元素,并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …

线程安全,与多线程的应用

一、线程安全 1.什么是线程安全 2.用程序模拟线程安全问题 public class Account {private double money;//余额private String cardId;//卡号public Account() {}public Account(double money, String cardId) {this.money money;this.cardId cardId;}public void drawMone…

LeetCode 1993. 树上的操作:大模拟

【LetMeFly】1993.树上的操作:大模拟 力扣题目链接:https://leetcode.cn/problems/operations-on-tree/ 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 parent[i] 是第 i 个节点的…

基于微信小程序的健康评估系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信端的主要功能有:医生微信端的主要功能有:管理员的主要功能有:具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考论文参考源码获取…

iOS17正式版BUG汇总:无法正常拨打电话、小组件不可用、无线充电不可用等问题

今天凌晨 iOS 17 正式版发布,相信不少尝鲜派已经更新体验了iOS17的新功能了,但还有很多用户选择观望看是否要升级,小编汇总了目前已更新的用户反馈的已知BUG,供大家查看是否要更新iOS17正式版! 目前已知BUG&#xff1…

【LeetCode75】第六十二题 多米诺和托米诺平铺

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我一个数字n,表示我们有2*n大小的地板需要铺。 我们拥有两种瓷砖,一种的长度为2的多米诺,另一…

Jetpack Compose干货,如何让Compose Dialog从屏幕任意方向进入

一、前言 来个效果图,基于Compose Dialog,最终要实现的库能力如下: 这里使用的是这个包下面的: androidx.compose.ui.window.Dialog androidx.compose.material3.AlertDialog它内部调用的也是androidx.compose.ui.window.Dialog …

Centos7 安装部署 Kubernetes(k8s) 高可用集群

1:基础环境准备 宿主机系统集群角色服务器IP主机名称容器centos7.6master192.168.2.150ks-m1dockercentos7.6master192.168.2.151ks-n1dockercentos7.6master192.168.2.152ks-n2docker 1.1 服务器初始化及网络配置 VMware安装Centos7并初始化网络使外部可以访问*…

No2.详解【2023年全国大学生数学建模竞赛】C题——蔬菜类商品的自动定价与补货决策(代码 + 详细输出 + 数据集代码 下载)

只有不回避痛苦和迷茫的人,才有资格去谈乐观和坚定。命运不会厚待谁,悲喜也不会单为你准备。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能…

爬虫获取接口数据

上一讲讲的是获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获得,下面我就来讲讲如何爬取这类数据。 以巨潮资讯网爬取比亚迪企业年报为例。…

解决windows端口占用

WINR打开cmd窗口;输入命令查看哪个进程占用,8848为要查询占用的端口号:netstat -ano | findstr 8848; 3.杀死进程,输入taskkill /f /t /im 10672 其中10672为上面命令查出来的进程号。

24. 图论 - 图的表示种类

Hi,你好。我是茶桁。 之前的一节课中,我们了解了图的来由和构成,简单的理解了一下图的一些相关概念。那么这节课,我们要了解一下图的表示,种类。相应的,我们中间需要穿插一些新的知识点用于更好的去理解图…

Python异步编程并发执行爬虫任务,用回调函数解析响应

一、问题:当发送API请求,读写数据库任务较重时,程序运行效率急剧下降。 异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用,经常面临对外发送网络请求,调用外部接口,或者不断更新数据库或文…

漏刻有时数据可视化Echarts组件开发(31):geomap伪3D配置示例

echarts.registerMap("丹东", getData());let data = getData().features.map((item) => {return {name: item.properties.name,};});const points = [[116.289929,40.265374],[116.754101,40.063877],[116.229504,39.764735],[115.883434,39.899721]]let option …

Unity的AB包相关

1、打包 在这个界面左边右键,CreateNewBundle 将要打包的模型制作成预设体 在下面勾选 选好平台路径,点击Build 2、加载AB包 public class ABTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){//加载AB包AssetB…

pymysql调用存储过程

视频版教程 Python操作Mysql数据库之pymysql模块技术 我们首先创建一个简单的存储过程 DELIMITER //CREATE PROCEDURE test_add(m INT,n INT, OUT result INT) BEGIN SET resultmn;END; //测试: SET s0; CALL test_add(1,2,s); SELECT sPymysql调用存储过程实现&…