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

本文深入分析了U-Boot移植过程中顶层目录下mkconfig文件的作用及启动流程,详细解析了mkconfig的具体操作步骤,并阐述了U-Boot从初始化到启动内核的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        接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,,,,);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值