修订记录 修订日期 修订作者 修订备注
创建第一版 2020.02.14 forwardxiang@163.com 文档版本V1.0.0

文章目录

  • 第一部分 SIMcom嵌入式Linux平台通用配置
    • 1. 1 开发环境中的必要脚本
      • 1.1.1 SIMcom提供的备份脚本
      • 1.1.2 ibeelink提供的备份脚本
      • 1.1.3 SIMcom提供的启动脚本
    • 1.2 开发环境通用配置方法
      • 1.2.1 /data和/cache分区内文件的备份
      • 1.2.2 只读文件(Read-only)的备份方法
      • 1.2.3 系统默认模块PID模式配置方法
  • 第二部分 SIMcom嵌入式Linux平台选用配置
    • 2.1 auto-net拨号上网配置方法
      • 2.1.1 为什么要使用该方法
      • 2.1.2 如何配置auto-net拨号上网
    • 2.2 未配置脚本的文件备份补救方法
      • 2.2.1 为什么需要补救措施
      • 2.2.2 如何采取补救措施
  • 第三部分 SIMcom嵌入式Linux平台配置原理
    • 3.1 应用程序自启动原理
      • 3.1.1 helloworld应用程序是谁启动的
      • 3.1.2 start_helloworld.sh脚本程序是谁启动的
    • 3.2 应用程序备份原理
      • 3.2.1 如何实现应用程序备份

第一部分 SIMcom嵌入式Linux平台通用配置

1. 1 开发环境中的必要脚本

1.1.1 SIMcom提供的备份脚本

  • 首先查看开发环境内sim_rootfs/etc/init.d路径下是否有SIMcom提供的备份脚本helloworld_auto_restore.sh,该脚本主要负责:

    1、备份/data/helloworld应用程序,即所有应用程序的入口应用程序。

    2、备份可选的脚本文件/data/helloworld_monitor.sh/data/monitor.sh

    3、备份动作只发生在每次启动系统该文件不存在且对应的备份源文件存在的情况下。

1.1.2 ibeelink提供的备份脚本

  • 其次查看开发环境内sim_rootfs/etc/init.d路径下是否有ibeelink提供的备份脚本ibeelink_restore.sh,该脚本主要负责:

    1、备份开发的业务APP程序,即main_app等必要的应用程序。

    2、备份业务APP所需要的配置文件。例如APP的参数设置。

    3、备份永远不会更改的只读文件,例如可以用于恢复出厂设置的文件。

    4、ibeelink提供的脚本需要链接到/etc/rc5.d/S99xxxx,其中xxxx为脚本名称。

1.1.3 SIMcom提供的启动脚本

  • 最后查看开发环境内sim_rootfs/etc/init.d路径下是否有SIMcom提供的启动脚本start_helloworld.sh,该脚本主要负责:

    1、启动入口应用程序/data/helloworld,由此调起用户的其他业务APP。

    2、启动可选脚本文件/data/monitor.sh,用于紧急情况下作为调试手段的入口。

    3、利用start-stop-daemon守护进程工具对入口应用程序进行启停守护。

  • 若原厂没有提供启动脚本,将启动脚本复制到相应目录后,使用软链接进行脚本链接,在开发环境最外层目录下举例:sudo ln -sf ../init.d/start_helloworld sim_rootfs/etc/rc5.d/S99start_helloworld

1.2 开发环境通用配置方法

1.2.1 /data和/cache分区内文件的备份

  • /data和/cache分区内的文件为可读可写文件,因此面临着极限状态下文件丢失的风险。

  • 根据SIMcom的建议,采用双向备份的方式对该分区的文件进行备份:

    1、启动时发现丢失/data下的重要文件,则检查/cache下的对应文件,若存在则从/cache下复制。

    2、启动时发现丢失/cache下的重要文件,则检查/data下的对应文件,若存在则从/data下复制。

  • /data/helloworld文件由脚本helloworld_auto_restore.sh负责备份,其他在这两个区内的文件均由脚本文件ibeelink_restore.sh负责备份。注意:当前仅支持在脚本中指定的文件的备份。

  • 注意:虽然这两个区域内文件同时丢失的概率极小,但仍然无法保证百分百。

1.2.2 只读文件(Read-only)的备份方法

  • 在开发环境sim_rootfs路径下可以使用root权限写入文件到任意子目录下。
  • 例如将需要备份的网络配置文件auto_net_cfg_file写入到sim_rootfs/home路径下。
  • 最后在ibeelink_restore.sh脚本中将该文件的备份源文件位置设置为/home/auto_net_cfg_file,当/data/auto_net_cfg_file文件丢失后,系统启动时会自动从只读区域/home复制该文件。

