找回密码
 立即注册
查看: 1479|回复: 19

【RTOS/uCOS-II + U盘/USB_MSC + 文件系统/znFAT】@STC32G

[复制链接]

该用户从未签到

19

主题

519

回帖

1642

积分

荣誉版主

积分
1642
发表于 2024-1-23 16:23:27 | 显示全部楼层 |阅读模式
本帖最后由 tzz1983 于 2024-4-3 19:28 编辑

RTOS/uCOS-II + U盘/USB_MSC + 文件系统/znFAT】@STC32G
介绍:
1.MSC-U盘例程是在中断里执行代码,CPU占有率太高,本贴使用RTOS分配CPU资源,

  将USB代码转移到任务里去,USB_MSC持续读写文件时CPU占用率为9%,
  USB_MSC无读写操作时CPU占用率为1%。
2.为了读出文件内容,加入了znFAT,尽在上电启动时使用znFAT读出文件内容。
   以避免znFAT和USB_MSC发生访问冲突。
3.存储介质为 W25Q128,全程 DMA-SPI 读写,几乎不占用CPU
4.项目中多处循环等待标志的节点改为阻塞延时等待,释放CPU,RTOS的特色。

特点:
1.已加入的应用有USB_MSC + znFAT,CPU占用率仍保持低水平,可加入许多其它应用。
2.USB_MSC 与znFAT共存,作为MCU与PC之间的通信通道。
3.SPI使用DMA方式访问FLASH,DMA完成后在中断里发送一个信号量激活任务,
   数据传送不占用CPU资源,和RTOS配合很完美。

本文可验证本人移植的UCOSII.
文中有许多RTOS的一些典型使用方法,将中断代码分配到任务,
利用阻塞查询标志,信号量同步等,可作为参考。


电脑上编辑文本,串口printf显示文件内容
捕获2.JPG

代码执行printf截图:
捕获1.JPG

代码:
UCOSII_MSC_znFAT.rar (1.79 MB, 下载次数: 92)


3 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1642

积分

荣誉版主

积分
1642
 楼主| 发表于 2024-1-27 14:50:41 | 显示全部楼层
上次传上来的代码有BUG,在软定时器调用的时候无意触发了阻塞,
忘记了UCOS软定时器内不允有等待类的代码,今天重新传上代码.
SPI用上DMA了,现在连续读写文件,CPU占用率9%


