rk3288 android7.1.2 can功能调试二
添加can启动服务can设备在linux系统下默认加载成网络设备节点,默认系统启动时,是不去启动can设备的,所以需要在系统服务中添加一个can启动服务。1、编写can服务脚本vendor/rockchip/common/can/can.sh+#!/system/bin/sh++min=0+max=3++sleep 3+while [ $min -le $max ]+do+ip link set
·
添加can启动服务
can设备在linux系统下默认加载成网络设备节点,默认系统启动时,是不去启动can设备的,所以需要在系统服务中添加一个can启动服务。
1、编写can服务脚本
vendor/rockchip/common/can/can.sh
+#!/system/bin/sh
+
+min=0
+max=3
+
+sleep 3
+while [ $min -le $max ]
+do
+ ip link set can0 up type can bitrate 500000
+ if [ $? -eq 0 ]; then
+ echo "set can bitrate success!"
+ break
+ echo
+ echo "set can bitrate failed!"
+ min=`expr $min + 1`
+ fi
+done
+
+min=0
+max=3
+sleep 1
+while [ $min -le $max ]
+do
+ ifconfig can0 up
+ if [ $? -eq 0 ]; then
+ echo "set can net device success!"
+ break
+ echo
+ echo "set can net device failed!"
+ min=`expr $min + 1`
+ fi
+done
+
2、添加服务编译并拷贝服务到/system/bin目录下
vendor/rockchip/common/can/Android.mk
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := can.sh
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_SRC_FILES := can.sh
+include $(BUILD_PREBUILT)
vendor/rockchip/common/device-vendor.mk
+$(call inherit-product-if-exists, vendor/rockchip/common/can/can.mk)
vendor/rockchip/common/can/can.mk
+PRODUCT_PACKAGES += \
+
+PRODUCT_COPY_FILES += \
+ vendor/rockchip/common/can/can.sh:system/bin/can.sh \
3、添加服务启动
device/rockchip/common/init.rk30board.rc
+service can_sh /system/bin/can.sh
+ class main
+ oneshot
4、处理服务权限
对于在android系统下添加服务,服务启动时需要获取一下运行权限,关于服务权限问题,可参考Android系统下SELinux权限处理。
device/rockchip/common/sepolicy/file_contexts
+/system/bin/can.sh u:object_r:can_sh_exec:s0
device/rockchip/common/sepolicy/init.te
+domain_trans(init, can_sh_exec, can_sh)
device/rockchip/common/sepolicy/can_sh.te
+type can_sh, domain, mlstrustedsubject;
+type can_sh_exec, exec_type, file_type;
+
+init_daemon_domain(can_sh)
+allow can_sh shell_exec:file { getattr read};
+allow can_sh system_file:file { execute_no_trans };
+allow can_sh can_sh:netlink_route_socket { create setopt bind write nlmsg_write getattr read};
+allow can_sh can_sh:capability { net_admin net_raw sys_module };
+allow can_sh can_sh:udp_socket { ioctl create };
+allow can_sh kernel:system { module_request };
+allow can_sh toolbox_exec:file { getattr execute read open execute_no_trans };
+
更多推荐
已为社区贡献16条内容
所有评论(0)