U-Boot移植之前期分析(下)

时间:2014-04-27 20:29:05   收藏:0   阅读:669

        接U-Boot移植之前期分析(上):

        2. 顶层目录下mkconfig的分析过程

        在上面的分析中知道了语句:“@$(MKCONFIG) $(@:_config=) arm arm920t MY_JZ2440 sumsung s3c24x0”对应于执行顶层目录下的mkconfig文件并传递了六个参数 ($0-$6):100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0。下面分析这句话的到底做了什么事情,具体可以阅读源码,由于比较简单这里直接列出具体所做事情:

1. BOARD_NAME = 100ask24x0;
2. echo "Configuring for ${BOARD_NAME} board..."
3. cd ./include
        rm -f asm
        ln -s asm-$2 asm   建立asm链接目录,它指向asm-arm
4. rm -f asm-$2/arch
        ln -s ${LNPREFIX}arch-$6 asm-$2/arch => ln -s arch-s3c24x0 asm-arm/arch
5. rm -f asm-$2/proc
        ln -s ${LNPREFIX}proc-armv asm-$2/proc => ln -s proc-armv asm-arm/proc
6. #Create include file for Make
        echo "ARCH   = $2" >  config.mk     >  :新建一个文件
        echo "CPU    = $3" >> config.mk     >> :追加内容 
        echo "BOARD  = $4" >> config.mk

        echo "VENDOR = $5" >> config.mk

        echo "SOC    = $6" >> config.mk
7. # Create board specific header file
         > config.h
        echo "/* Automatically generated - do not edit */" >>config.h
        echo "#include <configs/$1.h>" >>config.h   =>  echo "#include <configs/100ask24x0.h>" >>config.h

       三、u-boot启动流程

        U-boot终极目标:读出并启动内核
        U-boot第一阶段
        1.   设置SVC管理模式
        2.关看门狗
        3. 屏蔽中断
        4. 初始化SDRAM
        5. 设置栈
        6. 设置时钟
        7. 代码从flash拷贝到内存
        8. 清bss段:未初始化或初始值为0的全局变量或静态变量
        9. 调用第二阶段的C函数:start_armboot()
        U-boot第二阶段
        1. gd设置机器号
        2. flash_init():NOR FLASH初始化
        3. nand_init():
        4. env_relocate():环境变量初始化
                4.1 代码默认的
                4.2 flash上保存的
        5. main_loop();
        6. u-boot界面:
                readline();读入串口数据
                run_command();
        7. 启动内核:
                s = getenv("bootcmd");
                run_command(s,,,,);

U-Boot移植之前期分析(下),码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!