代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C
】
使用bdimg将二进制文件整合成单个文件
作者:
KevinJen
/ 发布于
2013/3/18
/
779
在嵌入式开发中所有开发接近尾声后u-boot, kernel, ramdisk,fs等文件要一个一个烧入flash芯片中事件很麻烦的事,因此开发了此程序用于将binery files整合,使用时只需改动配置文件即可。
#include <stdio.h> #include <stdlib.h> #include <stdint.h> #include "parsecfg.h" #include "gennerate_file.h" #define _DEBUG 0 #if _DEBUG int printcfg() { int i = 0; printf("config : file_name: %s, big_endian: %d, file_size: 0x%x\n", \ bd_config.file_name, bd_config.big_endian, bd_config.file_size); for (i=0; i<16; i++) { if (bd_mm[i].enable == 1) { printf("name: %s, start addr: 0x%x, end addr: 0x%x\n", \ bd_mm[i].name, bd_mm[i].start_addr, bd_mm[i].end_addr); } else { break; } } return 0; } #endif int main(int argc, char** argv) { int ret = 0; ret = parsecfg(argc, argv); if (ret < 0) { printf("Parse configrue file error !\n"); return ret; } #if _DEBUG printcfg(); #endif ret = gennerate_file(); if (ret < 0) { printf("Generate file error !\n"); return ret; } printf("Gennerate \"%s\" succeefully !\n", bd_config.file_name); return ret; } #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <string.h> #include "parsecfg.h" #include "gennerate_file.h" int gf_cp_to_pb(char* filepb) { int ret = 0; int i = 0; uint32_t file_size = 0; for (i=0; i<16; i++) { FILE* cb = NULL; if (bd_mm[i].enable != 1) { break; } if (bd_mm[i].end_addr > bd_mm[i].start_addr) { file_size = bd_mm[i].end_addr - bd_mm[i].start_addr; } else { printf("Do not support address decrease\n"); ret = -1; goto out; } cb = fopen(bd_mm[i].name, "r"); if (cb == NULL) { printf("Generatefile: Open file '%s' faild !\n", bd_mm[i].name); ret = -2; goto out; } fread(filepb + bd_mm[i].start_addr, 1, file_size, cb); fclose(cb); } out: return ret; } int gennerate_file() { int ret = 0; char* file_name = NULL; uint32_t file_size = 0; FILE* gf = NULL; char* filepb = NULL; file_name = bd_config.file_name; file_size = bd_config.file_size; gf = fopen(file_name, "wb"); if (gf == NULL) { printf("Generatefile: Create file error !\n"); ret = -1; goto out; } filepb = malloc(file_size); if (filepb == NULL) { printf("Generatefile: malloc for filepb error !\n"); ret = -2; goto out; } memset(filepb, 0xff, file_size); ret = gf_cp_to_pb(filepb); if (ret < 0) { printf("Generatefile: copy date to filepb error !\n"); ret = -3; goto out; } fwrite(filepb, file_size, 1, gf); out: fclose(gf); free(filepb); return ret; }
试试其它关键字
二进制文件
同语言下
.
获取手机通讯录 iOS去除数字以外的所有字符
.
异步加载音乐等资源
.
交通罚单管理系统
.
freemark实现,简单的替换
.
计算斐波那契数列
.
base64解码 包括解码长度
.
图像显示
.
冒泡排序
.
输入十进制数,输出指定进制
.
链式栈
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
KevinJen
贡献的其它代码
(
1
)
.
使用bdimg将二进制文件整合成单个文件
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3