微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TQ2440国嵌学院gboot-bss段初始化

TQ2440国嵌学院gboot-bss段初始化

时间:11-26 来源:互联网 点击:
BSS段主要用来存放未初始化的全局变量

首先先查看我们的链接器脚本文件,也就是gboot.lds

OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS {
. = 0x30008000;

. = ALIGN(4);
.text :
{
start.o (.text)
*(.text)
}

. = ALIGN(4);
.data :
{
*(.data)
}

. = ALIGN(4);
bss_start = .;
.bss :
{
*(.bss)
}
bss_end = .;
}

可以看到上面bss段的开始地址bss_start和结束地址bss_end,

bss主要是存放未初始化的全局变量,因为是没有初始化,因此值可能是随机值,如果被应用程序调用,可能会有影响,因此初始化bss,也就是将bss段的内容全部赋值为0

代码如下:

clean_bss:

ldrr0,=bss_start

ldrr1,=bss_end

mov r3,#0

cmp r0,r1

moveqpc,lr

clean_loop:

strr2,[r0],#4

cmp r0,r1

bne clean_loop

mov pc,lr

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top