bootloader
文章平均质量分 88
Uboot移植经验分享
fulinux
我热爱Linux、热爱Yocto、喜欢编程、热爱科学技术的码农!希望我的博客能帮助到哪些在茫茫黑夜中摸索的小白!
欢迎关注、点赞和订阅!
展开
-
u-boot-2014.10移植第19天----添加nand flash命令支持(一)
今天继续移植nand flash,对于很多情况而言,u-boot从nand flash启动是一个至关重要的功能,毕竟NOR flash成本太高,不是所有开发板都会添加NOR flash。u-boot中的SMDK2410模板是没有支持从nand flash启动的功能的,但是却有支持操作nand_flash的操作命令,2410和2440在nand flash支持上的区别有:1、2410仅支持小块nan原创 2014-12-31 20:03:38 · 3277 阅读 · 0 评论 -
u-boot-2014.10移植第20天----添加nand flash命令支持(二)
继前一天移植的情况,运行后发现:Flash: 2 MiBNAND: 0 MiB说明Nand flash没有移植成功,在文件drivers/mtd/nand/s3c2440_nand.c 中发现board_nand_init函数中:nand->select_chip = NULL选择芯片函数为NULL,我们在board_nand_init函数上面加上s3c2440_nand_select函数,代码原创 2014-12-31 20:04:26 · 2805 阅读 · 0 评论 -
ARM处理器模式切换(含MRS,MSR指令)
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6556172++++++++++++++++++++++++++++++++++++++++++1.1.1 ARM处理器模式切换(含MRS,MSR指令)除转载 2013-03-09 21:10:22 · 2847 阅读 · 0 评论 -
u-boot的内存分布和全局数据结构
U-boot,除非在RAM中调试,一般情况下都是从flash中执行一段代码,然后将flash中储存的代码和数据搬移到ram中,然后跳转到ram中执行。当然这应该也是一般的bootloader的执行方式,大家都差不多,但是各个bootloader的内存规划(栈,堆之类的)也 不太一样,而且u-boot还在内存空间中规划了一些用于存放环境变量和一些数据结构的空间,所以如果不了解一下的话,直接看代码的话转载 2013-03-10 16:36:54 · 2124 阅读 · 0 评论 -
【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的转载 2013-03-10 20:04:17 · 1794 阅读 · 0 评论 -
Bootm(cmd_bootm.c)详解
一、在开始之前先说明一下bootm相关的东西。1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到转载 2013-03-16 19:39:01 · 3798 阅读 · 2 评论 -
u-boot中global_data数据结构
在start_armboot()函数中,gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。分别定义在./include/asm-arm/global_data.h和./include/asm-arm/u-boot.h<!--p {margin-bottom:0.21cm}--> 1、gd_t: global原创 2013-03-16 21:08:46 · 4169 阅读 · 1 评论 -
u-boot-2010.06 源码分析<3>--第二阶段
上接第一阶段跳转语句ldr pc, _start_armboot第二阶段流程图1。第二阶段的主线函数位于u-boot-2010.06/arch/arm/lib/board.c。第二阶段的功能: 初始化本阶段要使用到的硬件设备。设置时钟、初始化串口。board_init函数设置MPLL、改变系统时钟,它是开发板相关的函数,在boar转载 2013-03-16 21:39:33 · 2299 阅读 · 0 评论 -
u-boot整个过程时钟部分解析
可能不同2440平台时钟频率有所不同,设置方式却是类似的,以下是我的u-boot时钟设置部分整个过程解析:这是第一处时钟设置代码:/* Initialize System Clock, FCLK:HCLK:PCLK = 1:2:4,default FCLK is120MHz */ ldr r0, =S3C24X0_CLOCK_POWER_BASE mov r1, #3原创 2013-03-18 17:05:55 · 3220 阅读 · 0 评论 -
fl2440的uboot在内存中的分布
(此图是我个人画的不知道有哪些地方有问题,请提出宝贵意见 ) 如果u-boot是从nandflash启动,硬件会自动把nandflash前0x1000Byte(即4KB)拷贝到 ‘Steppingstone’中。 ‘Steppingstone’有两个起始地址映射一个是0x0,另一个是0x40000000。这时候PC跳转到0x0地址处,即 ‘Steppingstone’起始位置处原创 2013-03-18 18:29:28 · 2452 阅读 · 0 评论 -
uboot中timer定时器的设置
uboot中timer定时器的设置,uboot汇编部分没有对timer初始化,而是在C中。在C入口函数void start_armboot(void)中,首先是通过如下代码方式调用:typedef int (init_fnc_t) (void);init_fnc_t *init_sequence[] = { a/a/l/board.c原创 2013-03-20 13:45:12 · 10215 阅读 · 1 评论 -
make: execvp: /opt/EmbedSky/u-boot-1.1.6/mkconfig: 权限不够
说先在把U-BOOT- 1.1.6复制到SMB共享文件里面,然后到虚拟机里面解压他,执行命令:tar xjvf U-BOOT-1.1.6编译U-BOOT需要采用arm-linux-gcc-3.3.2的交叉编译器将编译器的压缩文件复制到smb的共享文件夹里面,然后采用tar xjvf 进行解压,解压后的文件需要移动到usr/local/arm里面,然后要修改编译器的环境变量:执行转载 2013-03-20 20:49:38 · 8321 阅读 · 0 评论 -
关于uboot配置技巧总结
uboot源码中有太多的宏,而这些宏原本是方便而定义的,可是对于那些不是很了解这些宏定义的人,被那么多宏弄得可真是头大了,经过调试发现一个很好的方法:在u-boot-2010.09/include/autoconf.mk文件显示了一切有关你配置选项,那些配置了那些没有配置都一目了然的展现在你的眼前,直接上图说话:其中y就是已配置,上面的PHYS_FLASH_1在源文件中定义的是0原创 2013-03-22 21:36:28 · 2118 阅读 · 0 评论 -
有关调试的一些技巧总结
调试占据着研发全过程的很大比重,我在调试uboot时,花了好久好久。以一个具体的例子,我想让我的uboot从nandflash启动,因为J-link不能直接将u-boot.bin文件直接烧录到nandflash中,必须在通过nandflash控制寄存器来对nandflash操作,我的uboot中就有nand erase和nand write等功能。如果我每次将uboot烧录到nandflash原创 2013-03-22 22:16:43 · 2427 阅读 · 0 评论 -
不能从nandflash启动原因之一
我在调试是怎么也不能从nandflash启动,但是能从norflash和SDRAM中启动,同时读写nandflash的功能也能实现,于是我就将nandflash全部搬到SDRAM中,结果发现nandflash中竟然只有0x40000大小的内容,我太高兴了,终于找到原因了,原因就是只有0x40000的内容被放进了nandflash,我大概知道原因所在了,我记得设置一个宏时是设置0x40000的。同时原创 2013-03-23 19:54:55 · 4723 阅读 · 0 评论 -
nandflash启动设置环境变量导致不能启动
我在设置bootdelay的值,保存后导致uboot不能启动,可以看看这个:http://wenku.baidu.com/view/62eec47f27284b73f24250cc.html 我的环境变量是0x40000这个偏移量设置的太小,因为我的u-boot-fulinux.bin就大于0x40000,所以说如果save环境变量后会导致u-boot-fulinux.原创 2013-03-23 20:36:16 · 2596 阅读 · 0 评论 -
在2440的uboot和内核中添加nandflash硬件ECC
平台 : tq2440开发板,fl2440开发板bootload : u-boot-2010.09转载声明:http://blog.csdn.net/sonbai/article/details/8737129借鉴:http://blog.csdn.net原创 2013-03-29 19:29:43 · 5593 阅读 · 4 评论 -
在uboot中查看uboot信息
在uboot中查看uboot信息[fulinux@s3c2440]# bdinfoarch_number = 0x000007CFenv_t = 0x00000000boot_params = 0x30000100DRAM bank = 0x00000000-> start = 0x30000000-> size = 0x04000000原创 2013-04-06 19:20:13 · 5908 阅读 · 0 评论 -
ramdisk文件系统制作和移植
RAMDISK简介:Linux中,rootfs是必不可少的。PC上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从HD启动,而是从Flash启动,最简单的方法是将rootfsload到RAM的RAMDisk,稍复杂的就是直接从Flash读取的Cramfs,更复杂的是在Flash上分区,并构建JFFS2等文件原创 2013-04-25 14:40:09 · 8335 阅读 · 0 评论 -
在线升级uboot,内核和文件系统
在线升级uboot,内核和文件系统fulinux下面我在fl2440开发板上运行正常的情况下实现更新或升级uboot,内核和文件系统的任务。如下是一个在线升级的脚本:#!/bin/sh#Thisshellscriptsusedtoupdatetheu-bootlinuxkernel,rootfilesystemimagewhenLinux原创 2013-06-05 18:12:42 · 11304 阅读 · 0 评论 -
u-boot-2014.10移植第17天----添加DM9000网卡支持(一)
很多读者的2440的板子应该都有DM9000网卡。在移植之前看看这几篇文档:DM9000中文手册(详细)这篇文章告诉我们DM9000的一些硬件知识。DM9000和MINI2440深入理解这篇文章告诉我们2440是如何实现对DM9000的访问。2440 dm9000 到底咋确定地址 这篇文章告诉我们如何确定地址端口的地址和数据端口的地址。DM9000 datasheetdatasheet上说dm90原创 2014-12-31 20:02:58 · 2070 阅读 · 0 评论 -
u-boot-2014.10移植第18天----添加DM9000网卡支持(二)
修改代码一不小心把这篇本已写好的博客删除了,回收站竟然没有保存草稿的东西。现在自能从新写了!DM9000自身也有基地址,这个基地址是由TXD[3:0](strap pins)引脚来约束的,满足公式:IO base = (strap pin value of TXD[2:0]) * 10H + 300HTXD[2:0]引脚有8中状态,故IO基地址有8种基地址,它们是300H,310H,320H,34原创 2014-12-31 20:03:10 · 2735 阅读 · 0 评论 -
u-boot-2014.10移植第1天----熟悉u-boot(一)
硬件平台:tq2440开发环境:Ubuntu-3.11u-boot下载地址:http://ftp.denx.de/pub/u-boot/下载最新版本:u-boot-2014.10.tar.bz2在用户根目录下创建目录结构tq2440/{src/bootloader/u-boo原创 2015-01-19 08:27:14 · 5356 阅读 · 0 评论 -
u-boot-2014.10移植第2天----熟悉u-boot(二)
推荐阅读:http://www.ibm.com/developerworks/cn/linux/l-btloader/阅读并实际操作mini2440之U-boot移植详细手册.pdf文档中的内容。原创 2015-01-20 08:09:15 · 3107 阅读 · 0 评论 -
u-boot-2014.10移植第31天----内核启动(一)
原本以为u-boot移植好了,引导linux内核启动不是问题吧。但是却折磨了我两天,一直在“Starting kernel...”这里卡住了。综合网上的说法出现这个问题有如下原因:1)u-boot和linux内核主频不匹配;2)u-boot和linux内核机器码不匹配;3)bootarges参数数不对;3)内核中没有添加串口相关的驱动;实际情况是这些在我这里都是正确的。因为我用u-boot-201原创 2015-01-20 17:46:33 · 2798 阅读 · 0 评论 -
u-boot-2014.10移植第3天----LED裸机程序
这个情况是你的开发板中有了可以运行的u-boot。因为裸机程序能运行的前提条件是系统初始化了。下面led.S是一位高人写的代码,完全是用ARM汇编编写的,短小精悍,主要是实现跑马灯的功能:原创 2015-01-21 09:45:27 · 3646 阅读 · 0 评论 -
u-boot-2014.10移植第4天----裸机蜂鸣器程序
蜂鸣器汇编程序:原创 2015-01-22 08:44:55 · 2721 阅读 · 0 评论 -
u-boot-2014.10移植第5天----LED、button和beep裸机程序
今天写了一个简单的key驱动LED和beep原创 2015-01-23 08:20:05 · 2518 阅读 · 0 评论 -
u-boot-2014.10移植第6天----深入分析代码(一)
前面我们看到了一个lds文件,我们这里原创 2015-01-26 11:03:03 · 2880 阅读 · 0 评论 -
u-boot-2014.10移植第7天----深入分析代码(二)
现在从代码的角度来分析启动的流程:原创 2015-01-27 08:16:06 · 4243 阅读 · 0 评论 -
u-boot-2014.10移植第8天----深入分析代码(三)
接着第七天的代码分析,下面是cpu_init_crit的代码段,同样位于文件arch/arm/cpu/arm920t/start.S中原创 2015-01-28 08:18:52 · 2705 阅读 · 0 评论 -
u-boot-2014.10移植第9天----深入分析代码(四)
ENTRY(_main) /* * Set up initial C runtime environment and call board_init_f(0). */#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK) //在smdk2410开发板的相关目录中没有定义; ldr sp, =(CONFIG_SPL_STACK)#e原创 2015-01-29 08:09:13 · 3120 阅读 · 0 评论 -
u-boot-2014.10移植第10天----深入分析代码(五)
u-boot移植----第10天原创 2015-01-30 10:20:06 · 2654 阅读 · 0 评论 -
u-boot-2014.10移植第11天----深入分析代码(六)
“从relocate_code回到_main中,接下来是main最后一段代码”也就是arch/arm/lib/crt0.S文件中: b relocate_codehere://从这里开始u-boot已经在重定位的地方运行了/* Set up final (full) environment */ bl c_runtime_cpu_setup /* we still call ol原创 2015-01-31 08:13:08 · 2277 阅读 · 0 评论 -
u-boot-2014.10移植第12天----深入分析代码(七)
c_runtime_cpu_setup函数在arch/arm/cpu/arm920t/start.S文件中: .globl c_runtime_cpu_setupc_runtime_cpu_setup: mov pc, lr //没做什么就返回了回到arch/arm/lib/crt0.S文件中:bl c_runtime_cpu_setup /* we still call old ro原创 2015-02-02 08:15:21 · 2726 阅读 · 0 评论 -
u-boot-2014.10移植第13天----创建开发板
board_init_r 函数在文件arch/arm/lib/board.c中,都是C挺复杂的,以后看情况,如果用到了就深入研究,这里就跳过了。“通过上面的叙述,大家应该比较了解U-boot的大致情况,下面开始移植工作了。 我们要做的工作是移植,就是根据不同的地方做修改。U-Boot一直都没有支持S3C2440,移植仍是用 U-Boot支持的友善之臂 SBC2410的文件作蓝本来移植。所以移植所要原创 2015-02-03 08:32:17 · 2958 阅读 · 0 评论 -
u-boot-2014.10移植第14天----在SDRAM中运行
昨天遇到编译错误,我们从错误提示中寻找解决方法:信息1:CHK include/config.h/* Automatically generated - do not edit */#define CONFIG_BOARDDIR board/samsung/tq2440#include #include #include #include #include 注释中说这个文件是自原创 2015-02-04 08:41:14 · 4017 阅读 · 0 评论 -
u-boot-2014.10移植第15天----nor flash操作
去除nor flash写保护在已经运行起来的u-boot命令行去除nor flash写保护:TQ2440 # flinfoBank # 1: EON EN29LV160AB flash (16 x 16) Size: 2 MB in 35 Sectors AMD Legacy command set, Manufacturer ID: 0x1C, Device ID: 0x2249原创 2015-02-05 08:38:41 · 3904 阅读 · 0 评论 -
u-boot-2014.10移植第16天----Nor flash启动
第15天时将u-boot.bin文件烧录到Norflash上没有正常启动,考虑到tq2440.h文件中的CONFIG_SYS_TEXT_BASE 值时0x33FC0000,我们将其修改为0,毕竟这个是绝对地址。#define CONFIG_SYS_TEXT_BASE 0修改、编译、烧录后运行:结果还是不能运行,这是什么原因呢?将bootstrap.bin文件重新烧录到Norflash中,将u-bo原创 2015-02-06 08:14:10 · 2958 阅读 · 0 评论 -
u-boot-2014.10移植第21天----添加nand flash命令支持(三)
虽说nand flash读写操作是可以了,但是我使用nand markbad命令将一个块标记为原创 2015-02-08 08:34:12 · 3851 阅读 · 0 评论