1.2.3 系统默认模块PID模式配置方法

  • 在开发环境sim_usrfs路径或其子路径中找到文件boot_hsusb_composition

  • boot_hsusb_composition链接到/sbin/usb/compositions/9001或者/sbin/usb/compositions/9011

  • 若需要将系统默认模块PID模式配置为9011模式,则执行指令ln -sf /sbin/usb/compositions/9011 boot_hsusb_composition

  • 注意:

    1、boot_hsusb_composition文件所在路径使用指令ls -l命令核对模块PID是否配置为想要的模式。若不是则使用上述方法更改。

    2、只要开发环境不再更改,该配置只需要配置一次即可。

第二部分 SIMcom嵌入式Linux平台选用配置

2.1 auto-net拨号上网配置方法

2.1.1 为什么要使用该方法

  • 由于高通更新了部分资源,导致SIMcom未能及时配置相关参数,这也导致了SIM7600CE-CNSE模块无法同SIM7600CE-T一样正常使用9011模式下的RNDIS拨号(需要一直插上USB线才能正常上网)。
  • auto_net方式,无需应用操作。强烈要求和推荐SIM7600CE-CNSE模块使用该方法。

2.1.2 如何配置auto-net拨号上网

  • 在开发环境打包镜像时将sim_usrfs目录(挂载后为/data)下auto_net_cfg_file文件始终存在且写1(发布的版本没有该文件)。
  • 在备份脚本里备份auto_net_cfg_file文件,且建议备份源放在只读文件系统下,例如/home文件夹。
  • 在开发环境打包镜像时将sim_usrfs目录下文件mobileap_cfg.xml文件和mobileap_cfg.xsd文件中MobileAPEnableAtBootup应该分别置为1(发布的CNSE版本有误)。无需备份。
  • 在开发环境打包镜像时sim_usrfs目录或其子目录中将boot_hsusb_composition链接到/sbin/usb/compositions/9001(默认就是该值,建议检查一下即可)。

2.2 未配置脚本的文件备份补救方法

2.2.1 为什么需要补救措施

  • 由于历史遗留问题,导致一些设备在没有做文件备份的功能前提下就生产交付了。
  • 文件备份的脚本存放在只读文件系统中,无法通过远程升级写入脚本的方法进行补救。
  • 虽然无法通过脚本进行备份,但是可以在应用程序中主动备份。

2.2.2 如何采取补救措施

  • 由于/data/helloworld文件由SIMcom提供的脚本进行备份,固可以在该应用程序中进行备份操作。

  • 首先需要更新/data/helloworld文件以便写入备份逻辑。下面以使用业务APP更新该文件为例。

    1、在业务APP启动后调用http_upgrade接口去蜜连平台拉取最新的helloworld文件。

    2、注意拉取成功后,需要上报给服务器最新版本号,防止该文件被重复拉取。

    3、使用的接口工程代码地址:整包HTTP远程升级接口,研发人员可以克隆后直接测试。

  • helloworld程序中备份逻辑为:

    1、若模块PID不是9011,则更改为9011后重启系统。

    2、先检查/data目录下需要备份的文件是否丢失,若丢失,则从对应的备份源复制。

    3、再检查/cache目录下需要备份的文件,若丢失,则从/data目录下复制。

    4、若发生备份操作,则使用UDP协议上报给日志服务器47.102.121.15:9898,用于记录。

    5、若设备因无法上网导致上报失败,则再下次启动时继续上报。

    6、helloworld程序中备份逻辑代码地址:备份逻辑代码地址

第三部分 SIMcom嵌入式Linux平台配置原理

3.1 应用程序自启动原理

3.1.1 helloworld应用程序是谁启动的

  • 在脚本start_helloworld.sh的源码中我们可以看到如下代码:

    start-stop-daemon -S -b -a /data/helloworld
    

    这说明,helloworld应用程序是由start-stop-daemon这个启停工具启动的。关于该工具的作用请自行百度或谷歌进行了解。

3.1.2 start_helloworld.sh脚本程序是谁启动的

  • /etc/rc5.d/目录下可以找到S99start_helloworld文件,这是个链接文件,使用命令ls -l可以清楚的查看到其指向的源文件就是start_helloworld.sh这个脚本文件。
  • Linux系统在每次启动时都会按优先级次序去启动各个脚本文件或应用程序。
  • 本节举例中,rc5.d表示该目录下的文件运行级为5级,而S99则表示启动优先级为99。

