C2 Debug 错误

本文详细介绍了在使用Keil进行C2debug或download过程中遇到的连接端口跳变错误,并提供了解决方案。通过将端口重新选回为USBDebugAdapter1.9.1.0,可以有效解决该问题。

在用C2 debug或download过程中,弹出下面错误窗口:

是因为keil 设置中,C2连接端口跳变(之前设置对了有时也会自动跳变错),如下图:

将端口重新选回: USB Debug Adapter 1.9.1.0即可。

 

aarch64-oe-linux-objdump -g your_program | grep -A1 .debug_info 检查有内容输出 Offset into .debug_info: 0x0 Offset into .debug_info: 0x28 Offset into .debug_info: 0x197 Offset into .debug_info: 0x1d8 Offset into .debug_info: 0x1fb Offset into .debug_info: 0x179a Offset into .debug_info: 0x3724 Offset into .debug_info: 0x83156 Offset into .debug_info: 0xe3c88 Offset into .debug_info: 0x13684f Offset into .debug_info: 0x170a55 Offset into .debug_info: 0x19a5a8 Offset into .debug_info: 0x1fecb2 Offset into .debug_info: 0x2386ae Offset into .debug_info: 0x261dca Offset into .debug_info: 0x2ebc7d Offset into .debug_info: 0x3a8ac7 Offset into .debug_info: 0x3d1fca Offset into .debug_info: 0x3fe64a Offset into .debug_info: 0x4357c2 Offset into .debug_info: 0x48f57f Offset into .debug_info: 0x4e22d3 Offset into .debug_info: 0x50bed4 Offset into .debug_info: 0x5408c0 Offset into .debug_info: 0x57f0bf Offset into .debug_info: 0x5ab580 Offset into .debug_info: 0x5d7674 Offset into .debug_info: 0x5feaf0 Offset into .debug_info: 0x63faf7 Offset into .debug_info: 0x67d7ab Offset into .debug_info: 0x6a3ad0 Offset into .debug_info: 0x6d7f69 Offset into .debug_info: 0x6fff91 Offset into .debug_info: 0x7252ba Offset into .debug_info: 0x749a2d Offset into .debug_info: 0x76e0aa Offset into .debug_info: 0x79341a Offset into .debug_info: 0x7b7d3c Offset into .debug_info: 0x7dd734 Offset into .debug_info: 0x802c55 Offset into .debug_info: 0x8284e8 Offset into .debug_info: 0x84e004 Offset into .debug_info: 0x872441 Offset into .debug_info: 0x897158 Offset into .debug_info: 0x8bb53b Offset into .debug_info: 0x8dfd28 Offset into .debug_info: 0x90585c Offset into .debug_info: 0x92a31c Offset into .debug_info: 0x94ebbb Offset into .debug_info: 0x973efe Offset into .debug_info: 0x999285 Offset into .debug_info: 0x9be79b Offset into .debug_info: 0x9f9354 Offset into .debug_info: 0xa2e3ef Offset into .debug_info: 0xa651f6 Offset into .debug_info: 0xa9a899 Offset into .debug_info: 0xacf3d4 Offset into .debug_info: 0xb053a4 Offset into .debug_info: 0xb3abf1 Offset into .debug_info: 0xb70859 Offset into .debug_info: 0xba9172 Offset into .debug_info: 0xbdee5d Offset into .debug_info: 0xc1560e Offset into .debug_info: 0xc1cf24 Offset into .debug_info: 0xc249fa Offset into .debug_info: 0xc65c93 Offset into .debug_info: 0xc970b3 Offset into .debug_info: 0xcee197 Offset into .debug_info: 0xd2eccd Offset into .debug_info: 0xd5ec97 Offset into .debug_info: 0xda43e1 Offset into .debug_info: 0xdeaa68 Offset into .debug_info: 0xdeaa90 Offset into .debug_info: 0xdeab37 Contents of the .debug_info section (loaded from safety_hmi):
06-10
<think>好的,用户想了解Android中的MediaCodec和C2之间的关系或区别,以及它们的比较和使用指导。我需要先回忆这两个组件的背景和用途。 首先,MediaCodec是Android自API 16(Android 4.1)以来提供的编解码框架,属于Android SDK的一部分。开发者可以直接使用它进行音视频的编解码处理,通过输入输出缓冲区与硬件加速或软件编解码器交互。它支持同步和异步操作模式,应用广泛,比如在ExoPlayer中就有使用。 然后是C2框架,全称是Codec 2.0,这是Android 10引入的新架构,属于更底层的HAL(硬件抽象层)部分。C2旨在替代旧的OMX框架,解决其扩展性、性能和多线程处理的问题。C2组件需要由芯片厂商实现,通过HIDL接口与上层交互,提供更高效的资源管理和更灵活的配置选项。 接下来需要比较两者的区别。定位方面,MediaCodec是应用层API,而C2是底层HAL实现。架构上,MediaCodec之前基于OMX,现在可能逐渐迁移到C2;C2则是全新的设计。性能方面,C2优化了内存管理和并行处理,可能更高效。使用方式上,开发者直接操作MediaCodec,而C2对应用透明,由系统调用。兼容性上,MediaCodec广泛支持,C2需要Android 10及以上。 关于使用指导,开发者通常只需要使用MediaCodec,系统会自动选择底层实现(OMX或C2)。但在需要定制或优化时,可能需要处理C2组件,比如配置参数或处理低延迟场景。例如,配置C2编码参数可以通过MediaFormat传递,或者在创建MediaCodec时指定优先级。 还要注意,用户可能想知道如何选择两者,或者何时需要关注C2。需要说明一般情况下开发者只需使用MediaCodec,C2更多是系统底层和厂商的工作。但在高级场景下,比如需要特定优化或调试时,可能需要了解C2的工作机制。 最后,确保回答结构清晰,分点比较,并提供使用示例或注意事项。同时检查是否需要引用相关文档,但用户提供的引用是关于FFmpeg的,可能不相关,所以可能不需要引用。但如果有内部知识,比如Android开发者文档的内容,可以提及,不过用户没有提供相关引用,所以可能不需要标注。</think>### MediaCodec与C2框架对比及使用指南 #### 1. **基础定位** - **MediaCodec**:Android应用层编解码API(API 16+),提供统一的音视频编解码接口,支持硬件加速和软件实现[^1]。 - **C2 (Codec 2.0)**:Android底层编解码框架(API 29+),属于HAL层组件,替代传统OMX架构,由芯片厂商实现具体编解码逻辑。 #### 2. **架构差异** | 特性 | MediaCodec | C2 Framework | |---------------------|-------------------------------------|-----------------------------------| | **层级** | 应用层API | 底层HAL实现 | | **依赖关系** | 早期基于OMX,现逐步迁移至C2 | 独立设计,替代OMX | | **线程模型** | 单线程回调或同步模式 | 多线程优化,减少阻塞 | | **资源管理** | 通过`Surface`/`ByteBuffer`交互 | 统一内存池,减少拷贝 | #### 3. **性能与扩展性** - **C2优势**: - 支持**动态参数配置**(如分辨率、码率实时调整) - 更细粒度的**异步处理模型**,提升并行效率 - 改进的**错误恢复机制**,降低编解码中断概率 - **MediaCodec限制**: - 在旧设备上依赖OMX,可能遇到兼容性问题 - 同步模式易阻塞主线程(需配合`AsyncCallback`使用) #### 4. **使用场景对比** - **优先用MediaCodec**: ```java // 创建解码器示例 MediaCodec decoder = MediaCodec.createDecoderByType("video/avc"); decoder.configure(format, surfaceView.getSurface(), null, 0); decoder.start(); ``` - 适用场景:直播推流、播放器解码、视频编辑等通用需求。 - **需关注C2的情况**: - 需要**低延迟编码**(如游戏投屏) - 定制**非标准编码格式**(厂商私有扩展) - 深度优化**内存复用**(如4K/8K视频处理) #### 5. **关键交互实践** - **从MediaCodec访问C2特性**: ```java // 设置低延迟模式(需C2支持) MediaFormat format = new MediaFormat(); format.setInteger(MediaFormat.KEY_LATENCY, 1); // 低延迟标记 codec.configure(format, ...); ``` - **调试C2组件**: ```shell adb shell dumpsys media.codec # 查看C2组件状态 adb shell setprop debug.stagefright.ccodec 1 # 启用C2日志 ``` #### 6. **兼容性处理** - **版本适配检查**: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // 使用C2优化路径 } else { // 回退到OMX实现 } ``` - **编解码器能力查询**: ```java MediaCodecList list = new MediaCodecList(MediaCodecList.ALL_CODECS); MediaCodecInfo[] infos = list.getCodecInfos(); // 包含C2组件信息 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值