今天在写一个SPI-flash读写程序,目的是要将一个二进制文件写到SPI_FLASH中,最后通过开机读取,实际上这个.bin文件就是uboot和second-boot的结合体。通过SD卡写到SPI-FLASH中就可以脱离SD卡开机启动了。
这个程序的后半部分参考了以前的文章:http://blog.csdn.net/morixinguan/article/details/50646738
如何给文件产生空洞文件。
为什么需要将.bin文件转化为数组?因为.bin文件的大小有的几M,甚至是几百块,对于以字节为单位的数组来说的确是太庞大了,所以我参考了网上一些相关的程序,独自写了一个出来。用法如下:
/*
Date:2016.12.16
author:杨源鑫
*/
按照提示输入:
当前目录下的bin文件的文件名
ep : xxx.bin
接着输入:
要生成的.h文件的名称:
ep : xxx.h
会在目录下自动生成.h文件:
.h文件内包括两个数组
一个名称是SPIflashimage,这个就是从.bin文件中读出来的数组。
另一个是预留的空数组mfgimage,这个可以作为清数组的时候用,当然可以自由去改大小。
源程序如下:
/*
将二进制转化成数组头文件
*/
//Version:2016.12.16
//author:Y.X.YANG
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
typedef unsigned char u8;
typedef unsigned int u32;
void read_bin(char *path, u8 *buf, u8 size)
{
FILE *infile;
if((infile=fopen(path,"rb"))==NULL)
{
printf( "\nCan not open the path: %s \n", path);
exit(-1);
}
fread(buf, sizeof(u8), size, infile);
fclose(infile);
}
u32 GetBi