Usb3--resource资源初始化

kernel_init                             //-----------------------kernel\init\main.c

-->kernel_init_freeable

     -->do_basic_setup

            -->do_initcalls

                   -->do_initcall_level

                          -->do_one_initcall

                                -->arch_initcall(arm64_device_init)   //--------------------------kernel\arch\arm64\kernel\setup.c

                                       -->arm64_device_init

                                              -->of_platform_populate(NULL, of_default_bus_match_table, NULL,NULL)   //----------------------------kernel\drivers\of\platform.c

                                                     -->of_platform_bus_create

                                                            -->of_platform_bus_create(child, matches, lookup, &dev->dev,strict);

                                                                    -->of_platform_device_create_pdata(bus, bus_id,platform_data, parent);

                                                                            -->of_device_alloc(np, bus_id, parent);

                                                                                   -->of_address_to_resource   //----------------------------------kernel\drivers\of\address.c

                                                                                             -->__of_address_to_resource//---------------dev初始化resource结构体

                                                                                                    -->r->start = taddr;

                                                                                                    -->r->end = taddr + size - 1;

                                                                                                    -->r->flags = flags;

                                                                                                    -->r->name = name ? name :dev->full_name;

 

kernel\drivers\of\address.c

of_address_to_resource(){

...

+if(strcmp(dev->name,"usb")== 0)

+{

+        pr_err(" zll----0-dev->name=%s!\n",name);

+}

return __of_address_to_resource(dev, addrp, size, flags, name, r);

 

…}

 

Line295: [    0.380215]@4  zll----0-dev->name=core !

Line296: [    0.380237]@4  zll----00----r->start=126726144 name=core!

Line297: [    0.380247]@4  zll----0-dev->name=phy_csr !

Line298: [    0.380259]@4  zll----00----r->start=442368 name=phy_csr!

Line299: [    0.380374]@4  zll----0-dev->name=core !

Line300: [    0.380387]@4  zll----00----r->start=126726144 name=core!

Line301: [    0.380397]@4  zll----0-dev->name=phy_csr !

Line302: [    0.380408]@4  zll----00----r->start=442368 name=phy_csr!

Android USB OTG (On-The-Go) 允许设备通过USB连接外部设备,例如摄像头,扩展其功能。以下是一个简单的示例,展示如何在Android应用中使用OTG连接并访问外置摄像头: 首先,你需要在AndroidManifest.xml文件中添加相应的权限,并启用调试模式: ```xml <uses-feature android:name="android.hardware.usb.host" android:required="true" /> <uses-permission android:name="android.permission.USB_PERMISSION" /> <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/accessory_filter" /> ``` 然后创建一个USBDeviceConnectionListener,用于监听USB设备的连接和断开: ```java private class UsbCameraConnectionListener implements UsbManager.UsbDeviceConnectionListener { @Override public void onConnected(UsbDevice device) { // 连接摄像头后处理 UsbCamera camera = new UsbCamera(device); try { camera.open(); } catch (IOException e) { Log.e(TAG, "Error opening camera", e); } } @Override public void onDisconnected(UsbDevice device) { // 断开摄像头时清理资源 if (camera != null) { camera.close(); camera = null; } } @Override public void onError(UsbDevice device, int error) { // 错误处理 Log.e(TAG, "Error with USB device: " + error); } } ``` 接着,在你的Activity中初始化UsbManager,并设置监听器: ```java private final static String TAG = "YourApp"; ... UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); usbManager.requestPermission(this, accessory.getDevice(), new String[] { "your_accessory_vendor_id", "your_accessory_product_id" }); usbManager.connectAccessory(accessory, connectionListener); ``` 最后,记得在onCreate()方法中检查是否有可用的USB设备,并启动相应的服务来读取相机数据。 这是一个基本的框架,实际操作中需要处理更多的细节,如错误处理、相机参数调整等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值