DFU u-boot搭建

参考资料:

  1. BeagleBone Black 从零到一 (2 MLO、U-Boot):关于AM335x的MLO解析
  2. Linux内核用户指南:linux core u-boot user’s Guide
  3. 视频:How to use AM57x/Dra7x DFU Boot Mode with Linux Host
  4. 虽然AM5728 IDK EVM的USB1仅作为host使用,但是可以通过修改U-boot
  5. 虽然AM5728 IDK EVM 的USB1仅作为host使用,但可以通过修改u-boot,使USB1成为peripheral,从而完成DFU步骤。
  6. 虽然TI员工警告该开发板的USB1仅设计为host使用,与VBUS有关。但我实际使用过程中,并没有损坏电脑器件,但也没完成DFU的完整步骤。没有办法在进入u-boot后,无法正常输入,不知是否与这个有关系。

基础配置

安装AM5728的SDK-Linux来获取U-Boot源码

  1. PROCESSOR-SDK-LINUX-AM57X 06_03_00_106

修改IDK上用来配置启动项的电阻, 使其能够从USB启动

  1. 当设置成 [00010]时,ROM code 将会从USB启动:
  2. 建立MLO和u-boot文件
  3. 建议在构建时使用以对象命名的目录。通过O = parameter来设置对象。同时建议输出目录以目标对象命名。这样即使你有多个配置目标,也会从名字上清晰的分辨。
  4. 设置编译链接地址
  5. export PATH="/home/pi/ti-processor-sdk-linux-am57xx-evm-05.03.00.07/linux-devkit/sysroots/x86_64-arago-linux/usr/bin":$PATH
  6. 清理源文件
  7. 如果没有使用单独的对象目录
  8. $ make CROSS_COMPILE=arm-linux-gnueabihf- distclean
  9. 如果使用’O = am57xx_evm’ 作为你的输出目录:
  10. $ rm -rf ./am57xx_evm
  11. 编译MLO和u-boot文件
  12. u-boot 和 SPL 是同时建立完成,必须一开始就将要配置你所需要的板子。使用下表确定要使用的defconfig:
  13. 表中并没有am5728的usb启动的配置,我们通过修改am57xx_evm_defconfig部分配置来达到我们的目的。
  14. cd <u-boot 文件夹>
  15. export CROSS_COMPILE=arm-linux-gnueabihf-
  16. export ARCH=arm
  17. make O=am57xx_evm am57xx_evm_defconfig
  18. make O=am57xx_evm

利用USB设备进行Device Firmware Upgrade(DFU)

  1. host Linux PC 需要安装有 dfu-util
  2. 使用 dfu-util 工具经由 DFU 去烧录所选的储存设备

USB Peripheral boot mode on DRA7x/AM57x (SPL-DFU support)

在 AM5728 IDK 开发板使用USB外设模式(改变sysboot模式,上文有所叙述),修改menuconfig中的部分配置,使能USB1外设模式和DFU功能。下文内容和步骤简介:

  1. 在u-boot 使能SPL-DFU功能,并且生成MLO/ u-boot的二进制文件
  2. 主机使用dfu-util 烧写MLO 和 u-boot.img
  3. 一旦u-boot启动,使用DFU命令将二进制文件烧写到eMMC ,或者其他存储
  4. 使用默认的"am57xx_evm_defconfig"来构建spl/u-boot-spl.bin和 u-boot.img
  5. export PATH="/home/pi/ti-processor-sdk-linux-am57xx-evm-05.03.00.07/linux-devkit/sysroots/x86_64-arago-linux/usr/bin":$PATH
  6. export CROSS_COMPILE=arm-linux-gnueabihf-
  7. export ARCH=arm
  8. make am57xx_evm_defconfig
  9. make menuconfig
  10. select SPL/DFU support
    menuconfig->SPL/TPL —>

    [] Support booting from RAM
    [
    ] Support USB Gadget drivers
    [*] Support DFU (Device Firmware Upgrade)

Unselect CONFIG_HUSH_PASER
menuconfig->Command Line interface

[*] Support U-boot commands

[ ] Use hush shell

建立spl/u-boot-spl.bin 和 u-boot.img
11. make -j8
12. 使用TI提供的usbboot工具
host$ git clone git://git.omapzoom.org/repo/omapboot.git
host$ cd omapboot
host$ checkout 609ac271d9f89b51c133fd829dc77e8af4e7b67e
host$ make -C host/tools
13. 获得usbboot-stand-alone 后, 使用该工具来载入spl/u-boot-spl.bin 到
IDK中
14. host$ sudo usbboot-stand-alone -S spl/u-boot-spl.bin
15.
16. 然后下载u-boot.img 到RAM中,并自动重新加载boot
17. host$ sudo dfu-util -c 1 -i 0 -a 0 -D "u-boot.img" -R
18. 如果安装过补丁
19.
20. 如果没有安装补丁,则会报错:
21. dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
dfu-util: No DFU capable USB device available
22. 由于am572x IDK 的 USB1 设计仅作为host,TI官方提供的配置默认无法使用peripheral模式,我们需要打上以下两份补丁,或者以这两份补丁做参考修改原配置文件:6505.0001-usb-enable-usb1-device-mode-for-am57x.patch.txt
23. 下载链接:6505.0001-usb-enable-usb1-device-mode-for-am57x.patch.txt

