uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(73):.init.setup

 

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

 

本文适用于

ADI bf561 DSP

优视BF561EVB开发板

uclinux-2008r1.5-rc3(smp patch)

Visual DSP++ 5.0(update 5)

 

欢迎转载,但请保留作者信息

在内核中,为了接收并处理引导程序传递过来的内核参数,定义了一个叫.init.setupsection,每一个内核可以处理的参数都用一个结构体来表示(参见《 u-bootuClinux的参数传递》一文):

struct obs_kernel_param {

     const char *str;

     int (*setup_func)(char *);

     int early;

};

再将所有的相关变量放在section中,这一点通过vmlinux.lds.s中的相关代码实现:

     .init.setup :

     {

         . = ALIGN(16);

         ___setup_start = .;

         *(.init.setup)

         ___setup_end = .;

     }

这几行链接脚本放在vdspldf中就是:

         .init.setup

         {

         INPUT_SECTION_ALIGN(16)

               ___setup_start = .;

               INPUT_SECTIONS($LIBRARIES_SML3_CM(.init.setup))

               ___setup_end = .;

         } > MEM_UCLINUX_INIT_SETUP

但是这样链接出来会有问题:

Input section

Start address

Size

Input file

.init.setup

0x1b0000

0xc

arch-kernel.dlb[early_printk.doj]

.init.setup

0x1b0010

0x18

kernel.dlb[clocksource.doj]

.init.setup

0x1b0030

0x18

kernel.dlb[panic.doj]

.init.setup

0x1b0050

0x30

kernel.dlb[printk.doj]

.init.setup

0x1b0080

0xc

kernel.dlb[resource.doj]

.init.setup

0x1b0090

0x3c

kernel.dlb[sched.doj]

.init.setup

0x1b00d0

0x54

init.dlb[do_mounts.doj]

.init.setup

0x1b0130

0xc

init.dlb[do_mounts_initrd.doj]

.init.setup

0x1b0140

0x18

init.dlb[do_mounts_rd.doj]

.init.setup

0x1b0160

0xc

init.dlb[initramfs.doj]

.init.setup

0x1b0170

0x18

init.dlb[main.doj]

.init.setup

0x1b0190

0xc

fs.dlb[dcache.doj]

.init.setup

0x1b01a0

0xc

fs.dlb[inode.doj]

.init.setup

0x1b01b0

0xc

mm.dlb[slab.doj]

.init.setup

0x1b01c0

0xc

block.dlb[elevator.doj]

也就是说,VDSP把每个doj文件中的相关section都以16做了对齐再放变量。而vmlinux.lds.s这段链接脚本显然是希望在section的开头做一次对齐,而后所有的数据都按顺序排列。

由于我们已经为这个section手工指定了一块空间,保证了section的开头是16对齐的,因此直接将开头的align改为4

         .init.setup

         {

         INPUT_SECTION_ALIGN(4)

               ___setup_start = .;

               INPUT_SECTIONS($LIBRARIES_SML3_CM(.init.setup))

               ___setup_end = .;

         } > MEM_UCLINUX_INIT_SETUP

 

1       参考资料

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(67)li1240(2009-2-14)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(68)PLL配置(2009-02-16)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(69)SHARED_MEMORY(2009-02-20)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(70):保留VDSPheap(2009-02-20)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(71)l1_data_sram_init的疑惑(2009-02-20)

uclinux-2008R1.5-RC3(bf561)VDSP5的移植(72):中断时SP的保存(2009-2-22)

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌云阁主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值