回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    12

    主题

    315

    回帖

    874

    积分

    高级会员

    积分
    874
    发表于 2024-1-29 13:28:53 | 显示全部楼层
    谢谢分享
    回复 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9238

    回帖

    1万

    积分

    管理员

    积分
    13957
    发表于 2024-2-9 09:41:40 | 显示全部楼层
    龙年新春捷
    STC8H2K32U-45MHz-LQFP32/TSSOP28 的 USB 型 MCU 已开始制造光罩流程中
    RMB1.3 的 USB, STC8H2K32U-45MHz-LQFP32/TSSOP28/20,SOP16, 4月开始供货
    51世界火热的夏天全面来临 全面 进入 USB 时代 !新增硬件32位乘除法器MDU32C
    硬件USB 支持 仿真/下载, RTC 实时时钟, 年/月/日/时/分/秒,星期
    真12位ADC, 144MHz-16位高级PWM新增硬件移相功能

    32K Flash, 2.5k SRAM, USB, 双串口/I2C/SPI, 轨到轨比较器,12位ADC, PWM
    串口1/串口2:

    ===都支持串口接收硬件超时侦测硬件奇偶校验
    ===都支持帧错误数据检测自动地址识别
    T11,强大的24位低功耗定时器/系统定时器,支持低功耗唤醒
    P1.2口在P5.4口上共享P1.0/P1.1的全部数字功能可以交换

    STC8H2K32U51成为永恒的经典:钻石恒久远51永流传


    ======================================================================

    RMB0.99 的 USB, STC8H2K08U-45MHz-TSSOP20/SOP16,已开始供货
    51世界火热的夏天全面来临 全面 进入 USB 时代 !

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-4 18:10
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    146

    积分

    注册会员

    积分
    146
    发表于 2024-2-22 22:59:31 来自手机 | 显示全部楼层
    问一下,就是FLASH的最小擦除单元是4KB了话,
    znfat里的512B扇区清空怎么适配?
    真要4KB全部擦掉再写回去3KB吗?

    点评

    FLASH是4KB基本单位读写,在底层做了一个4KB的缓冲区,只有当访问扇区地址需要跨越时才真正有扇区读写操作,否则就是访问缓冲区替代扇区读写。这种操作对外屏蔽了底层属性,也就是对外接口不限制你写多少字节,也不需  详情 回复 发表于 2024-2-23 07:56
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    519

    回帖

    1642

    积分

    荣誉版主

    积分
    1642
     楼主| 发表于 2024-2-23 07:56:44 | 显示全部楼层
    本帖最后由 tzz1983 于 2024-2-23 08:11 编辑
    _NCY_ 发表于 2024-2-22 22:59
    问一下,就是FLASH的最小擦除单元是4KB了话,znfat里的512B扇区清空怎么适配?
    真要4KB全部擦掉再写回去3KB ...

    FLASH是4KB基本单位读写,在底层做了一个4KB的缓冲区,只有当访问扇区地址需要跨越扇区时才真正有扇区读写操作,否则就是访问缓冲区替代扇区读写。
    这样做对外屏蔽了底层属性,也就是对外接口不限制写多少字节,也不需要对齐扇区操作,底层自动处理。
    /*---------------------------------------------------------
    //写数据,自动分扇区,不限制写入数据量
    ----------------------------------------------------------*/
    void W25QXX_Write(u32 addr, u8 *buf, u32 Size);

    这样做有两个好处:
    1.提升小片数据的写入速度,比如连续写8次512字节,实际上只有一次扇区操作, 大幅提升了写入速度
    2.减少RAM使用量,不管是MSC还是znFAT, 现在都只需要512字节缓冲了. 可以想象一下,如果MSC和znFAT都以4096为读写单位,那8K  xdata瞬间就被用完了

    点评

    这个确实高明!  发表于 2024-2-23 17:16
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-4 18:10
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    146

    积分

    注册会员

    积分
    146
    发表于 2024-2-23 17:18:22 来自手机 | 显示全部楼层
    哦对,还有就是fat32能在flash这么小的空间里建立吗?我看电脑上格式化stc 4M优盘,只有个fat和exfat选项啊,他们两个和fat32兼容吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-4 18:10
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    146

    积分

    注册会员

    积分
    146
    发表于 2024-2-23 17:31:52 来自手机 | 显示全部楼层
    2Mflash 优盘格式化好了,选的fat选项,没有钩选快速格式化。
    我想用按照znfat书里的那样解析磁盘,物理模式但打开之后为什么MBR的DPT表显示东西不对?
    都是按照书上来的,在其他U盘SD卡上解析没问题,但就在2M模拟优盘上显示这个,这是为什么啊
    IMG_20240223_172721.jpg

    点评

    znFAT只支持一部分FAT格式, 并没有全支持 [attachimg]35857[/attachimg] 实际使用时, 需要用znFAT格式化, 如果用PC格式化, znFAT可能无法识别 还有就是znFAT无法格式化小于8M的盘  详情 回复 发表于 2024-2-23 18:53
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    519

    回帖

    1642

    积分

    荣誉版主

    积分
    1642
     楼主| 发表于 2024-2-23 18:53:26 | 显示全部楼层
    _NCY_ 发表于 2024-2-23 17:31
    2Mflash 优盘格式化好了,选的fat选项,没有钩选快速格式化。
    我想用按照znfat书里的那样解析磁盘,物理模 ...

    znFAT只支持一部分FAT格式, 并没有全支持
    截图202402231851291472.jpg

    实际使用时, 需要用znFAT格式化, 如果用PC格式化, znFAT可能无法识别
    还有就是znFAT无法格式化小于8M的盘
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9238

    回帖

    1万

    积分

    管理员

    积分
    13957
    发表于 2024-3-9 22:32:48 | 显示全部楼层
    有兄弟说,能再给些您验证过的
    【小 GUI,TFT, OLED12864, LCD12864】
    加到 您这个综合的系统中大家直接套用就好了

    点评

    严格来说,我是一位“散修”, 很少用现有的套路。 虽然我也用LCD,但基本上是从底层驱动到页面全是自己写的。 你说的套路,我先去了解一下别人的套路,过段时间看看能不能轻易的加进来  详情 回复 发表于 2024-3-10 08:18
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-30 12:21 , Processed in 0.071848 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表