U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(8):链接错误_bss_start

 
            
经过上面几步的修改,u-boot的错误提示为:
[Error li1021] The following symbols referenced in processor 'p0' could not be resolved:
        '_bss_end [__bss_end]' referenced from 'corea.dlb[start.doj]'
        '_bss_start [__bss_start]' referenced from 'corea.dlb[start.doj]'
        'cpu_init_f [_cpu_init_f]' referenced from 'corea.dlb[start.doj]'
        'initcode [_initcode]' referenced from 'corea.dlb[start.doj]'
其中的_bss_start和_bss_end相当于两个指针,分别指向bss段的起始代码和结束代码,在start.s中是这样用的:
 
       /* Initialize BSS section ... we know that memset()
        * does not use the BSS, so it is safe to call here
        */
       serial_early_puts("Zero BSS")
       r0.l = __bss_start;
       r0.h = __bss_start;
       r1 = 0 (x);
       r2.l = __bss_end;
       r2.h = __bss_end;
       r2 = r2 - r0;
       call _memset;
很简单,就是调用memset将bss段中的内容清0。
这两个值的定义是在u-boot.lds.s中完成的,如下所示:
     .bss :
     {
         . = ALIGN(4);
         __bss_start = .;
         *(.sbss) *(.scommon)
         *(.dynbss)
         *(.bss)
         *(COMMON)
         __bss_end = .;
     } >ram
我们就将这个段稍做修改放在u-boot.ldf中:
       .bss
       {
         INPUT_SECTION_ALIGN(4)
              __bss_start = .;
              INPUT_SECTIONS($LIBRARIES_UBOOT(.sbss) $LIBRARIES_UBOOT(.scommon))
              INPUT_SECTIONS($LIBRARIES_UBOOT(.dynbss))
              INPUT_SECTIONS($LIBRARIES_UBOOT(.bss))
              INPUT_SECTIONS($LIBRARIES_UBOOT(COMMON))
              __bss_end = .;
       } > MEM_SDRAM
搞定。
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值