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

快乐虾

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

[email protected]

本文适用于

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)

你可能感兴趣的:(数据结构,.net,脚本,Blog)