zoukankan      html  css  js  c++  java
  • 展讯平台uboot启动流程

    启动流程

    1、 Stage1

    start.S代码结构 u-boot的stage1代码通常放在start.S文件中,用汇编语言,主要实现功能如下:

    (1) 定义入口: 该工作通过修改连接器脚本来完成。

    (2)设置异常向量(Exception Vector)。

    (3)设置CPU的速度、时钟频率及终端控制寄存器。

    (4)初始化内存控制器。

    (5)将ROM中的程序复制到RAM中。

    (6)初始化堆栈。

    (7)转到RAM中执行,该工作可使用指令ldr pc来完成。

    bl lowlevel_init跳转到arm926ejs里面的spl.c

    2、Stage2

    C语言代码部分 lib_arm/board.c中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数只要完成如下操作:

    (1)调用一系列的初始化函数。

    (2)初始化Flash设备。

    (3)初始化系统内存分配函数。

    (4)如果目标系统拥有NAND设备,则初始化NAND设备。

    (5)如果目标系统有显示设备,则初始化该类设备。
    //LCM

    (6)初始化相关网络设备,填写IP、MAC地址等。

    (7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

    u-bootarcharmcpuarmv7start.S
    .globl _start
    _start: b reset
    … …
    jump_2_ram:
    … …
    _board_init_r_ofs:
    .word board_init_r - _start    //调用 uboot/arch/arm/lib/ board.c 是C 语言开始的函数也是整个启动代码中C语言的主函数,进入Stage2
    

    u-bootarcharmliboard.c

    一、初始化硬件

    board_init_r() (u-boot15/arch/arm/board.c)
    ————>board_init()(sl8541e_1h10.c)
    ————>stdio_init()  
    ————>drv_lcd_init()  (common/lcd.c)
    
  • 相关阅读:
    能否获取倒数第二个指定字符的位置? 截取
    css布局之头尾固定中间高度自适应
    C# Convert.ToInt32和int.Parse转换null和空字符串时的不同表现
    当前上下文中不存在viewbag
    IIS 7.5 上传文件大小限制
    git 学习笔记
    sql like 语句
    js文件,同样的路径,拷贝过来的为什么不能访问
    软件项目开发报价(一)
    asp.net core webapi 日期返回中出现字母T
  • 原文地址:https://www.cnblogs.com/linhaostudy/p/12188921.html
Copyright © 2011-2022 走看看