《编译原理》阅读笔记:p19-p24

《编译原理》学习第 4 天,p19-p24总结,总计 5 页。

一、技术总结

1.grouping of phases

这里谈到分组(group),那么就会有一个疑问,分组的依据是什么?即根据什么来分组。

(1) front end & back end

编译器包含很多阶段(phase)——lexical analyzer, syntax analyzer, semantic analyzer, intermediate code generator, code optimizer, code generator, 这些阶段可以分为front end和back end两组。这里是根据phase的作用进行分组——“The front end consists of those phases, or parts of phases, that depend primarily on the source language and are largely independent of the target machine”。

(2)pass

可以将多个phase分成一个pass。分组的依据是什么?暂时没有理解,先继续往下读。

2.compiler-construction tools

有哪些tool,这些tool的作用是什么。这里只需要大概了解即可,用到的时候自然会知道。

3.参考文献

本书会在最后Bibliography章节列出所有的参考文献,翻了一下Wexelblat在1981年写的《history if programming languages》,介绍了FORTRAN,LISP,COBOL等编程语言,果然历史久远。

二、其它

p24, Ascribing credit for techniques remains a perilous task。这句话初看不好理解,ascribe: xxx的原因,credit: 赞誉,perilous: 危险的。中译版将“ascribing credit”翻译成“论功”,甚是准确,但是翻译成“为编译技术论功是一项艰难的任务”,却有点生硬,我个人觉得应该将其翻译成“这些编译技术归功于谁?这真不好下结论,因为同一个技术,有时候确实是不同的人都发现了。”

四、参考资料

1. 编程

(1)Alfred V. Aho,Monica S. Lam,Ravi Sethi,Jeffrey D. Ullman,《编译原理(英文版·第1版)》:https://book.douban.com/subject/5416783/

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org
在这里插入图片描述

欢迎搜索及关注:编程人(a_codists)

<think>我们正在处理一个关于如何运行特定设备上的Widevine测试用例的问题。用户提供了一个具体的命令,但我们需要确保这个命令能够在目标设备上正确执行。根据用户提供的命令,我们需要关注以下几点:1.设备连接:设备IP和端口为192.168.120.70:5555,我们需要确保设备通过ADB连接到这个地址。2.测试命令:`wvts-s192.168.120.70:5555 --include-filterWvtsDeviceTestCasescom.google.android.wvts.WidevineAV1PlaybackTests#testL1With240P24UsingExo2Extractor` 3.测试内容:这是一个WidevineAV1播放测试,针对L1安全级别,240P分辨率,24帧,使用ExoPlayer2的Extractor。 但是,运行这个测试可能需要一些前提条件:-设备必须已经解锁Bootloader(因为WidevineL1测试通常需要设备处于可测试状态,有时需要解锁)-设备必须已经Root(部分测试可能需要Root权限来获取日志或修改系统设置) -设备必须已经启用开发者选项和USB调试-设备必须通过ADB连接到主机,并且可以通过`adbdevices`看到-主机上必须安装了Widevine测试套件(wvts) 然而,用户提供的引用内容似乎与解包固件和sepolicy有关,这可能不是直接相关的。但我们可以推测,用户可能之前在进行固件解包或修改系统策略,因此我们需要注意:-如果用户修改了系统镜像(如vendor分区),可能需要重新刷写修改后的镜像,并确保设备上的Widevine DRM相关组件正常工作。步骤建议: 1.确认设备连接:-使用`adbconnect192.168.120.70:5555`连接设备-使用`adbdevices`确认设备已连接2.确认设备状态:-设备必须已root,并且ADB具有root权限(`adb root`)-如果设备需要解锁,请确保已经解锁3.安装Widevine测试套件(如果尚未安装):-通常,wvts是AndroidCTS测试的一部分,可能需要从Google获取。但用户可能已经安装了,因为用户知道这个命令。4.运行测试命令:-直接运行用户提供的命令5.分析测试结果:-测试完成后,会输出测试结果,包括通过或失败。但是,如果遇到问题,比如测试失败,可能需要检查:-设备是否满足测试要求(如L1安全级别、AV1解码能力)-设备上的WidevineDRM模块是否正常工作-设备网络是否正常(因为测试可能需要从服务器获取许可证)另外,根据引用[1]中提到的`widevine.b00`,这是Widevine的固件文件,如果设备上的Widevine固件有问题,可能会导致测试失败。因此,如果用户之前修改过固件,可能需要恢复或更新固件。引用[2]提到了`gatekeeper`和`sepolicy`,这涉及到设备的安全策略。如果修改了sepolicy,可能会导致Widevine相关的服务无法正常工作,因此需要确保sepolicy允许Widevine运行。 因此,如果测试失败,我们可以建议:-检查设备日志(`adblogcat`)中与Widevine相关的错误-确保sepolicy没有阻止Widevine相关进程(如`hal_gatekeeper_hwservice`)的运行最后,生成相关问题: 1.如何确认设备是否支持WidevineL1安全级别? 2.运行Widevine测试需要满足哪些设备条件? 3.如何获取和安装Widevine测试套件(wvts)?4.如何分析Widevine测试失败的日志?5.修改sepolicy后如何重新打包刷入设备? 现在,我们按照用户要求的结构化格式来回答:</think>### 运行 Widevine 测试命令的步骤 #### 1. **确认设备连接** - 使用 ADB 连接目标设备: ```bash adb connect 192.168.120.70:5555 ``` - 验证设备状态: ```bash adb devices ``` 输出应包含 `192.168.120.70:5555 device`。 #### 2. **检查设备环境** - **Root 权限**(部分测试需要): ```bash adb root ``` - **解锁 Bootloader**(L1 测试必需): ```bash fastboot oem unlock ``` - **启用 USB 调试**:在设备设置中开启开发者选项和 USB 调试模式。 #### 3. **安装 Widevine 测试套件** - 确保设备已安装 `wvts` 测试包(通常包含在厂商 SDK 或 CTS 测试套件中): ```bash adb install path/to/wvts.apk ``` #### 4. **执行测试命令** - 运行用户指定的测试用例: ```bash wvts -s 192.168.120.70:5555 --include-filter WvtsDeviceTestCases \ com.google.android.wvts.WidevineAV1PlaybackTests#testL1With240P24UsingExo2Extractor ``` - **关键参数说明**: - `-s 192.168.120.70:5555`:指定目标设备。 - `--include-filter WvtsDeviceTestCases`:限定测试范围。 - `com.google...`:完整的测试类和方法路径。 #### 5. **结果分析** - 测试完成后: - 控制台输出 `OK` 表示通过。 - 失败时检查日志: ```bash adb logcat | grep "Widevine" ``` - **常见问题**: - **L1 认证失败**:检查设备 DRM 密钥状态(`adb shell dumpsys media.drm`)。 - **AV1 解码缺失**:确认设备支持 AV1 硬解(`adb shell codec -l | grep av1`)。 - **固件兼容性**:若解包过 `widevine.b00`(引用[1]),需确保刷回原厂镜像。 #### 6. **依赖项验证** - **Widevine 固件**:确认 `widevine.b00` 已正确加载(引用[1])。 - **SELinux 策略**:检查 `hal_gatekeeper_hwservice` 上下文是否允许 DRM 访问(引用[2]): ```bash adb shell ls -alZ /vendor/bin/hw/android.hardware.gatekeeper@1.0-service ``` > **注意**:若测试环境涉及修改后的固件(如解包 `super.img`),需先刷回完整镜像以确保 DRM 完整性[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值