0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RV1126开发板设置快速开机自启动

ljx2016 来源:ljx2016 作者:ljx2016 2025-04-17 14:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 简要介绍:

用户想要在S99_userapp调用之前就启动应用程序,可以通过systemd方案实现。

1.1 Systemd

Systemd 是一个系统和服务管理器,也是 Linux 操作系统中最常用的初始化系统之一。最早是为了代替传统的初始化系统(init)而开发的,相较于传统 init,systemd 具有支持并行启动,【可同时启动多个服务】,提高系统启动速度的优势,可以更好地管理系统和服务进程。目前,许多主流 Linux 发行版都采用了 systemd 作为其默认的初始化系统,包括 Ubuntu、Debian、Fedora、CentOS、Arch Linux 等。

1.2 服务单元文件

Systemd通过【服务单元文件】进行开机启动管理。【服务单元文件】指的是在 /etc/systemd/system 目录中以“.service”后缀的结尾的文件。

2. 操作指导:

2.1 配置开机启动服务

建立adb连接(不清楚如何操作,可参考《入门指南/开发板调试方式介绍》中的1.ADB调试)

执行命令,切换到板卡环境:

adb shell

wKgZO2gAmd-AE8W4AAAqiCgwz14471.png

首先我们在 /etc/systemd/system/ 创建一个自己的【服务单元文件(Systemd Service)】:myservice.service。

cd /etc/systemd/system/ vim myservice.service

wKgZPGgAmeCAVDt2AAC4N96OmsE071.png

注意:Systemd Service 既可位于 /etc/systemd/system(供系统管理员和用户使用),也可以位于/usr/lib/systemd/system(供发行版打包者使用),我们一般使用前者即可。

【服务单元文件】脚本文件以 .service 结尾,由 Unit、Service 和 Install 三个区块组成,以下为 service 文件脚本样例:

wKgZO2gAmeCALOOGAABnXsLlWz0758.png

注意:ExecStart为指定启动单元的命令或者脚本,是配置文件里面最重要的字段,下面来演示如何创建并编辑脚本。

2.2 创建并编辑脚本

创建一个可执行的脚本用于启动Service进程,用户可根据需求向脚本写入需要执行的可执行文件,此处的脚本仅服务于演示需要。

执行命令,先定位到/userdata目录:

cd /userdata

然后通过vim命令,可以创建start.sh脚本进行编辑:

touchstart.sh chmod755start.sh vimstart.sh

wKgZPGgAmeCAXvGCAAAawRKQ44g562.png

注意:这里简单地通过编译hellonano.c生成了hellonano可执行文件,仅为在此进行说明演示。用户需根据自己需求向脚本写入需要执行的可执行文件。

2.3 验证开机启动:

在创建或修改任何【服务单元文件】后,我们必须让 systemd 知道有新的【服务单元文件被创建】或者【服务单元文件被修改】,可通过下方命令让systemd执行查找与同步:

systemctl daemon-reload

此时,我们新的【服务单元文件】应该已经被识别,我们可通过下方命令启动它:

systemctl start myservice.service

最后,告诉 systemd 使能新的【服务单元文件】,以便每次开机启动时它都会启动:

systemctl enable myservice.service

注意:您不会从此命令中获得反馈,因为它所做的只是向 systemd 发送一条消息,告诉它启动您的服务。您键入的命令不会停留以查看接下来会发生什么。

我们可以用以下命令来检查我们的服务,确保它看起来没问题

systemctl status myservice.service

wKgZPGgAmeCAe5LsAACIRuU-KP8941.png

Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
CGroup块:应用的所有子进程
日志块:应用的日志

下面我们进行软件重启,在adb shell环境下输入重启命令

reboot

进入板卡环境

adb shell

最终程序运行后,可在ps -x进程列表中看到进程在启动运行

ps -x

wKgZO2gAmeGABn-uAAGYvlvzOQM043.png

注意:要在该程序源代码中加入死循环,否则无法看到该程序正在运行

3. 详细说明:

wKgZPGgAmeGAeiBbAABnXsLlWz0392.png

3.1 [Unit] 启动顺序与依赖关系

