专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(17):__bss_sta
2019-07-13 16:03
发布
生成海报
站内文章
/
DSP
13124
0
942
快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ADI bf561 DSP
优视
BF561EVB
开发板
uclinux-2008r1.5-rc3
Visual DSP++ 5.0(update 5)
欢迎转载,但请保留作者信息
添加完
head.s
后有几个链接错误:
[Error li1021]
The following symbols referenced in processor 'p0' could not be resolved:
'__bss_start [___bss_start]' referenced from 'corea.dlb[head.doj]'
'__bss_stop [___bss_stop]' referenced from 'corea.dlb[head.doj]'
其中
__bss_start
和
__bss_stop
在
arch/blackfin/kernel/vmlinus.lds.s
中定义:
.bss :
{
. = ALIGN(4);
___bss_start = .;
*(.bss .bss.*)
*(COMMON)
. = ALIGN(4);
___bss_stop = .;
__end = .;
}
再看看
head.s
中对这个两个值的使用:
/* Code update for BSS size == 0
* Zero out the bss region.
*/
p1.l = ___bss_start;
p1.h = ___bss_start;
p2.l = ___bss_stop;
p2.h = ___bss_stop;
r0 = 0;
p2 -= p1;
lsetup (.L_clear_bss, .L_clear_bss) lc0 = p2;
.L_clear_bss:
B[p1++] = r0;
也就是说,它将把
bss
段中的所有数据清
0
,这个和
vdsp
程序中的
bsz
是一样的。为此我们在
SDRAM
中定义一块内存,并将
bss
段的数据都放到一起:
MEM_UCLINUX_BSS
{ TYPE(RAM) START(0x00010000) END(0x0001ffff) WIDTH(8) }
MEM_SDRAM_BANK0
{ TYPE(RAM) START(0x00020000) END(0x00ffffff) WIDTH(8) }
MEM_SDRAM_BANK1
{ TYPE(RAM) START(0x01000000) END(0x01ffffff) WIDTH(8) }
MEM_SDRAM_BANK2
{ TYPE(RAM) START(0x02000000) END(0x02ffffff) WIDTH(8) }
MEM_SDRAM_BANK3
{ TYPE(RAM) START(0x03000000) END(0x03ffffff) WIDTH(8) }
先从
BANK0
借
64K
出来,内存定义后面还要进行修改的,不要着急,呵呵。本来是不应该以
64k
为单位划分内存的,只不过
vdsp
的链接器有些
BUG
,不好使,只好先浪费点空间了。
接下来要在
p0
里面建一个段:
uclinux_bss ZERO_INIT
{
INPUT_SECTION_ALIGN(4)
___bss_start = .;
INPUT_SECTIONS($LIBRARIES_CORE_A(.bss .bss.*))
INPUT_SECTIONS($LIBRARIES_CORE_A(COMMON))
INPUT_SECTION_ALIGN(4)
. = (. + 3) / 4 * 4;
___bss_stop = .;
__end = .;
} > MEM_UCLINUX_BSS
注意,这里的
___bss_start
有三个下划线!
再链接,少了两个错误:
[Error li1021]
The following symbols referenced in processor 'p0' could not be resolved:
'_sdata [__sdata]' referenced from 'corea.dlb[head.doj]'
'_stext [__stext]' referenced from 'corea.dlb[head.doj]'
'bf53x_relocate_l1_mem [_bf53x_relocate_l1_mem]' referenced from 'corea.dlb[head.doj]'
'cmdline_init [_cmdline_init]' referenced from 'corea.dlb[head.doj]'
'init_pda [_init_pda]' referenced from 'corea.dlb[head.doj]'
'init_thread_union [_init_thread_union]' referenced from 'corea.dlb[head.doj]'
'start_kernel [_start_kernel]' referenced from 'corea.dlb[head.doj]'
1
参考资料
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(1)
:前言
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的
移植(2)
:代码注释
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(3)
:vdsp
项目创建
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(4)
:目录差异
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(5)
:'bf561.h'
的问题
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(6)
:
CONFIG_BFIN_KERNEL_CLOCK
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(7)
:
CONFIG_MEM_MT48LC16M16A2TG_75
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(8)
:CONFIG_CLKIN_HZ
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(9)
:CONFIG_MEM_SIZE
(2009-1-12)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(10)
:CONFIG_FLASH_SPEED_BTT
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(11)
:__INIT
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(12)
:trace_buffer_init
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到VDSP5
的移植(13)
:ENDPROC
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到
VDSP5
的移植
(14)
:
__FINIT
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到
VDSP5
的移植
(15)
:
CONFIG_BANK_x
(2009-1-13)
uclinux-2008R1.5-RC3(bf561)
到
VDSP5
的移植
(16)
:使用
head.s
做为入口点
(2009-1-13)
Ta的文章
更多
>>
uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(17):__bss_sta
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