本帖最后由 Simon21ic 于 2013-1-4 21:39 编辑
看到21ic论坛里有人说开源不好,这个东西就不开源了,纯无聊秀秀,不销售,所以没有广告嫌疑
改了一下,作为stm32编程器确实没有什么意义,不过如果作为stm32的usb bootloader,确实还可以用用,就开源个main.c吧。
1. USB无驱,这个不难,很多设备都可以是无驱的,包括HID,MSC,RNDIS等等
2. 无上位机软件,这个其实只是用了操作系统自带的上位机软件而已
当然做这个肯定不是为了编程stm32,只是随便玩玩的东西。目前主要实现了2套方案,一套是RNDIS设备,实现一个http服务器(当然其他的也可以),上位机软件是网页浏览器,相对比较复杂。另一套比较简单的,MSC,上位机是文件浏览器,模拟一个FAT32文件系统,把stm32的flash映射到一个文件,对这个文件的读写就可以对stm32的flash读写,不过文件有4G的限制。
show部分代码:
static vsf_err_t ReadFlash(struct fakefat32_file_t*file, uint32_t addr,
uint8_t *buff, uint32_t page_size);
static vsf_err_t ReadInfo(struct fakefat32_file_t*file, uint32_t addr,
uint8_t *buff, uint32_t page_size);
struct fakefat32_file_t root_dir[] =
{
{
"MSC_MEM ",
FKAEFAT32_FILEATTR_VOLUMEID,
},
{
"MEMORY BIN",
FAKEFAT32_FILEATTR_ARCHIVE | FAKEFAT32_FILEATTR_READONLY,
512,
{ReadFlash, NULL, NULL, NULL},
},
{
"README TXT",
FAKEFAT32_FILEATTR_ARCHIVE | FAKEFAT32_FILEATTR_READONLY,
sizeof(readme_str) - 1,
{ReadInfo, NULL, NULL, NULL},
},
{
"",
}
};
static vsf_err_t ReadInfo(struct fakefat32_file_t*file, uint32_t addr,
uint8_t *buff, uint32_t page_size)
{
uint32_t remain_size = sizeof(readme_str) - 1 - addr;
memcpy(buff, &readme_str[addr], min(remain_size, page_size));
return VSFERR_NONE;
}
MSC_MEM是盘符,README TXT是只读文件,映射到一个字符串:
// readme file
static const char readme_str[] =
"\
================================================================================\n\
VSF MemReader 0.1beta COPYRIGHT by SimonQian \n\
www.versaloon.com \n\
================================================================================\n\
\n\
Simply read/write the target memory through an file.\n\
";
MEMORY.BIN就是可以读写的存储器,当然,代码设置为只读,只实现了Read功能。
USB MSC bootloader, main.c:
main.zip
(3.12 KB)
|