• rv1126-rv1109-RkLunch.sh


    RkLunch.sh是个脚本,来自哪里

    书接上回:rv1126-rv1109-瑞芯微的 IPC 程序_旋风旋风的博客-CSDN博客

    修改之后

    屏蔽了两行之后,就没有开机自启rklunch了:

    #        [ -f /oem/RkLunch.sh ] && source /oem/RkLunch.sh

    就是运行source /oem/RkLunch.sh

    这里就跑了RkLunch.sh脚本

    1. #!/bin/sh
    2. check_linker()
    3. {
    4. [ ! -L "$2" ] && ln -sf $1 $2
    5. }
    6. network_init()
    7. {
    8. ethaddr1=`ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}'`
    9. if [ -f /data/ethaddr.txt ]; then
    10. ethaddr2=`cat /data/ethaddr.txt`
    11. if [ $ethaddr1 == $ethaddr2 ]; then
    12. echo "eth HWaddr cfg ok"
    13. else
    14. ifconfig eth0 down
    15. ifconfig eth0 hw ether $ethaddr2
    16. fi
    17. else
    18. echo $ethaddr1 > /data/ethaddr.txt
    19. fi
    20. ifconfig eth0 up && udhcpc -i eth0
    21. }
    22. post_chk()
    23. {
    24. #TODO: ensure /userdata mount done
    25. cnt=0
    26. while [ $cnt -lt 30 ];
    27. do
    28. cnt=$(( cnt + 1 ))
    29. if mount | grep -w userdata; then
    30. break
    31. fi
    32. sleep .1
    33. done
    34. network_init &
    35. check_linker /userdata /oem/usr/www/userdata
    36. check_linker /media/usb0 /oem/usr/www/usb0
    37. check_linker /mnt/sdcard /oem/usr/www/sdcard
    38. # if /data/rkipc not exist, cp /usr/share
    39. rkipc_ini=/userdata/rkipc.ini
    40. default_rkipc_ini=/tmp/rkipc-factory-config.ini
    41. if [ ! -f "/oem/usr/share/rkipc.ini" ]; then
    42. media-ctl -p | grep os04a10
    43. if [ $? -eq 0 ] ;then
    44. ln -s -f /oem/usr/share/rkipc-os04a10.ini $default_rkipc_ini
    45. fi
    46. media-ctl -p | grep imx335
    47. if [ $? -eq 0 ] ;then
    48. ln -s -f /oem/usr/share/rkipc-imx335.ini $default_rkipc_ini
    49. fi
    50. media-ctl -p | grep imx415
    51. if [ $? -eq 0 ] ;then
    52. ln -s -f /oem/usr/share/rkipc-imx415.ini $default_rkipc_ini
    53. fi
    54. fi
    55. tmp_md5=/tmp/.rkipc-ini.md5sum
    56. data_md5=/userdata/.rkipc-default.md5sum
    57. md5sum $default_rkipc_ini > $tmp_md5
    58. chk_rkipc=`cat $tmp_md5|awk '{print $1}'`
    59. rm $tmp_md5
    60. if [ ! -f $data_md5 ];then
    61. md5sum $default_rkipc_ini > $data_md5
    62. fi
    63. grep -w $chk_rkipc $data_md5
    64. if [ $? -ne 0 ] ;then
    65. rm -f $rkipc_ini
    66. echo "$chk_rkipc" > $data_md5
    67. fi
    68. if [ ! -f "$default_rkipc_ini" ];then
    69. echo "Error: not found rkipc.ini !!!"
    70. exit -1
    71. fi
    72. if [ ! -f "$rkipc_ini" ]; then
    73. cp $default_rkipc_ini $rkipc_ini -f
    74. fi
    75. if [ ! -f "/userdata/image.bmp" ]; then
    76. cp -fa /oem/usr/share/image.bmp /userdata/
    77. fi
    78. if [ -d "/oem/usr/share/iqfiles" ];then
    79. rkipc -a /oem/usr/share/iqfiles &
    80. else
    81. rkipc &
    82. fi
    83. }
    84. post_chk &

    很简单的一个脚本,于是我剖析一下脚本,究竟是做了啥

    这里是关键!                rkipc &

     ./oem/usr/bin/rkipc

    运行了这个可执行文件进入摄像头预览demo:rkipc

    1. \rk\rv1126_rv1109\buildroot\package\rockchip\rkipc\Config.in
    2. config BR2_PACKAGE_RKIPC
    3. bool "rockchip rkipc"
    4. select BR2_PACKAGE_CAMERA_ENGINE_RKAIQ
    5. select BR2_PACKAGE_WPA_SUPPLICANT
    6. select BR2_PACKAGE_FREETYPE
    7. help
    8. rockchip rkipc
    9. choice
    10. prompt "Platform type"
    11. default BR2_PACKAGE_RKIPC_RK3588
    12. help
    13. Select a platform type.
    14. config BR2_PACKAGE_RKIPC_RK3588
    15. bool "Compile for rk3588 ipc"
    16. select BR2_PACKAGE_ROCKIT
    17. depends on BR2_PACKAGE_RKIPC
    18. config BR2_PACKAGE_RKIPC_RK3588_MULTI_IPC
    19. bool "Compile for rk3588 multi ipc"
    20. select BR2_PACKAGE_ROCKIT
    21. depends on BR2_PACKAGE_RKIPC
    22. config BR2_PACKAGE_RKIPC_RV1126
    23. bool "Compile for rv1126 ipc"
    24. select BR2_PACKAGE_RKMEDIA
    25. depends on BR2_PACKAGE_RKIPC
    26. config BR2_PACKAGE_RKIPC_RV1126_BATTERY_IPC
    27. bool "Compile for rv1126 battery ipc"
    28. select BR2_PACKAGE_ROCKIT
    29. select BR2_PACKAGE_VENDOR_STORAGE
    30. depends on BR2_PACKAGE_RKIPC
    31. endchoice

    1. \rk\rv1126_rv1109\buildroot\package\rockchip\rkipc\rkipc.mk
    2. RKIPC_SITE = $(TOPDIR)/../app/rkipc
    3. RKIPC_SITE_METHOD = local
    4. RKIPC_DEPENDENCIES = camera-engine-rkaiq wpa_supplicant freetype common_algorithm
    5. ifeq ($(BR2_PACKAGE_RKIPC_RK3588), y)
    6. RKIPC_CONF_OPTS += -DCOMPILE_FOR_RK3588=ON
    7. endif
    8. ifeq ($(BR2_PACKAGE_RKIPC_RK3588_MULTI_IPC), y)
    9. RKIPC_CONF_OPTS += -DCOMPILE_FOR_RK3588_MULTI_IPC=ON
    10. endif
    11. ifeq ($(BR2_PACKAGE_RKIPC_RV1126), y)
    12. RKIPC_DEPENDENCIES += rkmedia rkfsmk
    13. RKIPC_CONF_OPTS += -DCOMPILE_FOR_RV1126_RKMEDIA=ON
    14. endif
    15. ifeq ($(BR2_PACKAGE_RKIPC_RV1126_BATTERY_IPC), y)
    16. RKIPC_DEPENDENCIES += rockit rktoolkit
    17. RKIPC_CONF_OPTS += -DCOMPILE_FOR_RV1126_BATTERY_IPC=ON
    18. endif
    19. $(eval $(cmake-package))

    编译相关的东西

    主要代码在./app/rkipc

     

     这里就一个app了,后续大家有兴趣自己跟了,我到此为止了.我只是剖析一下开机自启的流程和原理,app代码部分就分析了

  • 相关阅读:
    点云从入门到精通技术详解100篇-基于点云和图像的智能交通路侧感知(续)
    linux下构建rocketmq-dashboard多架构镜像——筑梦之路
    SpringBoot知识点总结-DX的笔记
    macOS 中 Apple Distribution 与 Apple Development 证书不受信任解决方法
    vue3.0中使用echarts,鼠标悬浮无法显示数据框的问题
    #systemverilog# 关键字之 `include(3)`include vs import 用法区别
    matlab simulink仿真
    CSS第一节
    给md文档标题添加有序编号的python脚本
    【慕课C#学习笔记】第一章: 走进C#
  • 原文地址:https://blog.csdn.net/longmin96/article/details/133065797