在线课堂:https://www.100ask.net/index(课程观看) 论 坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taobao.com/ (淘宝) https://weidongshan.tmall.com/(天猫) 交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技
版本日期作者说明V12020韦东山技术文档原文出处:
http://bbs.100ask.org/forum.php?mod=viewthread&tid=16231
在链接脚本中,经常有这样的代码:
SECTIONS
{
.....
. = ALIGN(4);
.rodata : { *(.rodata) }
. = ALIGN(4);
.data : { *(.data) }
. = ALIGN(4);
.got : { *(.got) }
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
_end = .;
}
其中__bss_start, _end 表示BSS段的起始、终止地址。
我们想对这段空间清零时, 1.在汇编代码中,可以直接引用__bss_start, _end,比如:
ldr r0, =__bss_start
ldr r1, =_end
2.在C代码中,我们不能直接引用它们,要这样做:
void clean_bss(void)
{
extern int __bss_start, _end;
int *p = &__bss_start;
for (; p
关注
打赏
热门博文
- 韦东山freeRTOS系列教程:入门文档教程+进阶视频教程(全部免费的freeRTOS系列教程、freeRTOS学习路线)
- 韦东山嵌入式Linux三大学习路线
- 新人怎样学习嵌入式Linux?
- 【RTOS训练营】作业讲解、队列和环形缓冲区、队列——传输数据、队列——同步任务和晚课提问
- 【RTOS训练营】任务调度(续)、任务礼让、调度总结、队列和晚课提问
- 【RTOS训练营】上节回顾、空闲任务、定时器任务、执行顺序、调度策略和晚课提问
- 【RTOS训练营】设备子系统、晚课学员提问
- 【RTOS训练营】继续程序框架、tick中断补充、预习、课后作业和晚课提问
- 【RTOS训练营】程序框架、预习、课后作业和晚课提问
- 【RTOS训练营】环形缓冲区、AT指令、预习安排和晚课提问