#!/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
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:10.8.103.62,2025-12-09 04:48:37,Processed in 0.01381 second(s).