📄 programmer.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 + -