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

发布者:黑白之间最新更新时间:2015-10-08 来源: eefocus关键字:TQ2440  国嵌学院  gboot  bss段初始化 手机看文章 扫描二维码
随时随地手机看文章
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:

                ldr  r0,=bss_start

                ldr  r1,=bss_end

                mov r3,#0

                cmp r0,r1

                moveq  pc,lr

clean_loop:

               str  r2,[r0],#4

               cmp r0,r1

               bne clean_loop

               mov pc,lr

关键字:TQ2440  国嵌学院  gboot  bss段初始化 引用地址:TQ2440国嵌学院gboot-bss段初始化

上一篇:TQ2440国嵌学院gboot-栈的初始化
下一篇:让ARM Cortex-M7再想一一会儿

推荐阅读最新更新时间:2024-03-16 14:34

TQ2440 学习笔记—— 13、GPIO 接口【实验:用汇编语言实现】
GPIO 操作实例:LED 和 按键 1、使用汇编代码点亮一个LED 操作步骤 a、编写源程序(程序) b、生成可执行程序(Makefile) c、烧写程序(USB 下载线烧写) d、运行程序 a、编写源程序 虽然是汇编代码,但是程序很简单,就不解释啦! b、Makefile make 指令比较 第 1 行中文件led_on.bin 和文件 led_on.S 的时间,如果 led_on.S 的时间 比 led_on.bin 的时间新(led_on.bin 未生成时,此条件默认成立),则执行第2,3,4行的命令重新生成led_on.bin 。也可以不用指令make,而直接一条一条的执行2,3,
[单片机]
<font color='red'>TQ2440</font> 学习笔记—— 13、GPIO 接口【实验:用汇编语言实现】
tq2440JLink烧写裸机程序的问题
首先回顾一下编写裸机程序的步骤: 1 .使用ADS1.2创建工程,在DebugRel setting中的Language setting中要选中ARM920T,因为用的是S3C2440的CPU。ARM Linker中的起始地址是0x30000000,首先执行的文件为2440init.o,入口函数式init。 2 .添加所需要的文件到工程中,编写Main.c文件。当然入门的话只需要写这个文件就可以了。 3 .编译文件 4 .打开JLink,连接到开发板 5 .打开调试器AXD,下载编译好的axf文件到开发板上(文件在工程内的DebugRel文件夹下) 6 .运行。。。 但是在最后运行的时候却运行不起来,调
[单片机]
tq2440JLink烧写裸机程序的问题
TQ2440 学习笔记—— 16、volatile关键字
大多数计算机拥有一系列寄存器,其存取速度比计算机主存更快。好的编译程序能进行一种被称为“冗余装入和存储的删去” (redundant load and store removal)的优化,即编译程序会在程序中寻找并删去这样两类代码:一类是可以删去的从内存装入数据的指令,因为相应的数据已经被存放在寄存器中;另 一种是可以删去的将数据存入内存的指令,因为相应的数据在再次被改变之前可以一直保留在寄存器中。 volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如: static int i=0; int main(void) { ... while (1) {
[单片机]
基于TQ2440的u-boot-1.1.6移植(基本步骤)
参考资料: 《移植u-boot-1.1.6到TQ2440文档》 天嵌移植好的源码 移植环境 系统:华清远见虚拟机搭建的Ubuntu12.04 开发板:TQ2440 交叉编译器:crosstools_3.4.5_softfloat CPU:S3C2440 SDRAM:64M NOR Flash:2M NAND Flsah:256M NET:DM9000 移植过程 1、源代码下载 ftp://ftp.denx.de/pub/u-boot/ 下载u-boot-1.1.6.tar.bz2并解压到Ubuntu中 2、文件删减 board/下除 smdk2410 以外的所有其它目标板文件夹删除 cpu/下除 arm920t 以外的
[单片机]
基于<font color='red'>TQ2440</font>的u-boot-1.1.6移植(基本步骤)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved