基于FAT12的BootLoader(STC8h8k64u)
nichengyan2024/04/26计算机电子学 IP:天津

这是专为STC8h8k64U写的bootloader,大小10K左右。通过它能实现以下两个独特的功能:

1:程序的动态加载,可以选择你想要APP加载并运行。

2:不依赖任何第三方软件的USB下载(进入下载模式后电脑会显示出来一个优盘,把编译好的HEX/BIN文件直接拖到优盘里,APP就下载好了)

3:HEX/BIN通吃,自带HEX转码烧录。因此连HEX2BIN程序也免了

硬件部分仅需OLED屏,psiFLASH和一些按键就好了

实现方式大家估计已经猜到了吧

首先,读FLASH和IAP肯定得有。通过IAP,把APP程序从spiFLASH搬到单片机FLASH里然后调转运行的基本功能就实现了。

其次,写入FLASH也得有。既然能连电脑模拟成U盘,那肯定有USBMSC。官方例程就有这个。到了这一步,电脑至少可以写FLASH了吧,可惜走文件系统了话写进去的东西单片机不能识别。

要是能用FAT解析一下FLASH里的内容就好了

(这里特别说明,Windows识别磁盘的文件FAT类型不是依靠DBR里的对应字节,它其实只看磁盘总容量,小于8M就只能格式化成FAT12了。鉴于大家使用数M的小FLASH居多,所以才打算写写FAT12)

需要一个阉割版FAT就行,只读,不用支持长名和目录,甚至时间也不用管他。让代码编译出来小小小才是首要目的。毕竟是作为BootLoader,太大了APP的运行空间就不够了

这样的FAT不太常见,支持FAT12的更少见,,,像ZNFAT,FATFS之类的限有方案在这都显得太冗杂了,所以这个轮子你不得不自己造了。

其实并不难写,因为Windows的格式化总是套路,所以你甚至连DBR也不用读就能掌握FAT12的大多核心参数,比如簇数,FAT表,目录表位置,簇偏移量之类的,甚至都可以当常量摆在代码里了。

依靠这个BOOTloader,电脑既能通过USBMSC往FLASH里写入APP,单片机又能借助FAT12解析出APP并加载。

这样就可以做很多很好玩的东西,比如一部能玩几十种游戏的游戏机,或者是自带全部例程的实验板,可编程小车(就跟EV3那样的,能选择并运行之前下载的程序)之类的而且以后再也不用USB转串口和STCISP了!程序下载只一个keil就ok啦







来自:计算机科学 / 计算机电子学
10
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
nichengyan 作者
7个月27天前 IP:天津
931541


VID_20240426_154143.mp4  点击下载

好多好多的APP,都可以放在一个spiflash里供加载了。要是STC的实验箱或者学习版来一个这个,例程全家桶的程序文件都可以直接丢进去了。

大大拓展了物理空间,仗着超长寿命硬是把内部64KFLASH直接当RAM使了。。(什么时候STC能在内存里跑程序啊!!!)


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
amo
7个月27天前 IP:广东
931542

不要死磕STC51了,没啥意义。

随便换个有大容量RAM的Cortex-M芯片,程序可加载到RAM里执行,还有各种RTOS加持

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
6个月20天前 IP:天津
932559
引用amo发表于2楼的内容
不要死磕STC51了,没啥意义。随便换个有大容量RAM的Cortex-M芯片,程序可加载到RAM里执...

主要是不会ARM啊。

其实51挺好玩的啊,虽然自身局限重重但STC的一通爆改总能让它突破自我,在C51极限的边缘试探。

对上没技术下没基础的穷学生来说,51好玩就够了😂😂😂


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
6个月20天前 IP:天津
932561


VID_20240518_182407.mp4  点击下载

前一段刚学单摆,就写了个APP--赛博单摆


能模拟单摆及其衍生物(弹簧摆,阻尼摆),晃悠的小球儿给物理老师都整乐了

实现机制很简单,就是时间断面法+爆算。adt->dv,vdt->dx ,x->(约束)->a 循环迭代就行了。

当然这个简易模拟了话,BUG也很明显--“动量敏感”

说白了就是只用🐮牛二律,而没有加入动量能量约束,会导致碰撞,绳绷直等过程出现离谱的错误。(极短时间内存在巨大内力,使得纯牛二律不能平滑模拟。)



引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
6个月19天前 修改于 6个月19天前 IP:广东
932621

造轮子一点也不好玩,直接用rpi zero动态加载啥的都有了,还有个usb2.0HS

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
6个月16天前 IP:天津
932696

确实是造轮子。

但至少让我明白轮子有多难造,观察到一些轮子远看看不出来的的细节。

就这个来看怎么说呢,对个人比较有帮助吧。前一段看振南老师的znFAT讲解视频,感觉人家实在是太厉害了,以前用znfat,只知道用里面的api,根本不知道到底发生了点什么。现在自己尝试动手写写FAT12,确实有点奇妙的感觉。

记得我看znfat书后边,振南启示录里大概是想说:“当你认为自己的c51玩的很好的时候,或者是不屑于玩c51的时候,想想znfat吧”。   确实,这也让我总想死磕c51

把c51基础打牢之后,我一定要学习去搞更高级硬件的


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
WernerPleischner
6个月16天前 IP:广东
932697

中学生总有个思维惯性是低阶技术是"打基础".打好了才能玩高级的...照这个逻辑现在程序员得先从COBOL和FORTRAN学起.

对文件系统和底层实现感兴趣正确的"打基础"方式更应该是找本<数据结构><组成原理><数据库原理>(别找清华大学出版社那些)把里面的例题都实现一遍,当然楼主要是单纯觉得复古芯片玩着好玩当我没说.

引用
评论(2)
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
6个月13天前 IP:天津
932828

STC8H点播WAV语音片段DEMO:鸡乐盒

仅仅是个整活的DEMO,运行在卡东欧上。

单纯的STC8H+4MFLASH作为一个整体 就能作为一个语音模块!

支持USB下载音频,串口/GPIO点播;只支持22khz及一下单声道.wav;4M空间能存几分钟的语音,硬件成本<2RMB。(大量买还能更低)

不说功能,光看这个价格就能卷死好多定制otp语音ic,

等录音程序写完了,它甚至比isd1820还便宜

至少很多好玩的小项目就可以用它平替mp3模块,定制otp了甚至是isd1820了。比如语音报时,自定义闹铃之类的吧

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nichengyan作者
6个月13天前 IP:天津
932831


VID_20240609_201812.mp4  点击下载

KUNBOX for Cadio



引用
评论
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
月光
6个月12天前 IP:江苏
932845
引用nichengyan发表于9楼的内容
‎KUNBOX for Cadio

cool ,but全损音质😂

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}