Petalinux 添加自定义启动后自动执行脚本_petalinux自启动脚本-程序员宅基地

技术标签: fpga  FPGA  linux  


前言

Petalinux 终归是属于Linux的其中一个发行版,也就是说它可以像绝大多数发行版本一样,向/etc/init.d目录添加自己的脚本,然后更改部分系统文件来实现。如果你的想法是这样,可以参考文章:Linux—添加开机启动(服务/脚本)

本文所介绍的方法,主要是用于在编译Petalinux镜像的时候,就将其添加进去。好处就是 Build Once ,Use All


一、操作步骤

  1. 初始化 PetaLinux 运行环境:
source <PetaLinux-安装目录>/settings.sh
  1. 创建自动执行脚本相关文件:
cd <工程根目录>
petalinux-create -t apps --template install -n <自定义脚本名字> --enable
  1. 修改 Bitbake 脚本文件: <工程根目录>/project-spec/meta-user/recipes-apps/<自定义脚本名字>/<自定义脚本名字>.bb
#
# This file is the <自定义脚本名字> recipe.
#

SUMMARY = "Simple <自定义脚本名字> application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://<自定义脚本名字> \
    "

S = "${WORKDIR}"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

inherit update-rc.d

INITSCRIPT_NAME = "<自定义脚本名字>"

INITSCRIPT_PARAMS = "start 99 S ."

do_install() {
        install -d ${D}${sysconfdir}/init.d
        install -m 0755 ${S}/<自定义脚本名字> ${D}${sysconfdir}/init.d/<自定义脚本名字>
}

FILES_${PN} += "${sysconfdir}/*"
  1. 修改修改目标脚本文件<工程根目录>/project-spec/meta-user/recipes-apps/<自定义脚本名字>/files/<自定义脚本名字> ,比如
#!/bin/sh

echo "Hello World!"
  1. 重新编译
petalinux-build

二、细节讲解

1.Petalinux 命令

petalinux-create -t apps --template install -n <自定义脚本名字> --enable

-t:创建的类型,自启动脚本文件在这其中是以app形式添加进去(表述不准确,有想深入了解请看UG1144)
--template:样板工程

2.Bitbake食谱

协议声明和工程文件地址,不重要

#
# This file is the <自定义脚本名字> recipe.
#

SUMMARY = "Simple <自定义脚本名字> application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://<自定义脚本名字> \
    "

重点

# 源目录
S = "${WORKDIR}"

# 脚本目录
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

# Bitbake类文件包含了一些bitbake任务的定义,例如怎么配置、怎么安装。
# 配方(recipes)文件继承类文件,就继承了这些任务的定义。
# 我们现在需要增加一个使用update-rc.d来配置自启程序,只要在配方(recipes)文件中继承。使用方法如下。
inherit update-rc.d

# 至于为什么是update-rc.d,可以在网上查到,该命令就是用于配置linux中自启动程序,
# 所以下面两项的意思就很简单了,就是update-rc.d的两个参数。
# 至于启动项“99”后面又跟的S,其实是指Linux里面的运行级别。1|2|3|4|5|6|0|S
INITSCRIPT_NAME = "<自定义脚本名字>"

INITSCRIPT_PARAMS = "start 99 S ."

# 1为单用户模式
# 2-4是文本模式,一般不用图形界面的话用3就行了,3是多用户字符界面模式
# 5是多用户图形模式
# 0关机
# 6重启
# S就是全都有

安装目录

do_install() {
        install -d ${D}${sysconfdir}/init.d
        install -m 0755 ${S}/<自定义脚本名字> ${D}${sysconfdir}/init.d/<自定义脚本名字>
}

FILES_${PN} += "${sysconfdir}/*"
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Markus_xu/article/details/120754243

智能推荐

C++将UTF-8编码的文件转化为GB2312编码_c++ utf-8转gb2312-程序员宅基地

文章浏览阅读1.9k次。C++将UTF-8编码的文件转化为GB2312编码我需要对一个html网页进行解析,html是使用UTF-8编码的。但是,我使用的visual Studio 19是使用gb2312进行编码的。当读入html文件并在控制台上输出时,中文自然全部变成了乱码所以,需要通过某些操作,对读入的字符串进行转化,将UTF-8编码转为GB2312编码在网上看了很多文章,都没有解决问题,或者过于复..._c++ utf-8转gb2312

信安软考 第十四章 恶意代码防范技术原理_第14章恶意代码防范技术原理-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏9次。恶意代码(Malicious code),是一种违背目标系统安全策略的程序代码,会造成目标系统信息泄露、资源滥用,破坏系统的完整性及可用性。它能够经过存储介质或网络进行传播,从一台计算机系统传到另一外一台计算机系统,未经授权认证访问或破坏计算机系统。通常许多人认为“病毒”代表了所有感染计算机并造成破坏的程序,但实际上,换成“恶意代码”更为贴切,病毒只是恶意代码的一种。恶意代码的种类包括。_第14章恶意代码防范技术原理

