背景介绍
1. mkv210_image.c的作用
mkv210_image.c的主要作用就是由usb启动时使用的镜像(如:led.bin)制作得到由sd卡启动的镜像(210.bin)
2. 为什么要制作镜像
由S5PV210的启动过程我们知道,USB启动不需要进行校验和检查,但是在SD卡启动时需要进行校验和检查(checksum OK?),并且这个信息是在16字节的Header中,所以我们就要通过usb启动时使用的镜像来制作sd卡启动的镜像。
BL1必须具有头数据。头数据被iROM代码复制到内部SRAM中。
头数据有两个信息。一个是BL1的大小,另一个是BL1的校验和数据
当加载BL1时,iROM检查报头数据中BL1的大小,并将BL1复制到内部SRAM。
复制BL1后,将复制的BL1的iROM和数据与BL1头数据中的校验和数据进行比较。
如果成功了,那就开始。否则iROM将尝试从SD/MMC通道2端口进行第二次引导(4位SD/MMC)
程序分析
注:本文件来自于友善之臂的裸机教程,据友善之臂的文档中讲述,本程序是一个热心网友提供,在此表示感谢。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFSIZE (16*1024)
#define IMG_SIZE (16*1024)
#define SPL_HEADER_SIZE 16
#define SPL_HEADER "S5PC110 HEADER "
//通过命令行对main函数进行传参(传被加工的镜像和要生成的镜像地址)
//如:./mkx210 led.bin 210.bin
int main (int argc, char *argv[])
{
FILE *fp;
char *Buf, *a;
int BufLen;
int nbytes, fileLen;
unsigned int checksum, count;
int i;
// 1. 判断传参个数是否符合规则,也就是1个执行文件本身,1个待加工文件镜像,