大多数bootloader都分为stage1和stage2两大部分u-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下: (1) 定义入口 。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。 (2)设置异常向量(Exception Vector)。 (3)设置CPU的速度、时钟频率及中断控制寄存器。 (4)初始化内存控制器 。 (5)将ROM中的程序复制到RAM中。 (6)初始化堆栈 。 (7)转到RAM中执行,该工作可使用指令ldr pc来完成。 上面是U-BOOT第一阶段的作用 问题: 1.我的板子里面已经有U-BOOT了,而一些启动代码,如44B0的启动代码44b0init.s中也有这些功能啊,每次写程序时,我都把44B0init.s包含进来,那这样子不是重复了? 2.如果我的板子不要加入操作系统,裸奔时也要U-BOOT吗? 3.我把U-BOOT擦掉了,用AXD+JTAG不能调试?把U-BOOT烧进去后就可以调试了,这么说,无论怎么样都先要把U-BOOT烧进去才可以? 有把这个理解好的哥哥姐姐弟弟妹妹叔叔啊姨...能帮我解释一下吗? |