3.2 应用程序备份原理

3.2.1 如何实现应用程序备份

  • 将需要备份的文件和备份逻辑写入脚本中。
  • 链接该脚本到自启动目录下。
  • 由Linux自启动该脚本,即可完成文件备份的工作。

SIMcom嵌入式Linux平台通用配置相关推荐

  1. linux 文件系统字体小,基于嵌入式Linux平台的最小文件系统的制作

    工作平台:FL2440 交叉编译环境:arm-linux-gcc 3.4.1 busybox版本:1.9.1 1) 制作文件系统总目录: mkdir my_rootfs 2) 编译&安装bus ...

  2. 嵌入式 Linux平台 C程序 交叉编译技术

    嵌入式Linux平台C程序交叉编译技术 一.实验目的和任务 本实验要求复习和掌握Linux平台的C程序开发过程. 本实验要求掌握嵌入式开发板的操作方法. 本实验要求掌握Linux平台交叉编译方法和程序 ...

  3. linux算法设计,嵌入式Linux平台下随机序列算法设计.doc

    嵌入式Linux平台下随机序列算法设计 嵌入式Linux平台下随机序列算法设计 [摘 要]本文以多媒体播放器的随机不重复播放机能为切入点,针对嵌入式平台实时性要求高,处理速度不够快,但系统存储歌曲量大 ...

  4. 嵌入式linux毕业设计,基于嵌入式Linux平台的智能小区终端系统设计与实现

    内容简介: 硕士学位论文 基于嵌入式Linux平台的智能小区终端系统设计与实现,正文共69页. [摘要] 智能化小区通过采用智能终端系统,为住户提供了一种更加安全.舒适.方便.快捷和开放的智能化.信息 ...

  5. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案

    描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...

  6. 嵌入式linux tftp rpm,嵌入式linux的tftp配置

    tftp是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的 tftp开发环境包括两个方面: 一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp ...

  7. 嵌入式linux的tftp配置[ZT]

    tftp是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的 tftp开发环境包括两个方面: 一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp ...

  8. 锐捷认证客户端在嵌入式linux平台上的移植

    一.TCP/IP协议简介 IP协议用于将多个包交换网络连接起来,IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流 ...

  9. Linux平台网络配置-----C语言

    上一期我们已经介绍了VM虚拟机安装CentOS 7系统的步骤过程,这次就来看看使用Linux对初学者有什么障碍? 零基础学习C语言---Linux平台配置网络 用VM虚拟机启动Linux系统时出现的问 ...

最新文章

  1. mybatis 取list第一个_MyBatis基础搭建及架构概述
  2. eslint 学习笔记
  3. Intel不挤牙膏了!10nm性能参数公布:提升43%
  4. 源码解读:KubeVela 是如何将 appfile 转换为 K8s 特定资源对象的
  5. QML模拟示波器界面。
  6. 《数据库原理与应用》(第三版) 第4章SQL Server 2012基础 习题参考答案
  7. c语言入门数组,C语言入门之数组(2)
  8. mysql 获取天数_MySQL获取某月份的天数
  9. Github | 深度学习研究大咖有哪些?
  10. ROS推荐链接:UNIX/LINUX专为初学者的教程和命令 http://www.ee.surrey.ac.uk/Teaching/Unix/
  11. 芯片上链,英特尔加入蚂蚁区块链生态
  12. java 算数运算符
  13. CorelDRAWX4的VBA插件开发(二十一)字符串搜索和正则表达式匹配以及文件名关键字处理
  14. Spring Cloud基础教程 - 程序猿DD
  15. MySQL启动报错: Failed to start LSB start and stop MySQL
  16. 提高电火炉使用安全,微波雷达模组感应控制,雷达感应技术方案
  17. Python显示WiFi密码
  18. APP渠道推广手册(新手必备)
  19. 基于SQL求集合的交、并、补
  20. 最让我感动的图片...

热门文章

  1. 骨传导耳挂式耳机排名前十名,最好的骨传导耳机推荐
  2. 第四章:动态分支预测
  3. 主题:基于混合整数规划方法的微网电池储能容量优化配置
  4. 用Frida对APP脱壳
  5. Flowable高级篇 - Flowable的图标
  6. [绍棠] Scrapy+Flask+Mongodb+Swift开发全攻略
  7. Android 8.0和10.0 代码拨打电话的方法
  8. 从“添益宝”到“话费宝”,三大运营商加码互联网金融
  9. Android系统修改gmail和google日历默认铃声,区别于系统的默认通知音
  10. 给家庭组小朋友的分享和建议