找回密码
 立即注册
查看: 179|回复: 18

FAT12_Loader:动态加载APP,干掉一切上位机软件!!!

[复制链接]
  • TA的每日心情
    开心
    2024-4-4 18:10
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
    发表于 2024-4-20 20:33:57 来自手机 | 显示全部楼层 |阅读模式
    思考这两个东西:
    FLASH里存储着上百个游戏程序,单片机能动态加载自由运行吗?
    不用上位机软件,不用串口,能把Keil生成的HEX文件写进单片机吗?(就是往优盘里一拖就能用了这样的)

             第一个问题好说。动态加载,那肯定IAP没别的,毕竟咱51的RAM里不能跑程序啊。可以写个BootLoader把外部FLASH里的APP程序丢进去运行运行,凭借STC内部FLASH的超长寿命,动态加载问题不大。
            那文件怎么写进FLASH呢?哦对,STC8H有USBMSC!于是就可以把MSC的程序也当做APP扔进FLASH,用的时候加载一下,连电脑十六进制写盘不就完事,,,诶不对,你的十六进制查看器是哪来的?HEX转BIN程序又是哪来的?不是说不用上位机软件的吗。
            很明显,跑MSC的单片机并不知道自己往FLASH里写的是什么。要想让它知道,就当上FAT了。没错,MSC-FAT强强联手!这个方案并不稀奇,论坛里许多大佬都实现了,但是用的普遍是完整的FAT32。且不说FLASH小于8M没法用的问题,对于bootloader来说,现流行的通用FAT(ZNFAT,FATFS之类)都显得冗杂了。如果用于BootLoader,我们的FAT不用支持写入,不要长名,不用支持目录,不用支持日期时间,不用支持通配,唯一要的,就是小小小,编译出来不要超过4K!那这样的骨折FAT,去哪找呢?好吧可能不太好找,反正本人没找到合适的。
           那就自己写一个吧。。。因为是要读取电脑格式化过的FLASH。而不是像ZNFAT那样单片机格式化完给电脑读。
    (这里得说一下,PC识别FAT类型其实并不是读DBR里的什么BS_FileSysType项,绝大多数情况它仅仅通过空间大小判断!!Microsoft要求8M以上被识别FAT32,所以并不是Znfat不支持小容量FLASH,而是因为太小了话电脑会不把他当FAT32看。。)
            一通乱写之后,我们的只读FAT就写好啦。其实这个东西非常好写,原因是因为电脑格式化8M以下磁盘(8M以上的还没试)的过程全是套路!比如簇大小就是4096B,两个FAT表永远在物理1,2扇区,文件目录表永远在物理3~6簇,一个簇就正好是一个4096B扇区,文件簇的扇区号就等于簇链值+5,,,这些核心参数直接就知道了,所以你愿意了话连0的DBR都不用读,直接跳过就是任性!!
           说了这么多,直接代码奉上吧。
           诶,既然你的MCU都能自己加载APP了,那可不可以有一个标准化的硬件电路(比如咱们的实验箱),再加上一套标准化的软件程序(提供标准外设API,文件系统API之类的),让大家按这套标准编写的APP能在任何装有此BootLoader的标准硬件上运行?
           说白了,就是STC小模块(做的好了话当手机使也不成问题了),里面的APP由大家开发。什么游戏啊,播放器啊,电子琴啊,闹钟啊,计算器啊,让固件APP能四处流通,并且加载到FLASH里随用随拿,从而构建起8051的特色生态!
           这要靠大家一起努力了吧
          
    回复 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:05:07 来自手机 | 显示全部楼层
    可以直接拖拽加载海量AP,同时也不影响正常当优盘用
    HEX文件也可直接加载,在Bootloader里带有HEX解码程序。当然加载转码过的BIN会快很多。

    VID_20240420_210024.mp4

    75.79 MB, 下载次数: 1

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:07:36 来自手机 | 显示全部楼层
    八级优化编译出来11个K,九级优化加Favorsize能小于10K。其中文件系统编译出来应该占3K多
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:10:21 来自手机 | 显示全部楼层
    编写的应用程序时候要在Keil里设置三个地方
    1:STARTUP.A51里CSEG改为0x3000
    2:工程里代码起始地址改为0x3000
    3: 中断向量偏移量改为0x3000
    这样编译出来的HEX文件就可以直接拖进去用了,中断什么的都不用考虑正常用就行,bootloader里做过处理了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    郁闷
    昨天 08:15
  • 签到天数: 60 天

    [LV.6]常住居民II

    3

    主题

    552

    回帖

    748

    积分

    高级会员

    积分
    748
    发表于 2024-4-20 21:15:18 来自手机 | 显示全部楼层
    这是什么啊,听起来很牛逼的样子
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:22:54 来自手机 | 显示全部楼层
    soma 发表于 2024-4-20 21:15
    这是什么啊,听起来很牛逼的样子

    支持FAT12和HEX解码的BootLoader
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:29:26 来自手机 | 显示全部楼层
    不光能放蜂鸣,还能放wav(stc8h例程包里的)
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:35:13 来自手机 | 显示全部楼层
    _NCY_ 发表于 2024-4-20 21:29
    不光能放蜂鸣,还能放wav(stc8h例程包里的)

    解码加载HEX会慢一倍

    VID_20240420_212602.mp4

    65.35 MB, 下载次数: 0

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.3]偶尔看看II

    6

    主题

    32

    回帖

    152

    积分

    注册会员

    积分
    152
     楼主| 发表于 2024-4-20 21:39:55 | 显示全部楼层
    FAT12_Loader.zip (249.42 KB, 下载次数: 8)



    点评

    虽然还没下载看, 但感觉不错, 给您奉上鲜花  发表于 2024-4-20 22:02
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    526

    回帖

    1656

    积分

    荣誉版主

    积分
    1656
    发表于 2024-4-20 21:51:05 | 显示全部楼层
    本帖最后由 tzz1983 于 2024-4-20 21:54 编辑

    思路不错,之前我也想过这么玩.
    就是把BIN文件用MSC往FLASH里扔,
    然后就相当于装载代码了.
    用户如果熟练还可以玩出很多新花样,
    比如把常用的BIN都放在FALSH,相当于应用商店.
    要用哪个就菜单上选一下就OK

    在淘宝上已经有一些M3/M4的TFT, 已实现
    用这种方式把多个型号的代码放在一起供用户选择

    不过如果是官方做的话,
    肯定是做个简版的来实现基本IAP功能,不会搞得花里胡诮
    或许官方不会去做, 额外的ISP引导空间也是要钱的哈,
    总不能把本来属于用户的空间占用了吧

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-5 07:34 , Processed in 0.075747 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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