![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
U-boot
tianxiawuzhei
热爱技术,喜欢探究,喜欢记录和分享。
展开
-
三星uboot1.1.6源码分析——start.s(12)--C语言部分(6)
上一篇博客我说完了那个很大的数组,然后回到了start_armboot函数,分析了一段代码,现在接着分析。------------------------------------------------------------------------------------/* armboot_start is defined in the board-specific linker sc原创 2012-07-01 19:30:16 · 1852 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(5)——与MMU有关的源码(1)
现在接着回到start.s的代码中,进行分析。我省略了一些没用的代码,如与onenand有关的代码。这一篇主要关注MMU有关的代码。-------------------------------------------------------------------------------------------------after_copy:#ifdef CONFIG_ENABLE原创 2012-06-17 23:21:55 · 2514 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(4)——从NAND复制源码到RAM(3)
通过上两篇博客终于把从NAND复制源码到RAM的c语言写的部分说完了,现在回到start.s中,接着分析余下的代码。-----------------------------------------------------------------------------------------------------------------/* * copy U-Boot to SDR原创 2012-06-17 22:52:20 · 2675 阅读 · 2 评论 -
三星uboot1.1.6源码分析——start.s(5)——与MMU有关的源码(2)
上一篇我主要关注的是对那些协处理器进行操作和对协处理器操作的两个指令的说明,这篇再说下具体的代码。-----------------------------------------------------------------------------------------------------/* Set the TTB register */ldrr0, _mmu_tabl原创 2012-06-18 20:20:52 · 2386 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(3)---从NAND复制uboot到外部RAM(2)
三星uboot1.1.6源码分析——start.s(1)的地址链接三星uboot1.1.6源码分析——start.s(2)--从NAND复制uboot源码到RAM(1)的链接地址接着上一篇的内容说。上一篇说到了这个函数nandll_read_blocks,这一篇,进入这个函数的源码,看看它的作用。-----------------------原创 2012-06-16 23:02:13 · 2578 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(2)--从NAND复制uboot源码到RAM(1)
三星uboot1.1.6源码分析——start.s(1)的链接地址接着上一篇分析。 ************************************************************************* _TEXT_BASE:.word TEXT_BASE这个会在board\samsung\smdk6410\config.mk文件中给原创 2012-06-16 19:13:55 · 2735 阅读 · 0 评论 -
三星uboot-1.1.6源码分析——lowlevel_init.S (4)
三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)的链接地址三星uboot-1.1.6源码分析——lowlevel_init.S (2)——时钟配置的链接地址三星uboot-1.1.6源码分析——lowlevel_init.S (3)---串口的链接地址上一篇主要是串口部分,这篇接着分析l原创 2012-06-15 17:26:44 · 3322 阅读 · 0 评论 -
三星uboot-1.1.6源码分析——lowlevel_init.S (3)---串口
三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)的链接地址三星uboot-1.1.6源码分析——lowlevel_init.S (2)——时钟配置的链接地址上一篇主要说了时钟有关的部分,这一篇接着说在第一篇中没说完的余下的代码。这一篇主要说串口部分/* for UART */bl原创 2012-06-14 22:23:55 · 2320 阅读 · 0 评论 -
三星uboot-1.1.6源码分析——lowlevel_init.S (2)——时钟配置
三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)的链接地址上一篇主要是此文件的前半部分代码,重点说了时钟的ASYNC MODE和SYNC MODE两种模式。接着上一篇分析----------现在来看具体的时钟代码,如下所示:system_clock_init:ldrr0, =ELFIN_CLOC原创 2012-06-13 23:05:20 · 1809 阅读 · 0 评论 -
s3c6410 uboot代码分析《一》
原文地址s3c6410 uboot代码分析《一》 以下用以记录uboot代码的分析过程,目标是s3c6410,如有错误,欢迎指正。强调,内容与三星原厂提供的uboot-1.1.6有更改的地方,因为外接外设的区别,特别是nand_flash、外接网卡芯片和LCD芯片以下纯代码情景分析,请结合uboot的功能结构图和内存分布图查看代码,这样会更加容易理解。s3c-u转载 2012-07-05 22:40:12 · 2576 阅读 · 0 评论 -
s3c6410 uboot代码分析《二》
原文地址s3c6410 uboot代码分析《二》 http://hi.baidu.com/__eabi/blog/item/be67533797bc73f014cecb49.html(s3c6410 uboot代码分析一 链接地址)接 s3c6410 uboot代码分析《一》 继续分析: 4)环境变量初始化 环境变量初始化,即start_转载 2012-07-05 22:44:02 · 3341 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(11)--C语言部分(5)
接着上一篇。----------------------------------------------------------------------------------init_fnc_t *init_sequence[] = {cpu_init, /* basic cpu dependent setup */board_init, /* basic board d原创 2012-07-01 17:34:59 · 1623 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(10)--C语言部分(4)
接着上一篇的分析。-------------------------------------------------------------------------------------init_fnc_t *init_sequence[] = {cpu_init, /* basic cpu dependent setup */board_init, /* basic b原创 2012-07-01 12:58:30 · 1828 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(13)--C语言部分(7)
上一篇主要与NAND和环境变量有关,这一篇接着分析。---------------------------------------------------------------------------------#ifdef CONFIG_VFD/* must do this after the framebuffer is allocated */drv_vfd_init();原创 2012-07-01 21:26:43 · 3034 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(9)--C语言部分(3)
上一篇我们分析了那个数组中的其中三个函数,这篇我们继续对那个数组中的函数进行分析。---------------------------------------------------------------------------------------------------init_fnc_t *init_sequence[] = {cpu_init, /* basic cp原创 2012-07-01 11:19:44 · 1372 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(8)--C语言部分(2)
上一篇只是开了个头,这一篇我们来分析,那个数组中的函数。---------------------------------------------------------------------------------------------------init_fnc_t *init_sequence[] = {cpu_init,/* basic cpu dependent setu原创 2012-06-30 22:26:34 · 1804 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(7)--C语言部分(1)
上一篇终于把uboot汇编部分的代码分析完了,这篇开始c语言部分代码的分析。-------------------------------------------------------------------------------------------------------------------------------------------------------------v原创 2012-06-30 16:28:28 · 2271 阅读 · 0 评论 -
三星uboot1.1.6源码分析——start.s(6)--汇编部分完!
上几篇主要分析了UBOOT源码的汇编部分,还有一点没分析完,这一篇接着分析。-------------------------------------------------------------------------------------------------------------------这应该是源码中进入C语言编写的代码的最后一部分汇编代码了,先设置堆栈,bss段清0,然原创 2012-06-30 15:33:03 · 2373 阅读 · 0 评论 -
uboot代码运行问题 --- 留给自己的做---提醒
1、今天才发现的问题,关于uboot源码的运行问题。今天在分析UBOOT源码的start_armboot 函数中的源码时,遇到了下面这几行代码,如下所示:----------------------------------------------------------------------------------------------- #if defined(CONFIG_原创 2012-07-09 16:54:09 · 1891 阅读 · 0 评论 -
三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)
最近在看uboot的源码,做些笔记。lowlevel_init.S (board\samsung\smdk6410)这个文件主要是与板级配置相关的代码,看他在那个目录就知道了。不多说了,开始看源码。1、#include #include #include #include "smdk6410_val.h"_TEXT_BASE:.word TEXT_BASE原创 2012-06-13 19:59:36 · 4597 阅读 · 1 评论 -
三星uboot1.1.6源码分析——start.s(1)
虽然,分析start.s的文件在网上已经很多,但还是在这里对自己的分析做个记录,方便以后查看。现在开始:#include #include #ifdef CONFIG_ENABLE_MMU#include #endif#include #ifndef CONFIG_ENABLE_MMU 我们定义了#define CONFIG_ENABLE_MMU,所以这原创 2012-06-15 20:14:00 · 3726 阅读 · 0 评论 -
Peripheral Port Memory Remap Register
1、今天在看三星的uboot-1.1.6(s3c6410)的源码,start.s文件时,看到一段代码,如下所示: /* Peri port setup */ldr r0, =0x70000000orr r0, r0, #0x13 mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff)当时很疑惑原创 2012-06-11 22:16:41 · 3062 阅读 · 0 评论 -
u-boot源码----lowlevel_init.S分析
原文地址:http://maxshu.diandian.com/post/2011-04-26/588022原文:mini6410板uboot的lowlevel_init.S文件:u-boot/board/samsung/mini6410/lowlevel_init.S#include #include #include #include "mini64转载 2012-03-26 22:21:01 · 1940 阅读 · 0 评论 -
u-boot源码之start.S分析
1.start.s代码分析(第一阶段)/* 以下是具有arm特色的异常向量表,为中断异常准备 */--------------------.globl _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr转载 2012-03-26 19:54:00 · 1823 阅读 · 0 评论 -
u-boot-2011.06的移植(一)
直接以smdk6400作为模版进行修改1、到board目录下复制smdk6400文件为smdk6410改smdk6400.c为smdk6410.c改smdk6400_nand_spl.c为smdk6410_nand_spl.c并修改此目录下的makefile文件把COBJS-y:= smdk6400.o改为COBJS-y := smdk6410.o2、到arch目录原创 2012-03-08 20:56:36 · 1100 阅读 · 0 评论 -
u-boot-2011.06的改变--开发板配置
1、u-boot-2011.06的开发板配置被放在了boards.cfg文件中,只有少数开发板的配置仍然在Makefile文件中,如smdk6400等。2、下面是摘自boards.cfg的内容:(1)、#Unused fields can be specified as "-", or omitted if they# are the last field on the line.原创 2012-03-08 16:50:53 · 913 阅读 · 0 评论 -
U-boot的编译流程
现在来总结一下U-Boot的编译流程: (1)首先编译cpu/$(CPU)/start.S,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。(2)然后,对于平台/开发板相关的每个目录、每个通用目录,都使用它们各自的Makefile生成相应的库。(3)将1、2步骤生成的.o、.a文件按照board/$(BOARDDIR)/config.mk文件中指定的代码段起始原创 2012-03-24 22:39:18 · 987 阅读 · 0 评论 -
u-boot存储器映射
原创 2012-03-24 22:46:23 · 1677 阅读 · 0 评论 -
u-boot简述
1、Bootloader的启动过程启动过程可以分为单阶段(Single Stage)、多阶段(Multi-Stage)两种。通常多阶段的Bootloader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的Bootloader大多都是 2 阶段的启动过程。这从前面的硬件实验可以很好地理解这点:第一阶段使用汇编来实现,它完成一些依赖于 CPU 体系结构的初始化,并调用第二阶段的代码。第原创 2012-03-24 22:31:36 · 1064 阅读 · 0 评论 -
u-boot顶层的makefile分析
u-boot的Makefile分析U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。U-BOOT的下载地址: http://sourceforge.net/projects/u-bootu-boot源码结构 解压就可以得到全部u-boot源程序。在顶层目录下有1转载 2012-03-06 16:58:24 · 1149 阅读 · 0 评论 -
编译地址 运行地址 相对地址
1、什么是编译地址?什么是运行地址? 32 位的处理器,它的每一条指令是4 个字节,以4 个字节存储顺序,进行顺序执行,CPU 是顺序执行的,只要没发生什么跳转,它会顺序进行执行,编译器会对每一条指令分配一个 编译地址,这是编译器分配的,在编译过程中分配的地址,我们称之为编译地址。 运行地址是指,程序指令真正运行的地址,是由用户指定的,用户将运行地址烧录到哪里,原创 2012-03-29 19:12:50 · 4687 阅读 · 1 评论 -
uboot环境变量
摘于一篇别人的文章,不明出处,对作者表示感谢!U-BOOT 环境变量实现 (基于smdk2410) 1.相关文件 common/env_common.c 供u-boot 调用的通用函数接口,它们隐藏了env 的不同实现方式,比如dataflash, epprom, flash 等 common/env_dataflash.c原创 2012-03-29 19:33:51 · 7225 阅读 · 0 评论 -
内核启动参数
1、启动参数标记列表以标记ATAG_CORE开始,以标记ATAG_NONE结束。每个标记由标识被传递的tag_header结构和随后的参数值结构组成。数据结构tag和tag_header定义在Linux内核源码的include/asm/setup.h头文件中。static struct tag *params;struct tag {struct tag_header hdr;//每个原创 2012-04-23 22:26:34 · 3071 阅读 · 0 评论 -
u-boot第二阶段之gd_t和 bd_t结构体
1)、typedef struct global_data { bd_t *bd; //与板子相关的结构,见下面 unsigned long flags; unsigned long baudrate; //波特率 unsigned long have_console; /* serial_ini原创 2012-03-28 23:06:26 · 2100 阅读 · 0 评论 -
s3c6410uboot源码分析之cup_init.S(二)
1、ldrr1, =DMC1_MEM_CFG2str r1, [r0, #INDEX_DMC_MEMORY_CFG2]其中:#define DMC1_MEM_CFG20xB452、ldr r1, =DMC1_CHIP0_CFGstr r1, [r0, #INDEX_DMC_CHIP_0_CFG]#define INDEX_DMC_CH原创 2012-05-06 22:59:32 · 1170 阅读 · 0 评论 -
s3c6410uboot源码分析之cup_init.S(一)
1、#include .globl mem_ctrl_asm_initmem_ctrl_asm_init:ldr r0, =ELFIN_MEM_SYS_CFG@Memory sussystem address 0x7e00f120mov r1, #0xd@ Xm0CSn2 = NFCON CS0, Xm0CSn3 = NFCON CS1strr1, [r0]原创 2012-05-06 22:08:56 · 1495 阅读 · 0 评论 -
u-boot启动linux内核
1、U_BOOT_CMD( bootm, CFG_MAXARGS, 1,do_bootm, "bootm - boot application image from memory\n", "[addr [arg ...]]\n - boot application image stored in memory\n" "\tpassing argument原创 2012-04-21 23:20:45 · 1806 阅读 · 0 评论 -
u-boot启动方式源码分析
1、s = getenv ("bootdelay"); //得到环境变量指定的delay值bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;s = getenv ("bootcmd"); //得到自启动命令if (bootdelay >= 0 && s && !abortboot (原创 2012-04-21 20:15:23 · 1605 阅读 · 0 评论 -
uboot 之 lds文件详解
原文地址:http://hi.baidu.com/kinylei/blog/item/e598fc3217bfadf2184cff64.html1、对于.lds文件,决定一个可执行程序的各个段的存储位置,以及入口地址,这也是链接定位的作用。这里以u-boot的lds为例说明uboot的链接过程。首先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {转载 2012-03-30 20:07:02 · 2347 阅读 · 0 评论 -
u-boot第二阶段之start_armboot()函数
1、#ifdef CONFIG_MEMORY_UPPER_CODE /* by scsuh */ulong gd_base;gd_base = CFG_UBOOT_BASE + CFG_UBOOT_SIZE - CFG_MALLOC_LEN - CFG_STACK_SIZE - sizeof(gd_t);#ifdef CONFIG_USE_IRQgd_base -= (CO原创 2012-03-29 20:13:10 · 1482 阅读 · 0 评论