linux引导程序Uboot
文章平均质量分 67
正义飞
大数据专业分享技术公众号:bigdatatip
展开
-
OK6410挂在nfs文件系统
1. 准备NFS文件系统目录启动nfs服务之前,必须在Ubuntu上准备好NFS共享目录。 例如我们采用Ubuntu的“/forlinx/root”作为NFS共享目录,就需要将用户基础资料光盘中的“linux2.6.28/filesystem/FORLINX_6410_yaffs2_v1.0.tgz”压缩文件拷贝到这个目录下,然后解压缩,得到根文件系统所需要的目录。在Ubu转载 2013-11-10 10:11:12 · 915 阅读 · 0 评论 -
U-boot移植出现的错误
鄙人,话了三天用来移植uboot到FL2440更换过各种版本的uboot和交叉编译器最终在arm-linux-gcc 4.4.3版本和uboot-1.3.4版本的情况先移植成功。先面介绍一下我遇到的各种错误及解决方案:错误一:main.c:51:error:inline function 'show_boot_progress' cannot bedecleared weak原创 2014-04-01 10:59:58 · 2331 阅读 · 0 评论 -
ARM9寄存器~~ARM-thumb 过程调用标准
根据“ARM-thumb 过程调用标准”:1, r0-r3 用作传入函数参数,传出函数返回值。在子程序调用之间,可以将 r0-r3 用于任何用途。被调用函数在返回之前不必恢复 r0-r3。---如果调用函数需要再次使用 r0-r3 的内容,则它必须保留这些内容。2, r4-r11 被用来存放函数的局部变量。如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值。3, r1原创 2014-04-16 23:46:35 · 1177 阅读 · 0 评论 -
解决办法:warning: Clock skew detected. Your build may be incomplete.
由于时钟同步问题,出现 warning: Clock skew detected. Your build may be incomplete.这样的警告,解决办法:find . -type f | xargs -n 5 touch原创 2014-04-18 00:21:26 · 7208 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植(-、让u-boot从norFlash动起来)
移植环境主 机:VMWare--Ubunt 10.04 Kernel:2.6.34 开发板:Tx2440--256MB Nand编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-1.3.4移植步骤本次移植的功能特点包括:Nand Flash读写Nor/Nand 自动选择启动DM9000网卡支持转载 2014-04-09 10:03:20 · 1425 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植(三、添加Nand Flash的有关操作支持)
在上一节中我们说过,通常在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动,但不管是从Nor启动或者从Nand启动,进入第二阶段以后,两者的执行流程是相同的。当u-boot的start.S运行到“_start_armboot: .word start_armboot”时,就会调用lib_arm/board.c中的start_armboot转载 2014-04-09 10:06:03 · 1045 阅读 · 0 评论 -
linux堆栈汇编
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈http://www.cnblogs.com/myblesh/archive/2012/04/07/2435737.html之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈。 而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动作。但是,从来只原创 2014-04-08 22:14:57 · 1392 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植(四、对DM9000网卡的支持)
1、在drivers/net/ 目录下有DM9000的驱动代码,在dm9000x.h中对CONFIG_DRIVER_DM9000宏的依赖,dm9000x.c中对CONFIG_DM9000_BASE宏、DM9000_IO宏、DM9000_DATA等宏的依赖,所以首先修改 include/configs/smdk2440.h ,在文件中加入这些宏的定义:/* * Hardwar转载 2014-04-09 10:06:49 · 1026 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植 (六、实现启动快捷菜单)
1、在common目录下新增cmd_menu.c文件,内容为:#include #include static char awaitkey(unsigned long delay, int* error_p){ int i; char c; if (delay == -1) { while (1) {转载 2014-04-09 10:08:47 · 694 阅读 · 0 评论 -
汇编语言和C语言的混合使用
汇编语言和C语言的混合使用 在C语言中怎样使用汇编语言呢?这个问题在不同的编译器中,具体实现方法是不同的。但是在实现大方上也但是就是有两种,而且各种编译器的实现方法也是大同小异。一种是在C语言中嵌入汇编语言代码,另一种是让C语言从外部调用汇编。下面我们就以Borland格式为例来说一说具体用法。但是,GCC和Microsoft的实现方法的和Borland只在格式上有点区分。当然,GCC的嵌入汇原创 2014-04-08 22:18:45 · 4416 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植(二、让u-boot从nandFlash动起来)
接上:让u-boot从norFlash动起来完成上面工作后,u-boot中还没有对2440上Nand Flash的支持,以及u-boot从Nand Flash上启动,这些得我们一步步去实现了。1、修改配置文件 include/configs/smdk2440.h :1.1、新增宏 CONFIG_CMD_NAND (大概在95行)#define转载 2014-04-09 10:04:44 · 1505 阅读 · 0 评论 -
relocate
BOOT的核心就是relocate,目前见到的典型嵌入式系统,除了处理器,至少都有ROM(norflash,nandflash)RAM(SDRAM),一般把Bootloader代码放在norflash里面,而nandflash因为本身硬件原因不能随机访问,一般只是用来放应用程序.在系统加电或复位后,CPU通常由CPU制造商预先安排上地址取指令,arm体系下一般都是0x0地址取它的第一条指令,即PC转载 2014-04-14 10:12:59 · 1198 阅读 · 0 评论 -
uboot与系统内核mtd分区之间的关系
uboot 与系统内核中 MTD分区的关系:分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,等等。1:在内核MTD中可以定义分区A~B,C~D。。。。。。并且以绝对的地址赋上值。bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统。。。这些起始地址在MTD的分区信息中能找到。bootloader对分区的转载 2014-10-07 19:39:31 · 857 阅读 · 0 评论 -
Bootm命令
一、在开始之前先说明一下bootm相关的东西。1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到转载 2015-06-06 23:15:12 · 1005 阅读 · 0 评论 -
U-Boot启动Linux过程
U-Boot启动Linux过程 U-Boot使用标记列表(tagged list)的方式向Linux传递参数。标记的数据结构式是tag,在U-Boot源代码目录include/asm-arm/setup.h中定义如下:struct tag_header { u32 size; /* 表示tag数据结构的联合u实质存放的数据的大小*/转载 2015-06-06 23:27:41 · 718 阅读 · 0 评论 -
bootm命令中的地址参数,内核加载地址以及入口地址
bootm命令只能用来引导经过mkimage构建了镜像头的内核镜像文件以及根文件镜像,对于没有用mkimage对内核进行处理的话,那直接把内核下载到连接脚本中指定的加载地址0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 通过mkimage可以给内核镜转载 2015-06-15 22:09:54 · 990 阅读 · 0 评论 -
config.mk 文件详细分析
网友有这么一种说法“u-boot根目录下自带一个config.mk文件,应 该说这才是真正的Makefile,以上介绍的两个脚本Makefile和mkconfig完成了环境配置之后,在该文件中才定义具体的编译规则,所以你会发现在各个子模块(board、 cpu、lib_xxx、net、disk...)目录中的Makefile第一句就是:include $(TOPDIR)/config.mk转载 2014-04-15 23:49:00 · 10234 阅读 · 0 评论 -
uboot移植之Makefile分析
转载:u-boot源码结构解压就可以得到全部u-boot源程序。 在顶层目录下有18个子目录, 分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。第1类目录与处理器体系结构或者开发板硬件直接相关;第2类目录是一些通用的函数或者驱动程序;第3类目录是u-boot的应用程序、工具或者文档。u-boot的源码顶层目录说明目 录 特 性 解 释 说转载 2014-04-16 10:16:49 · 681 阅读 · 0 评论 -
Makefile中指示符“include”、“-include”和“sinclude”的区别
指示符“include”、“-include”和“sinclude” 如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件;否则继续依此搜转载 2014-04-15 23:41:00 · 727 阅读 · 0 评论 -
如何利用JLINK烧写U-boot到NAND Flash中
很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给转载 2013-11-10 10:59:11 · 789 阅读 · 0 评论 -
uboot常用命令
Printenv 打印环境变量。Uboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5Environment size: 80/8188 bytesSetenv 设置新的变量Uboot> se转载 2013-11-13 13:19:36 · 775 阅读 · 0 评论 -
ARM remap与重定位摘抄
本文引自:http://blog.csdn.net/dog0138/archive/2007/05/10/1603794.aspx(一)关于ARM处理器Remap的理解0.什么是Remap 我的理解是:在ROM从0x0用几句指令引导系统之后,把RAM映射到0x0就是Remap。1.Remap的作用 当ARM处理器上电或者Reset之后,处理器从0x0取指。因此,转载 2014-04-14 10:04:21 · 1158 阅读 · 0 评论 -
PIC----代码无关设计
编译器在编译一段程序时,要经过三个步骤:编译,链接和加载。在链接时,要对所有目标文件进行重定位,建立符号引用规则,同时为变量,函数等分配地址。程序执行时,把代码加载到链接时指定的地址空间,以保证程序在执行过程中对变量,函数等符号的正确引用,是程序正常运行。但是,在操作系统中,一个进程通常从硬盘等二级存储设备拷贝到内存中去执行,这两者的地址是不同的,因此操作系统要对这个进程进行重定位,才能正确运原创 2014-04-13 21:38:17 · 889 阅读 · 0 评论 -
mini2440 uboot-2011.12 学习笔记 之01 采用JLink+ADS1.2调试uboot的方法
本文转载自:刚开始想通过Nor Flash中的supervivi+DNW的“Download & Run 功能”将uboot.bin下到SDRAM进行调试,但是由于笔记本已经被装成ubuntu + Virtualbox(Windows XP),将supervivi阶段的USB下载设备分配进Virtualbox(Windows XP)后提示“不能分配 USB设备 System MCU SEC转载 2014-04-14 16:17:13 · 1024 阅读 · 0 评论 -
利用jlink command 烧写uboot到mini2440 nand flash方法
//说明:我的板子是mini2440 有2M的s29al016j nor flash 和一块 256M的 k9f2608u0b nand flash。//这篇文章并非全部原创,只是把网友“sblpp”在http://bbs.eeworld.com.cn/thread-144846-1-1.html 的帖子修改了并附图。需要说明的是uboot.bin这个文件必须支持nand flash转载 2014-04-14 16:18:48 · 2186 阅读 · 0 评论 -
lowlevel_init.S 分析
在我迷迷糊学看了lowlevel_init.S中的代码之后,有一个感觉就是,要想读懂其中的代码首先得看一下你所用的芯片手册,因为里面有比较详细的存储器控制(MemoryController)描述。我用的是s3c2440手册里写得十分清楚,总共有8个块(Banks)(Bank0~Bank7),每个块对应着不同的控制与地址线,其实这些Bank很大一部分是对应着的控制寄存器的地址,这个要看实际的芯片与板转载 2014-04-14 20:01:42 · 807 阅读 · 0 评论 -
位置无关代码(PIC)的思考
应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重定位(relocation),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成。 在设计Bootloader程序时,必须在裸机环境中进转载 2014-04-15 10:07:18 · 721 阅读 · 0 评论 -
uboot第一阶段详细分析
作者:程老师,华清远见嵌入式学院讲师。uboot的第一阶段设计的非常巧妙,几乎都是用汇编语言实现的,下面我们一起来看看它的精妙之处吧!首先我们来看一下它的链接脚本,通过它我们可以知道它整个程序的各个段是怎么存放的。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") O转载 2014-04-15 10:41:36 · 797 阅读 · 0 评论 -
u-boot中.lds链接脚本文件的分析
作者:冯老师,华清远见嵌入式学院讲师。对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill转载 2014-04-15 10:44:01 · 741 阅读 · 0 评论 -
uboot代码解析
目录[+] 1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转到第二阶段代码入口 (2)第二阶段的功能Ø 初始化本阶段使用的硬件设备Ø 检测系统转载 2014-04-08 18:49:16 · 1701 阅读 · 0 评论 -
UBOOT版本
u-boot版本情况网站:http://ftp.denx.de/pub/u-boot/1、版本号变化:2008年8月及以前按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新)2008年8月以后均按日期命名。目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新)2、目录结构变化:u-bo转载 2014-04-15 14:11:37 · 1312 阅读 · 0 评论 -
makefile的选项LDFLAGS和LIBS的区别
LDFLAGS是选项,LIBS是要链接的库。都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么。网上不难搜索到上面这段话。不过“告诉ld怎么吃”是什么意思呢?看看如下选项:LDFLAGS = -L/var/xxx/lib -L/opt/mysql/libLIBS = -lmysqlclient -liconv这就明白了。LDFLAGS告诉链接转载 2014-04-15 23:37:45 · 1400 阅读 · 0 评论 -
uboot中用到的linux命令
uname是什么意思?$man uname$man unameUNAME(1) User Commands UNAME(1) NAME uname - print system information SYNOPSIS uname [OPTION]...原创 2014-04-16 09:29:24 · 1018 阅读 · 0 评论 -
Makefile实例
-D:条件选择编译-I :头文件搜索路径-l:连接静态库 AR静态库打包命令的名字,缺省值是ar。ARFLAGS静态库打包命令的选项,缺省值是rv。AS汇编器的名字,缺省值是as。ASFLAGS汇编器的选项,没有定义。CCC编译器的名字,缺省值是cc。CFLAGSC编译器的选项,没有定义。转载 2014-04-16 10:40:37 · 694 阅读 · 0 评论 -
uboot想Linux内核传递参数
U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式。另外一种就是现在的 2.6内核在用的参数链表 (tagged list) 方式。这些参数主要包括,系统的根设备标志,页面大小,内存的起始地址和大小,RAMDISK的起始地址和大小,压缩的RAMDI转载 2015-06-15 22:06:03 · 1109 阅读 · 0 评论