如何按照这个格式mount
/dev/block/bootdevice/by-name/spunvm /mnt/vendor/spunvm vfat rw,noatime,shortname=lower,uid=1000,gid=1000,dmask=007,fmask=007,context=u:object_r:spunvm_file:s0 wait
为了按照以下格式挂载 `/dev/block/bootdevice/by-name/spunvm` 分区,请遵循以下步骤:
```
/dev/block/bootdevice/by-name/spunvm /mnt/vendor/spunvm vfat rw,noatime,shortname=lower,uid=1000,gid=1000,dmask=007,fmask=007,context=u:object_r:spunvm_file:s0 wa
sed -i '/persist/d' rawprogram_unsparse0.xml
git status --porcelain | awk '{print $2}' | xargs git checkout
AMSS: repo init -u ssh://<yourname>@[IP]:29418/AMSS/manifest -b XX && repo sync -cdf -j8
HLOS:repo init -u ssh://<yourname>@[IP]:29418/AP/manifest -b XX && repo sync -cdf -j8
XX:/ # pm list packages | grep run
package:org.freedesktop.monado.openxr_runtime.out_of_process
XX:/ # pm dump org.freedesktop.monado.openxr_runtime.out_of_process >/sdcard/dump.txt
dump.txt:
DUMP OF SERVICE package:
Activity Resolver Table:
Non-Data Actions:
android.intent.action.MAIN:
be9f12 org.freedesktop.monado.openxr_runtime.out_of_process/org.freedesktop.monado.android_common.AboutActivity filter ff69da2
Action: "android.intent.action.MAIN"
adb shell am start -n org.freedesktop.monado.openxr_runtime.out_of_process/org.freedesktop.monado.android_common.AboutActivity
使用trace来追踪Linux内核function调用
1)参考链接:
Linux使用 ftrace 来跟踪内核函数调用 - 灰信网(软件开发博客聚合)
2)实操环节:追踪qpnp_tri_led_set_blink
kona:/d/tracing #> set_event;>set_ftrace_filter;echo qpnp_tri_led_set_blink > set_ftrace_filter;echo 1 > options/func_stack_trace;echo function > current_tracer;> trace;echo 1 >tracing_on
sh-19303 [003] ...1 6965.106018: qpnp_tri_led_set_blink <-led_blink_setup
sh-19303 [003] ...1 6965.106026: <stack trace>
=> ftrace_graph_call
=> qpnp_tri_led_set_blink
=> led_blink_setup
=> led_blink_set
=> led_delay_off_store
=> dev_attr_store
=> sysfs_kf_write
=> kernfs_fop_write
=> __vfs_write
=> vfs_write
=> ksys_write
=> __arm64_sys_write
=> el0_svc_common
=> el0_svc_handler
=> el0_svc
usb
高通平台下,USB OTG鼠标的枚举流程涉及到Linux内核、USB驱动以及与高通芯片相关的代码。在一个通用的高通平台下,以下是与USB OTG鼠标枚举相关的一些代码:
1. USB插入。当一个USB OTG设备(例如鼠标)插入时,先触发phy驱动层的中断,具体代码位置位于内核源代码的 `drivers/usb/phy/` 目录下,如`phy-msm-usb.c` 文件。在该文件中定义了函数`msm_hsusb_vbus_notify`,用来处理外部设备的连接。
2. USB设备的物理连接会使系统产生一个中断并调用`msm_hsusb_vbus_notify`。随后,平台会通知USB Core进行设备枚举。具体实现代码位于内核源代码的 `drivers/usb/core/` 目录下,如`hub.c`, `usb.c`等文件。
3. OTG鼠标在电气连接完成后,USB Core会为其分配一个设备地址。设备地址的分配通过 `usb_new_device` 函数来完成,该函数在 `drivers/usb/core/hub.c` 文件中定义。
4. 获取鼠标设备的描述符。USB Core会向鼠标发送`GET_DESCRIPTOR`请求,此请求在文件`drivers/usb/core/message.c`中的`usb_get_descriptor()`函数中处理。
5. 分析鼠标设备描述符并装载驱动。设备描述符包括有关设备类型、供应商、产品ID等信息。在解析鼠标描述符后,USB驱动通过函数`hid_probe()`(位于`drivers/hid/usbhid/hid-core.c` 文件中)来分配并装载鼠标驱动。
6. 与鼠标建立通信。在找到设备驱动并配置好后,主机就可以与鼠标进行通信了,具体代码位置位于 `drivers/hid/usbhid/` 目录下的如`hid-core.c`,`hid-quirks.c`等文件中。这些文件负责将USB数据包转换为事件数据。
7. 报告鼠标事件。USB驱动最后会将鼠标的移动、滚轮和按键事件通过`input-core.c` 或 `evdev.c` 等文件中的事件接口报告给上层应用。应用程序可以通过`/dev/input/event*`设备节点来获取鼠标事件。
这个流程涉及到内核源代码树的USB架构、USB HID(人机输入设备)框架以及高通平台相关的驱动实现。这个流程在不同的高通平台上细节可能略有差异,但整体结构基本相同。要了解具体的实现细节,请参考具体高通平台的内核源代码。
当Android设备插入PC时,Android设备作为USB设备,具体处理代码主要涉及Linux内核、USB驱动和与高通芯片相关的代码。以下是通用高通平台的一些与USB设备枚举相关的代码逻辑:
1. USB 插入:当Android设备连接到PC时,会触发物理层驱动的中断。这个中断处理通常位于内核源码中的 `drivers/usb/phy/` 目录下。例如,在 `phy-msm-usb.c` 文件中,处理外部设备连接的函数如`msm_hsusb_vbus_notify`。
2. 连接建立:系统与PC建立连接后,USB Core开始识别已连接的设备。相关实现代码位于内核源码的 `drivers/usb/gadget/` 目录下,如 `configfs.c`, `udc-core.c` 等文件。
3. 与PC通信:Android设备会响应PC端发送的控制命令。 如当PC端请求设备描述符或功能描述符时,Android设备端会通过相应的代码处理并发送描述符。这些代码位于 `drivers/usb/gadget/` 和 `drivers/usb/gadget/function` 目录下的相关文件中。例如,当Android设备以MTP模式连接时,MTP功能描述符的解析和处理在 `f_mtp.c` 文件中完成。
4. 配置设备与启用功能:根据PC端的请求,Android设备会执行相应的配置操作。设备配置相关的代码通常位于 `drivers/usb/gadget/` 和 `drivers/usb/gadget/function/` 目录下。例如,在MTP模式下,数据传输任务会通过`f_mtp.c` 中的代码进行处理。
5. 数据传输与处理:USB驱动通过 `drivers/usb/gadget/` 和 `drivers/usb/gadget/function/` 目录下的代码实现与PC的数据传输控制。PC通过与Android设备建立BULK OUT和BULK IN通道传输数据,以传输文件和执行其他操作。
6. 与上层应用交互:内核通知上层应用的相关状态(如已连接、断开)以及数据传输结果。上层应用,如MTP服务、ADB等,会处理这些事件并做出相应处理。
这个流程涉及到内核源代码树的USB架构、USB设备框架以及高通平台相关的驱动实现。这个流程在不同的高通平台上细节可能略有差异,但整体结构基本相同。要了解具体的实现细节,请参考具体高通平台的内核源代码。
healthd下LOGW打印log少的问题.
HLOS/system/core$ git diff libcutils/klog.cpp
diff --git a/libcutils/klog.cpp b/libcutils/klog.cpp
old mode 100644
new mode 100755
index 6a9f4df..6ef735a
--- a/libcutils/klog.cpp
+++ b/libcutils/klog.cpp
@@ -42,7 +42,7 @@ static int __open_klog(void) {
return TEMP_FAILURE_RETRY(open(kmsg_device, O_WRONLY | O_CLOEXEC));
}
-#define LOG_BUF_MAX 512
+#define LOG_BUF_MAX 1512
void klog_writev(int level, const struct iovec* iov, int iov_count) {
if (level > klog_level) return;
使用interlace-frames.py来解包battery_scale.png会报错
D:\>python interlace-frames.py -d battery_scale.png -o battery.png
This script requires the Python Imaging Library to be installed.
interlace-frames.py脚本需要修改如下,依然报错
将
import Image
import PngImagePlugin
修改为
from PIL import Image
from PIL import PngImagePlugin
安装pip install Pillow后再使用上述修改可以成功.
|