背景

项目有个心跳功能,在正常模式下5s一个心跳,超过30s未收到心跳系统强制重启。但是进入recovery升级模式后,没有心跳功能,造成升级失败,需要添加心跳的应用程序。添加过程如下。

打开串口log

Recovery的日志是调试的关键,默认会在cache/recovery下面看到,但是里面是空的,没查到原因。遂把串口log等级跳到7,也可以看到日志。

修改启动参数(dts里面,dts编译下载后会放在一个固定位置,uboot和kernel都可以访问):

bootargs = "earlycon=sprd_serial,0x70100000,115200n8 console=ttyS1,115200n8 loglevel=7 init=/init root=/dev/ram0 rw androidboot.hardware=sl8541e_1h10_go vmalloc=360M";

静态编译应用程序

修改应用程序的Android.mk,修改后应用程序实现静态编译,会大一点,主要是因为recovery模式下库文件很少,防止应用程序运行出错,都会用静态编译。

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS :=optional

LOCAL_C_INCLUDES := $(KERNEL_HEADERS)

LOCAL_STATIC_LIBRARIES  := libcutils liblog

LOCAL_MODULE:= spitest

LOCAL_SRC_FILES:=spidev_test.c events.c

LOCAL_PRELINK_MODULE := false

LOCAL_CFLAGS := -Wno-unused-parameter

#标志该模块需要强制静态链接

LOCAL_FORCE_STATIC_EXECUTABLE := true

include $(BUILD_EXECUTABLE)

添加recovery模式自动运行应用程序

修改init.rc(device/sprd/sharkle/common / recovery/init.rc)

service spi0daemon /sbin/spitest

class recovery

seclabel u:r:recovery:s0

on property:ro.bootmode=recovery

chmod 666 /sbin/spitest

class_start recovery

trigger adb_enable

spi0daemon 会在recovery class启动时候开启。

拷贝应用程序到recovery根文件系统/sbin下

这个拷贝过程可以通过参考recovery 根文件系统中有个adbd,然后仿照添加拷贝指令:

修改build /make/core/Makefile

# Copy adbd from system/bin to recovery/root/sbin

$(hide) cp -f $(TARGET_OUT_EXECUTABLES)/adbd $(TARGET_RECOVERY_ROOT_OUT)/sbin/adbd

$(hide) cp -f $(TARGET_OUT_EXECUTABLES)/spitest $(TARGET_RECOVERY_ROOT_OUT)/sbin/spitest

$(hide) chmod 777 $(TARGET_RECOVERY_ROOT_OUT)/sbin/spitest

关掉selinux

Reboot recovery后发现日志里面应用程序运行没有selinux权限,增加权限太麻烦,干错关闭。修改recovery下的init.rc(device/sprd/sharkle/common / recovery/init.rc)

on property:ro.bootmode=recovery

chmod 666 /sbin/spitest

chmod 0666 /sys/fs/selinux/enforce

chown system system /sys/fs/selinux/enforce

write /sys/fs/selinux/enforce 0

setenforce 0

class_start recovery

trigger adb_enable

注意操作enforce 时候可能也需要selinux权限,要简单加一个读写enforce 的权限。

#add for setenforce 0

/sys/fs/selinux/enforce u:object_r:file_enforce:s0

type file_enforce, fs_type, sysfs_type;

allow init file_enforce:file  {open read write};

allow init kernel:security {setenforce};

neverallow * kernel:security setenforce;

neverallow { domain -kernel } kernel:security setcheckreqprot;

往recovery添加应用程序相关推荐

  1. 公众号群发文章支持添加小程序

    微信小程序深夜凌晨放大招,公众号群发文章支持添加小程序,以下是微信公众平台的公告:为了方便用户在阅读文章时使用公众号提供的服务,公众号群发文章支持添加小程序. 公众号可将已关联的小程序添加到群发文章的 ...

  2. [图]为C# Windows服务添加安装程序

    最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...

  3. 如何为windows服务添加安装程序(转)

    1.将写好的windows服务切换到设计视图,右键-添加安装程序  2.切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Accoun ...

  4. 在WINCE5.0开始菜单中添加应用程序

    首先这篇文章主要参考http://blog.csdn.net/nanjianhui/archive/2009/07/01/4313044.aspx来写的,主要是想深入理解和自己实践一下. 在WinCE ...

  5. 为C# Windows服务添加安装程序

    首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留言问我),然后要给服务"添加安装程序",如图1所示:(这一步和自己用InstallUtil注册 ...

  6. 让软件不在添加删除程序_功能强大却鲜为人知的四款软件,一但发现就无法自拔...

    Uninstall Tool Uninstall Tool是一款专业且实用的卸载软件. 电脑上流氓软件很多,有时候你想卸载,却无法卸载,那么你可以试试它,它比Windows自带的"添加/删除 ...

  7. c语言编程微信公众号图片直播,如何以图片的形式在微信公众号文章中添加小程序...

    如何以图片的形式在微信公众号文章中添加小程序 微信公众号中想要将自己的小程序也放进去,宣传宣传,该怎么添加?下面百分网小编带大家一起来看看详细操作教程,感兴趣的朋友一起学习吧!!!想了解更多相关信息请 ...

  8. C#发布程序添加其他程序文件

    注:程序发布文件,默认只发布自身程序直接引用的相关文件(A程序). 如果需要添加其他程序(不同的应用程序B)文件,操作方法如下: 第一步:将B程序文件复制到A程序 第二步:将B程序文件右键--> ...

  9. WinCE控制面板添加应用程序

    WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的,里面就是包含了一些应用程序.WinCE系统的控制面板由Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中C ...

最新文章

  1. V神再为BCH发声!
  2. Stuts2的struts.devMode设置成true后,不起作用,仍需要重启tomcat
  3. EMNLP 2020 | 通过Contrast Set评估模型的局部决策边界
  4. zookeeper 的安装配置及简单使用
  5. UDT协议实现分析——bind、listen与accept
  6. 「BJOI2019」奥术神杖(AC自动机+DP)
  7. 计算机二级旅游推广ppt,计算机二级PPT真题:制作旅游产品推广PPT
  8. C# 读取EXCEL文件的三种经典方法
  9. js获取图片原始大小
  10. 8/7排位赛,codeforces501
  11. Disable STRICT_TRANS_TABLES @Mysql 5.7
  12. java循环判断要点_Java 循环条件判断好题锦集
  13. SpringBoot整合Atomikos实现2PC二阶段分布式事务
  14. 从源码分析HashSet集合
  15. mysql数据库可视化_MySql数据库教程 - 4.可视化操作数据库
  16. WIN8转WIN7的两三事
  17. 安装jdk在linux(2)
  18. 机器人社社长事迹_社团先进个人事迹材料
  19. 近期关于 WWDC22 上各大新系统的一些传闻
  20. icp光谱仪的工作原理_ICP2060T ICP光谱仪工作原理

热门文章

  1. 易语言怎么注册大漠插件
  2. VoxelNet 阅读
  3. 阅读替换净化规则_阅读app下载_阅读客户端安卓下载-优基地
  4. Android程序设计之音乐播放器实现
  5. 当代人工智能复习2022
  6. C语言赋值表达式是从左到右还是从右到左执行?
  7. MT5中position、order、deal 区别
  8. PE制作-002.UEFI和Legacy双启动之Legacy启动
  9. 上海户口申请条件类比分析
  10. 失去优秀员工会付出惨痛的代价?