写这篇博客是初衷是我之前在做一个项目,需要在uboot中实现usb通信功能,与pc上位机进行通信,在网上一直没找到相关的参考资料,后来项目做完了,就想写这篇博客分享给大家

转载请标明原处:https://blog.csdn.net/weixin_42066997/article/details/80081937

一、fastboot中的usb通信分析

进入正题,其实在u-boot中就存在usb通信的接口,这个接口在fastboot中,大家应该用过fastboot烧录系统,它就是用usb连接上位机来使用的,肯定会有关于usb的操作,关于fastboot的代码,主要集中在3个文件:

u-boot\arch\arm\cpu\slsiap\devices\fastboot.c

u-boot\arch\arm\cpu\slsiap\common\cmd_fastboot.c

u-boot\arch\arm\cpu\slsiap\devices\dwc_otg_hs.c

首先看cmd_fastboot.c

fastboot是u-boot的命令,在输入fastboot时,会执行do_fastboot函数

do_fastboot函数分析:

该函数的前半部分是一些关于fastboot命令的初始化,与我们要做的usb移植无关,但有个需要注意的地方,android_driver这个全局变量,它的值跟我们之后注册usb设备有关

该函数的下半部分是一个嵌套循环,外层的do...while和内层的while(1),这是我们重点要分析的地方,首先看do...while循环,一开始就执行函数fboot_interface_init,关于fastboot接口的初始化,追踪这个函数:

这部分最重要的就是执行fastboot_init函数,继续追踪,该函数定义在u-boot\arch\arm\cpu\slsiap\devices\fastboot.c

一眼就可以看到,fboot_usbctl_init,就是我们要关注的内容,继续追踪

这个函数非常简单,但还是要注意is_fastboot这个全局变量的值,s3c_usbctl_init函数定义在u-boot\arch\arm\cpu\slsiap\devices\dwc_otg_hs.c

这个函数,就是初始化usb硬件设备的底层接口,再往下都是寄存器操作了,所以,调用fboot_interface_init函数,最终会调用s3c_usbctl_init函数

关于在u-boot中使用usb进行通信(一)相关推荐

  1. 关于在u-boot中使用usb进行通信(三)

    二.u-boot移植usb通信接口 通过上面的分析,我们已经大致摸清了usb通信的流程,在u-boot中实现usb通信也就水到渠成啦 首先肯定要初始化usb设备,调用s3c_usbctl_init这个 ...

  2. 在android中使用USB进行通信的4种方法

    1. 使用skelton.c demo skelton.c 是linux内核自带的读写USB设备的demo,修改 VID&PID,编译成内核模块,成功加载后即可在用户空间使用open read ...

  3. BIOS里BOOT中boot mode 设置成UEFI和Legacy support有什么区别

    BIOS里BOOT中boot mode 设置成UEFI和Legacy support有什么区别?各什么意思.作用?uefi开机时间短是么? 专业回答 BIOS中,UEFI和legacy support ...

  4. 如何在Linux环境中使用USB存储器(转)

    如何在Linux环境中使用USB存储器(转) 如何在Linux环境中使用USB接口的存储设备?这是各大电脑论坛上出现得比较多的一个问题,同此可见这也是摆在许多电脑玩家面前的一道难题.本文就为您提供一套 ...

  5. usb禁止重定向_远程桌面中的USB重定向技术解析(功能篇)

    在运行远程和虚拟桌面的数据中心内,网络管理员可以对计算环境的各个方面进行控制.只有一点除外,就是本地外围设备. 本地外围设备包括所有连接到终端上的设备,例如USB驱动器.鼠标或打印机.它们逐渐成为终端 ...

  6. 再谈Spring Boot中的乱码和编码问题

    编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了. Spring系列产品大 ...

  7. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署

    嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spr ...

  8. Spring Boot 中使用 MongoDB 增删改查

    本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...

  9. Spring Boot 中使用@Async实现异步调用,加速任务执行!

    欢迎关注方志朋的博客,回复"666"获面试宝典 什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照 ...

最新文章

  1. MIT人工突触芯片新突破:指甲大小的芯片有望媲美超算
  2. 反应能力测试题_微笑抑郁的表现症状有哪些?你是否正在受微笑抑郁困扰?(内附测试题)...
  3. bin文件怎么转换成文本文档_怎么把视频文件转换成MP3?这款工具六步帮你实现...
  4. 真是,原来可以这样啊
  5. 解说redis中如何实现高可用
  6. 【python】输出到文件, f.write与print
  7. sqlilte 判断当天日期_Java8 必会的日期处理的实践,必须收藏!
  8. Daily Report 2012.11.2 刘宇翔
  9. 数字孪生|数字孪生装备-概念与内涵
  10. WinEdt 9 如何与pdf打开软件(Acrobat)关联
  11. android平板和ipad区别,iPad和安卓平板差距大吗?亲身经历告诉你,平板该如何挑选...
  12. MATLAB凸优化工具箱CVX用户手册-Chapter5
  13. linux虚拟网桥 docker,Docker 使用自定义网桥
  14. 18650锂电池知识全解析
  15. 【Maven】创建模块时出现Invalid packaging for parent POM
  16. 字节跳动2021批笔试题解
  17. 省赛题目(4月23日)
  18. 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
  19. 解决Pycharm装Illuminated Cloud之后无法创建项目的思路_艾孜尔江撰稿
  20. openstack 云主机分辨率问题

热门文章

  1. s8 android调用相机,教你如何在安卓手机上使用谷歌 pixel相机
  2. duilib-自定义曲线控件
  3. 【scrapy爬虫】最新sogou搜狗搜索 机智操作绕过反爬验证码(搜狗微信公众号文章同理)
  4. Google和facebook登录
  5. Appearance Analysis (map,字符串降维,暴力枚举,答案处理小技巧)
  6. 互联网知识付费创业项目,新手必看!
  7. JSP实现在线投票系统
  8. 用Python学《微积分B》(定积分)
  9. java反射课程一:基本API使用
  10. 自己动手编译交叉编译链