前面分析过 dnw 的源码,发现 dnw 是将 usb 设备设置为 slave 模式,主机通过端点 0 来获取我们设置好的描述符,如果认为这些描述符符合 dnw 标准的话,便可以通过一个批量 Out 端点进行发送数据了。
  那么 fastboot 是什么东西,看上去非常复杂的样子,我在 tiny4412 上使用 fastboot 来刷各种东西 kernel system bootloader ,用起来非常简单,只需要输入一条 fastboot flash kernel uImage ,就能自动烧写完成,用起来真是非常方便。
  通过抓包分析,我发现 fastboot 只不过是 dnw 的升级版,相对于 dnw ,它多了一个批量输入端点,主机和设备之间有更多的交互。

Bus Hound 6.01 capture on Windows Vista (x64). Complements of www.perisoft.netDevice - Device ID (followed by the endpoint for USB devices)(43) Android ADB Interface(48) Android ADB InterfacePhase  - Phase TypeCTL   USB control transfer       IN    Data in transfer           OUT   Data out transfer          USTS  USB status                 Data   - Hex dump of the data transferredDescr  - Description of the phaseCmd... - Position in the captured dataDevice  Phase  Data                      Description       Cmd.Phase.Ofs(rep)
------  -----  ------------------------  ----------------  ------------------43.0  CTL    80 06 00 01  00 00 12 00  GET DESCRIPTOR           1.1.0        43.0  IN     12 01 10 01  00 00 00 08  ........                 1.2.0        d1 18 02 00  00 01 01 02  ........                 1.2.8        03 01                     ..                       1.2.16       43.0  CTL    80 06 00 02  00 00 09 00  GET DESCRIPTOR           2.1.0        43.0  IN     09 02 20 00  01 01 00 c0  .. .....                 2.2.0        19                        .                        2.2.8        43.0  CTL    80 06 00 02  00 00 20 00  GET DESCRIPTOR           3.1.0        43.0  IN     09 02 20 00  01 01 00 c0  .. .....                 3.2.0        19 09 04 00  00 02 ff 42  .......B                 3.2.8        03 00 07 05  81 02 40 00  ......@.                 3.2.16       00 07 05 03  02 40 00 00  .....@..                 3.2.24       43.0  CTL    80 00 00 00  00 00 02 00  GET STATUS               4.1.0        43.0  IN     01                        .                        4.2.0        43.0  CTL    00 09 01 00  00 00 00 00  SET CONFIG               5.1.0        43.0  CTL    80 06 00 02  00 00 09 00  GET DESCRIPTOR           6.1.0        43.0  IN     09 02 20 00  01 01 00 c0  .. .....                 6.2.0        19                        .                        6.2.8        43.0  CTL    80 06 00 02  00 00 20 00  GET DESCRIPTOR           7.1.0        43.0  IN     09 02 20 00  01 01 00 c0  .. .....                 7.2.0        19 09 04 00  00 02 ff 42  .......B                 7.2.8        03 00 07 05  81 02 40 00  ......@.                 7.2.16       00 07 05 03  02 40 00 00  .....@..                 7.2.24       43.0  CTL    80 06 03 03  09 04 40 00  GET DESCRIPTOR           8.1.0        43.0  USTS   c0010000                  canceled                 8.2.0        43.3  OUT    64 6f 77 6e  6c 6f 61 64  download                 9.1.0        3a 30 30 30  30 30 30 30  :0000000                 9.1.8        38                        8                        9.1.16       43.1  IN     44 41 54 41  30 30 30 30  DATA0000                10.1.0        30 30 30 38               0008                    10.1.8        43.3  OUT    31 31 31 31  31 31 31 31  11111111                11.1.0        43.1  IN     4f 4b 41 59               OKAY                    12.1.0        43.3  OUT    66 6c 61 73  68 3a 6b 65  flash:ke                13.1.0        72 6e 65 6c               rnel                    13.1.8

  抛开主机识别设备过程,单看数据传输过程是十分简单的,首先主机将文件大小发送给设备,设备如果确定这么大小的文件可以接受那么返回给主机一个OKAY,然后主机就开始发送数据,待全部接受完成,设备发送一个 OKAY 返回给主机表示数据接受完成,主机发送 flash:kernel 命令从机将刚发送的数据烧写到 kernel 分区。是不是非常简单?
  其实友善的 superboot 也是基于 fastboot 协议来搞的,只不过它针对自家产品进行了封装,主机和设备之间的交互更为复杂,可以来看一眼。
  

