本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0" 怎么实现nand命令读内核. 1. nand read.jffs2 0x30007FC0 kernel 步骤a: 从NAND FILSHE中kernel分区读出步骤b: 放到0x30007FC0去 1.1 kernel分区: 是flash中内核区 其中在flash中定义了4大分区: | bootloader | :一开机直接运行u…
start_armboot()分析:在start.S初始化后跳转到start_armboot实现第2阶段硬件相关的初始化(烧写擦除flash,网卡驱动,usb驱动,串口驱动,从FLASH读内核,启动内核等)然后调用main_loop();实现u-boot环境参数设置(print),读内核,启动内核等 start_armboot函数代码如下(位于u-boot-1.1.6/lib_arm/borad.c) void start_armboot (void) { ... for (init_fnc_p…
本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0"中怎么实现bootm命令启动内核. 其中bootm要做的事情:a 读取头部,把内核拷贝到合适的地方(0X30008000)b 在do_boom_linux()中把参数给内核准备好,并告诉内核参数的首地址c 在do_boom_linux()中最后使用theKernel () 引导内核. {注意:当在cmd_bootm.C中没有定义宏C…
本节主要学习,run_command函数命令查找过程,命令生成过程 1.run_command函数命令查找过程分析:在u-boot界面中(main_loop();位于u-boot-1.1.6/common/main.c ):a 输入命令字符串b 将命令字符串代入函数run_command()c run_command():判断命令字符串,在argv[0]里保存命令名,并调用find_cmd(argv[0]))函数查找内存中该命令结构体,判断各个参数,执行命令等d find_cmd(argv[0]…
分析uboot第一个执行函数_start(cpu/arm920t/start.S) 打开cpu/arm920t/start.S .globl _start // .globl定义一个全局符号"_start",表明_start这个符号要被链接器用到 _start: //_start:系统复位设置,以下共8种不同的异常处理 b reset //复位异常 0x0 ldr pc, _undefined_instruction                 //未定义的指令异常 0x4 ldr…
通过make 100ask24x0_config 指令配置好芯片选型后,使用make指令来生成uboot.bin文件 本文学习目标: 对Makefile文件进行基本了解,掌握make指令是怎么实现生成uboot.bin的过程 1.接下来开始分析make指令,首先打开u-boot-1.1.6/Makefile文件: 117 include $(OBJTREE)/include/config.mk        //调用config.mk这个文件 118 ... 124 ifeq ($(ARCH),…
仿照bootm命令生成来制作一个hello命令,功能:打印出hello,world!和参数值 1.点击New File ,创建cmd_hello.c将./common/cmd_bootm.c的头文件复制到 cmd_hello.c中(因为cmd_bootm.c的头文件都是包括的命令相关的文件): #include <common.h>#include <watchdog.h>#include <command.h>#include <image.h>#incl…
本文学习目标:         掌握"make 100ask24x0_config"指令在Makefile和mkconfig文件中是怎么实现配置芯片选型 1.执行make 100ask24x0_config用来配置芯片选型,它执行以下一段,该段在Makefile中定义. 首先打开u-boot-1.1.6/Makefile文件: 87 SRCTREE := $(CURDIR) *CURDIR是make的内嵌变量, 为当前目录 92 MKCONFIG := $(SRCTREE)/mkcon…
在u-boot中,通过bootm命令启动内核.bootm命令的作用是将内核加载到指定的内存地址,然后通过R0.R1.R2寄存器传递启动参数之后启动内核.在启动内核之前需要对环境做一些初始化工作,主要有如下几个方面: (1).cpu 寄存器设置 * R0 = 0 * R1 = 板级 id * R2 = 启动参数在内存中的起始地址 (2).cpu 模式 * 禁止所有中断 * 必须为SVC(超级用户)模式 (3).缓存.MMU * 关闭 MMU * 指令缓存可以开启或者关闭 * 数据缓存必须关闭并且不…
u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们会用到的文档: 1.        2440芯片手册:http://download.csdn.net/detail/wrjvszq/8358949 2.        6410芯片手册:http://download.csdn.net/detail/wrjvszq/8358965 3.      …