
uboot
qingkongyeyue
拼搏到无能为力,坚持到感动自己,有些路走下去很长,很累,但是不走会后悔。人生最大的痛苦,莫过于,坚持了不该坚持的,而放弃了不该放弃的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
u-boot.lds链接脚本分析
b1、 LDFLAGS += -Bstatic -T /board/smdk2410/u-boot.lds -Ttext 0x33F80000中-Ttext 0x33F80000是指定代码段text的首地址是0x33F800002、程序分析OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")转载 2016-08-14 12:01:48 · 785 阅读 · 0 评论 -
自己写bootloader笔记2---start.S分析
1、程序#define S3C2440_MPLL_200MHZ ((0x5c#define MEM_CTL_BASE 0x48000000//.text表示一个代码段.text//.global表示标号_start是全局标号.global _start_start:/* 1. 关看门狗 */对2440来说,看门狗一上电是打开的,原创 2016-08-22 12:10:40 · 1210 阅读 · 0 评论 -
自己写bootloader笔记3---init.c分析
/* NAND FLASH控制器 */#define NFCONF (*((volatile unsigned long *)0x4E000000))#define NFCONT (*((volatile unsigned long *)0x4E000004))#define NFCMMD (*((volatile unsigned char *)0x4E000008))#defi原创 2016-08-24 19:07:11 · 844 阅读 · 0 评论 -
自己写bootloader笔记5---设置u-boot传给内核的参数分析
1、分析(1)u-boot要启动内核,把内核从flash读到SDRAM ,要调到SDRAM执行,u-boot执行时内核还没执行,内核执行时,u-boot已完结。u-boot传参数给内核(双方约定一个位置),u-boot在那位置存数据,数据格式也要 双方约定好(2)0x30000000是内存的起始地址,0x30008000地址开始用于存放内核,参数存储双方约定的地址是0x30000100,原创 2016-08-25 19:43:37 · 1649 阅读 · 0 评论 -
自己写bootloader笔记6---boot.c分析(u-boot向内核传递参数及跳转到内核)
#include "setup.h"extern void uart0_init(void);extern void nand_read(unsigned int addr, unsigned char *buf, unsigned int len);extern void puts(char *str);extern void puthex(unsigned int va原创 2016-08-25 19:51:57 · 912 阅读 · 0 评论 -
自己写bootloader笔记7---Makefile分析
arm-linux-gcc是交叉编译工具链,用于 编译出能在ARM平台上运行的程序,而gcc编译出来的程序在x86平台上运行 CC = arm-linux-gcc用于将多个目标文件、库文件链接成可执行文件LD = arm-linux-ldAR = arm-linux-ar复制一个目标文件的内容到另一个文件OBJCOPY = arm-linux-原创 2016-08-25 23:12:07 · 1048 阅读 · 0 评论 -
移植u-boot学习笔记6-----修改代码支持nor flash
支持了nand flash启动并不是说支持了以后对nand flash的读写操作,支持nand flash启动只需要在重定位时(把代码从nand flash拷贝到SDRAM的函数copy_code_to_sdram)x写出一个nand flash的读函数nand_read_ll(),吧代码从nand flash复制到sdram里面去就可以了,1、分析(1)烧写代码,重启开发板,查看输出信息原创 2016-09-08 19:20:45 · 1598 阅读 · 0 评论 -
移植u-boot学习笔记5----- 修改代码之支持NAND启动
1、 修改UBOOT支持NAND启动 原来的代码在链接时加了"-pie"选项, 使得链接脚本u-boot.ldsu-boot.bin里多了"*(.rel*)", "*(.dynsym)",(.rel*)", "*(.dynsym)"存放变量、函数的地址 使得程序非常大,不利于从NAND启动(重定位之前的启动代码应该少于4K)把程序的链接地址固定好,启动时把u-boot从原创 2016-09-07 01:28:41 · 1337 阅读 · 0 评论 -
移植u-boot学习笔记8-----修改代码之支持DM9000网卡
在u-boot的代码里面,已经支持DM9000,我们需要修改配置文件,把DM9000编译到u-boot.bin里面去1、修改配置文件(1)查看DM9000x.c所在目录的Makefile,(2)搜索dm9000,需要配置宏CONFIG_DRIVER_DM9000,才能支持dm9000(3)修改配置文件include\configs\smdk2440.h定义宏原创 2016-09-15 00:56:39 · 2212 阅读 · 0 评论 -
u-boot编译分析
在顶层目录下执行完"make smdk2410_config"命令后,就把u-boot给配置好了,接着就可以在执行"make all"或者"make"命令去编译u-boot了,完成后就可以烧写到开发板去运行了。(在Makefile中的all目标是第一个目标,因为Makefile将第一个目标设为默认目标,make命令后如果不加目标就默认是Makefile中的默认目标,所以执行"make all"命令转载 2016-08-14 11:21:46 · 490 阅读 · 0 评论 -
移植u-boot学习笔记9-----u-boot裁剪和修改默认参数
1、u-boot中的环境变量(1)在u-boot中可以设置这些东西这些东西会在哪里,我们可以修改代码,让这些参数存在某个地方上。u-boot启动时,会首先读取参数,然后判断是否有效,有效就用,无效就用默认参数。默认参数在代码里面写死了。(2)看启动信息出现bad CRC(校验码错误)就是说我们没有在flash上面保存、设置参数。u-boot想去读的时候,里面的数据格式是不对原创 2016-09-15 11:25:21 · 6433 阅读 · 0 评论 -
移植u-boot学习笔记7-----修改代码之支持nand flash
支持了nand flash启动并不是说支持了以后对nand flash的读写操作,支持nand flash启动只需要在重定位时(把代码从nand flash拷贝到SDRAM的函数copy_code_to_sdram)x写出一个nand flash的读函数nand_read_ll(),吧代码从nand flash复制到sdram里面去就可以了,1、修改UBOOT支持NAND FLASH原创 2016-09-12 12:10:02 · 2009 阅读 · 0 评论 -
自己写bootloader笔记1---流程分析
1、从bootloader作用看写bootloader需要的内容(1)目的:启动内核(2)过程 (2.1)从flash上把内核读入内存 能读flash 初始化内存 初始化时钟(2440一上电时运行频率是12M,所以要让它能运行更快点) 其他 (2.2)启动原创 2016-08-16 21:08:01 · 705 阅读 · 0 评论 -
移植u-boot学习笔记2-----分析启动过程之内存分布
1、重定位的需求及原理新的u-boot是nor flash启动,程序的链接地址是0地址,一开始在nor flash的0地址执行,假若某个全局变量也在nor flash的某个地址上,nor flash可以像内存一样读,但不能像内存一样写,程序执行中读取nor flash上存储的某个变量没有问题,但写某个变量不会成功,程序会出现问题,因而需要重定位。程序运行时也要把nor flash上的程序复制到原创 2016-09-03 16:37:38 · 2766 阅读 · 0 评论 -
自己写bootloader笔记10----改进(提高u-boot启动速度)
1、u-boot启动慢(1)提高CPU时钟频率,200M变为400M(2)分频系数要改变,HCLK要保持100M,因为HCLK最大133M(3)启动ICACHE/* 启动ICACHE */从协处理器里读取一个值,读到r0mrc p15, 0, r0, c1, c0, 0@ read control regr0等于r0或上(1orr r0,原创 2016-08-26 10:49:05 · 2660 阅读 · 0 评论 -
自己写bootloader笔记9---读取内核内容分析看能否读取nand flash的内核
1、用u-boot打印内核信息,用u-boot读内存命令把flash上的内核信息打印出来启动u-boot,用mtd查看内核存储在nand flash的地址0x00060000处用nand dump 60000查看nand flash上地址为60000开始的数据,其中dump是指以16进制显示,一行是16字节,前面4行是头部信息,共64字节。开始是内核信息,打印出来是 e1 a0原创 2016-08-26 10:04:46 · 1189 阅读 · 0 评论 -
自己写bootloader笔记8---反汇编文件boot.dis分析
1、ldr r0, =0x4c000004(1)对应的反汇编33f80024:e59f0084 ldrr0, [pc, #132] ; 33f800b0 33f80024是运行地址e59f0084是机器码ldrr0, [pc, #132]是汇编指令编译时执行的指令33f800b0是PC+132得出的地址表示偏移函数sdram_config的0原创 2016-08-25 22:20:06 · 2450 阅读 · 0 评论 -
u-boot下的内存操作命令mw与md
mw [内存地址] [值] [长度]例如:mw 0x02000000 0 128表示修改地址为0x02000000~0x02000000+128的内存值为0. //-----------------------------------------------------------------------显示: md [内存地址] [长度]例如:md 0x0转载 2016-09-12 09:46:59 · 4792 阅读 · 0 评论 -
移植u-boot学习笔记10-----支持烧写yaffs映象及制作补丁
1、先看u-boot能否支持烧写文件系统(1)先用tftp命令下载文件系统到SDRAM ,然后擦除nand flash 的rootfs分区,然后把文件系统烧写到0x00260000里面,0x00260000不能直接用rootfs替换。因为下载的文件肯定会小于rootfs分区,如果用rootfs写肯定会把不相干的内容都写进去(2)先下载查看文件的大小(2)擦除分区,并写把文件大小原创 2016-09-16 10:22:00 · 899 阅读 · 0 评论 -
链接脚本学习笔记1------sections的简单应用分析
1、简单的链接脚本示例2、脚本命令(1)设置入口点(2)处理文件的命令原创 2016-10-25 17:12:18 · 1386 阅读 · 0 评论 -
make smdk2410_config流程分析
来自http://www.cnblogs.com/zhouhaiyang/p/5349125.html一、配置u-boot1、在u-boot的顶层目录下,执行"make smdk2410_config"二、配置步骤的分析:分析"make smdk2410_config"1、执行"make smdk2410_config"时,其实是执行./mkconfig smdk241转载 2016-08-14 11:02:39 · 1302 阅读 · 0 评论 -
自己写bootloader笔记4---uboot.lds分析
1、链接脚本格式基本命令SECTIONS描述输出文件的映射图:->输出文件各段、各文件怎么放置一个SECTIONS命令内部包含一个或多个段,段是连接脚本的基本单元,它表示输入文件某部分怎么放置;格式:SECTIONS{ ...secname start ALIGN(align)(NOLOAD):AT(ldadr){contents}原创 2016-08-24 16:57:34 · 721 阅读 · 0 评论 -
移植u-boot学习笔记3-----分析启动过程之重定位
1、重定位的实现(1)代码原型(C语言调用汇编代码)参数addr_sp存在r0里参数id存在r1里参数addr存在r2里(2)里面的addr参数a、addr的地址是0x33ff0000减去整个u-boot的大小。b、看看u-boot大小gd结构体的mon_len成员_bss_end_ofs的定义,里面的_start是代码段的开始原创 2016-09-04 20:11:52 · 2261 阅读 · 0 评论 -
移植u-boot学习笔记1-----实验及分析启动过程之概述
1、编译解压tar xjf u-boot-2012.04.01.tar.bz2切换到u-boot目录cd u-boot-2012.04.01配置make smdk2410_config编译(如果编译出现问题,考虑换编译器,安装交叉编译工具链参考http://blog.youkuaiyun.com/qingkongyeyue/article/details/52243210)ma原创 2016-09-02 17:51:23 · 1233 阅读 · 0 评论 -
移植u-boot学习笔记4-----修改代码之建新板_时钟
我们用的是2440开发板,但在u-boot里面只有2410的board/samsung目录下只有smdk2410文件,没有发现2440.1、创建新单板(1)u-boot的修改在u-bootu-boot目录下,切换到 board/samsung/目录cd board/samsung/新建smdk2440文件,并把smdk2410文件里的内容完全拷贝到smdk2440里面去。c原创 2016-09-06 20:43:18 · 757 阅读 · 0 评论