|
本帖最后由 lovewind 于 2020-1-10 10:11 编辑
看了很多帖子,少数提到了一些东西,经过测试,得出经验,我用的是cubeMX生成的HAL格式的库,其他的库其实差不多,主要是两个函数:读函数,写函数,我们要在这两个函数里面实现数据操作
heap_size开到0x400,默认是0x200
如果需要电脑帮你格式化,你需要提供20K的 RAM(或者FLASH,懒得写flash函数可以用RAM代替)
如果免格式化,RAM需要就很少很少了,原理是RAM的前512字节(0扇区)你写好了格式化之后的mbr表,忽悠电脑认为你已经格式化了。电脑就可以直接显示盘符了。
问题来了:一个bin文件或者txt文件丢进U盘,有的写到就从写函数进来了,但是我昨天测试发现,才开始的进来的数据并不是文件本体,而是一些格式和大量的000000000000000000000000,
看样子写了好几遍,不知道是不是需要写入才开始的文件表,我没让他写或者处理好?
最后还是看到成功了,当然,打开文件是空的,因为我没有写函数,只是把内容转发到串口了而已
应该怎么才能提取到发送的文件本体信息呢,这个格式应该是FAT12格式,估计是容量太小几百K,电脑就认为是FAT12比较合适吧。
大概我知道一些,就是格式化肯定是写了文件表,而且应该不只是0扇区,还有其他几个记录信息的扇区吧。。。
问题:从第几个扇区开始,算是bin文件本体的起始,结束点在哪里呢?
补充:-----------------------------------------------
用串口看了下,
以下是插到第一次的电脑的规律
读0,读0,读2
读0,5次
读1,2,3,4,5-------------15
读0,读0,读1-12,
读2,读37,写5-12,(仅5有数据)
写1,写3,写37(有数据)
写37(有数据)
写38(有数据)
写39(有数据)这就是为什么之前测试用RAM的话,需要20K才可以正常格式化的原因
写37(有数据),写1,写3,
读0-15
读0-15
以下是写的规律
先写0,MBR表
再写5,好像是文件目录,可以看到刚才传文件的文件名和第二次传的文件名
写678910 11 12都是00000000000
然后,就又写1看不出来是什么
写3,和1几乎一样的数据
再写5,同上5
写678910 11 12都是00000000000
------------------------------------------------
写41文件开始
********
写到144
------------------------------------------------
又写0,MBR表
写1,写3同上1,3
写5,同上5
写678910 11 12都是00000000000
写5,同上5
写678910 11 12都是00000000000
写1,3,同上1,3
写0,MBR表
写1,3同上1,3
已经找出规律,只要里面没有文件,文件都是从第40开始写入的,现在只要知道文件结束位置就好办了只要大于这个都是文件的数据。提取收到的文件也容易了。
其中5是目录,至少是第一目录文件名所在地
放入文件顺序是:
写5文件名,写6-12
两遍
写1,3
写5文件名,写6-12
两遍
写40文件
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|