U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(13):使用L1

 
  
在u-boot中有部分代码需要放在L1中,因此在u-boot.lds.s中定义的两个段:
       .text_l1 :
       {
              . = ALIGN(4);
              __stext_l1 = .;
              *(.l1.text)
              . = ALIGN(4);
              __etext_l1 = .;
       } >l1_code AT>ram
       __stext_l1_lma = LOADADDR(.text_l1);
 
       .data_l1 :
       {
              . = ALIGN(4);
              __sdata_l1 = .;
              *(.l1.data)
              *(.l1.bss)
              . = ALIGN(4);
              __edata_l1 = .;
       } >l1_data AT>ram
       __sdata_l1_lma = LOADADDR(.data_l1);
一个代码段和一个数据段,相应的,我在u-boot.ldf中为其添加两个段:
       .text_l1
       {
         INPUT_SECTION_ALIGN(4)
              __stext_l1 = .;
              __stext_l1_lma = .;
              INPUT_SECTIONS($LIBRARIES_UBOOT(.l1.text))
         INPUT_SECTION_ALIGN(4)
              __etext_l1 = .;
       } > MEM_A_L1_CODE
 
       .data_l1
       {
         INPUT_SECTION_ALIGN(4)
              __sdata_l1 = .;
              __sdata_l1_lma = .;
              INPUT_SECTIONS($LIBRARIES_UBOOT(.l1.data))
              INPUT_SECTIONS($LIBRARIES_UBOOT(.l1.bss))
         INPUT_SECTION_ALIGN(4)
              __edata_l1 = .;
       } > MEM_A_L1_DATA_A
这里需要注意的是 __stext_l1_lma__sdata_l1_lma两个地址的定义。这两个地址仅当BF561不使用方式1启动时才有效果,在此种情况下,要放到L1中的内容刚开始是存放在FLASH上的,u-boot初始化时会将要这些代码或数据复制到L1中的相应位置,而 __stext_l1_lma__sdata_l1_lma两个地址分别指向了这些代码或者数据在FLASH上的存储位置。但是由于我的板子使用的是方式1,因此就直接将这两个值指向L1段起始的位置。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌云阁主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值