QEMU调试Linux系统的USB协议栈
来源:互联网 发布:java执行vbs 编辑:程序博客网 时间:2024/06/03 18:00
通过使用QEMU调试Linux系统的USB协议栈来学习USB协议栈。
http://blog.csdn.net/zoomdy/article/details/50954190
mingdu.zheng at gmail dot com
安装QEMU
- 1
- 1
启动QEMU进入调试模式
- 1
- 1
-kernel vmlinuz-2.6.32:指定内核文件
-initrd initrd.img:指定引导时使用的RAM Disk,RAM Disk中集成了BusyBox,包含一些基础命令
-append console=ttyS:传递给内核的参数,将内核控制台输出重定向到串口
-nographic:无图形窗口模式,纯文本模式,不需要窗口
-S:启动虚拟机时不执行代码,当受到GDB指令时才执行
-s:为-gdb tcp::1234的缩写形式,打开GDB Server,监听端口为1234
-monitor tcp::3333,server,nowait:将monitor重定向到TCP流,创建TCP服务器,监听端口为3333
-device pci-ohci:添加OHCI主机控制器到虚拟机
连接QEMU Monitor
- 1
- 1
在另一个终端,使用socat将qemu monitor的输出重定向到当前终端的标准输入输出。
打开GDB连接到QEMU
- 1
- 1
-ex “dir /home/firm/linux/linux-2.6.32/”:GDB启动后执行dir命令,指定源代码查找路径
-ex “target remote :1234”:接着执行target命令,连接到QEMU的GDB Server
-ex “b usb_init”:接着执行b命令,设置断点,usb_init为USB核心层的初始化入口函数
-ex “b ohci_hcd_mod_init”:继续设置断点,ohci_hcd_mod_init为OHCI主机控制器的初始化入口函数
-ex “b ehci_hcd_init”:继续设置断点,ehci_hcd_init为EHCI主机控制器的初始化入口函数
-ex “b usb_stor_init”:继续设置断点,usb_stor_init为Mass Storage类设备驱动的初始化入口函数
-ex “b storage_probe”:继续设置断点,storage_probe为Mass Storage类设备驱动的探测函数
-ex “c”:执行c命令,虚拟机开始启动
断点应按需设置
创建磁盘映像文件
- 1
- 2
- 1
- 2
通过QEMU Monitor插入优盘
- 1
- 2
- 3
- 1
- 2
- 3
drive_add创建一个虚拟的磁盘驱动器,usbdisk.img为磁盘映像文件
device_add添加优盘设备到虚拟机,使用上一步创建的磁盘驱动器
通过QEMU Monitor移除优盘
- QEMU调试Linux系统的USB协议栈
- QEMU调试Linux系统的USB协议栈
- 用qemu与gdb调试linux kernel tcp/ip协议栈
- qemu调试 linux-kernel
- Qemu调试Linux内核
- qemu在Linux系统上的使用
- 使用qemu调试linux内核
- 用qemu调试linux内核
- linux内核调试+qemu+eclipse
- linux内核调试+qemu+eclipse
- linux内核调试环境的搭建(使用qemu)
- linux内核调试环境的搭建(使用qemu)
- 搭建基于busybox和qemu的arm-linux系统
- linux工具---用qemu调试linux内核
- linux工具---用qemu调试linux内核
- linux下qemu调试linux内核
- Qemu中的虚拟机Windows系统调试
- LINUX USB调试
- CI的扩展机制
- 编程之外的修炼
- 画笔和画刷
- wifi数据传输APP操作小结
- POJ 1061 青蛙的约会
- QEMU调试Linux系统的USB协议栈
- 反射实例一
- C/C++传递方式
- Android ABI
- 一、Activiti5 配置
- APP可盈利模式分析
- Java写入文件的几种方法
- PHP将数据导出Excel表中(投机型)
- [Muduo网络库源码分析] (9) base/Thread.cc_h_CurrentThread_h线程对象