更换内存容量和挂载bank需要修改的地方——Starting kernel ... Uncompressing Linux...的另外一种可能

  很久没有写一篇比较完整的技术文章,今天刚好遇到一个问题,解决了感触比较大:这个问题明明是我以前遇到过的,但是我却记不得,我还一筹莫展,没意识到问题所在,只怪我当时没有写当时的解决办法,一年后在写出来亡羊补牢也不迟。

         问题是这样的:我们自己做的电路板,在wince 下没有任何问题,但是在Android下的时候,偶尔会提示inand 存储错误,当时我认为有两种可能性:

1、自己画的电路板不行,虽然wince 下OK,但是Android对硬件稳定性要求更高,所以只能从硬件上找原因

2、kernel或者Android层的问题,因为uboot运行状态不错,应该是上层驱动的问题



        正好有空,那就先验证 问题2的可能性:我找了一个在开发板上运行良好的kernel和Android包在上面运行试试。结果很不爽,居然内核还没起来系统就死了,打印最后的信息是:


Starting kernel ...



Uncompressing Linux...


              后来百度原因,无非是:

1> U-boot中的参数(console)没有传到内核。
2> U-boot的时钟设置与Kernel的不一致。
3> U-boot中的Machine ID设置的与Kernel不一致。


           仔细检查者三项,都不存在问题,到底是怎么回事呢?因为我只是换成我的uboot而已,那么我就和比较开发板的uboot 比较一下,比较吓一跳,突然记起来我板子的内存挂载的bank和开发板的有点区别,通道是不一样的..............很让人伤心的就是我以前1GB修改的512MB的时候就改过这个部分,我居然忘记这点要素,于是修改如下:

1.uboot中修改 board\samsung\smdkc110\lowlevel_init.S

 

 

 

 

 

  • .set __base,0x200    ==>> .set __base,0x400  
  •    
  • // 256MB for SDRAM with cacheable  
  •    
  • .rept 0xD00 - 0xC00  
  •    
  • FL_SECTION_ENTRY __base,3,0,1,1  
  •    
  • .set __base,__base+1  
  •    
  • .endr  

  •  

 


2.uboot中 board/samsung/smdkc110/smdkc110.c      的ulong virt_to_phy_smdkc110(ulong addr)函数根据自己内存实际挂载地址来修改

3.uboot中3. include\configs\smdkv210single.h 内存控制器以及内存bank 大小等参数设置也根据实际情况来修改

 

 

 

 

 

 

 

4.内核中的修改

 

 

 

arch/arm/mach-s5pv210/include/mach/map.h

 

 

  • #define S5P_PA_SDRAM           S5PV210_PA_SDRAM  
  •    
  • #define S5PV210_PA_SDRAM        (0x40000000)  

 

 

arch/arm/mach-s5pv210/include/mach/memory.h

 

  • #define PHYS_OFFSET         UL(0x40000000)  

 

arch/arm/mach-s5pv210/Makefile.boot

 

 

  • zreladdr-y  := 0x40008000   
  • params_phys-y  := 0x40000100  

          大概情况就是这样,上面的数值,可以根据硬件的接法来修改,改完后重新编译出的zImage就可以顺利启动了,到了Android也没任何异常,顺利完工。在这了做一个总结:
Starting kernel ...
Uncompressing Linux...
            原因,除了:

1> U-boot中的参数(console)没有传到内核。
2> U-boot的时钟设置与Kernel的不一致。
3> U-boot中的Machine ID设置的与Kernel不一致。



还应该增加一种可能性:

4> 内核中的内存设置和u-boot不一致导致无法启动内核

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值