专注云计算教学
新手上云第一站

AliOS开发者FAQ

— 本帖被 内核爱好者 执行置顶操作(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/
对于外置removable的sdcard,和device的name相关:/storage/<分区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中提供这个接口的实现。

赞(4)
未经允许不得转载:WM云建站 » AliOS开发者FAQ

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址