91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

手寫簡易的bootloader在Mini2440上親測成功。

資源截圖

代碼片段和文件信息

#include?“setup.h“

extern?void?uart0_init(void);
extern?void?nand_read(unsigned?int?addr?unsigned?char?*buf?unsigned?int?len);
extern?void?puts(char?*str);
extern?void?puthex(unsigned?int?val);


static?struct?tag?*params;

void?setup_start_tag(void)
{
params?=?(struct?tag?*)0x30000100;

params->hdr.tag?=?ATAG_CORE;
params->hdr.size?=?tag_size?(tag_core);

params->u.core.flags?=?0;
params->u.core.pagesize?=?0;
params->u.core.rootdev?=?0;

params?=?tag_next?(params);
}

void?setup_memory_tags(void)
{
params->hdr.tag?=?ATAG_MEM;
params->hdr.size?=?tag_size?(tag_mem32);

params->u.mem.start?=?0x30000000;
params->u.mem.size??=?64*1024*1024;

params?=?tag_next?(params);
}

int?strlen(char?*str)
{
int?i?=?0;
while?(str[i])
{
i++;
}
return?i;
}

void?strcpy(char?*dest?char?*src)
{
while?((*dest++?=?*src++)?!=?‘\0‘);
}

void?setup_commandline_tag(char?*cmdline)
{
int?len?=?strlen(cmdline)?+?1;

params->hdr.tag??=?ATAG_CMDLINE;
params->hdr.size?=?(sizeof?(struct?tag_header)?+?len?+?3)?>>?2;

strcpy?(params->u.cmdline.cmdline?cmdline);

params?=?tag_next?(params);
}

void?setup_end_tag(void)
{
params->hdr.tag?=?ATAG_NONE;
params->hdr.size?=?0;
}


int?main(void)
{
void?(*theKernel)(int?zero?int?arch?unsigned?int?params);
volatile?unsigned?int?*p?=?(volatile?unsigned?int?*)0x30008000;

/*?0.?幫內(nèi)核設置串口:?內(nèi)核啟動的開始部分會從串口打印一些信息但是內(nèi)核一開始沒有初始化串口?*/
uart0_init();

/*?1.?從NAND?FLASH里把內(nèi)核讀入內(nèi)存?*/
puts(“Copy?kernel?from?nand\n\r“);
nand_read(0x60000?(unsigned?char?*)0x30008000?0x500000);
puthex(0x12345678);
puts(“\n\r“);
puthex(*p);
puts(“\n\r“);

/*?2.?設置參數(shù)?*/
puts(“Set?boot?params\n\r“);
setup_start_tag();
setup_memory_tags();
setup_commandline_tag(“noinitrd?root=/dev/mtdblock3?init=/linuxrc?console=ttySAC0“);
setup_end_tag();

/*?3.?跳轉(zhuǎn)執(zhí)行?*/
puts(“Boot?kernel\n\r“);
theKernel?=?(void?(*)(int?int?unsigned?int))0x30008000;
theKernel(0?1999?0x30000100);??
/*?
?*??mov?r0?#0
?*??ldr?r1?=1999
?*??ldr?r2?=0x30000100
?*??mov?pc?#0x30008000?
?*/

puts(“Error!\n\r“);
/*?如果一切正常?不會執(zhí)行到這里?*/

return?-1;
}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-05-23?03:04??my_bootloader\
?????文件?????????500??2014-05-23?01:48??my_bootloader\Makefile
?????文件????????2216??2014-05-23?03:04??my_bootloader\boot.bin
?????文件????????2260??2014-05-23?03:04??my_bootloader\boot.c
?????文件???????25076??2014-05-23?03:04??my_bootloader\boot.dis
?????文件???????36783??2014-05-23?03:04??my_bootloader\boot.elf
?????文件?????????255??2014-05-23?01:48??my_bootloader\boot.lds
?????文件????????2392??2014-05-23?03:04??my_bootloader\boot.o
?????文件????????4713??2014-05-23?01:48??my_bootloader\init.c
?????文件????????2892??2014-05-23?03:04??my_bootloader\init.o
?????文件????????6222??2014-05-23?01:48??my_bootloader\setup.h
?????文件????????1601??2014-05-23?01:48??my_bootloader\start.S
?????文件????????1084??2014-05-23?03:04??my_bootloader\start.o

評論

共有 條評論