自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

转载 从U-Boot源码看C语言对汇编代码中的符号引用

<br />以下内容来自笔者在中国Linux论坛Linux嵌入技术讨论区的张贴:<br />aaronwong: u-boot中代码的疑问(_armboot_start与_start)?<br />---------------------------<br />我使用的是u-boot-1.3.0-rc2。在cpu/pxa/start.S中,有如下的标号定义: <br />_TEXT_BASE: <br />.word TEXT_BASE /*uboot映像在SDRAM中的重

2010-10-29 14:55:00 2047

转载 U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试

<br />编译完成之后,得到的几个重要文件是:<br />(1) u-boot.bin: 116K,原始二进制文件,用于下载到启动ROM进行系统引导;<br />(2) u-boot: 384K,ELF格式映像文件,可加载到SDRAM或SRAM中进行调试;<br />(3) u-boot.srec: Motorola S-Records格式映像。<br />(4) System.map: U-Boot映像文件的符号表,各符号的链接地址。<br /> <br />最有效的调试方法是下载到目标板的启动闪存,使

2010-10-29 10:47:00 2356

转载 U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板

1. 在U-Boot中添加XSBASE270目标板的定义<br />具体方法可参考第一节,本篇给出部分细节和要点,假定$U-BOOT为源码根目录。<br />############################################################<br /># (1)建立目标板目录<br /># 其中lowlevel_init.S采用adsvix的文件,以开启turbo mode,并注释掉<br /># 其中对pxavoltage.S文件中initPXAvolatage函数的

2010-10-29 10:38:00 1473

转载 U-Boot的移植之(二)进阶篇:从源代码看系统启动过程

<br />为什么要分析源代码?分析优秀的源代码本身就是一个学习的过程,也是进行深入研究的必经之路。不过在此我们的主要目的并非要研究U-boot或Bootloader技术本身,而仅仅是为了成功的并且恰当的将U-Boot移植到我们的开发板上。只有结合源代码了解了U-boot的系统引导过程,才能在移植和调试过程中保持清晰的思路,才能在碰到困难和问题时从根本上加以解决。<br />在动手分析之前,至少应该对U-Boot的源代码结构有基本的了解,很多参考书都有这方面的介绍,华清远见的《嵌入式Linux系统开发技术详

2010-10-29 10:25:00 1467

转载 U-Boot的移植之(一)基础篇:添加新的目标板定义

<br />本文使用最新的U-Boot-1.3.0-rc2。<br />U-Boot本身支持很多开发板,在其源代码中,每个板子都对应一个board/目录下的文件夹(笔者注:这并不确切,因为有的文件夹是供应商名称,下面可以有多个目标板目录,这里只考虑最简单的情况),以及include/configs/目录下的目标板配置头文件。因此,要添加U-Boot对我们的目标板的支持,首先就是要建立目标板文件夹和配置头文件,并修改相关的Makefile。<br />下面以实例说明为U-Boot添加新的目标板定义的步骤和过程

2010-10-29 09:55:00 2387

转载 U-BOOT全线移植分析系列之四——U-boot如何引导Linux内核启动

<br />【摘要】本节介绍了U-boot使用go或bootm启动linux内核的方法。首先介绍了mkimage的参数意义和bootm的详细执行流程。然后分析了如何利用mkimage生成内核映象的方法。对于bootm方式的内核是否压缩、-a、-e、运行地址等16种组合情况,给出了详细的测试过程,提出了6种可用方法种的三种最优解。<br /> <br />【关键字】:U-boot;AT91RM9200;bootm;mkimage;-a;-e;-c<br /> <br />四 U-boot如何引导Linux内核

2010-10-28 11:23:00 2067

转载 U-BOOT全线移植分析系列之三 ――U-BOOT在AT91RM9200上的移植

<br />【摘要】本节介绍了U-boot在AT91RM9200上移植的详细过程。首先分析AT91RM9200片内片外启动的详细流程,接着介绍了AT91RM9200启动所需几个文件的执行流程。针对片内片外存储器的映射情况,介绍了bootloader、内核及文件系统的内存分布。最后介绍了uboot在AT91RM9200上移植所需要的基本文件,并根据开发板的配置情况介绍了详细的移植过程。<br /> <br />【关键词】AT91RM9200,U-boot,片内启

2010-10-27 14:19:00 1394

转载 U-BOOT全线移植分析系列之二――U-boot基础

<br />【摘要】本节介绍了U-boot的基本概念。首先介绍了U-boot源代码的目录结构,并给出了一个实例。接着简单介绍了U-boot支持的基本功能、常见命令和环境变量。最后详细分析了U-boot启动的两个阶段,重点介绍了加载拷贝代码至RAM中的过程。<br /> <br />【关键词】bootloader,U-boot,环境变量, stage1,位置无关,代码搬移<br /> <br />二U-boot基础<br />现在为Linux开放源代码Boo

2010-10-27 14:16:00 1524

原创 U-BOOT全线移植分析系列之一――――BOOTLOADER介绍

<br />【摘要】本节介绍了bootloader的基本概念。首先分析了为什么要针对特定的CPU和开发板移植bootloader的必要性。然后介绍了两种如何在裸板中烧写bootloader的方法以及如何确定烧写地址。其次介绍了产品发布的启动加载模式和开发使用的下载模式(更新内核文件系统及bootloader自身).最后介绍了bootloader的两个通用启动阶段的流程及代码特性和运行位置。<br /> <br />【关键词】bootloader,烧写,复位地址,固化loader

2010-10-27 14:13:00 1423

原创 u-boot系列分析网址

http://www.onlyblog.com/blog2/enchen/cmd.html?uid=1075&do=blogs&id=1067&page=1

2010-10-26 11:41:00 1186

转载 U- BOOT源码分析及移植(非常详细)

<br />本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:<br />1、u-boot工程的总体结构<br />2、u-boot的流程、主要的数据结构、内存分配。<br />3、u-boot的重要细节,主要分析流程中各函数的功能。<br />4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 <br />这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分

2010-10-26 11:39:00 6287 4

转载 U-Boot系列之四: start_armboot()函数分析

在上一篇文章中,我们介绍了u-boot启动的时候汇编语言的部分,当时我们进行了一些简单的初始化,并且为C语言的执行建立的环境(堆栈),现在我们看看当从汇编语言转到C语言的时候执行的第一个函数( start_armboot (),在lib_arm/board.c中),该函数进行了一系列的外设初始化,然后调用main_loop (),根据配置来选择是直接加载Linux内核还是进入等待命令模式。    在介绍该函数之前,我们需要看一看几个数据结构,这些是u-boot中几个重要的数据结构:1

2010-10-22 17:30:00 3140

原创 U-Boot系列之三:u-boot整体结构及启动代码分析(有加入一些新东西)

<br />一、U-BOOT的目录结构<br />u-boot目录下有18个子目录,分别存放管理不同的源程序。这些目录中所要存放的文件有其规则,可以分成三类。<br /> 第一类目录与处理器体系结构或者开发板硬件直接相关;<br /> 第二类目录是一些通用的函数或者驱动程序;<br /> 第三类目录是u-boot的应用程序、工具或者文档。<br />Board:和一些已有开发板相关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关,主要包含SDRA

2010-10-22 17:01:00 2319

原创 U-Boot系列之二: Flash和SDRAM中的布局

<br />本篇文章主要讨论u-boot,Linux内核以及文件系统在Flash以及SDRAM中的布局,我用的板子是华恒的爱好者学习板,基于S3C2410,所参考的也是华恒所给的文档。<br />    通过u-boot命令flinfo,可以看出,所用的flash是intel TE28F640J3C120,flash一共有64个块,每个块有128K大小,其中u-boot就放在最前面的块中,下面是其中的分配布局,第二个是对应的当把内核以及文件系统搬到内存中时内存的布局。<br /><br />

2010-10-22 15:50:00 2199 1

转载 U-Boot系列之一: S3C2410内存映射结构

这片文章主要介绍S3C2410的内存映射,主要参考2410的用户手册。   我用的板子是基于三星的2410,三星的内存片选有8个bank,这里所谓的bank我开始也不是很清楚,在网上搜了一通也不知所云,但是当我看了2410的用户手册后才有点明白,这里的bank就是片选(nGCSx),一个片选就表示选中一个bank,在U-Boot中,配制的时候要配制SDRAM和FLASH的bank数,那么如果你的SDRAM或者FLASH就接了一个片选的时候,就定义为1就可以了,其他的类推。  下面是2

2010-10-22 14:53:00 2175

原创 ARM C嵌入式编程中一些常见的标识符

<br />1、访问绝对地址的内存位置:<br />     #define pISR_EINT0 (*(unsigned *) (_ISR_STARTADDRESS+0x74))     上述语句把代表地址的无符号整数_ISR_STARTADDRESS+0x74强制转换为指针,指向RAM,用下面的语句可以访问它:<br />     pISR_EINT0 = (int)Eint0_ISR<br />     为了访问一个绝对地址,把一个整形数表示的地址值强制转换(typecast)为一

2010-10-22 14:42:00 1986

转载 ARM的异常处理

<br /> 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。<br /> <br />1、引起异常的原因<br />    (1)、指令执行引起的异常<br />    软件中断、未定义指令(包括所要求的协处理器不存在对于协处理器指令)、预取址中止(存储器故障)、数据中止。

2010-10-21 17:06:00 3211

原创 u-boot 代码中常见汇编指令

<br />在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。<br />ARM指令集可以分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。 <br />ARM指令使用的基本格式如下: <br />〈opcode〉{〈cond〉}{S}     〈Rd〉,〈Rn〉{,〈operand2〉} <br />opcode 操作码;

2010-10-21 10:55:00 3361 1

转载 在Linux系统中存储设备的两种表示方法

<br />硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的;比如IDE硬盘,在Linux 可以表示为 /dev/hda、/dev/hdb ... ;SCSI 接口的硬盘、SATA接口的硬盘表示为/dev/sda、/dev/sdb ... ... ;而IDE接口的硬盘/dev/hda,也可以表示为hd0 ,而 SCSI 接口的如果是 /dev/sda ,另一种表示方法是sd0;理解两种表示方法有何用?至少GRUB引导管理器用到这

2010-10-20 10:26:00 1152

原创 MTD设备及其驱动

<br />MTD 设备是象闪存芯片、小型闪存卡、记忆棒等之类的设备,它们在嵌入式设备中的使用正在不断增长。<br /><br />MTD 驱动程序是在 Linux 下专门为嵌入式环境开发的新的一类驱动程序。相对于常规块设备驱动程序,使用 MTD 驱动程序的主要优点在于 MTD 驱动程序是专门为基于闪存的设备所设计的,所以它们通常有更好的支持、更好的管理和基于扇区的擦除和读写操作的更好的接口。Linux 下的 MTD 驱动程序接口被划分为两类模块:用户模块和硬件模块。<br /> <br />MTD 驱动程

2010-10-19 13:42:00 1970

原创 s3c2440存储控制器和地址以及启动的理解

<br />1.首先应该先了解Flash ROM的种类<br />NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。<br />NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。<br />通俗的说,只给地址不行,要先命令,再给地址,才能读到NAND的数据,在一个总线完成的。<br />结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND Flash.<br />2.Nand Flash的命令、地址、数据都通过I/O口发送,管脚复用,这样做做的好处

2010-10-19 11:36:00 2476

转载 FLASH存储器和EEPROM存储器的区别

  FLASH存储器和EEPROM存储器的区别<br />1、首先从IO引脚占用方面比较,EEPROM只需占用两个IO引脚,时钟(clk)和数据(data)引脚,外加电源三个引脚即可,符合I2C通讯协议。而FLASH需要占用更多IO引脚,有并行和串行的,串行的需要一个片选(cs)引脚(可用作节电功耗控制),一个时钟(clk)引脚,FLASH读出和写入引脚各一个,也就是四个。并行的需要8个数据引脚,当然比串行的读写速度要快。<br /><br /> 2、从功能方面比较,EEPROM可以单字节读写,FLASH部

2010-10-19 11:01:00 2971

转载 使用crosstool 制作arm-linux交叉编译链

<br />crosstool是个不错的软件,能够很方便的编译自己的交叉编译环境<br />目前最新版本crosstool-0.43 在地址 http://kegel.com/crosstool/crosstool-0.43.tar.gz 可以下载。<br />首先获取工具包,解压后进入其目录wget http://kegel.com/crosstool/crosstool-0.43.tar.gztar -xzvf crosstool-0.43.tar.gzc

2010-10-15 11:53:00 1640

转载 NFS服务

<br />NFS服务的概述 <br />NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准。<br /> <br />NFS服务的概述<br />NFS采用客户/服务器工作模式。在NFS服务器上将/nfs/public目录设置为输出目录(即共享目录)后,其他

2010-10-14 13:43:00 2109

转载 Linux内核模块编程初识

<br /> Linux 有许多功能是通过模块的方式,  在需要时才载入 kernel。 如此可使 kernel 较为精简,进而提高效率,以及保有较大的弹性。这些可动态加载的模块,通常是系统的设备驱动程序。加载模块采用 insmod 指令,其常用语法如下。<br /> insmod [-fkmpsvxX] [-o<模块名称>] [模块文件]<br /> 其中的参数解释如下。<br />  -f:不检查目前 kernel 版本与模块编译时的 kernel 版本是否一致,强制将模块载入。<br />

2010-10-13 11:55:00 1107

转载 如何为嵌入式开发建立交叉编译环境

<br />随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。<br />在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由 binutils、gcc 和 glibc 几个部分组成。有时出于减小 libc 库大小的考虑,你也可以用别的 c 库来代替 glibc,

2010-10-12 11:45:00 1778

转载 arm-linux-gcc 安装和使用(交叉编译环境搭建)

<br />1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:<br />sudo apt-get install gcc g++ libgcc1 libg++ make gdb<br /><br />2.安装交叉编译器<br />从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载交叉编译器cross的包,然后解压<br />sudo tar jxvf cross-2.95.3.tar.bz2<br /><br />(

2010-10-11 11:54:00 2923

转载 arm-linux-gcc工具链下载

<br />常用的交叉编译起可以从下边的站点下载: <br />http://frank.harvard.edu/~coldwell/toolchain/<br />http://www.kegel.com/crosstool/<br /> <br /> <br />http://www.handhelds.org/download/projects/toolchain/<br />http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/<br />http:/

2010-10-11 11:46:00 3143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除