移植u-boot-2010.09到S3C2440(四)——通过BSS段和_start判断uboot大小

发布者:sunyouz1最新更新时间:2022-03-11 来源: eefocus关键字:移植  u-boo  S3C2440 手机看文章 扫描二维码
随时随地手机看文章

BSS(百度百科)

是“Block Started by Symbol”的缩写,意为“以符号开始的块”。


BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。


uboot代码块占用存储空间大小

查看u-boot.lds,其将BSS放在所有代码段的最后,又从上述得知BSS不占用存储空间,这样,将BSS段的地址减去_start的地址就是u-boot整个镜像的大小。这里_start按照我的理解是从u-boot.lds中获得的,该标记在整个u-boot代码的最开始。


并且,这两个标记的位置都是静态获得的,就是说,代码编译之后就已经固定了的。


关键字:移植  u-boo  S3C2440 引用地址:移植u-boot-2010.09到S3C2440(四)——通过BSS段和_start判断uboot大小

上一篇:移植u-boot-2010.09到S3C2440(三)——判断NAND还是NOR启动的汇编代码
下一篇:uboot-2011.12移植到S3C2440(四)——SDRAM初始化之后,卡在board.c的memset不动

推荐阅读最新更新时间:2024-11-10 11:07

s3c2440的USB热插拔驱动问题
s3c2440的USB驱动在较新的LINUX内核中有比较好的支持,代码修改较少,但是也存在一些问题,修改记录如下: 一、编译选项中注意选上以下几项,其它的可以根据实际情况选取: USB support- à * support for Host-side USB USB device filesystem USB device class-devices(DEPRECATED) * OHCI HCD support * USB Mass storage support 二、修改d
[单片机]
S3C6410之uboot回炉再造(1)start.S - SVC模式设置
  虽然已经写了几篇关于uboot移植的、但是觉得整体对uboot的理解还是只停留在copy的层面。   狠下心来,从代码进行uboot的分析,并从新移植一次uboot。   这次更侧重于记录代码分析心得。   使用uboot的版本仍为2010.3版本。   这里有一个很是详尽的start.S分析网站,分析过程借鉴了网站的方法,但也有一些不同的地方 http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html/uboot_starts_analysis.html   总的不同有如下   在网站的分析中,基于代码为arm9
[单片机]
内核移植和文件系统制作(3)Ramdisk简介和常见问题
一,Ramdisk简介: Ramdisk是一种基于内存的虚拟文件系统(并非一个实际的文件系统),它将一部分固定大小(这个大小在编译内核的make menuconfig时配置)的内存当作硬盘一个分区来使用。ramdisk是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统,通常我们会使用ext2或ext3文件系统来格式化它。由于ramdisk是在内存中进行操作的,所以我们可以对里面的文件进行添加,修改,删除等等操作,但是一掉电,就什么也没有了。由于这个特性,我们可以将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,这样可以明显地提高系统的性能。 在Linux的启动阶段,内核和ramdisk
[单片机]
S3C2440-裸机篇-02 | 安装和使用arm-linux-gcc交叉编译工具链
1.为什么需要交叉编译工具 宿主机运行的是标准Linux操作系统,编译出的程序却需要在目标机的Linux上跑,这就叫交叉编译,编译器叫做交叉编译器。 之前我们已经使用过gcc编译Linux本地主机的程序(Linux C语言编程(上篇) | gcc的使用),而我们现在需要的这个编译器的目标系统是ARM,不运行操作系统,仅运行裸机程序,需要在Linux主机上编译出可以运行在S3C2440@ARM920T芯片上跑的程序,所以不能使用这个编译器,需要使用arm-linux-gcc交叉编译器。 2.arm-linux-gcc的安装 arm-linux-gcc是ARM官方基于Linux平台的arm编译器,其特点有: 开源免费 支持
[单片机]
S3C2440-裸机篇-02 | 安装和使用arm-linux-gcc交叉编译工具链
OK6410A 开发板 (八) 15 linux-5.11 OK6410A start_kernel 打印角度 第二阶段 概览
do_initcalls 的打印信息 VFS: Mounted root (nfs filesystem) on device 0:10. Freeing unused kernel memory: 1024K 函数分类 arch_call_rest_init rest_init pid = kernel_thread(kernel_init, NULL, CLONE_FS); kernel_init_freeable smp_init do_basic_setup driver_init do_initcalls for (level = 0; level ARRAY_SI
[单片机]
Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 【1】嵌入式linux应用开发完全手册,韦东山,编著。 【2】 http://blogold.chinaunix.net/u3/101649/showart_2276906.html
[单片机]
Linux-2.6.32.2内核在mini2440上的<font color='red'>移植</font>(一)---构建自主开发环境
ARM裸机程序研究 - S3C2440时钟初始化
2440内部的时钟主要有3个, FCLK, HCLK, PCLK。 FCLK 提供给ARM920T内核使用, HCLK主要提供给高速外设使用,如显示接口,内存控制器, PCLK提供给低速外设使用,如串口,SPI, GPIO 等。另外还有一个UCLK, 只提供给USB Host 和USB Device使用。 2440的时钟来源有两种,外部时钟和通过外接晶振提供时钟。时钟源的选择通过引脚OM2和OM3来决定。因此,在芯片上电的时刻,就已经确定了时钟源。典型的时钟源配置是外界一个12M的无源晶振。 时钟源确定后,下面就是进一步确定各个时钟得频率。2440内部有一个PLL来合成频率,该PLL称为MPLL。它利用前面选择的时钟源,合
[单片机]
基于MDK+jlink平台s3c2440裸机程序
硬件:mini2440 编译器:MDK3.50 调试工具:J-LINK 此工程只能在SDRAM中调试,不能脱机运行(如何烧写到NAND中运行,等续)。 1、建立MDK工程 A.在你的工作目录下建立S3c2440-Beep文件夹,在此文件夹下建立Obj文件夹。 B.打开MDK,在project菜单下点击 New uvision Project ,输入工程名称为S3C2440-Beep,保存, C.选择CPU, Samsung - S3C2440A ,点击OK, D.弹出是否将S3C2440启动代码添加进Project,选择“是”。 2、配置 A.在C:\Keil\ARM\Boards\Samsung\S3C244
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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