打印
[AT32F415]

AT32F425 USBD自定义升级包长度为1030字节。

[复制链接]
810|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvben5d|  楼主 | 2022-7-25 13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lvben5d 于 2022-7-25 14:20 编辑

通过USB上位机解析HEX文件,按照一页page为1024字节容量的MCU,我上位机设计下发数据包为1030字节(1024+6个字节的包头 尾  序列号等),之前在GD32E103 (usb sram有1.25KB 字节  可以设置1030 RX FIFO 以及EPO EP1 TX FIFO长度)  我上位机是直接塞入 USB   1030字节, 我GD32E103 RXFIFO是 128*4  512字节,但是中断响应快,估计是从RX FIFO取走了一些字节处理(此时上位机还是在自动拆包分发),所以组包后,收到每一次完整包字节数是1030没错。

使用特权

评论回复
沙发
tanleitanlei| | 2022-7-25 13:58 | 只看该作者
本帖最后由 tanleitanlei 于 2022-7-25 14:11 编辑

首先对于这句话“按照CM4内核这种 一页为1024字节的特性”不能理解你所要表达的意思,暂且猜测你想表达的是片上flash,片上flash的页大小和CM4内核无关,此参数可查阅RM。
其次对于425 USB专用RAM空间为1280字节是否够用的问题,答案是够用。USB协议对于不同的传输类型(interrupt、bulk、iso、ctrl)来讲单包的数据量是不同的,上位机在发送时会根据协议的不同进行分包下发,对于MCU端 USB每收到一包数据就要进行处理(数据接收是USB硬件,但数据处理是软件行为)。
对于你的问题,上位机每次塞入1030字节数据,会被拆分成多包数据下发,这一点你可以抓包看到,MCU端应将这些数据保存下来进行处理,这是软件控制。另外,是在什么地方看到425 USB只有1080字节RAM的呢?425也是1280字节RAM。

使用特权

评论回复
板凳
tanleitanlei| | 2022-7-25 14:10 | 只看该作者
另外是在什么地方看到425 OTG只有1080Kbyte RAM的呢??425也是1280Kbyte RAM。

使用特权

评论回复
地板
lvben5d|  楼主 | 2022-7-25 14:31 | 只看该作者
实际使用中,我感觉只要USB dev接收处理及时,这个RX FIFO可以设置少一点,反而个别应用 当用户上传数据包一次可能超过64字节,这个时候用户的TX fifo  最好长度就设置成最大包长,否则自己还得拆包 塞入tx fifo吧?这样反而麻烦。 比如我之前做一款USB转TLL,用户发给我TTL RX的包 可能是大于64字节~512字节之间的,我这个完整包,如果通过usb发给 host ,最好一次丢给usb tx fifo 由内部机制来处理拆包上发。 最后只要等发送完毕,发送资源释放(可以发新包就可以了吧)

使用特权

评论回复
5
tanleitanlei| | 2022-7-25 15:38 | 只看该作者
lvben5d 发表于 2022-7-25 14:31
实际使用中,我感觉只要USB dev接收处理及时,这个RX FIFO可以设置少一点,反而个别应用 当用户上传数据包 ...

使用 usb库调用发送数据API接口,不用关注数据包大小,大于一包数据内部会自动处理。

使用特权

评论回复
6
lvben5d|  楼主 | 2022-7-25 16:41 | 只看该作者
本帖最后由 lvben5d 于 2022-7-27 07:22 编辑
tanleitanlei 发表于 2022-7-25 15:38
使用 usb库调用发送数据API接口,不用关注数据包大小,大于一包数据内部会自动处理。 ...

帅哥说的是上位机那边吗?  上位机那边下发   注意下位机 USB dev 这边叠包处理就好,  我想跟你请教  mcu这边 tx fifo设计尺寸大小。是不是如我所想这样配置。     rx fifo 只要处理快速 2个64字节就够吧!  tx fifo 有的客户 大于64字节上传,就设计大一点。之前一直理解错误? 无论是GD32E 还是AT32F  示例里 FIFO的尺寸安排  默认都是2字节的吧(因为我看到void usb_set_rx_fifo(otg_global_type *usbx, uint16_t size)
{
  usbx->grxfsiz = size;
})
我以前理解是4字节。
/* otg1 device fifo */
#define USBD_RX_SIZE                      64
#define USBD_EP0_TX_SIZE               24
#define USBD_EP1_TX_SIZE               512  //1024字节  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

746

帖子

12

粉丝