定义控制单元 [Unit]

所有引导过程中 Systemd 要控制的东西都是一个单元。基本的用法如下:

Description:代表整个单元的描述,可根据需要简单填写。

Environment:环境变量或参数(系统环境变量此时无法使用)

After:描述服务类别,表示本服务需要在某服个务(*.service)或多个服务启动后再启动,也可以表示需要在某个服务组(*.target)启动后再启动。

Before:表示本服务需要在某些服务启动之前启动,通常不建议使用此配置,因为后面的服务有可能会被本服务阻塞。

Defaultdependencies=no 可以禁止默认依赖的注入,是为了【减少错误】 和 【减少单元配置文件的体量】。

Wants:本单元启动了,它“想要”的单元也会被启动。但是这个单元若启动不成功,对本单元没有影响。

Requires: 这个设定并不能控制启动顺序,它表示"强依赖"关系,即如果该服务启动失败或异常退出,则本单元也无法启动,所以不建议使用这个字段。

OnFailure:若本单元启动失败了,那么启动这个单元作为折衷。

3.2 [Service] 启动行为

定义服务本体 [service]

在定义完了 Systemd 用来识别服务的单元后,我们来定义服务本体。基本的用法如下:

Type:服务的类型,各种类型的区别如下所示

simple:默认,这是最简单的服务类型。ExecStart字段启动的进程为主进程

forking:ExecStart 字段将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程(例如用 shell 脚本启动服务进程)。

oneshot:适用于那些被一次性执行的任务或者命令,它运行完成后便了无痕迹。类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务。

dbus:这个程序启动时需要获取一块 DBus 空间,所以需要和 BusName= 一起用。只有它成功获得了 DBus 空间,依赖它的程序才会被启动。

ExecStart:在输入的命令是start时候执行的命令,这里的命令启动的程序必须使用绝对路径,比如你必须用/sbin/arp而不能简单的以环境变量直接使用arp。

ExecStop:在输入的命令是stop时候执行的命令,要求同上。

ExecReload:这个不是必需,如果不写则你的service就不支持restart命令。ExecStart和ExecStop是必须要有的。

3.3 [Install] 安装服务

安装服务 [install]

服务编写完之后还需要被systemd装载,定义安装单元各个字段如下:

WantedBy:设置服务被谁装载,一般设置为multi-user.target

执行以下命令可查看multi-user.target所包含的所有服务

systemctl list-dependencies multi-user.target

wKgZO2gAmeGAKkJUAADraXw8dXU356.png

3.4关于TARGET

Target 的含义是【服务组】,如 WantedBy=multi-user.target 指的是该服务所属于 multi-user.target。当执行以下命令时,xxx.service 的符号链接就会被创建在 /etc/systemd/system/multi-user.target 目录下。

systemctl enable xxx.service

可以通过以下命令查看系统默认启动的 target

systemctl get-default

一般为 multi-user 或者是 graphical。因此配置好相应的 WantedBy 字段,可以实现服务的开机启动。

