USB与BT HID reports描述符实践与抓包分析

文章内容提示 这篇文章主要说明如何获取与查看USB和BLE HoGP HID设备报告描述符,如何根据获取的描述符读懂report。然后说明了可以使用hidrd-convert工具,来如何根据hex报告描述符转化得到C语言格式的描述符,这对于我们编码是有意义的。 其中,还截取了USB 逻辑分析仪,Wireshark等工具来查看input report。 如何看懂HID report descriptor 对于如何看懂HID报告描述符,几乎离不开下面的这两个pdf: USB HID Usage Table USB HID Spec 先看文档(USB HID设备)弄明白一些基本概念:

Continue reading »

跨系统的录音格式兼容性问题: iOS Android

iOS/ OS X支持的可播放的Audio Format与Android支持的有些不一样。因此可能出现在Android设备上面使用MediaRecorder录制出来的音频文件在iOS上面不可用。当然也可能iOS上面录制的audio file在Android上面无法playback。 如果在iOS和Android上面开发类似微信这样的待遇语音交流的软件,那么就需要考虑iOS和Android上面录制出来的音频的跨系统的兼容性。 音频文件的基础知识 这方面涉及到下面几个方面: 采样率 比特率 声音通道 编码格式:指压缩方法 存储容器:即压缩后使用什么方式存储 对于这些可以看文章:How to convert between (most) audio formats

Continue reading »

WordPress管理日志

2017-09-19:WordPress更改域名与配置Nginx 域名更改 以前的域名过期了,在godaddy续费性价比低,于是干脆换个域名,重新购买了域名之后,按照下面操作即可完成。 如果Wordpress还可以登录,那么可以直接在Wordpress中登录,否则可以进入到phpAdmin中修改,具体参考: 更改wordpress的数据库中的siteurl与home字段。参考:How can I change the domain name for my WordPress site 当然这个需要登录到phpAdmin中修改,如果无法登录phpAdmin,或者找不到phpAdmin的地址,那么可以直接修改wp-config.php这个文件。具体而已,可以ssh登录后直接find找到,然后修改里面的值即可。 nginx配置更改 nginx会使用一个配置文件, 这个可以在ps 中看到:

Continue reading »

结合Yocto Qemu与Eclipse单步调试开发Linux Kernel

使用说明 在以前的博客中说明过使用Qemu + BuildRoot来构建一个虚拟的嵌入式开发平台, 还写过使用Yocto + Qemu来构建一个Cortex-A9的嵌入式开发调试平台. 同时在很久以前也写过使用Eclipse + JLINK来调试ARM9. 而在工作学习中,有时候, 对内核源码的研究中, 需要单步对linux内核跟踪调试, 且大部分是关注与内核中某些组件的实现, 例如MM, Binder驱动, 这个时候直接使用Qemu + Eclipse来调试与开发就比使用硬件方便快捷得多了. 那么这篇文章中将使用:

Continue reading »

amlogic S905X udpate imge的压缩和解压

使用的板子是khadas VIM amlogic的升级和烧写有多种方式, 常见的是USB烧写和SD卡烧写. USB烧写的流程其实是解压update.img中的文件,然后push到RAM中运行. 然后再push文件到ram中烧写. 这个和Freescale的MFGTools类似. update.img的生成 生成update.img的命令如下,可以看到不同文件在update.img中被包含, 中括号里面是文件名字和分区名字, 这个信息在后面的解压中会被用到.

  Update.img的解压 参考下面这个地址中的.c文件 http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/knowledge-tutorials-av/608116-how-to-recover-so-you-bricked-your-box 因为他的这个是为S912S为处理的, 对于S905X而言也是类似的, 同时因为他默认指定了一个打开的文件, 因此我改了一下:

Continue reading »

DragonBoard 410C中的Fastboot与调试串口注意事项

使用过的板子越来越多, 从FSL/NXP到三星, QualComm, Broadcom, Amlogic, MTK与海思, 还有NVIDIA Tegra.每一次使用板子做setup都需要去看一下Manual. 有些板子比较方便, 有些板子各种奇葩. 而记忆力又有限. 所以干脆以后每使用一个不同板子都记录一下. Fastboot mode 这一次用到的板子是DragonBoard 410C, QualComm的芯片. 死活进入不了manual上面的说道的fastboot mode. 结果发现原因是:

Continue reading »

Linux Qt程序打包成一个可执行文件

最近用Qt写了一个上位机, 而且是跨平台(Windows, Linux, ARM-Linux), 开发完成后需要对程序进行打包, windows的打包非常容易,选择非常多, 但是linux下面的选择就少了些. 方案的选择 Qt官方有页面专门说明Linux X11的deployment, 主要是两个: 官方的QT Installer Framework 第三方的AppImage 前者,可以制作online installer, 就像Qt本身一样, 但是稍微麻烦一些, 后者对于简单的程序打包比较容易很方便.

Continue reading »

Android中Native ELF的反汇编与破解的一些经验

工具选择与使用 一般Android运行的HW有: 32Bit的ARM 64Bit的ARM64 X86 X64 对于Intel/AMD的X86/X64, 可选的工具比较多, 因为ELF运行的Host是Android, 使用静态反汇编工具Hopper Disassemble与IDA是比较好的选择. 对于32位ARM的ARM, IDA与Hopper Disassemble都可以完成, 但是对于ARM64就只有Hopper Disassemble了, 当然最新的IDA Pro也可以,但是一般难以获取得到. 剩下的方式就是用readelf +

Continue reading »

Ubuntu 14.04与16.04(Linux Mint或者Debain)内核与模块编译

编译Ubuntu的内核, 如果按照官方的说明, 那么一般是编译出deb包, 然后安装,但是如果我们改了驱动, 或者内核那么我们很可能只想编译bzImage而不是重新生成deb包. 一般的编译步骤 参考Ubuntu 的wiki: Kernel Compile BuildYourOwnKernel 基本步骤如下 安装需要的软件包, 或者kernel source:

如果还需要menuconfig之类的话, 安装ncurse即可. 然后需要chmod脚本

Continue reading »