整理2023

如何按照这个格式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

HLOSrepo 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内核常用的动态调试手段_trace

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后再使用上述修改可以成功.

D:\>python interlace-frames.py -d battery_scale.png -o battery.png

P

Found 6 frames in battery_scale.png.

[000255255255255255204204204204515151555666777888999101010111111121212131313141414151515161616171717181818191919202020212121222222232323242424252525262626272727282828292929303030313131323232333333343434353535363636373737383838393939404040414141424242434343444444454545464646474747484848494949505050515151525252535353545454555555565656575757585858595959606060616161626262636363646464656565666666676767686868696969707070717171727272737373747474757575767676777777787878797979808080818181828282838383848484858585868686878787888888898989909090919191929292939393949494959595969696979797989898999999100100100101101101102102102103103103104104104105105105106106106107107107108108108109109109110110110111111111112112112113113113114114114115115115116116116117117117118118118119119119120120120121121121122122122123123123124124124125125125126126126127127127128128128129129129130130130131131131132132132133133133134134134135135135136136136137137137138138138139139139140140140141141141142142142143143143144144144145145145146146146147147147148148148149149149150150150151151151152152152153153153154154154155155155156156156157157157158158158159159159160160160161161161162162162163163163164164164165165165166166166167167167168168168169169169170170170171171171172172172173173173174174174175175175176176176177177177178178178179179179180180180181181181182182182183183183184184184185185185186186186187187187188188188189189189190190190191191191192192192193193193194194194195195195196196196197197197198198198199199199200200200201201201202202202203203203204204204205205205206206206207207207208208208209209209210210210211211211212212212213213213214214214215215215216216216217217217218218218219219219220220220221221221222222222223223223224224224225225225226226226227227227228228228229229229230230230231231231232232232233233233234234234235235235236236236237237237238238238239239239240240240241241241242242242243243243244244244245245245246246246247247247248248248249249249250250250251251251252252252253253253254254254255255255]

P

Frame 0 written to battery00.png.

P

Frame 1 written to battery01.png.

P

Frame 2 written to battery02.png.

P

Frame 3 written to battery03.png.

P

Frame 4 written to battery04.png.

P

Frame 5 written to battery05.png.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值