关于在u-boot中使用usb进行通信(一)
写这篇博客是初衷是我之前在做一个项目,需要在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进行通信(一)相关推荐
- 关于在u-boot中使用usb进行通信(三)
二.u-boot移植usb通信接口 通过上面的分析,我们已经大致摸清了usb通信的流程,在u-boot中实现usb通信也就水到渠成啦 首先肯定要初始化usb设备,调用s3c_usbctl_init这个 ...
- 在android中使用USB进行通信的4种方法
1. 使用skelton.c demo skelton.c 是linux内核自带的读写USB设备的demo,修改 VID&PID,编译成内核模块,成功加载后即可在用户空间使用open read ...
- BIOS里BOOT中boot mode 设置成UEFI和Legacy support有什么区别
BIOS里BOOT中boot mode 设置成UEFI和Legacy support有什么区别?各什么意思.作用?uefi开机时间短是么? 专业回答 BIOS中,UEFI和legacy support ...
- 如何在Linux环境中使用USB存储器(转)
如何在Linux环境中使用USB存储器(转) 如何在Linux环境中使用USB接口的存储设备?这是各大电脑论坛上出现得比较多的一个问题,同此可见这也是摆在许多电脑玩家面前的一道难题.本文就为您提供一套 ...
- usb禁止重定向_远程桌面中的USB重定向技术解析(功能篇)
在运行远程和虚拟桌面的数据中心内,网络管理员可以对计算环境的各个方面进行控制.只有一点除外,就是本地外围设备. 本地外围设备包括所有连接到终端上的设备,例如USB驱动器.鼠标或打印机.它们逐渐成为终端 ...
- 再谈Spring Boot中的乱码和编码问题
编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了. Spring系列产品大 ...
- 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署
嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spr ...
- Spring Boot 中使用 MongoDB 增删改查
本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...
- Spring Boot 中使用@Async实现异步调用,加速任务执行!
欢迎关注方志朋的博客,回复"666"获面试宝典 什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照 ...
最新文章
- MIT人工突触芯片新突破:指甲大小的芯片有望媲美超算
- 反应能力测试题_微笑抑郁的表现症状有哪些?你是否正在受微笑抑郁困扰?(内附测试题)...
- bin文件怎么转换成文本文档_怎么把视频文件转换成MP3?这款工具六步帮你实现...
- 真是,原来可以这样啊
- 解说redis中如何实现高可用
- 【python】输出到文件, f.write与print
- sqlilte 判断当天日期_Java8 必会的日期处理的实践,必须收藏!
- Daily Report 2012.11.2 刘宇翔
- 数字孪生|数字孪生装备-概念与内涵
- WinEdt 9 如何与pdf打开软件(Acrobat)关联
- android平板和ipad区别,iPad和安卓平板差距大吗?亲身经历告诉你,平板该如何挑选...
- MATLAB凸优化工具箱CVX用户手册-Chapter5
- linux虚拟网桥 docker,Docker 使用自定义网桥
- 18650锂电池知识全解析
- 【Maven】创建模块时出现Invalid packaging for parent POM
- 字节跳动2021批笔试题解
- 省赛题目(4月23日)
- 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
- 解决Pycharm装Illuminated Cloud之后无法创建项目的思路_艾孜尔江撰稿
- openstack 云主机分辨率问题