发一个MDK 4.7.3版本的工程模板及简便下载工具
TK499.rar是4.7.3版本的工程模板,其中有我写的工具flash_download.exe,用它就不用每次往U盘复制bin文件了,直接点MDK的download按钮就行了。flash_download_cmd.exe和flash_download.exe唯一不同的是它会显示命令行窗口,可以写个批处理批量下载程序,不用每次都往U盘复制bin文件了。
嗯,等楼主的新板子。先标记下。 lrzxc 发表于 2019-9-29 16:06
嗯,等楼主的新板子。先标记下。
你看错了,我不是版主啊 brother_yan 发表于 2019-9-29 16:23
你看错了,我不是版主啊
感谢楼主的热心支持,什么时候来买东西,得叫客服给你多多优惠一下才行 tiky 发表于 2019-9-29 17:05
感谢楼主的热心支持,什么时候来买东西,得叫客服给你多多优惠一下才行 ...
哈哈,多谢! brother_yan 发表于 2019-9-29 16:23
你看错了,我不是版主啊
嗯,还真看错了 为什么要往U盘复制bin? jjj206 发表于 2019-9-30 00:46
为什么要往U盘复制bin?
可能它的下载方式,就是往虚拟U盘里拷贝bin文件。 楼主,如果有多个U盘,会不会拷到其它地方去了 应该不会,程序是按卷标搜索磁盘的 标记下啦 brother_yan 发表于 2019-9-30 10:46
应该不会,程序是按卷标搜索磁盘的
你按卷标,是搜TK499还是TK499_V2?
如果是搜TK499,那样通用性就高好多,因为接下来还会出更加好用的新版本
本帖最后由 brother_yan 于 2019-9-30 16:54 编辑
tiky 发表于 2019-9-30 16:32
你按卷标,是搜TK499还是TK499_V2?
如果是搜TK499,那样通用性就高好多,因为接下来还会出更加好用的新 ...
这个可以改,在第一张图的MDK设置里第二行那个参数,第二张图的命令行方式也是手动输卷标的
但是不支持通配符,不能模糊搜索。。。
有时间我改个支持通配符的 楼主,测试的时候发现一个问题,那个“Run Independent”的勾如果没打上,下载大程序有一定的概率不行。猜测可能是程序下载进去了,还没搬运完成,KEIL就急忙注销这个U盘了。打上勾可以解决这个问题,不过就没能在KEIL看到下载完成的字样,只能听到“叮咚”一声才知道下载完。
本帖最后由 brother_yan 于 2019-10-6 18:00 编辑
tiky 发表于 2019-10-6 17:01
楼主,测试的时候发现一个问题,那个“Run Independent”的勾如果没打上,下载大程序有一定的概率不行。猜 ...
这个问题我也不太清楚原因。我发现把*.bin复制到U盘后U盘会自动弹出,我不清楚bootloader是如何判断的。下面是我的源码,exe文件是Dev-C++ 4.9.9.2编译的,你们有兴趣可以参考一下~
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
bool getVolume(char volume_name[], char path[]) // 根据卷名获取盘符
{
char drivers;
int len = 0;
len = GetLogicalDriveStrings(1024, drivers);
for (char *p = drivers; p - drivers < len; p += strlen(p) + 1)
{
char volumeName = {0};
DWORD volumeSerialNumber = 0;
DWORD fileSystemFlags = 0; // 文件系统标志
DWORD maximumComponentLength; // 文件名最大长度
char fileSystemNameBuffer = {0}; // 文件系统名称
bool ret = GetVolumeInformation(p, volumeName, 1024, &volumeSerialNumber, &maximumComponentLength, &fileSystemFlags, fileSystemNameBuffer, 1024);
if (ret)
if (strcmp(volumeName, volume_name) == 0)
{
strcpy(path, p);
return(true);
}
}
return(false);
}
void copy(char src[], char dst[]) // 复制文件
{
static char buf;
int size;
FILE *f1 = fopen(src, "rb");
FILE *f2 = fopen(dst, "wb");
size = fread(buf, 1, 1024 * 1024, f1);
fwrite(buf, 1, size, f2);
fclose(f1);
fclose(f2);
}
#define SetColor(x) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),(x))
int main(int argc, char *argv[])
{
if (argc >= 3)
{
char path = "";
bool r = getVolume(argv, path);
if (r)
{
strcat(path, "firmware.bin");
copy(argv, path);
printf("download complete");
return(1);
}
else
{
printf("fail to download");
return(0);
}
}
else
{
SetColor(0x0C);
printf("brother_yan 出品\n");
SetColor(0x0A);
printf(
"[ usage ]\n"
"flash_download *.bin volume_name\n"
);
SetColor(0x07);
}
return(0);
} 这个问题不大,好在打个勾也能解决。不过好像还有办法从Bootloader上解决,让它全部完成了才释放U盘,令这个东西更好用。感谢你的支持,我叫工程师再努力一下 tiky 发表于 2019-10-6 18:03
这个问题不大,好在打个勾也能解决。不过好像还有办法从Bootloader上解决,让它全部完成了才释放U盘,令这 ...
我刚扫了一眼发现copy()函数最大只支持1M bytes。。。低级错误,写C一直习惯节省内存,结果挖了个坑。。。 楼主做个MDK5的吧。4的早就不用了。 honami520 发表于 2019-10-6 18:15
楼主做个MDK5的吧。4的早就不用了。
MDK5的官方有了,我还做干啥呢。至于为啥用4,因为我没找到满意的keygen... v1.1版本(内含源码等):
欢迎测试~ 麻烦,兄弟,还是不行,我发现上一个版本也一样,在300多K时很稳定,我测试一个931K的程序,不行的概率就高了。如果是用直接下载的方式就没事。我叫工程师看看能不能解决这个问题 tiky 发表于 2019-10-7 12:57
麻烦,兄弟,还是不行,我发现上一个版本也一样,在300多K时很稳定,我测试一个931K的程序,不行的概率就高 ...
不行的话有没有出错信息,还是显示成功但是实际不成功?可能需要改fwrite的缓冲区,因为我发现分块复制数据时会出错,我不知道bootloader是怎样判断.bin复制完成的。或者命令行方式下载有没有问题。我的代码很简单,极有可能考虑不全面,看你们工程师能不能完善一下或者干脆重写一个 行行,我看看哪个工程师之前接触过这类的编程
页:
[1]