[Android-Frameworks] Analysis init.rc in Android

本文详细介绍了如何配置init.rc文件,将其从vendor目录下的文件整合到AndroidBoard.mk中。并通过验证步骤检查了文件的位置和关键属性。此外,解释了init.rc文件的解析过程及其在Android启动过程中的作用。
Android Init.rc Anslysis

  1. 如何配置init.rc
-
our init.*.rc files to this one via use of the Android.mk
PRODUCT_INIT_RC_FILES variable. See AndroidBoard.mk.
-

-
./vendor/intel/mfld_pr2/AndroidBoard.mk
    
     - /vendor/intel/common/init.rc
         
     - Android board dependence
-

-
比较后可能的位置
     /system/core/rootdir/init.rc    
          -YES
     /device/intel/aboot/fastboot/etc/init.rc
          -NO
-

-
验证: 添加关键字"LEON_fastboot", "LEON_rootdir"
     *
     on property:sys.usb.config=LEON_ROOTDIR
    stop adbd
     *
    
     *
     on property:sys.usb.config=LEON_FASTBOOT
    stop adbd
     *
-

find . -name '*.rc' -print | xargs grep -inr 'mtp'
    
./out/target/product/mfld_pr2/recovery/root/init.rc:89:on property:sys.usb.config=mtp,adb
./out/target/product/mfld_pr2/root/init.rc:829:on property:sys.usb.config=mtp
./out/target/product/mfld_pr2/root/init.rc:842:on property:sys.usb.config=mtp,adb
./out/target/product/mfld_pr2/droidboot/root/init.rc:65:on property:sys.usb.config=mtp,adb
./bootable/recovery/etc/init.rc:89:on property:sys.usb.config=mtp,adb
./bootable/droidboot/init.rc:65:on property:sys.usb.config=mtp,adb
./device/samsung/tuna/init.tuna.usb.rc:11:on property:sys.usb.config=mtp
./device/samsung/tuna/init.tuna.usb.rc:19:on property:sys.usb.config=mtp,adb
./device/intel/aboot/fastboot/etc/init.rc:55:on property:sys.usb.config=mtp,adb
./device/moto/wingray/init.stingray.usb.rc:9:on property:sys.usb.config=mtp
./device/moto/wingray/init.stingray.usb.rc:17:on property:sys.usb.config=mtp,adb
./hardware/intel/factory/etc/init.rc:53:on property:sys.usb.config=mtp,adb
./vendor/intel/medfield/init.mfld.usb.rc:79:on property:sys.usb.config=mtp                    <=== This is what I want!
./vendor/intel/medfield/init.mfld.usb.rc:92:on property:sys.usb.config=mtp,adb

****
./vendor/intel/medfield/init.mfld.usb.rc
****

2. 谁在解析init.rc文件
  •      Android启动后通过init process完成解析init.rc任务,通过search init.rc中调用"int main"入口的代码。即是init process实现代码。
     
          system/core/init/init.c

  •      Android.mk
    • LOCAL_SRC_FILES := ... \ 
      • property_service.c \ 
      • parser.c \ 
      • ueventd.c \ 
      • ueventd_parser.c \
      • init_parser.c \ 
    • LOCAL_MODULE := init
  •      queue buildin action
  •      start property service, create socket, listen it
  •      read init.rc property flagment, add to local queue
  •      when set property, occure MSG_SET to property service 
       
     -
     init process invoke property_service, property_service read local 'property', like this
          
          #define PROP_PATH_RAMDISK_DEFAULT       "/default.prop"
          #define PROP_PATH_SYSTEM_BUILD             "/system/build.prop"
          #define PROP_PATH_SYSTEM_DEFAULT        "/system/default.prop"
          #define PROP_PATH_LOCAL_OVERRIDE         "/data/local.prop"
          //niuhuiling add systemprop
          #define PROP_PATH_SYSTEM_PROP             "/system/etc/system.prop"
     -

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值