Bus Hound 6.01 capture on Windows Vista (x64). Complements of www.perisoft.netDevice - Device ID (followed by the endpoint for USB devices)(32) FriendlyARM Superboot InterfacePhase  - Phase TypeCTL   USB control transfer       IN    Data in transfer           OUT   Data out transfer          Data   - Hex dump of the data transferredDescr  - Description of the phaseCmd... - Position in the captured dataDevice  Phase  Data                      Description       Cmd.Phase.Ofs(rep)
------  -----  ------------------------  ----------------  ------------------32.0  CTL    80 06 00 01  00 00 12 00  GET DESCRIPTOR           1.1.0        32.0  IN     12 01 10 01  ff 00 00 08  ........                 1.2.0        d1 18 02 00  00 01 01 02  ........                 1.2.8        00 01                     ..                       1.2.16       32.0  CTL    80 06 00 02  00 00 09 00  GET DESCRIPTOR           2.1.0        32.0  IN     09 02 20 00  01 01 00 c0  .. .....                 2.2.0        19                        .                        2.2.8        32.0  CTL    80 06 00 02  00 00 20 00  GET DESCRIPTOR           3.1.0        32.0  IN     09 02 20 00  01 01 00 c0  .. .....                 3.2.0        19 09 04 00  00 02 ff 42  .......B                 3.2.8        03 00 07 05  81 02 40 00  ......@.                 3.2.16       00 07 05 03  02 40 00 00  .....@..                 3.2.24       32.0  CTL    80 00 00 00  00 00 02 00  GET STATUS               4.1.0        32.0  IN     01                        .                        4.2.0        32.0  CTL    00 09 01 00  00 00 00 00  SET CONFIG               5.1.0        32.0  CTL    80 06 00 03  09 04 40 00  GET DESCRIPTOR           6.1.0        32.0  IN     04 03 09 08               ....                     6.2.0        32.3  OUT    53 4b 49 50  49 4e 46 4f  SKIPINFO                 7.1.0(3)     32.1  IN     65                        e                        8.1.0(3)     32.3  OUT    47 45 54 48  57 20 30     GETHW 0                 13.1.0        32.1  IN     20 53 75 70  65 72 62 6f   Superbo                14.1.0        6f 74 2d 32  34 34 30 20  ot-2440                 14.1.8        56 65 72 73  69 6f 6e 3a  Version:                14.1.16       20 31 2e 33  61 28 32 30   1.3a(20                14.1.24       32.3  OUT    47 45 54 48  57 20 31     GETHW 1                 15.1.0        32.1  IN     20 43 50 55  3a 20 53 33   CPU: S3                16.1.0        43 32 34 34  30 20 34 30  C2440 40                16.1.8        30 4d 48 7a               0MHz                    16.1.16       32.3  OUT    47 45 54 48  57 20 32     GETHW 2                 17.1.0        32.1  IN     20 52 41 4d  3a 20 36 34   RAM: 64                18.1.0        4d 42                     MB                      18.1.8        32.3  OUT    47 45 54 48  57 20 33     GETHW 3                 19.1.0        32.1  IN     20 4e 41 4e  44 3a 20 32   NAND: 2                20.1.0        35 36 4d 42  28 53 4c 43  56MB(SLC                20.1.8        29 20 49 44  3a 45 43 44  ) ID:ECD                20.1.16       41 31 30 39  35           A1095                   20.1.24       32.3  OUT    47 45 54 48  57 20 34     GETHW 4                 21.1.0        32.1  IN     20                                                22.1.0        32.3  OUT    47 45 54 49  4e 46 4f     GETINFO                 23.1.0        32.1  IN     31 20 55 6e  6b 6e 6f 77  1 Unknow                24.1.0        6e 20 63 6f  6d 6d 61 6e  n comman                24.1.8        64                        d                       24.1.16       32.3  OUT    47 45 54 49  4e 46 4f     GETINFO                 25.1.0(26)    32.1  IN     31 20                     1                       26.1.0(26)

  主机会获取开发板型号,nandflash 型号大小等等信息,其实只要按照它这个格式进行数据交互,我们就可以借助于 minitools 来烧写我们的开发板了,但是我认为没比较搞这么复杂,原生的 fastboot 足以满足我们的需求。

想仔细分析原理的同学建议看一下我整理的一下代码:

dnw fastboot学习源码

移植fastboot到2440相关推荐

  1. 2.移植uboot-添加2440单板,并实现NOR、NAND启动

    上章分析了uboot启动流程后,接下来便来配置新的单板,实现nor.nand启动 1.首先在uboot里新建单板2440 1.1将2410的单板文件夹拷贝成2440: cd board/samsung ...

  2. arm linux goahead,goAhead 2.5嵌入式web服务器移植到arm9 2440 + linux中

    本文内容概要:详细描述了移植goAhead 2.5到S3C2440的linux系统的过程.步骤.遇到的问题及其解决方法. 开发环境: 宿    主   机:window XP: 虚    拟   机: ...

  3. 2020年秋招联发科小米等20家公司面经总结

    秋招投递公司23家,简历被刷1家.笔试/测评挂掉3家.至今无消息的8家.获得Offer的公司有小米,兆易创新,全志科技,浙江大华,海格通信,京信通信,景嘉微电子,广州朗国电子,北京华大电子,中国长城科 ...

  4. 2020秋招——万字面经分享,这一篇超级走心

    秋招投递公司23家,简历被刷1家.笔试/测评挂掉3家.至今无消息的8家.获得Offer的公司有小米,兆易创新,全志科技,浙江大华,海格通信,京信通信,景嘉微电子,广州朗国电子,北京华大电子,中国长科技 ...

  5. zblog php 手机模板,Zblog主题模板自适应手机响应式ZblogPHP简洁博客主题

    常用js功能函数集合 1.获取随机时间戳 function uniqueId(){         var a=Math.random,b=parseInt;         return Numbe ...

  6. u-boot-2009.08在2440上的移植详解(三)

    一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-b ...

  7. 2440 6.0BSP 移植过程之OAL

    //-------------------------------------------------------------------------------------------------- ...

  8. 2440 6.0BSP 移植过程之显示驱动篇

    2440 6.0BSP 移植过程之显示驱动篇 //--------------------------------------------------------------------------- ...

  9. 关于在2440上移植rtl8192和rtl8188cus linux驱动遇到的问题及解决方法!!!

    很早就想在2440上移植无线网卡驱动了,在网上也看了不少相关的资料,但真正做起来才发现有不少问题. 一开始,我用从同学那里拿来的TL-WN725N(这卡便宜啊,50左右成交,TB上坑爹的2440无线网 ...

  10. 2440移植Mplayer详细过程(最简便的方法)以及报错解决

    移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,开发板:韦东山JZ2440 2,linux 版本:linux-3.4.2 3,系统版本:Ubuntu9.10 4,交叉编译环境:ar ...

最新文章

  1. 水清冷冷:Adobe Illustrator CC 2021(AI CC2021)安装教程及学习技巧(附工具)
  2. 【转】.NET NPOI操作Excel常用函数
  3. eclipse html自动对齐,MyEclipse和Eclipse中jsp、html格式化自动排版问题
  4. windows10 下安装、配置、启动mysql
  5. React Native工程中TSLint静态检查工具的探索之路
  6. java题-java运行时异常与一般异常有何异同?
  7. 一图抵千言:带你快速学会 GoogLeNet 神经网络 | CSDN 博文精选
  8. 台风怎么看内存颗粒_【无趣】使用300多元的D4 16G内存是种什么体验
  9. 光学相干断层成像术(OCT)
  10. google Inception v1 - v4 papers 发展历程
  11. office怎么像wps一样多栏_WPS文档分栏设置,让排版更完美 Word2010如何分两栏、三栏、多栏技巧...
  12. amap不同样式marker点_高德地图markers生成和点击
  13. 中小企业 数量 e-mail_【深圳】市中小企业服务局关于发布2021年深圳市工业设计发展扶持计划工业设计走进中小微制造企业扶持项目申请指南的通知...
  14. 安卓手机小说阅读器_百万小说阅读器app免费版下载-百万小说阅读器app手机版下载v1.4...
  15. 北京理工大学2000年复试上机题
  16. 定了!新版Windows 11总算来了!!
  17. Element Table 反选
  18. 分数的四则运算及化简(C语言实现)
  19. c语言在测绘工程中的作用,测绘程序C语言测绘工程专业.doc
  20. eNSP之简单WLAN拓扑配置

热门文章

  1. 2017年全国计算机软件水平考试报名入口网址V1.0(小虎整理)
  2. 优化UE4性能 、减少DrawCall——材质中使用自定义基元数据
  3. Python计算思维训练——数组和曲线绘制练习(三)
  4. python决策树分箱_分箱方法 - 静静的白桦林_andy - 博客园
  5. 如何让房间每一个角落都充满 Wi-Fi?
  6. CSS动画效果(animation属性)解析
  7. 【SpringBoot】文件上传(基础上传、上传文件限制、上传多个文件)
  8. win10计算机控制面板在哪里,windows10系统控制面板在哪里?快速找到Win10控制面板的三种方法...
  9. 嫡权法赋权法_1-熵值法赋权
  10. 程序员必备的 58 个学习网站