嵌入式LINUX应用开发完全手册
b02330224
这个作者很懒,什么都没留下…
展开
-
arm-linux-ld命令
我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者转载 2012-04-23 12:05:13 · 466 阅读 · 0 评论 -
挂载NFS文件系统启动
1.在服务器上启动NFS服务 2.修改UBOOT启动参数bootargs OpenJTAG> print bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0 bootdelay=2 ethaddr=08:00:3e:26:0a:5b netmask=255.255.255.0 mtdids=nand0=nandfla原创 2012-04-29 20:39:11 · 666 阅读 · 0 评论 -
uboot第一阶段详细分析
uboot的第一阶段设计的非常巧妙,几乎都是用汇编语言实现的,下面我们一起来看看它的精妙之处吧! 首先我们来看一下它的链接脚本,通过它我们可以知道它整个程序的各个段是怎么存放的。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm)转载 2012-04-26 15:16:24 · 652 阅读 · 0 评论 -
uboot链接脚本分析
1. 引言 1.1 编写目的 编写此文档记录学习uboot的过程 1.2 定义 无 2. 概述 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 连接器有个默认的内置连接脚本, 可转载 2012-04-26 13:44:21 · 1121 阅读 · 1 评论 -
uboot链接脚本
GNU编译器生成的目标文件缺省为elf格式,elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。C++源程序生成的目标代码中还包括.fini(析构函数代码)和.init(构造函数代码)等.链接器的任务就是将多个目转载 2012-04-26 13:34:37 · 726 阅读 · 1 评论 -
uboot makefile 之make
uboot根目录下makefile VERSION = 2010 PATCHLEVEL = 03 SUBLEVEL = EXTRAVERSION = ifneq "$(SUBLEVEL)" "" U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) else U_BOOT_VERS转载 2012-04-26 12:11:05 · 498 阅读 · 0 评论 -
uboot makefile分析之 make xx_config
make mini2440_config 分析: Uboot第一步--make xxx_config。 mini2440_config: unconfig @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 tekkamanninja s3c24x0 unconfig的定义-- ?转载 2012-04-26 12:10:12 · 682 阅读 · 0 评论 -
关于uboot.lds文件的分析
gcc等编译器内置有缺省的连接脚本。如果采用缺省脚本,则生成的目标代码需要操作系统才能加载运行。为了能在嵌入式系统上直接运行,需要编写自己的连接脚本文件。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)转载 2012-04-26 13:45:10 · 498 阅读 · 0 评论 -
运行地址和加载地址
在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢? 加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般是烧写在NAND里面,比如S3C2440转载 2012-04-26 13:41:56 · 666 阅读 · 0 评论 -
U-BOOT 源码分析与移植(转)
本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上: 1、u-boot工程的总体结构 2、u-boot的流程、主要的数据结构、内存分配。 3、u-boot的重要细节,主要分析流程中各函数的功能。 4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下转载 2012-04-26 13:36:07 · 449 阅读 · 0 评论 -
uboot链接分析
最近把boot的资料整理下,把我觉得boot比较核心的部分,完整的看了一遍,现在做个记号.我把我觉得我之前比较困惑的难点整理出来,也许大家一起讨论下,也许和我一样的新手就可以少走些弯路. BOOT的核心就是relocate,目前见到的典型嵌入式系统,除了处理器,至少都有ROM(norflash,nandflash)RAM(SDRAM),一般把Bootloader代码放在norflash里面,而n转载 2012-04-26 13:33:35 · 712 阅读 · 0 评论 -
GNU LD脚本解析
本文乃转载. 原作者的E-mail是zhanglei@sict.ac.cn,daily.zp@gmail.com 0. Contents 1. 概论 2. 基本概念 3. 脚本格式 4. 简单例子 5. 简单脚本命令 6. 对符号的赋值 7. SECTIONS命令 8. MEMORY命令 9. PHDRS命令 10. VERSION命令 11. 脚本内的表达式 1转载 2012-04-26 13:25:06 · 618 阅读 · 0 评论 -
uboot之Makefile分析
学习uboot已经两个礼拜了,想把自己学到的和大家分享下,同时也方便自己以后回顾。 本文以2410开发板为例; 1. uboot编译命令 我们一般通过两条命令来编译uboot; # make smdk2410_config # make 执行第一条命令后,生成了两个文件:include下config.h config.mk;这两个文件是如何生成的呢?在M转载 2012-04-26 09:37:36 · 1059 阅读 · 0 评论 -
U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
原文:http://blog.csdn.net/zskylark/archive/2010/07/12/5729768.aspx 都知道U-BOOT分为两个阶段,第一阶段是(~/cpu/arm920t/start.S中)在FLASH上运行(一般情况下),完成对硬件的初始化,包括看门狗,中断缓存等,并且负责把代码搬移到SDRAM中(在搬移的时候检查自身代码是否在SDRAM中),然后完成C程序运转载 2012-04-26 13:41:07 · 666 阅读 · 0 评论 -
u-boot的Makefile分析
U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-BOOT的下载地址: http://sourceforge.net/projects/u-boot 我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。 u-boot源码结构转载 2012-04-26 12:13:33 · 364 阅读 · 0 评论 -
arm-linux-ld实验
本文转自《S3C2410完全开发手册》 在开始后续实验之前,我们得了解一下arm-linux-ld连接命令的使用。在上述实验中,我们一直使用类似如下的命令进行连接: arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o 我们看看它是什么意思: -o选项设置输出文件的名字为led_on_c_tmp转载 2012-04-23 12:06:30 · 629 阅读 · 0 评论