在家里断网两个月后(小时候家里穷,嗯…现在还是穷),饥渴难耐的我终于又有网了。我胡汉三又回来了,哈哈哈。好吧,说正事,断网两个月的时间里,我有大把的空闲时间(好吧,我承认我实在是无聊到极点了),于是,又玩起了论坛里抽奖送的板子(其实说起这板子我内心还是有点小小的惭愧的,拿到板子后老是让它吃灰)。 看到野火和原子的例程里都有用SpiFlash和STM32的USB功能来实现模拟U盘的功能,于是我想着可不可以在手头的KL27来实现(其实主要是因为KL27的例程里有模拟U盘,只是用的好像是芯片内部的flash。此外,板子上还有一个SpiFlash。说起这个,原理图上的是W25P80,诡异的是板子上的是W25P16。好吧这种事就不纠结了)。 总的来说,要实现预定的功能,差不多就是把SPI的例程和用芯片内部flash模拟U盘的例程和在一起就好了。其实还是比较简单的,再说了复杂的我也做不来(我还是知道我比较菜的)。 看了一下芯片内部flash模拟U盘的例程,大概找到了对芯片内部flash读写的函数(其实其他的我压根就看不懂),于是想着,把这两个函数改成对SpiFlash读写的函数是不是就可以了? 那就试试吧,因为SpiFlash例程能看懂的要多一些,所以是在芯片内部flash模拟U盘的例程的基础上增加SpiFlash的初始化和读写操作。把例程里9-USB_MSD工程复制一份,重新命名为9-USB_MSD_spi(随便啦)。然后修改一些U盘的参数(比如大小啊,扇区数啊,扇区大小啊)就差不多了。编译,没错后,下载测试。不得不说,运气不是一般的好啊。老天大概知道我没网所以不想为难我,居然一次通过了。 下面这图是插入电脑格式化后的图(不要问我的硬盘为什么是满的,里面不是小电影),就是那个0.97MB的盘
3
然后,我想到了以前同学折腾路由器买的烧录器,想着可不可以直接把bin文件写入到SpiFlash里,噢,是写入到咱的小U盘里。额,应为某种原因,我知道一个linux下一个命令可以直接把文件写入到U盘里,是她,是她,就是她,就是dd命令。我用的是这两个命令 sudo dd if=*.bin of=/dev/sdb bs=2048,sudo sync 下面容我装装B(好吧,其实是大神告诉我的), sudo是使用管理员权限, if据说是Input File *.bin 是你想写入的bin文件 Of 这个我就留给大家自己装装B /dev/sdx sdx就是插入的U盘,我的就是sdb,可以用df –h来查看插入U盘后多出来的是哪个 bs=2048 Block Size 好了,装B时间结束, 后一个命令,我不是太懂,大神说是同步什么的,巴拉巴拉……..不执行就会缓冲什么的(其实我也知道sync是同步的意思^--^)大家自行学习。这么较真干嘛,咱得不求甚解,不然还怎么搬砖(严格来说我还只是个学生)。 左边是用winhex查看写入后的U盘(也就是咱的SpiFlash),左边是电脑里写入的文件,
1
我要是说肉眼比对是一样的你们估计会不信。好咯,其实把上面的dd命令里的if of互换后其实可以把U盘里的东西读出来到电脑里存为bin文件。然后用对比软件看看就好了(有点尴尬的是:比如你写入的文件只有几百KB,都会读出1MB的文件,可能是我的dd命令还没学到家)。就是下面这个样子
2
好了,搞完,收工。 好吧,这是不是太没有技术含量了,搞得像我是来灌水的一样唉。算了,为了防止世界被破坏,为了守护世界的和平,为了增加论坛的热度,灌水就灌水吧。最后,感谢论坛送的板子^--^。 第一个附件是KL27本身的例程(来自FSL_KL27_MINIKIT_SC_V101.zip),第二个是我移植好的用SpiFlash模拟U盘的工程。解压到\Project\KL27_MiniKit\目录下编译就好了。 |