注意:常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    26

    文章

    6420

    浏览量

    120906
  • rv1126
    +关注

    关注

    0

    文章

    118

    浏览量

    4438
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【飞凌嵌入式RV1126B开发板试用体验】初识飞凌嵌入式RV1126B开发板

    这几天刚收到飞凌嵌入式RV1126B开发板,带大家先认识一下这块开发板,收到的开发板如下图。 开发板有主板和核心
    发表于 04-13 17:27

    【飞凌嵌入式RV1126B开发板】+两款开发板之比较

    目前两款常见的RV1126B开发板,一款是灵眸科技推出的EASY EAI Nano-TB(RV1126B)开发套件,另一款就是飞凌嵌入式RV1126
    发表于 03-05 23:32

    【飞凌嵌入式RV1126B开发板】+初识篇

    OK1126B-S开发板是飞凌嵌入式技术有限公司推出的一款开发,它配有十分丰富的外设资源,以此为基础可使学习及开发快速进入角色,其外观如图
    发表于 03-04 21:13

    触觉智能RV1126B核心配置USB复合设备(下)

    本文基于触觉智能RV1126B核心&开发板,为大家介绍配置USB复合设备配置实现,本章节将介绍ACM和UMS两种USB复合设备。
    的头像 发表于 02-10 13:41 464次阅读
    触觉智能<b class='flag-5'>RV1126</b>B核心<b class='flag-5'>板</b>配置USB复合设备(下)

    ElfBoard新品发布|【RV1126B】ELF-RV1126B开发板正式发布

    ELF-RV1126B开发板基于瑞芯微RV1126B处理器设计,集成四核ARMCortex-A53架构,主频达1.6GHz,并内置3TOPS@INT8算力的NPU,支持INT8/INT16混合精度
    的头像 发表于 01-16 16:59 3264次阅读
    ElfBoard新品发布|【<b class='flag-5'>RV1126</b>B】ELF-<b class='flag-5'>RV1126</b>B<b class='flag-5'>开发板</b>正式发布

    飞凌嵌入式旗下教育品牌推出RV1126B\RK3506B\RK3576新品开发板

    、学生、科研人员还是个人学习者,这次发布的新品绝对值得一看!ELF-RV1126B开发板——边缘AI视觉芯ELF-RV1126B开发板搭载瑞芯微RV
    的头像 发表于 01-09 10:09 1725次阅读
    飞凌嵌入式旗下教育品牌推出<b class='flag-5'>RV1126</b>B\RK3506B\RK3576新品<b class='flag-5'>开发板</b>

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    RV1126B核心已上市并稳定量产供应实测开始,设备使用触觉智能RV1126核心RV1126B核心
    的头像 发表于 12-11 17:13 2548次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126</b>B,CPU性能吊打<b class='flag-5'>RV1126</b>

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126
    发表于 11-03 10:00

    告别 RV1126,迎来更强选择!RV1126B 加量不加价,重塑 AI 硬件新标杆

    在科技飞速迭代的当下,嵌入式 AI 硬件领域的产品更新速度始终保持着高频节奏。曾经凭借稳定性能在市场中占据一席之地的 RV1126,如今正式迎来产品生命周期的新阶段 —— 停产。这一消息传出时,不少
    的头像 发表于 10-22 17:48 1377次阅读

    音诺恒YNH-363 RV1126人脸识别主板规格书

    音诺恒RV1126人脸识别主板规格书
    发表于 09-20 11:15 0次下载

    【上海晶珩睿莓1开发板试用体验】烧录SD启动卡配置开机脚本自启动sshd和NetworkManager

    rc-local.service systemctl status rc-local.service 开启rc-local服务并查看服务状态: 做完以上步骤,那么开发板每次开机之后都会自动启动sshd服务和nmcli程序,
    发表于 09-10 14:41

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,瑞芯微正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心EAI1126B-Core-T。相较于前代RV1126
    的头像 发表于 09-04 10:50 5160次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126</b>B,一文看懂升级差异

    基于RV1109/RV1126的直播推流方案

    基于RV1109/RV1126 的直播推流方案 新龙鹏科技有限公司    关键特性 1)输入输出接口支持MIPI/BT1120/LVDS输入,MIPI/LVDS输出   2)网络接口支持千兆网口
    的头像 发表于 09-01 12:25 917次阅读
    基于<b class='flag-5'>RV</b>1109/<b class='flag-5'>RV1126</b>的直播推流方案

    rk3568快速开机 快速启动实现

    想了解下rk官方目前对rk3568快速开机的实现有哪些,是否有成熟的方案。在官方文档上看到rv1126方案,不知道可否应用在rk3568上。有专业人士回答吗
    发表于 08-07 08:37

    ElfBoard技术贴|【RK3588】ELF 2开发板开机自启动详解

    在嵌入式系统开发中,合理管理开机自启动项目能够优化系统启动流程,确保关键服务和应用按时加载运行。本文将详细介绍在ELF2开发板Linux5.
    的头像 发表于 06-27 16:20 2217次阅读
    ElfBoard技术贴|【RK3588】ELF 2<b class='flag-5'>开发板</b><b class='flag-5'>开机</b><b class='flag-5'>自启动</b>详解