📄 bootloader.c
字号:
/*#######################################################################################
ARM Linux MMC Boot Loader
Copyright (C) 2004 Ulrich Radig
#######################################################################################*/
#include "main.h"
#include "bootloader.h"
void load_file (char *filename, int *mem_adresse)
{
unsigned char buffer[513];
unsigned short int cluster= 0;
unsigned char Dir_Attrib = 0;
long File_Size = 0;
if (Search_File(filename,&cluster,&File_Size,&Dir_Attrib,buffer) == 1)
{
printf("Loading ");
printf(filename);
printf("\n\r");
}
else
{
printf("File ");
printf(filename);
printf(" not found!\n\r");
while(1)
{
}
}
unsigned long block_counter = 0;
while(File_Size>0)
{
Read_File (cluster,buffer,block_counter);
block_counter++;
for (unsigned short int a=0;a<512;a=a+4)
{
*mem_adresse = (buffer[a+3]<<24)+
(buffer[a+2]<<16)+
(buffer[a+1]<<8)+
buffer[a];
mem_adresse++;
*mem_adresse = 0x00000000;
mem_adresse--;
if(*mem_adresse != ( (buffer[a+3]<<24)+
(buffer[a+2]<<16)+
(buffer[a+1]<<8)+
buffer[a]) )
{
printf("Memory Error %x : %x EX: %x \r\n",mem_adresse,*mem_adresse,((buffer[a+3]<<24)+
(buffer[a+2]<<16)+
(buffer[a+1]<<8)+
buffer[a]));
}
mem_adresse++;
File_Size = File_Size - 4;
if(File_Size<=0)
{
break;
}
}
printf(".");
}
printf("\n\r");
return;
};
void verify_file (char *filename, int *mem_adresse)
{
unsigned char buffer[513];
unsigned short int cluster= 0;
unsigned char Dir_Attrib = 0;
long File_Size = 0;
if (Search_File(filename,&cluster,&File_Size,&Dir_Attrib,buffer) == 1)
{
printf("Verify ");
printf(filename);
printf("\n\r");
}
else
{
printf("File ");
printf(filename);
printf(" not found!\n\r");
while(1)
{
}
}
unsigned long block_counter = 0;
while(File_Size>0)
{
Read_File (cluster,buffer,block_counter);
block_counter++;
for (unsigned short int a=0;a<512;a=a+4)
{
if(*mem_adresse != ( (buffer[a+3]<<24)+
(buffer[a+2]<<16)+
(buffer[a+1]<<8)+
buffer[a]) )
{
printf("Memory Error %x : %x EX: %x \r\n",mem_adresse,*mem_adresse,((buffer[a+3]<<24)+
(buffer[a+2]<<16)+
(buffer[a+1]<<8)+
buffer[a]));
}
mem_adresse++;
File_Size = File_Size - 4;
if(File_Size<=0)
{
break;
}
}
printf(".");
}
printf("\n\r");
return;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -