VBOOT

系统首先是从head.S文件开始,ARM是从0X00000000地址开始的,可以看系统文件MEM.LDS发现

 

SECTIONS { 

  . = 000000;

  .myhead ALIGN(0): {*(.text.FirstSector)}

  .text ALIGN(512): { *(.text) }

  .bss ALIGN(4)  : { *(.bss*)  *(COMMON) }

  .data ALIGN(4) : { *(.data*) *(.rodata*) }

 

head.o放在0X0000000的地址,ALIGN(4),表明BSS,和data段的对其方式,是以4字节对其

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

 

从0X00开始的应该是异常向量表

0X00指向的是reset函数

b Reset是跳转指令,跳转到Reset异常处理函数,(ARM汇编 B 跳转指令)

最后系统跳转到MAIN.C函数中

bl Main

跳转到主函数中

void Main(void)

{

       MMU_EnableICache();

       MMU_EnableDCache();

 

       Port_Init();

       NandInit();

 

       if (g_page_type == PAGE_UNKNOWN) {

              Uart_SendString("/r/nunsupport NAND/r/n");

              for(;;);

       }

 

       GetParameters();

 

       Uart_SendString("load Image of Linux.../n/r");

       ReadImageFromNand();    //loader.....

}

 

通过ARM汇编来控制协处理器,对CACHE处理

static inline void MMU_EnableICache(void)

{

 

       asm (

              "mrc p15,0,r0,c1,c0,0/n"

              "orr r0,r0,#(1<<12)/n"

              "mcr p15,0,r0,c1,c0,0/n"

       );

}

MRC 从协处理器移到ARM7寄存器(L=1)

MCR 从ARM7寄存器移到协处理器(L=0)

开启指令 cache 是设置协处理器 cp15c1 寄存器的第 12 位为 1
系统有两个cache,一个是指令cache,一个是数据cache


1.解压vboot 2.将VBOOT中的vbootldr.mbr,vbootldr放在C盘根目录,剩下的VBOOT目录放在C盘根目录 c:. | vbootldr | vbootldr.mbr |----vboot |------- grub | |-------font ........... 3.将boot.INI中增加一行 C:\vbootldr.mbr=&quot;VBoot -VHD Boot&quot; 此时启动,选择VBoot -VHD Boot能看到启动菜单 4.创建VHD磁盘 命令 c:\vboot\tools\x86\vbootctl.exe createhd c:\winxp.vhd /size 5 可以使用c:\vboot\tools\x86\vbootctl.exe help查看命令 此处建立的是一个动态的vhd文件。 注意:这个size后面单位是GB 5.安装XP系统到这个VHD 将要安装的光盘改名为winxp-sp2.iso,放在C盘根目录 至于这个ISO和前面的VHD名字,由grub\grub.cfg文件中决定, vboot harddisk=&quot;(hd0,1)/winxp.vhd&quot; floppy=(hd0,1)/vboot/vboot.img cdrom=(hd0,1)/winxp-sp2.iso boot=cdrom 熟悉命令后可以更改其他磁盘,其他文件名。 重启 然后选择 VBoot -VHD Boot 下一个菜单中选择 &quot;xp install step1&quot; 安装过程中注意选择磁盘,一般是最后一个未划分区域 安装过程要重启,接着选择菜单 &quot;xp install step2&quot; 继续安装到完成 选择 &quot;xp sp2&quot;菜单进入系统 ==================================== 对于第5部: 原有的Windows移动到VHD走捷径的安装方法: 因为要VHD启动,所以需要安装磁盘驱动,VDM加载磁盘VBOOT\vboot.img,对于03加载vboot-2k3.img 然后用控制面板--添加硬件--添加文件指向img中的驱动文件,加入磁盘驱动。 用PE3.X来挂载VHD文件,然后复制硬盘上的系统到vhd文件中去。 可能要处理一下[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]与盘符有关的信息,删除掉原来的C盘符
我用Vboot工具安装VHD XP的方法(过期就会0x0000012f蓝屏) 经过好多次的蓝屏和无显示等各种故障,现在成功了。 一法: 1、运行“WinXP VHD 辅助处理工具 2011 【11-02-22最后更新】”,替换C:\vboot_temp以下文件: ①: VBOOT.IMG(I386下已换无时间限制的VBOOTDSK.SYS,若有$oem$/textmode/VBOOTDSK.SYS也要换没有不管) ②: floppies\vboot-img\i386\VBOOTDSK.SYS ③: tools\x86\drivers\vbootdsk\VBOOTDSK.SYS 若不换会0x0000012f蓝屏的。 2、选安装版XPISO文件或者NTFS格式的GHOST XP。重启。 我的笔记本这样装成功了。 台式机BIOS改SATA Mode为combiled,没有IDE选项,启动找不到硬盘,改其它都不行。只有用下面的方法了。 二法: 1、如以前安装GHOST XP一样,启动运行GHOST在实机C盘上安装,把所有驱动、设置、自己要用的程序装完。若安装版XP一样,不忘了NTFS格式。 2、重启运行GHOST备份C盘到其它盘WINXP.GHO。 3、重启进入C盘装好的XP,运行WinXP VHD辅助处理工具,如最上面第一步。 4、重启选VHD XP进入Vboot菜单选第一项继续安装,这样不会有各种故障了。 5、后面的都知道的,实C盘上XP可以不要了,须留下boot.ini、bootfont.bin、NTDETECT.COM、ntldr、vbootldr、vbootldr.mbr、WINXP.VHD文件及vboot文件夹。 没办法,我的台式机只能用第二种方法成功,并且我安装上了5个网上下载的XP,编辑grub.cfg文件(不能有中文)出现了5个XP菜单,选择启动想用哪个都可以。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值