收藏文章 楼主

builroot 添加app helloworld 并开机自动启动 app.sh

版块:摄像头 RV1126   类型:普通   作者:小绿叶技术博客   查看:1931   回复:0   获赞:0   时间:2022-04-18 09:12:47

#!/bin/bash

# nano 命令是编辑文本命令,编辑后 ctrl +x   离开按y 保存

# ~ 是家目录


#----------- 添加引用 和 创建config 与 mk ---------#

nano ~/RV1126/buildroot/package/Config.in 

# 编辑文本在顶部标签:menu "Target packages"  里面添加引用子配置 source "package/MXI_A01/Config.in" 需要间隔为tab ,不能为空格


mkdir ~/RV1126/buildroot/package/MXI_A01

# 创建自定义app的【编译目录】


nano ~/RV1126/buildroot/package/MXI_A01/Config.in

# 编辑子配置文件,bool指定 与 BR2_package 后缀名字一致,与项目名相同


config BR2_PACKAGE_MXI_A01

bool "MXI_A01"

    help

    This is project of RV1126.




nano ~/RV1126/buildroot/package/MXI_A01/MXI_A01.mk 

# 编辑 mk文件


################################################################################

#

# MXI_A01_  本路径禁止存放无关文件,否则无法编译。chmod -R 777 ~/RV1126/* 并且删除之前的编译

################################################################################

MXI_A01_VERSION = 0.0.1

MXI_A01_SITE = $(TOPDIR)/../app/MXI_A01

MXI_A01_SITE_METHOD =local

MXI_A01_INSTALL_STAGING = YES


define MXI_A01_BUILD_CMDS

        $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all

endef


define MXI_A01_INSTALL_TARGET_CMDS

        $(INSTALL) -D -m 0755 $(@D)/output/app1 $(TARGET_DIR)/bin

endef

#-编译之前的app  变量:$(TOPDIR) 为目录:/RV1126/builroot-#



define MXI_A01_INSTALL_INIT_SYSV

  $(INSTALL) -D -m 0755 package/MXI_A01/S50app1 \

$(TARGET_DIR)/etc/init.d/S50app1

endef


define MXI_A01_INSTALL_INIT_SYSTEMD

$(INSTALL) -D -m 644 package/MXI_A01/app1.service \

$(TARGET_DIR)/usr/lib/systemd/system/app1.service

mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants

ln -fs ../../../../usr/lib/systemd/system/app1.service \

$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/app1.service

endef


#-开机启动-#

$(eval $(generic-package))




#------ S50app1 ----------#


nano ~/RV1126/buildroot/package/MXI_A01/S50app1

# 编辑开机启动中的脚本


#!/bin/sh


start() {

printf "Starting app1: "

start-stop-daemon -S -q -m -b -p /var/run/app1.pid \

--exec /bin/app1 \

-- -c /etc/app1/app1.conf

[ $? = 0 ] && echo "OK" || echo "FAIL"

# 上面为实验,下面为启动


        start-stop-daemon --start --background --exec /bin/app1

}

stop() {

printf "Stopping app1: "

start-stop-daemon -K -q -p /var/run/app1.pid

[ $? = 0 ] && echo "OK" || echo "FAIL"

}

restart() {

stop

start

}


case "$1" in

  start)

start

;;

  stop)

stop

;;

  restart|reload)

restart

;;

  *)

echo "Usage: $0 {start|stop|restart}"

exit 1

esac


exit $?




#---------- app1.service ---------#

nano ~/RV1126/buildroot/package/MXI_A01/app1.service


[Unit]

Description=runing app1

# 在网络初始化之后启动

After=network.target


[Service]

ExecStart=/bin/app1 -c /etc/app1/app1.conf

ExecReload=/bin/kill -HUP $MAINPID

Restart=always


[Install]

WantedBy=multi-user.target









##################### 项目app:用c 语言 添加app 和 Makefile ######################


# mkdir ~/RV1126/buildroot/../app/MXI_A01   这一句等于下面目录

mkdir ~/RV1126/app/MXI_A01

# 创建app 目录


nano ~/RV1126/app/MXI_A01/Makefile

# makefile 为编译c语言


NAME_APP1 = app1  

TARGETS = $(NAME_APP1) 