【IoT】产品设计:硬件成本核算,这篇文章就够了_硬件产品的成本能算得出来吗-程序员宅基地

文章浏览阅读4.5k次,点赞12次,收藏29次。今天主要谈谈硬件产品的成本核算问题。一款新产品上市,面临的直接问题就是「定价」,尤其对于初创企业而言,现金流意味着企业的生命线,定价会直接影响到公司的「毛利润」。毛利润直接决定你银行账户里的收益,是指你卖产品给用户获得的钱与你将产品交付到用户手中需要花费钱的差值。不同类型产品的毛利润差别很大,一般会通过计算毛利率代替。相比于小米硬件成本定价,靠增值服务收费的商业模式,多数硬件公司必须获取足够高的毛利润才能生存下去。无论一款产品要走什么样的定价策略,定价绕不开「成本核算..._硬件产品的成本能算得出来吗

使用IntrospectorCleanupListener 解决quartz引起的内存泄漏问题_quartz 定时任务 报错会引起内存增长吗-程序员宅基地

文章浏览阅读1.7k次。"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用IntrospectorCleanupListener作为相应的解决办法。"对于这一句话,引用关于IntrospectorCleanupListener一段解释:spring中的提供了一个名为 org.spring_quartz 定时任务 报错会引起内存增长吗

cordova + ionic混合开发常见问题_ionic4 import org.apache.cordova.file.fileutils;-程序员宅基地

文章浏览阅读1.3k次。1.ion-content 内置元素边距问题在使用的过程中发现ion-content里的元素都距四周有一定的距离,在实际需求中不需要四周距离,经查阅文档去掉ion-content 里面的padding属性即可。2.ionic app 国际化经查阅文档和博客目前ionic+cordova混合开发的app目前国际化较好的方案是ngx-translate2.1 插件安装Angular5安装..._ionic4 import org.apache.cordova.file.fileutils;

汇编语言速查_汇编语言查询方式-程序员宅基地

文章浏览阅读284次。一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. _汇编语言查询方式

随便推点

arm处理器异常处理-swi_arm 进入异常之后 lr = pc -4-程序员宅基地

文章浏览阅读1w次。ARM处理器共有7中运行模式: 用户模式(usr) -- 正常程序执行模式 |-- |-- 快速中断模式(fiq) -- 用于高速数据传输和通道处理 特 | 异 | 外部中断模式(irq) _arm 进入异常之后 lr = pc -4

IT行业就只是程序员吗,不要局限于敲代码_ⅰt是程序员吗-程序员宅基地

文章浏览阅读2k次。IT这个行业太广泛了,虽然写代码编程占了其中很重要的一个部分,但是真的不是全部!在IT行业有很多不同的工作角色。开始是一个程序猿,是的,我入行第一份工作确实就是coding,然后做企业级产品的硬件安装工程师,然后是做软件安装工程师,接下来是做解决方案工程师,再然后是系统架构师,再然后是解决方案顾问,现在我在一家外企IT公司负责公司相关产品在几个重点行业的技术支持工作。我除了入行的最开始写了两年程序,其他的职位都不是程序猿!大家不要再把IT局限到写程序了好么,有大把的工作岗..._ⅰt是程序员吗

Tomcat安装与配置(详细教程)_tomcat安装及配置教程-程序员宅基地

文章浏览阅读10w+次,点赞161次,收藏1k次。Tomcat安装与配置,Eclipse集成Tomcat,Eclipse如何配置Tomcat_tomcat安装及配置教程

「面试必背」Spring Cloud面试题(2022最新版)_springcloud面试题-程序员宅基地

文章浏览阅读10w+次,点赞299次,收藏668次。Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开_springcloud面试题

March我来了!-程序员宅基地

文章浏览阅读425次。on march 7 | sunny沉静了那么久,我终于来了。哎态度差了很多嘛!看以前3个月的帖子阅读量成递减趋势我就知道我写的东西是慢慢的少了,质量也下降了,想想自己最近的近况也是惨,科目3又挂了,6级也挂了,哎,回家又长了好多肉!好了不矫情了,3月我来了。这个月我的目标是马上进入状态。压力是自己给的没错,可每天都是想着这些压力啊,烦恼啊,不去行动真的是越压越大。就比如答应给同学做一个视

hadoop启动HDFS命令_hdfs启动命令-程序员宅基地

文章浏览阅读3.2k次。启动命令:/hadoop/sbin/start-dfs.sh停止命令:/hadoop/sbin/stop-dfs.sh_hdfs启动命令

推荐文章

热门文章

相关标签