开机启动脚本

我创建了一个自己的应用程序自启动脚本,又创建了一个摄像头开机自启动脚本(mjpg_streamer),我发现摄像头的脚本可以运行,应用程序的脚本不运行。用ps命令查看进程,只有mjpg_streamer进程,没有应用程序的进程。

应用程序脚本:

#!/bin/sh /etc/rc.common
# Copyright (C) 2009 OpenWrt.org

START=99
USE_PROCD=1
PROG=/usr/bin/intellicar

start_service() {
        procd_open_instance
        procd_set_param command "$PROG"
        procd_close_instance
}

stop_service(){
        killall $PROG
}

摄像头的脚本:

#!/bin/sh /etc/rc.common
# /init.d/startcamera
START=50
start()
{
        mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so -w www"
}
stop()
{
        killall startcamera
}

@mangoo,请帮忙看一下,问题出在哪,谢谢。顺祝端午节安康。

好的,谢谢。

中断号有两种可能:
1、文档写错了,或者是DTS遗留问题一直没改。
2、这里写中断没有作用,因为看门狗的复位是从硬件上直接发起复位,不需要经过INTC控制器。并且看门狗的重载也无需中断参与。我已经测试了将DTS这部分中断删除,经测试没有任何影响,看门狗工作正常。

@100 和 reg <100>没错误,内核代码里根据100做的偏移(drivers/watchdog/mt7621_wdt.c):
!1593309832917-tim截图20200628100254.jpg

剩下唯一的问题是中断号。

这是事情有点诡异,从dts(15.05到19.07)看,wdt完全是被配置到了timer0(int24)上,但实际上wdt在正常工作,从
reg r 10000128 可以读到。

稍等这两天我查下这个事情。

非常感谢,我手上用的是mt7688的datasheet,没有你发的这个版本全。

问题1:
我看dts里面 watchdog:

	watchdog@100 {
		compatible = "ralink,mt7628an-wdt", "mtk,mt7621-wdt";
		reg = <0x100 0x30>;

		resets = <&rstctrl 8>;
		reset-names = "wdt";

		interrupt-parent = <&intc>;
		interrupts = <24>;
			
	};

这个interrupt属性24是中断号吗?如果是,datasheet里面的watchdog的中断号是23,如下:

!1593305679212-2c663a07-0d8e-46ec-a09f-366110f840c6-image.png
这是为什么?

问题2:

假设我要使用timer0中断,源程序如下:
static int add_irq(int timer,void* data)
{
int err=0;
int irq_number=_timers[timer].irq;//中断号

debug("Adding IRQ %d handler\n",irq_number);

err=request_irq(irq_number, timer_interrupt, 0, DRV_NAME, data);

if(!err)
{
	debug("Got IRQ %d.\n", irq_number);
	return irq_number;
}
else
{
	debug("Timer IRQ handler: trouble requesting IRQ %d error %d\n",irq_number, err);
}

return -1;

}
irq_number(中断号)可以直接写成24吗,和dts里面的watchdog是否有冲突?

谢谢。

@lonfaye开机启动脚本 中说:

需要一个定时器,当定时器在设定的时间内进入中断

Loading... page101

启动脚本问题:

后来把摄像头的启动脚本改成/etc/init.d/mjpg-streamer start就可以了,应用程序和摄像头都可以启动。

我发现再init.d里面已经有mjpg-streamer启动脚本,我猜测如果再写一条mjpg_streamer -i “input_uvc.so -d /dev/video0 -y” -o "output_http.so -w www"命令脚本,是不是冲突了(不明白这其中的原理)?因此就改成了上面的命令,即start已有的这个mjpg-streamer启动脚本。

另外一个问题:

我在写一个编码器程序,需要一个定时器,当定时器在设定的时间内进入中断后,计算编码器脉冲的个数,从而计算当前motor的速度。因此我写一个定时器中断的驱动,但是在怎么获取MT7688定时器的中断号上卡住了,查mt7688的datasheet和一些资料,都没找到,方便的话,麻烦回复一下这个问题,谢谢。

@lonfaye 还请测试后回复下,我暂时没时间试验:grinning:

好的,谢谢。

看着应该是没什么问题。只需要注意的是START=99是要等到系统完全启动(jffs2初始化完毕)才执行。
你看下是不是没有等到jffs2初始化完?