Android平台中MCE USB设备支持

本文介绍了解决Android平台上MCEUsb设备权限问题的过程。从添加必要的权限文件开始,逐步深入到内核配置及设备ID匹配,最终实现了应用程序对MCEUsb设备的有效操作。

    应用程序需要对MCE Usb设备进行操作。首先使用UsbManager的getDeviceList接口获取USB设备列表时,引发PackageManager.PERMISSION_DENIED异常。 应用程序的确已经在AndroidManifest.xml中声明了所需的权限,所以从Framework层找问题的原因。

    首先看out目录下/system/etc/permissions,发现缺少android.hardware.usb.host.xml。在device.mk中


PRODUCT_COPY_FILES += \
        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml



    为节约时间不重新编译了,将该文件push到设备中,发现异常依旧。查看其他设备的权限文件,发现系统开放的设备访问权限都被写在了这个文件中:system/etc/permissions/handheld_core_hardware.xml。照样添加:

<feature name="android.hardware.usb.host" />




    这次再次打开应用程序,已经不再报PackageManager.PERMISSION_DENIED的异常,但是usb设备无法工作。应该是内核原因。打开内核开关对MCE、LIRC的支持:

CONFIG_LIRC=y
CONFIG_IR_LIRC_CODEC=y
CONFIG_IR_MCEUSB=y
CONFIG_LIRC_STAGING=y


    现在设备已经可以被识别为一个mce设备了,但是无法匹配获得usb_device_id。看匹配算法,发现mce设备要通过查表获取。kernel/drivers/media/rc/mceusb.c中mceusb_dev_table的匹配表没有该设备的厂商号。添加即可:

static struct usb_device_id mceusb_dev_table[] = {
         ......
        /* Formosa Industrial Computing / Beanbag Emulation Device */
        { USB_DEVICE(VENDOR_FORMOSA, 0xe018) },
       { USB_DEVICE(VENDOR_FORMOSA, 0xe042) },
        /* Formosa21 / eHome Infrared Receiver */
        { USB_DEVICE(VENDOR_FORMOSA, 0xe03a) },
        /* Formosa Industrial Computing AIM IR605/A */
        ... ...
}

通过以上作业, mce相关设备就已经添加好了,可以在apk中操作。

    


### MCE设备的技术规格 MCE(Motor Control Engine)设备通常指的是用于电机控制的嵌入式系统,它集成了专门设计用于执行复杂电机控制算法的硬件和软件。以iMotion MCE2.0引擎为例,该引擎支持磁场定向控制(Field-Oriented Control, FOC)算法[^1],这是一种先进的控制策略,用于提高永磁同步电机(PMSM)和感应电机的效率和性能。 在技术规格方面,这类设备往往具备以下特点: - 支持高阻断电压和大电流,如600 V阻断电压和20A安装芯片电流。 - 提供较高的输出功率,例如2800 W输出功率,并且可能采用被动冷却方式来保证长时间运行的稳定性。 - 包括标准接口连接器,如MADK M3接口连接器,以便于与其他系统的集成。 ### 驱动支持 对于MCE设备而言,驱动支持通常涉及到与特定微控制器或处理器的兼容性以及相关的固件开发。这些设备可能会需要定制化的驱动程序来实现对电机的精确控制。此外,为了确保设备能够正常工作并发挥其最佳性能,还需要考虑以下因素: - 与主控单元(如单片机或DSP)之间的通信协议。 - 对特定功能的支持,比如功率因数校正(PFC),这可能是通过连续导通模式(CCM)升压PFC拓扑来实现的。 - 最大开关频率限制,如最大功率因数校正开关频率为150kHz。 ### 应用场景 MCE设备的应用场景非常广泛,特别是在工业自动化领域,它们可以用来驱动无刷直流电机(BLDC Motor)。具体应用包括但不限于: - 工业机械中的电动驱动装置。 - 家用电器中的高效能电机控制系统。 - 电动汽车中的牵引电机控制。 - 自动化生产线上的精密运动控制。 除了上述应用外,随着技术的进步,MCE设备也被越来越多地应用于新兴领域,如机器人技术和智能家居设备中。 ```python # 示例代码:模拟一个简单的FOC控制逻辑 def foc_control(current_sensor_values): # 假设current_sensor_values是一个包含三个相位电流值的列表 # 实际应用中会使用更复杂的算法来计算转子位置和速度 rotor_position = calculate_rotor_position(current_sensor_values) speed = calculate_speed(rotor_position) return adjust_motor_power(speed) def calculate_rotor_position(currents): # 这里只是一个示例函数,实际计算会更加复杂 return sum(currents) / len(currents) def calculate_speed(position): # 计算速度基于位置变化率 return position * 2 # 假定的速度系数 def adjust_motor_power(speed): # 根据速度调整电机功率 if speed < target_speed: increase_power() elif speed > target_speed: decrease_power() target_speed = 1000 # RPM increase_power = lambda: print("Increasing motor power") decrease_power = lambda: print("Decreasing motor power") # 模拟传感器读取值 sensor_readings = [1.2, 1.4, 1.3] foc_control(sensor_readings) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值