USB设备模式补丁 (将USB1设置为外设模式)

  1. am57xx-beagle-x15-commom.dtsi
  2. am57xx-idk-common.dtsi
    修改设备树
  3. board.c
    修改开发板定义和结构,打开usb相关定义
  4. am57xx_evm_defconfig
  5. am57xx_hs_evm_defconfig
    设置配置选项
  6. am57xx_evm.h
    头文件设置
  7. 为SPL_DFU功能定义CONFIG_SPL_LOAD_FIT_ADDRESS 地址,使能SPL_DFU功能
  8. 8662.0002-configs-am57xx_evm-define-
    CONFIG_SPL_LOAD_FIT_ADDRES.patch.txt
  9. include/configs/am57xx_evm.h
    头文件设置
  10. git am patches/*.patch.txt
    make clean
    make -j8
  11. 重新之前的步骤。在进入u-boot后立即按任意按钮,进入boot。minicom将有以下报文:
  12. U-Boot 2018.01-00571-ga76d30be29 (May 03 2019 - 16:34:17 +0800) CPU : DRA752-GP ES2.0 Model: TI AM5728 IDK Board: AM572x IDK REV 1.3B DRAM: 2 GiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 omap_hsmmc_send_cmd : DMA timeout: No status update *** Warning - MMC init failed, using default environment omap_hsmmc_send_cmd: timedout waiting on cmd inhibit to clear invalid mmc device SCSI: SATA link 0 timeout. AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst scanning bus for devices... Found 0 device(s). Net: Warning: ethernet@48484000 using MAC address from ROM eth0: ethernet@48484000 Hit any key to stop autoboot: 0 =>

接下来开始DFU部分。

DFU u-boot搭建相关推荐

  1. spring boot 搭建 和 全局异常处理

    spring boot 搭建: java -jar -Dserver.port=10000 -Dlogging.path=/var/logs xxx.jar &   -- 默认在/var/lo ...

  2. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  3. Spring Boot 搭建应用实现登陆实例,页面使用bootstrap

    2019独角兽企业重金招聘Python工程师标准>>> Spring boot 搭建web应用集成了thymeleaf模板实现登陆  下面是pom.xml的配置 <?xml v ...

  4. java 搭建个人博客_Spring boot 搭建个人博客系统(一)——整体思路

    Spring boot 搭建个人博客系统(一)--整体思路 一直想用Spring boot 搭建一个属于自己的博客系统,刚好前段时间学习了叶神的牛客项目课受益匪浅,乘热打铁也主要是学习,好让自己熟悉这 ...

  5. move_uploaded_file返回false但实际成功_023 Spring Boot 搭建实际项目开发框架

    前面的课程中,我主要给大家讲解了 Spring Boot 中常用的一些技术点,这些技术点在实际项目中可能不会全部用得到,因为不同的项目可能使用的技术不同,但是希望大家都能掌握如何使用,并能自己根据实际 ...

  6. spring boot 搭建的一个企业级快速开发脚手架

    源码地址 https://github.com/javanan/slife slife spring boot 搭建的一个企业级快速开发脚手架. 技术栈 Spring Boot MySQL Freem ...

  7. Spring Boot搭建简易spring clound框架 (一)

    Spring Boot搭建简易spring clound框架 (一) 1.搭建之前先了解微服务 微服务架构介绍 微服务架构(Microservice Architecture)是一种架构概念,旨在通过 ...

  8. Spring boot 搭建个人博客系统(二)——登录注册功能

    Spring boot 搭建个人博客系统(二)--登录注册功能 一直想用Spring boot 搭建一个属于自己的博客系统,刚好前段时间学习了叶神的牛客项目课受益匪浅,乘热打铁也主要是学习,好让自己熟 ...

  9. ureport2 + spring boot 搭建

    ureport2使用 ureport2 UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表 在UReport2中,提供了全新的基于网 ...

  10. 使用Spring boot搭建Wechat(企业微信)Demo -图文教程 -01 环境搭建

    ** Spring Boot-Wachat Demo [1] 环境搭建[适用小白的哥哥大白,高手跳过本节,内容主要记录个人搭建所遇到的坑和分享过程] ** Spring boot简介.特点等这里就不过 ...

最新文章

  1. Linux下程序时间消耗监控与统计
  2. ios6.x越狱将不会再呈现了
  3. SpringBoot Thymeleaf使用教程(实用版)
  4. Linux下I/O多路转接之select --fd_set
  5. jclouds_jclouds的命令行界面
  6. 作业二:个人博客作业内容:需求分析
  7. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术
  8. angular div 滚动条事件_DOM事件
  9. python海贼王logo_Python 实现的下载op海贼王网的图片(网络爬虫)
  10. volatile关键字与synchronization关键字的区别?
  11. java的中文源代码
  12. VB操作access数据库
  13. c语言oj1065统计,东方博宜OJ
  14. 蓝桥杯试题 基础练习 十六进制转八进制
  15. 大数据模型交易平台案例:消费贷款客户营销分析解决方案
  16. JDK安装和环境变量配置(Win10图文详解)
  17. Java基础知识每日总结(19)---Java输入输出流、文件、递归
  18. 微商php源码,Thinkphp内核微商新零售平台源码
  19. 判断101到200有多少素数,并输出所有素数
  20. Windows配置ThingsBoard,并实现简单Demo(未完待续)

热门文章

  1. 淘宝模板开发系列之DOM、CSS规范
  2. 结合实际案例谈谈项目管理经验
  3. JavaFX报错: Exception in thread WindowsNativeRunloopThread java.lang.NoSuchMethodError
  4. android更改menu字体颜色,Android 修改 Menu字体颜色
  5. NYOJ54-小明的存钱计划
  6. java学习的第二个代码(飞行棋比赛-----龟兔赛跑),继上一个博客,对数组和Arrays的熟悉
  7. 悬浮组件 - gitter 在线交流
  8. 简单盘点游戏开发引擎
  9. 内容交付网络(CDN)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. ESP32编程使用OLED屏