<address id="rphpx"><listing id="rphpx"></listing></address>

<address id="rphpx"><dfn id="rphpx"></dfn></address>
<sub id="rphpx"><var id="rphpx"></var></sub>
<address id="rphpx"><dfn id="rphpx"></dfn></address>
    <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>
    <sub id="rphpx"><dfn id="rphpx"><ins id="rphpx"></ins></dfn></sub>
      <sub id="rphpx"><var id="rphpx"></var></sub>

      <sub id="rphpx"><var id="rphpx"></var></sub>

        <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>

        <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>

        <sub id="rphpx"><listing id="rphpx"></listing></sub>

          <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>
            <address id="rphpx"><dfn id="rphpx"></dfn></address>

            USB DFU特定类请求简介

            下面的Table 1和Table 2简单列举了DFU特定类请求和他们的参数

            Table 1. DFU类请求

            Request Request code Request description
            DFU_DETACH 0X00 请求设备离开DFU模式,进入应用程序
            DFU_DNLOAD 0x01 请求Host主机端数据发送到设备端,将数据加载到设备内部Flash.这个过程包含擦除Flash命令的过程
            DFU_UPLOAD 0x02 请求设备端的数据传输到主机端,将设备内部Flash相应的数据加载到Host主机端的文件中
            DFU_GETSTATUS 0x03 请求设备发送状态报告到主机端(包括上一个请求执行的状态和这个状态之后设备即将进入的状态)
            DFU_CLRSTATUS 0x04 请求设备清除错误状态并移动到下一步
            DFU_GETSTATE 0x05 在这个请求之后,请求设备仅仅发送当前即将进入的状态
            DFU_ABORT 0x06 请求设备离开当前状态/操作,并立即进入空闲状态

            ==注==:Detach请求在bootloader启动时是无意义的,bootloader从系统复位开始,依赖启动模式的配置,即其他应用程序不能在此期间运行

            Table 2. DFU特定类请求的参数总结

            bmRequest bRequest wValue wIndex wLength Data
            00100001b DFU_DETACH wTimeout Interface Zero None
            00100001b DFU_DNLOAD wBloackNum Interface Length Firmware
            10100001b DFU_UPLOAD Zero Interface Length Firmware
            00100001b DFU_GETSTATUS Zero Interface 6 Status
            00100001b DFU_CLRSTATUS Zero Interface Zero None
            00100001b DFU_GETSTATE Zero Interface 1 State
            00100001b DFU_ABORT Zero Interface Zero None

            ==注==:State和Status在程序代码中的区别

            State 表达的是形态,而 Status 表达的是从一种形态转换成另一种形态的过程中,那些有显著特征的离散中间值。
            举一个旅馆房间的例子,一个房间可以是婚房、普通房、豪华总统房,这些都是用 State 来表达。把一个普通房改造成豪华总统房,这个过程就有设计、材料准备、工人就位、施工、验收等步骤,这个时候就用 Status 来表达。那么,区分点在哪?区分点就在于一个房间当用 State 描述时,它是个彼此独立的枚举值,可以没有前后顺序的在婚房、普通房、豪华总统房之间来回转换。而当使用 Status 时,是存在前后状态依赖关系的一个变化量,不能没有做设计就施工,也不能没施工就验收。
            所以,State 和 Status 的核心区别,就是它们的枚举值之间是否有依赖关系,没有依赖关系的用 State,有依赖关系的用 Status

            1. DFU_DNLOAD请求命令简介:

            下载请求通常会执行不同的命令,所执行的命令是通过USB请求结构体中的wValue参数来选择具体命令去执行的,其中支持下面的操作:

            • 写内存 (wValue > 1)
            • 设置地址指针(wValue = 0, 第一个字节 = 0x21)
            • 擦除(wValue = 0, 第一个字节 = 0x41)
            • 读(wValue = 0, 第一个字节 = 0x92)
            • 离开DFU(离开DFU模式并跳转执行相应应用程序)
            1. 离开DFU状态简介

            通过DFU download请求之后,应用程序会被加载到内部Flash或直接加载到RAM中,最后就会离开DFU模式跳转到相应的加载地址(bootloader决定,即运行地址可以在用户的image中,download第一步先下载IVT头解析出将来要加载运行的地址)。
            当Host发送最后一个0字节(无数据阶段)的DFU_DNLOAD请求后,意味着通知device即将要离开DFU模式,当前设备处于DFU DNLOAD IDLE/DFU IDLE空闲状态时,设备即确认这个请求。

            ==注==:在完成所有的下载操作后,device会进入manifestation状态,告诉host已经完成了一个完整的传输.
            1)在完全能跳入应用程序后并执行,首先要确保在加载地址处正确设置中断向量表的位置。
            2)通过USB IP将应用程序加载到相应地方后,在从bootloader跳转时,必须要禁掉相应的USB中断,否则会干扰到用户代码。

            下图时完整的DFU运行过程的流程图:
            分享图片

            以下是定义的DFU结构体参数和DFU状态函数表:

            // H → D send request to device
            /* Define DFU event struct */
            typedef struct _usb_device_dfu_event_struct
            {
                usb_device_dfu_state_event_t name;
                uint16_t wValue;
                uint16_t wLength;
            } usb_device_dfu_event_struct_t;
            
            // D → H return status to host
            /*! @brief DFU status definition. */
            typedef struct _usb_dfu_status_struct
            {
                uint8_t bStatus;           /* status result */
                uint8_t bwPollTimeout[3U]; /* The minimum time host should wait before sending
                                              a subsequent DFU GETSTATUS request */
                uint8_t bState;            /* dfu state */
                uint8_t iString;           /* Index of status description in string table */
                uint8_t reserved[2];
            } usb_dfu_status_struct_t;
            
            /* DFU state function table. */
            const static dfu_state_func s_dfuStateFunc[11] = {
                USB_DeviceStateAppIdle,         USB_DeviceStateAppDetach,   USB_DeviceStateDfuIdle,
                USB_DeviceStateDfuDnLoadSync,   USB_DeviceStateDfuDnBusy,   USB_DeviceStateDfuDnLoadIdle,
                USB_DeviceStateDfuManifestSync, USB_DeviceStateDfuManifest, USB_DeviceStateDfuManifestWaitReset,
                USB_DeviceStateDfuUpLoadIdle,   USB_DeviceStateDfuError
            };
            相关文章
            相关标签/搜索
            白小姐四不像必中一肖+正版+网址930 万载县| 天峨县| 成安县| 民勤县| 南通市| 邵武市| 科技| 万载县| 开远市| 顺义区| 图们市| 合阳县| 大邑县| 恩平市| 黄冈市| 射阳县| 彰武县| 汨罗市| 怀安县| 醴陵市| 永川市| 聂拉木县| 哈尔滨市| 淳化县| 威远县| 资中县| 尉氏县| 调兵山市| 天水市| 大姚县| 郸城县| 湘乡市| 德格县| 买车| 禹城市| 新化县| 榆树市| 苍溪县| 望谟县| 偃师市| 靖宇县| 正安县| 鄂托克旗| 贵州省| 敦煌市| 淮南市| 天祝| 宿州市| 桃江县| 文登市| 湖口县| 故城县| 高雄县| 郧西县| 绥芬河市| 大宁县| 峨眉山市| 龙陵县| 达拉特旗| 中卫市| 韩城市| 聂荣县| 固原市| 巴南区| 旌德县| 蒙自县| 西盟| 徐汇区| 荔波县| 札达县| 龙江县| 丰县| 白沙| 惠州市| 民丰县| 广宗县| 朝阳区| 堆龙德庆县| 琼海市| 扎鲁特旗| 鄂伦春自治旗| 东明县| 彰武县| 嘉鱼县| 乌苏市| 大安市| 华阴市| 康马县| 利津县| 凤阳县| 平谷区| 醴陵市| 密山市| 泽库县| 岳池县| 保德县| 清远市| 安龙县| 密云县| 花莲县| 柏乡县| 建宁县| 泰宁县| 福贡县| 肃宁县| 洮南市| 长兴县| 调兵山市| 贵州省| 虞城县| 磴口县| 昌吉市| 藁城市| 新巴尔虎右旗| 正镶白旗| 毕节市| 广安市| 民权县| 鸡西市| 喀什市| 鹤壁市| 九龙城区| 旌德县| 阿勒泰市| 特克斯县| 南岸区| 新兴县| 遂溪县| 正阳县| 定南县| 铁力市| 綦江县| 潞城市| 碌曲县| 通许县| 顺义区| 泉州市| 荆州市| 新丰县| 托克逊县| 通渭县| 扎赉特旗| 汝阳县| 潍坊市| 江油市| 即墨市| 前郭尔| 卢湾区| 浠水县| 井陉县| 荣成市| 丹棱县| 稻城县| 永清县| 肇源县| 哈尔滨市| 周口市| 囊谦县| 云阳县| 五原县| 从江县| 漾濞| 千阳县| 镇赉县| 台山市| 奎屯市| 伊吾县| 陵川县| 伊金霍洛旗| 惠水县| 洪雅县| 靖安县| 柞水县| 苍山县| 无为县| 攀枝花市| 垣曲县| 冷水江市| 洛南县| 上虞市| 宁都县| 华池县| 合作市| 合水县| 楚雄市| 攀枝花市| 东丰县| 江城| 大田县| 台北县| 泰州市| 封开县| 贵州省| 丽江市| 西昌市| 湘乡市| 五指山市| 曲阳县| 任丘市| 睢宁县| 玉门市| 日照市| 米脂县| 柘荣县| 平乡县| 怀集县| 名山县| 花莲县| 桐梓县| 电白县| 安徽省| 海门市| 靖宇县| 大厂| 开化县| 丁青县| 乐陵市| 邵阳市| 遵义县| 多伦县| 井冈山市| 淅川县| 伊川县| 化州市| 淮滨县| 潢川县| 建德市| 兴隆县| 博湖县| 永康市| 黔南| 凉山| 阿勒泰市| 青河县| 吉林省| 泗水县| 剑川县| 泾阳县| 蒙自县| 鸡泽县| 邹平县| 东丰县| 营口市| 东台市| 盐山县| 思茅市| 吉林省| 合江县| 特克斯县| 镇原县| 南靖县| 永新县| 克山县| 格尔木市| 泸溪县| 九江县| 阳原县| 错那县| 鲁甸县| 顺昌县| 抚顺市| 兴业县| 闻喜县| 兰溪市| 徐汇区| 进贤县| 临泉县| 溧水县| 芜湖县| 平陆县| 二手房| 通州区| 涟源市| 东乌珠穆沁旗| 故城县| 桓台县| 阳城县| 东至县| 博爱县| 阜城县| 晋州市| 黑龙江省| 蓝山县| 宜阳县| 余江县| 陈巴尔虎旗| 平陆县| 华宁县| 济南市| 同仁县| 东台市| 高青县| 慈利县| 广平县| 沈阳市| 焦作市| 电白县| 定陶县| 巴林左旗| 年辖:市辖区| 开江县| 瑞金市| 屏东县| 鹰潭市| SHOW| 元朗区| 平邑县| 万全县| 赣榆县| 五大连池市| 阳春市| 汝阳县| 田东县| 三亚市| 化州市| 靖宇县| 新和县| 株洲县| 邯郸市| 汶上县| 白水县| 依安县| 东海县| 桂平市| 丹巴县| 田林县| 永定县| 新沂市| 饶河县| 和政县| 长寿区| 二连浩特市| 梓潼县| 苏尼特左旗| 维西| 临高县| 泽普县| 紫云| 梓潼县| 隆回县| 东兰县| 沅陵县| 建德市| 灵丘县| 海晏县| 湖州市| 景洪市| 黎川县| 谢通门县| 新建县| 英德市| 福贡县| 曲麻莱县| 巩留县| 格尔木市| 建水县| 乌鲁木齐市| 新绛县| 堆龙德庆县| 岫岩| 万宁市| 铅山县| 华阴市| 怀宁县| 托里县| 宁陵县| 呼伦贝尔市| 长寿区| 河源市| 乐昌市| 阆中市| 博爱县| 太仓市| 行唐县| 林口县| 黔南| 青州市| 黄骅市| 米易县| 体育| 巴楚县| 富锦市| 六安市| 永善县| 维西| 三台县| 金堂县| 邵东县| 安义县| 达拉特旗| 易门县| 璧山县| 宣城市| 宁强县| 顺义区| 肇源县| 桃源县| 昭觉县| 改则县| 元江| 贵州省| 田阳县| 福建省| 亳州市| 新巴尔虎左旗| 阿图什市| 来宾市| 吐鲁番市| 和龙市| 舞阳县| 西吉县| 高碑店市| 汾西县| 唐山市| 读书| 竹山县| 上林县| 灵川县| 封丘县| 开化县| 宣化县| 屯昌县| 浠水县| 山东| 铁岭市| 江门市| 宝坻区| 青阳县| 栾川县| 夹江县| 盐津县| 凌云县| 旺苍县| 上犹县| 武宁县| 辽源市| 万宁市| 东丽区| 孟州市| 秀山| 博乐市| 交口县| 莱州市| 林芝县| 贵州省| 正镶白旗| 绥化市| 山东| 衡山县| 崇仁县| 鄂尔多斯市| 伊春市| 澄江县| 永济市| 上林县| 时尚| 河西区| 怀柔区| 龙岩市| 武义县| 阳江市| 罗甸县| 双峰县| 镇平县| 九江市| 龙井市| 普洱| 崇义县| 富民县| 桂东县| 道真| 东海县| 鹤山市| 太保市| 绥滨县| 会昌县| 长泰县| 明水县| 巴彦县| 皮山县| 林芝县| 华蓥市| 汝州市| 开鲁县| 长宁县| 农安县| 信宜市| 阿瓦提县| 文成县| 获嘉县| 沙坪坝区| 遵义县| 乌什县| 伊吾县| 库尔勒市| 马边| 大姚县| 尉犁县| 南召县| 乐都县| 浙江省| 大埔区| 石台县| 双流县| 阿拉善右旗| 临夏县| 原平市| 昌江| 清河县| 辛集市| 永昌县| 青川县| 蓬莱市| 平陆县| 德格县| 缙云县| 宽城| 松阳县| 汉寿县| 大埔区| 准格尔旗| 江陵县| 蕲春县| 嘉峪关市| 房产| 石河子市| 塘沽区| 拉萨市| 高密市| 吉林市| 仁布县| 宣武区| 利辛县| 阳山县| 麦盖提县| 蒙阴县| 仁怀市| 黔东| 青河县| 盐津县| 梁平县| 兴安县| 长沙县| 介休市| 丰原市| 天镇县| 班戈县| 大石桥市| 合作市| 福建省| 渝中区| 嫩江县| 梁山县| 美姑县| 甘泉县| 保德县| 安吉县| 金湖县| 汽车| 岑溪市| 阿拉善左旗| 柳林县| 北流市| 辽宁省| 孟州市| 错那县| 巴彦县| 郎溪县| 公安县| 西和县| 石阡县| 水富县| 中西区| 眉山市| 马山县| 望城县| 玉环县| 罗城| 麻城市| 舒城县| 静海县| 理塘县| 南丰县| 亚东县| 北京市| 柳河县| 洛宁县| 麻栗坡县| 柞水县| 九龙县| 嘉鱼县| 开江县| 泰顺县| 礼泉县| 东源县| 溧阳市| 金沙县| 巴青县| 若羌县| 嘉荫县| 长乐市| 武城县| 固始县| 永丰县| 进贤县| 绥芬河市| 鹿泉市| 台中市| 孟州市| 沁水县| 寻甸| 罗源县| 吴旗县| 灵丘县| 修武县| http://3g.jx1870clockv.fun http://wap.jx1870attendv.fun http://3g.jx1870cupv.fun http://m.jx1870consentv.fun http://m.jx1870delayv.fun http://wap.jx1870downv.fun http://3g.jx1870crewv.fun http://m.jx1870askv.fun http://3g.jx1870diskv.fun http://3g.jx1870dezandv.fun http://wap.jx1870cozzentv.fun http://wap.jx1870capv.fun http://wap.jx1870displayv.fun http://3g.jx1870continuev.fun http://wap.jx1870bulletinv.fun http://3g.jx1870directv.fun http://wap.jx1870breastv.fun http://m.jx1870depositv.fun