Teensy 开发板简介
teensy 是一种基于AVR或ARM处理器的USB开发板, 可以用来开发或试验各种USB应用, 我购买的为TEENSY 2.0++开发板, 因为这是在国内所有TEENSY 开发板中最为便宜的型号. 它大概长下面这个样子.
本文基于teensy 实现简易版U盘的, U盘内容为镜像一fat分区下的raw格式文件, 也可以配置为使用随机数据填充内容.
材料
- Teensy 2.0++ 开发板: 大概30元
- SD卡模块单片机 Micro SD卡模块CH376S SPI接口 迷你TF卡读写器: 大概2块钱
- tf卡一张: 不要太好的, 买几年前的型号, 大概10元钱
编译模拟U盘程序
我已经调试好了一份可工作的模拟U盘的程序, 下载地址: https://github.com/atmgnd/Teensy2ppSD , 使用下面的命令下载:
git clone https://github.com/atmgnd/Teensy2ppSD.git
cd Teensy2ppSD
git submodule init
git submodule update
安装avr-gcc 编译器及C库:
sudo apt-get install -y gcc-avr
sudo apt-get install -y avr-libc
使用下面的命令编译:
cd Teensy2ppSD/Teensy2pp/MassStorage
make
编译生成的MassStorage.hex
程序就是可以在TEENSY 开发析上运行的目标可执行程序. 将其刷写到开发板上, 就可以实现使用tf卡模拟U盘了.
烧录程序到开发板
首先需要去TEENSY官网下载Teensy Loader, 下载链接: Teensy Loader
Teensy Loader 的使用说明: https://www.pjrc.com/teensy/loader_linux.html
按照上面网页中的说明将上一节中编译的目标程序烧制到开发板.
连接spi tf读卡器到teensy
按照下面的表格将TEENSY与读卡器连接起来:
TEENSY 2.0++ | TF卡读卡器 |
---|---|
VCC | VCC |
B3 | MISO |
B2 | MOSI |
B1 | SCK |
B0 | CS |
GND | GND |
TEENSY开发板和读卡器上都有引脚标注, 接好以后如下:
连接PC
插入SD卡连接PC, 如果没有问题, 就可以看到模拟的U盘了. 如下:
xxx@TM19:~/code/github/Teensy2ppSD$ sudo lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 466.1G 0 disk
└─sdc1 8:33 1 14.9G 0 part
修改Teensy2pp/MassStorage/MassStorage.c中的media_blocks
变量就可以实现修改模拟U盘的大小, 如上, sdc1的大小为15G, 而sdc大小为466G, 就是通过这样实现的. 至此, 我们完成了U盘的模拟程序.
性能
在Windows 下实测可以达到300KB/S, 不是太快. 在Linux下似乎要更慢一些.