Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286154
  • 博文数量: 65
  • 博客积分: 1490
  • 博客等级: 上尉
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-16 20:00
文章分类

全部博文(65)

文章存档

2015年(1)

2012年(3)

2010年(7)

2009年(54)

我的朋友

分类: LINUX

2009-06-29 19:31:33

       我这里的设备上,一般都是在NOR-Flash上跑U-boot,但有时候为了调试等的方便,要让u-boot在内存中跑。 Flash版本的u-boot是不能直接在内存中跑的(至少我这里的情况是这样)。

 

       下面,主要按照我这的情况,简单说说内存版u-boot的制作。制作出来的u-boot,可以:

1)用仿真器下载到内存中运行;

2)通过设备中已经有的u-boot,用tftp下载到内存中,再用go 0xxxx运行。

 

内存版u-boot的制作简单地说,就是注释掉不需要运行的相关代码,主要是:

1)内存,flash的初始化

2ARM的内存重映射

3)相关时钟初始化

 

这里,我是这样做的:

修改u-boot-1.0.2/cpu/arm940t/start.S,注释相关代码:

。。。。。。

reset:

       //bl platformsetup         

/*这里的platformsetup是具体设备的内存、Flash相关初始化;注释掉这个步骤,因为内存版u-boot运行时,内存、Flash已初始化好。*/

。。。。。。

。。。。。。

clbss_l:

    str   r2, [r0]

       add  r0, r0, #4

       cmp r0, r1

       bne  clbss_l

       ldr   pc, _start_armboot

_start_armboot:      .word start_armboot             //跳到C程序start_armboot执行

。。。。。。

 

       再注释board_init函数中调用的时钟初始化函数init_clk

void init_clk(void)

{

       icache_disable();

#if 0

       PMUSetFCS(PLL_331776000);

       PMUSetTurboMode(1); // 1: On, 0: Off

       PMUSetPLL3();

#endif

       icache_enable();

} 

 
  有什么不对的地方,请指正。
 

/*

*By Neil Chiao ()

*转载请注明出处:neilengineer.cublog.cn

*欢迎访问:新星湾()

*/

阅读(1174) | 评论(0) | 转发(0) |
0

上一篇:并口当GPIO用注意事项

下一篇:Linux中的LVM

给主人留下些什么吧!~~