您尚未登录。

楼主 #1 2018-10-31 17:17:13

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

关于这个,其实早些时候已经做好了想发出来的,但是一直想优化一下,但是最近有点忙,所以抽不出时间修改。


今天看到xb00t群里面【大意先生】,也就是本站的达克罗德大神。想到之前他有说到需要裸机的驱动,所以现在就先发出来填坑了。







关于移植过程可以参考全志F1C100S usb裸机驱动移植1

感谢达克罗德提供的F1C100S裸机编译工程F1C100S裸奔framebuffer+PWM+GPIO驱动


下载: F1C100S裸机usb工程(支持hid和cdc类).zip

离线

楼主 #2 2018-10-31 17:18:25

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

占位

离线

楼主 #9 2018-11-14 10:33:39

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

樊星 说:

我在nano上加载bin文件,插电脑上没反应。请问有什么需要注意的地方吗?

请问是怎么加载呢。这个工程是基于裸机的那个工程加入了printf 和 中断管理。
我测试时候是利用sunxi-fel烧录RAM里面跑的,用的以下命令
sunxi-fel spl firmware.bin
sunxi-fel -p write 0x80000000 firmware.bin
sunxi-fel exec 0x80000000;

离线

楼主 #10 2018-11-14 10:41:54

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

逸俊晨晖 说:

感谢LZ分享
我尝试用了一下 发现用JLink加载编译出来的firmware.bin进DRAM 确实是在PC设备管理器会提示未知usb设备(设备描述符请求失败) 但此时的串口打印功能无法正常使用
然后我从Makefile发现可以下载进spiflash 于是我就试了一下 发现串口打印功能可以正常使用 但是在PC设备管理器没有任何提示 从打印来看 程序没有进入USB中断 还要请教LZ有什么需要注意的地方

发现未知设备可能是没有进入中断,可以试着直接用sys_uart_putc函数打印一些测试信息看看有没有进入中断。烧录到flash运行应该和RAM是差不多的,但是我没有测试过烧录到flash跑。晚上测试一下
需要注意的是usb_device_init函数的参数不能是0

离线

楼主 #15 2018-11-14 23:07:32

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

逸俊晨晖 说:

