WiFi固件bin文件转C数组的程序

23 篇文章 2 订阅

编译环境:Visual Studio 2012

#include <stdio.h>
#include <Windows.h>

#define FOLDER_88W8686 "E:\\Users\\Octopus\\Downloads\\SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL\\SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45\\FwImage"
#define FOLDER_88W8782 "E:\\Users\\Octopus\\Downloads\\Baidu\\8782模块资料\\SD-UAPSTA-8782-FC13-MMC-14.69.12.p35-M2614336_B0-GPL_new\\SD-UAPSTA-8782-FC13-MMC-14.69.12.p35-M2614336_B0-GPL\\FwImage"
#define FOLDER_88W8801 "E:\\Users\\Octopus\\Downloads\\Baidu\\8782模块资料\\SD-UAPSTA-8801-FC18-MMC-14.76.36.p61-C3X14090_B0-GPL\\SD-UAPSTA-8801-FC18-MMC-14.76.36.p61-C3X14090_B0-GPL\\FwImage"
#define FOLDER_RTL8189 "D:\\Code\\C\\VS2012\\applications\\array_mp_8188e_t_fw_nic\\Debug"
#define LINELEN 24

static void create(char *binfile, char *cfile, char *varname)
{
	char str[100];
	DWORD size = 0;
	FILE *fp, *fp2;
	FILETIME last_write_time;
	HANDLE hFile;
	int linecnt = 0;
	SYSTEMTIME st_local, st_utc;
	unsigned char data;

	hFile = CreateFileA(binfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, (DWORD)NULL, NULL);
	if (hFile != INVALID_HANDLE_VALUE)
	{
		size = GetFileSize(hFile, NULL);
		GetFileTime(hFile, NULL, NULL, &last_write_time);
		FileTimeToSystemTime(&last_write_time, &st_utc);
		SystemTimeToTzSpecificLocalTime(NULL, &st_utc, &st_local);
		CloseHandle(hFile);
	}

	fopen_s(&fp, binfile, "rb");
	if (fp == NULL)
	{
		printf("Cannot open %s!\n", binfile);
		return;
	}
	fopen_s(&fp2, cfile, "w");
	if (fp2 == NULL)
	{
		fclose(fp);
		printf("Cannot open %s!\n", cfile);
		return;
	}

	GetDateFormatA(LOCALE_USER_DEFAULT, (DWORD)NULL, &st_local, NULL, str, sizeof(str));
	fprintf(fp2, "// From: %s\n// Last Modified: %s ", binfile, str);
	GetTimeFormatA(LOCALE_USER_DEFAULT, (DWORD)NULL, &st_local, NULL, str, sizeof(str));
	fprintf(fp2, "%s\n", str);

	fprintf(fp2, "const unsigned char %s[%d] = {", varname, size);
	while (data = fgetc(fp), !feof(fp))
	{
		if (linecnt == 0)
			fputs("\n  ", fp2);
		fprintf(fp2, "0x%02x, ", data);
		linecnt = (linecnt + 1) % LINELEN;
	}

	fseek(fp2, -2, SEEK_CUR);
	fputs("\n};\n", fp2);

	fclose(fp);
	fclose(fp2);
}

int main(void)
{
	//SetCurrentDirectoryA(FOLDER_88W8686); // 设置当前目录
	//create("helper_sd.bin", "helper_sd.c", "firmware_helper_sd");
	//create("sd8686.bin", "sd8686.c", "firmware_sd8686");

	//SetCurrentDirectoryA(FOLDER_88W8782);
	//create("sd8782_uapsta.bin", "sd8782_uapsta.c", "firmware_sd8782");

	//SetCurrentDirectoryA(FOLDER_88W8801);
	//create("sd8801_uapsta.bin", "sd8801_uapsta.c", "firmware_sd8801");

	SetCurrentDirectoryA(FOLDER_RTL8189);
	create("mp_8188e_s_fw_ap.bin", "mp_8188e_s_fw_ap.c", "firmware_mp_8188e_s_fw_ap");
	create("mp_8188e_s_fw_nic.bin", "mp_8188e_s_fw_nic.c", "firmware_mp_8188e_s_fw_nic");
	create("mp_8188e_s_fw_wowlan.bin", "mp_8188e_s_fw_wowlan.c", "firmware_mp_8188e_s_fw_wowlan");
	create("mp_8188e_t_fw_ap.bin", "mp_8188e_t_fw_ap.c", "firmware_mp_8188e_t_fw_ap");
	create("mp_8188e_t_fw_nic.bin", "mp_8188e_t_fw_nic.c", "firmware_mp_8188e_t_fw_nic");
	create("mp_8188e_t_fw_nic_89em.bin", "mp_8188e_t_fw_nic_89em.c", "firmware_mp_8188e_t_fw_nic_89em");
	create("mp_8188e_t_fw_wowlan.bin", "mp_8188e_t_fw_wowlan.c", "firmware_mp_8188e_t_fw_wowlan");

	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值