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

📄 programmer.c

📁 一个非常有用的nand_flash的boot程序代码
💻 C
字号:
#include "example.h"
#include "nand.h"

void __attribute__((section(".programmer"))) program_booter()
{
	extern uint32 _booter_start, _booter_end, _programmer_end;
	void* start = (void*) KSEG1(KUSEG(&_booter_start));
	void* end = (void*) KSEG1(KUSEG(&_booter_end));
	void* scratch_pad = (void*) KSEG1(KUSEG(&_programmer_end));
	uint32 size = (uint32)end - (uint32)start;
	NandDevice* nand_device;
	
	printf("\n\nProgramming Boot Image\n");
	if(nand_device = (NandDevice*) nand_initialize())
	{
		progress_configure('.', '\t', 45, 512);
		printf("\tNand Device\n");
		printf("\tDescription: %s\n", nand_device->description);
		printf("\tModel:       %s\n", nand_device->model);
		printf("\tMaker:       0x%X\n", nand_device->maker);
		printf("\tDevice ID:   0x%X\n", nand_device->device_id);
		printf("\n");
		printf("\tImage Start: %X\n", start);
		printf("\tImage End: %X\n", end);
		printf("\tImage Size: %d bytes\n\n", size);
		
		printf("\tSwizzling Stage 1 Boot Loader\n");
		swizzle_memory(start, 512);
		
		printf("\tProgramming Nand\n");
		nand_program(start, size, 0, 0);
		
		/*
		printf("\tVerifying programmed data\n");
		nand_read(scratch_pad, size, 0, 0);

		if(compare_memory(start, scratch_pad, size))
			printf("Image programmed successfully\n");
		else
			printf("Error programming image!\n");
		*/
	}
	else
		printf("Error initializing nand device!\n");
		
	printf("\n\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -