专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(73):.init.set
2019-07-13 15:49
发布
生成海报
站内文章
/
DSP
12817
0
1216
快乐虾
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.setup
的
section
,每一个内核可以处理的参数都用一个结构体来表示(参见《
u-boot
向
uClinux
的参数传递
》一文):
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 = .;
}
这几行链接脚本放在
vdsp
的
ldf
中就是:
.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)
:保留
VDSP
的
heap
(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)
Ta的文章
更多
>>
cadence -- allegro和ad9之间的转换
0 个评论
TMS320C5402的存储器、系统启动与中断、时钟(PLL)
0 个评论
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(73):.init.set
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