SOURCE_APP1 = $(SOURCE_COMMON) $(wildcard ./app_main/*.c)  

OBJ_APP1 = $(patsubst %.c, %.o, $(SOURCE_APP1))  

CFLAGS = -Wall -c  

CC = gcc 

all: $(TARGETS)  

$(NAME_APP1): $(OBJ_APP1)  

@mkdir -p output/  

$(CC) $(OBJ_APP1) -o output/$(NAME_APP1)  

%.o: %.c  

$(CC) $(CFLAGS) $< -o $@  


.PHONY: clean  

clean:  

rm -rf $(OBJ_APP1) output/






mkdir ~/RV1126/app/MXI_A01/app_main

nano ~/RV1126/app/MXI_A01/app_main/app_main.c 

# 在项目路径下新建一个app 目录存放c语言,并编写


#include <stdio.h>

int main(void)

{

 printf("-----------Hello world-----------\n");


 system("amixer -c1 cset numid=1 2");

 system("printf 'defaults.pcm.card 1 \n defaults.pcm.device 0' > ~/.asoundrc"); 

 system("aplay -Dhw:1,0 /mp3/xp.wav");

 system("aplay /mp3/xp.wav");

 return 0;

}

# systerm() ; 调用shell 命令 播放声音命令

# 音频文件只支持 wav,存放 ~/RV1126/buildroot/board/rockchip/common/base 目录下,新建一个 mp3 目录,自动拷贝到编译里面。

# printf 'defaults.pcm.card 1 \n defaults.pcm.device 0' > ~/.asoundrc  是写入家目录下调用spk喇叭。


nano ~/RV1126/buildroot/configs/rockchip_rv1126_rv1109_facial_gate_defconfig

 添加:BR2_PACKAGE_MXI_A01=y


# 编写默认配置添加引用子配置 名字:MXI_A01才开始编译



./build.sh


# 编写路径: ~/RV1126/buildroot/package/MXI_A01

# 编译生成目录:~/RV1126/buildroot/output/rockchip_rv1126_rv1109_facial_gate/target

# 项目输出(临时存放):~/RV1126/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/MXI_A01-0.0.1

# ### 注意:重新编译需要 删除:rm -rf ~/RV1126/buildroot/output/rockchip_rv1126_rv1109_facial_gate/build/MXI_A01-0.0.1/

# 注意: 当文件大于5M,需要删除里面自己的大文件 ~/RV1126/buildroot/output/rockchip_rv1126_rv1109_recovery/target


apt install -y cutecom

# 安装USB调试工具


sudo chmod 777 /dev/ttyUSB0 

# 桌面打开 cutecom , 最右边的 Settings 打开设置---> Baudrate 选择 115200


#-------- start-stop-daemon  命令其它参数 ------------#


--start            启动一个守护进程

--stop             终止一个守护进程

--status           查看一个守护进程运行状态

--pidfile          记录进程号(pid)的文件

--exec             启动进程的入口

--user             启动进程的用户

--make-pidfile     如果进程自己不创建pidfile,可以通过该参数指定

--quiet            不输出警告信息

--retry            启动失败后重试的次数

--background       指定为后台运行模式,如果进程不是后台模式则需加如这个参数

--                 空格之后的参数是传给--exec 的 如上列也就是/usr/local/nginx/sbin/nginx





################### spk 控制 ####################

#!/bin/bash

# 播放脚本编写


cat /proc/asound/cards

# 列出声卡序号

# rockchippdmmica 是硅麦的声卡,为默认声卡,只能录音不能播放,

# rockchiprk809co 为 rk809 集成的声卡,可以录音和播放,录音仅限 LANE IN,Loopback 为本地回环声卡


amixer -c 1 contents

# 查看 声卡序号为 1 的状态


aplay -l

# 查看声卡id  和 设备id


amixer -c1 cset numid=1 2 

# 打开 spk 喇叭功能

# 2 1 LANE IN;  1 3 HP功能 仅仅耳机有输出; 1 6 HP 和 SPK 两者都有输出


aplay -Dhw:1,0 /root/xp.wav

# 播放声音,不受音量调节


# 配置文件:   cat /usr/share/alsa/alsa.conf

# vi /etc/asound.conf


vi .asoundrc 

# 在用户家目录下,选择设备1 中的 0

defaults.pcm.card 1

defaults.pcm.device 0


amixer set -c 1 Master  30

# 调整音量


aplay /root/xp.wav

# 受音量调节


# 首次编译 RV1126: https://www.eisc.cn/index.php?c=read&id=1078&page=1

提供企业建站服务,免费网防系统,提交信息登录 http://yundun.ddoss.cn 邮箱: proposal@ddoss.cn 
回复列表
默认   热门   正序   倒序

回复:builroot 添加app helloworld 并开机自动启动 app.sh

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息