⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bootloader.c

📁 LPC2294开发板资源,包括源代码,BOOTLOAER,SCH,PCB和器件清单
💻 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 + -