阿里云
发表主题 回复主题
  • 250阅读
  • 0回复

[系统内核]AliOS开发者FAQ

级别: 小白
发帖
2
云币
23
— 本帖被 内核爱好者 执行置顶操作(2018-05-30) —
Common
1. Q: AliOS Lite有己的SeLinux做法,能否提供详细guideline?Ali是否会提供相关转换脚本?
   A: 待补充
2. Q: AliOS-Lite上对Property的support情况如何?Property的存储,读取,监听,以及实现,
      init.rc 里的onproperty,是否有相关文档?
   A: 关于onPropertyd hook的替代方式,如果仅仅是启动service,是可以使用按需启动做到的。
      前提:待启动的service,由systemd来管理,即存在该服务的.service文件
      (1)如果该service是基于kdbus的,当Property修改时,直接给目标service发送个kdbus消息即可。
         假设系统中有ondemand_test.service,其注册的name是com.yunos.test
         #1 在/usr/share/dbus-1/system-services/目录下添加test.service文件,这是systemd
            创建connection用来监听发往com.yunos.test的消息所用的文件,如下:
            [D-BUS Service]
            Name=com.yunos.test
            SystemdService=ondemand_test.service
            #Exec=/usr/bin/sendlink page://abook.ivi.com/abookservice
            注:使用Exec=的方式可以实现JS服务的按需启动
         #2 /etc/systemd/system目录或/usr/lib/systemd/system/目录添加ondemand_test.service,
            这是systemd用来启动service时所用的文件。需要添加:
            Type=dbus
            BusName=com.yunos.test
            注意:
            1)BusName赋值,必须与服务在kdbus上注册的名字一致。
            2)确保在/usr/lib/systemd/system/multi-user.target.wants以及
              /etc/systemd/system/multi-user.target.wants目录下,没有创建
              指向ondemand_test.service的符号连接。
            3)没有其它service文件依赖ondemand_test service。
      (2)如果该service不是基于kdbus的,也可以使用基于socket的按需启动,需要目标service监听个socket。
3. Q: 整体上每个模块规划,内存大小要求?
   A: 没有强制要求。
4. Q: AliOS-Lite里看到一些library有Module在用,但并没有看到library的source code,
      这部分是还没开源出来吗?例如:
      a. framework/nativeservice/utopiad/src/compositor 使用的libsync,在source code里搜索不到;
      b. libcurl,这个也是有module在用,但是没有gen so的地方。
   A: 部分闭源,所以还没有release出去,有二期开源计划。Graphic是没有用这个的。
      有看到有到的地方,可能是没有编译到。
5. Q: Ali之前release关于systemd的文档,有提到要实现开机启动,需要设置对应xxx.service的链接文件,
      请问lite上这部分是在哪里实作的
   A: (1) 如果要覆盖thirdparty/systemd下已有的配置文件,请修改vendor/mtk/mtk6739_lite_32/res_overlay.mk。
          例如:
          XMAKE_MODULE.systemd_etc_config_prebuilt.OVERLAY :=$(XMAKE_SYSTEMD_CONFS)/bluetooth-daemon.service
          xmake会在systemd的mk file中完成链接的操作
      (2) 如果是产品特有的文件,请修改vendor/mtk/mtk6739_lite_32/configs/systemd_confs/yunos.mk。
          ### systemservice config
          LOCAL_SRC_FILES += $(LOCAL_PATH)/mode_own_init.service:usr/lib/systemd/system/mode_own_init.service
          LOCAL_COMPILE_SHELL_CMD += && mkdir -p \
          $(YUNOS_ROOT_ORIGIN)/$(XMAKE_ROOTFS)/usr/lib$(lib_suffix)/systemd/system/basic.target.wants;\
          cd$(YUNOS_ROOT_ORIGIN)/$(XMAKE_ROOTFS)/usr/lib$(lib_suffix)/systemd/system/basic.target.wants&& \
          $(LN_S)../mode_own_init.service mode_own_init.service
6. Q: NVRAM会放在单独的partition,Ali是否有规划单独的partition给NVRAM使用?
   A: 支持,不过这个需要芯片厂商来提供具体信息
7. Q: ALIOS LITE 访问SDCARD 的access path 是什么?或是mount path ?
   A: 对于emulated的storage:/storage/emulated/<userid>
      对于外置removable的sdcard,和device的name相关:/storage/<sdcard设备名字><分区index>
      处理代码:framework/nativeservice/storagemgrd/service/Disk.cpp createPublicVolume


FM
1. Q: 目前看到 YunHAL 沒有和 FM Radio对接的service,是否APP会自行loadFM HAL module
      取得interface来直接对FM操作呢?
   A: 应用直接调用hal接口。
2. Q: fm_set_region() 和 fm_set_scan_step() 的使用时机是什么?是否为必要支持的接口?
      这里的步长是否是指50khz,100khz 呢?目前会设置哪些值?
   A: 目前app没使用。但作为基线,长远我们认为是必要的接口。这两个接口在调用fm_search之前来使用。
      这里的最小步长是1khz,应该可以设置base最小步长的所有值。
3. Q: 目前看到YunHAL沒有和FM Radio对接的service, 是否APP会自行loadFM HAL module
      取得interface来直接对FM操作呢?
   A: 应用直接调用hal接口。
4. Q: vendor(如MTK)是否需要支持fm_search()?
   A: 确实app没使用到,默认实现也是空的。但这个取决于上层app的功能要求,作为基线长远应该做到支持。
      App是自己在应用中伪造了search的功能,其实就是自己来不间断的up或down频率。


GPS&AGPS
1. Q: 目前在AliOS open source project里面未看到GPS相关的部分,请问GPS部分的相关文件(例如gps.h)的摆放是怎样的?
   A: LocationGpsHalProvider.h是YunOS自己定义的类似gps.h头文件。它只有一个interface
      和callback,不像android分好几类,GPS,AGPS, RIL, NI等。实现来说,USE_RTD_DGPS
      里面的内容可以不用实现,比如下面callback,红色字体不用实现,其他callback需要实现,
      目标就是GPS/AGPS能work。如果接口实现还有疑惑的,请帮忙列出来大家一块看下,谢谢!
        typedef struct {
            size_t  size;
            yunos_location_callback       location_cb;
            yunos_nmea_callback          nmea_cb;
            yunos_status_callback         status_cb;
            yunos_sv_data_callback        sv_data_cb;
            yunos_set_capability_callback set_capability_cb;
            yunos_gps_xtra_data_download  xtra_download_cb;
            yunos_agps_status_callback    agps_status_cb;
            yunos_agps_ril_request_set_id request_set_id;
            yunos_agps_ril_request_ref_loc request_ref_loc;
            yunos_gps_request_wakelock    request_wake_lock;
            yunos_gps_release_wakelock    release_wake_lock;
            yunos_gps_request_utc_time    request_utc_time;
#ifdef USE_RTD_DGPS
            yunos_gnss_measurement_callback gnss_measurement_cb;
            yunos_gnss_navi_message_callback gnss_navi_message_cb;
            yunos_gnss_iono_model_callback gnss_iono_model_cb;
            yunos_gnss_navi_model_callback gps_navi_model_cb;
#endif
        }gps_callback_t;
      gps_yunos_t暂时没有用到;区别于android通过libhardware去map找到对应结构体,yunos做法是通过
      load_gps_module 去加载gps lib,比如/usr/lib/gps.default.so,然后通过get_gps_interface()
      去获取gps_interface_t 结构指针。load_gps_module,get_gps_interface不在MTK gnss hal 层实现,
      而是AliOS上层来实现的,gnss hal只实现gps_get_hardware_interface函数返回gps_interface_t指针即可。
      提供一个参考实现:
        intload_gps_module(){
            handle = dlopen("/usr/lib/gps.default.so", RTLD_LAZY);
            if (handle != NULL) {
                return 0;
            } else {
                ...
            }
        }
        constgps_interface_t* get_gps_interface() {
            get_interface = dlsym(handle, "gps_get_hardware_interface");
            gps_interface = get_interface();
            return gps_interface;
        }


MediaCodec
1. Q: video buffer 是否有ION 可以使用?
   A: 可以,对app透明。
2. Q: User space 会如何来调用 V4L2,预期使用的color format会是什么?
   A: User space层使用参见yunhal/modules/video/tests/v4l2decode.cc。预期的format主流的都支持,一般使用NV12。
3. Q: Vendor (如MTK)需要提供的接口是否有文件说明?
   A: 参考/yunhal/modules/include/yunhal/v4l2codec_device_ops.h。vendor(如MTK)需要在自己的so中提供这个接口的实现。




[ 此帖被hanfeng10在2018-05-30 14:49重新编辑 ]
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 85 - 17 = ?
上一个 下一个