总结几个问题 用没改动过的程序
1. 用JLink加载编译出来的firmware.bin进DRAM
    先初始化DRAM 再用(https://whycan.cn/t_1858.html)链接3L的方法 现象是 PC设备管理器会提示未知usb设备(设备描述符请求失败)
    sys_uart_putc等串口打印函数无法打印出任何信息
2. sunxi-fel下载进spiflash
    在PC设备管理器没有任何提示 串口打印功能可以正常使用 估计没进入中断

测试了一下,的确烧录到flash后启动只打印没有发现usb设备。看来应该不是中断的原因,因为电脑usb没有发现设备,估计是时钟的原因,或者上下拉d+内部的代码问题。

离线

楼主 #16 2018-11-15 00:38:52

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

晕哥 说:
樊星 说:
微凉VeiLiang 说:

请问是怎么加载呢。这个工程是基于裸机的那个工程加入了printf 和 中断管理。
我测试时候是利用sunxi-fel烧录RAM里面跑的,用的以下命令
sunxi-fel spl firmware.bin
sunxi-fel -p write 0x80000000 firmware.bin
sunxi-fel exec 0x80000000;

我是加载到flash跑的。没试过加到人RAM里。另我看到在咱们论坛令一个帖子里,chong大神基于Linux4.19出过一个补丁。好像是也是解决的类似问题。就是在RAM里能运行在flash里不能运行。我能力弱,还没看懂那个补丁,说是有clk设置不对。晕哥应该知道。

那个帖子后面那个补丁可以在 FLASH里面跑了, 可以关注一下.

对比了一下提供的补丁,里面是修改了USB PHY的时钟位,以前错误的是bit8(应该不是F1c100s的),后面变成bit1(根据手册上看bit1是对的)。然后这个工程我当时写了一个usb_phy_open_clock();函数,里面USBPHY_CLK_GAT_BIT定义的是1没错。所以可能还有其它地方是sunxi帮忙初始化了的,这个后面再仔细翻一翻Linux的代码。

离线

楼主 #19 2018-11-15 14:12:22

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

逸俊晨晖 说:
微凉VeiLiang 说:
晕哥 说:

那个帖子后面那个补丁可以在 FLASH里面跑了, 可以关注一下.

对比了一下提供的补丁,里面是修改了USB PHY的时钟位,以前错误的是bit8(应该不是F1c100s的),后面变成bit1(根据手册上看bit1是对的)。然后这个工程我当时写了一个usb_phy_open_clock();函数,里面USBPHY_CLK_GAT_BIT定义的是1没错。所以可能还有其它地方是sunxi帮忙初始化了的,这个后面再仔细翻一翻Linux的代码。

对比了一下RAM运行和flash运行时 读了USB PHY的时钟位 RAM运行的是0x3 flash运行的是0x2 也就是说brom除了D1要置高外 D0也要置高 但改了后还是在flash不能运行
我还发现 flash运行在初始化时USBC系列的寄存器 除了ISCR外都写不进去 比如VEND0 PCTL 写操作完一读 都是0 估计是哪个时钟没配好

嗯,应该是还差某个时钟,有的芯片内部时钟开关和其他外设有关联的,关了一个就关全部了,不知道全志这个会不会也有这样的坑

离线

楼主 #20 2018-11-15 14:16:19

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

晕哥 说:

https://whycan.cn/files/members/3/2018-11-15_135953.png

我咨询了 @chong 大神,然后对比了 https://whycan.cn/t_1672.html 两个补丁

usb_phy0_clk 这个寄存器 8bit改成了1bit 试一试.

是bit1,地址和偏移应该也是对的,在usb_phy_open_clock函数里面

离线

楼主 #24 2018-11-18 22:11:39

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

樊星 说:

哪里有介绍芯片usb寄存器的文档?600里面没有,找了个a20里面只有host。

只有MUSB的官方寄存器文档,全志的好像没有见过

离线

楼主 #27 2018-11-20 20:37:32

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

小王子&木头人 说:

我试了一下 有报错

编译不通过么?具体是报什么错误呢

离线

楼主 #29 2018-11-26 01:21:01

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

小王子&木头人 说:

usbd_stop_work                                                                 
ERR: cannot get irq 26, err 1                                                 
sunxi_udc_enable called                                                       
CONFIG_USB_GADGET_DUALSPEED: USBC_TS_MODE_HS                                   
usbd_start_work                                                               
sunxi_usb_device_enable end   

从flash启动进不了中断

嗯,这个是的,上面有讨论过这个问题。在楼下问题找到了,欢迎下载工程测试一下

离线

楼主 #30 2018-11-26 01:25:58

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

问题终于找到了,是差Bus Reset寄存器的usb位没有置一。
在usb_phy.c中增加了两个函数
void USBC_PhyConfig(void);
void USBC_ConfigFIFO_Base(void);
在usb_dev.c里面bsp初始化开启时钟后调用
下面是整个更新后的工程
F1C100S_USB_Driver_V1_1.zip

最近编辑记录 微凉VeiLiang (2018-11-26 01:29:51)

离线

楼主 #32 2018-11-26 09:27:38

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

达克罗德 说:

辛苦了!搞这么晚。最近没时间,有时间打算搞个USB Bootloader,就不用老按着短路spi 时钟的按钮来用sunxitools了

可以的,就用荔枝派上面那个按键,上电发现按下就跳sunxi-fel。我现在都是用笔头短触6脚和7脚来进入的

离线

楼主 #40 2018-12-08 23:58:46

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

Quotation 说:

请问CDC方式连到电脑上,为什么一次最多只能发送8个字节。发9个就全收不到,连IRQ都没有。并且后续什么都收不到了,需要断开连接,重连后正常。
楼主有没有遇到这个现象?
我是用Mac系统,系统识别出usbmodem,用串口通信发送数据。

你好,我用Windows的电脑测试了一下,的确是会发送数据超过8个字节有问题。抓了一下包,发现是设备没有收到数据。从这个现象上看,一般是硬件端点的maxpack设置不对。不过我对了一下寄存器,maxpack值512是没有问题的。
然后后面仔细看了一下,发现漏配置了端点1的fifo大小和地址。重新在usb_config_ep_in和usb_config_ep_out函数里面加入USBC_ConfigFifo函数就可以了。工程后面整理下再重新上传,可以按照上面说的先修改

离线

楼主 #62 2020-08-07 23:51:06

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

Delei 说:

感谢楼主分享,希望尽快突破USB HOST

host已经ok了的

离线

楼主 #70 2021-04-15 21:04:23

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

jefe 说:

是usb主机驱动吗?

这个是usb设备的驱动

离线

楼主 #71 2021-04-15 21:06:07

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

视觉℡ 说:

有没有模拟U盘的例子

目前没有,有空再移植分享下。mass storage 好像就几个命令。然后read10 write10对接好底层的存储设备就好了

离线

楼主 #73 2021-04-19 20:50:11

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 全志F1C100S usb裸机驱动移植(暂支持device hid类和cdc类)

gary 说:

能模拟成USB 摄相头 UVC 吗?

淘宝小淘气的工程有uvc,我没有在f1c100s上调过

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn