#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(int argc, char **argv) { unsigned char buf[8]; unsigned int i, count, bytes = 0; FILE *fd_in, *fd_out; if (argc != 4) { fprintf(stderr, "\n\tusage: %s <ucode.bin> <array_name> <output_name>\n\n", argv[0]); return -1; } fd_in = fopen(argv[1], "rb"); if (fd_in == NULL) { fprintf(stderr, "firmware file '%s' not found\n", argv[1]); return -1; } fd_out = fopen(argv[3], "w+"); if (fd_out == NULL) { fprintf(stderr, "cannot create output file '%s'\n", argv[3]); return -1; } fprintf(fd_out, "\n#include <asm/types.h>\n\nu8 %s [] = {", argv[2]); while ((count = fread(buf, 1, 8, fd_in)) > 0) { fprintf(fd_out, "\n\t"); for (i = 0; i < count; i++, bytes++) fprintf(fd_out, "0x%02x, ", buf[i]); } fprintf(fd_out, "\n};\n\n"); fclose(fd_in); fclose(fd_out); return 0; }