zoukankan      html  css  js  c++  java
  • uboot启动第一阶段

      s5pv210的irom代码读取sd(mmc通道3)中的16kB(uboot第一阶段代码)到iram的0xd0020010中校验通过后开始执行

    第一条指令位于cpu/s5pc11x/start.S

    1   _start: b reset(第57行)

    2  第149行设置CPU位svc模式禁止irq和fiq

    3  200~204设置cache

    4  209~211设置TLB和icache

    5  216~221设置cp15的c1禁止mmu和cache

    6  225~227读启动信息(CORTEXA8将启动信息保留在0xE0000004中)

    7  243~278将我们设置的启动标志保存在寄存器中

    8  284~286设置栈

    9  288 bl lowlevel_init (位于board/samsung/x210)

    10  46~52(lowlevel_init) 根据复位状态跳转,冷启动则顺序执行

    11  61~64(lowlevel_init)关看门狗

    12  100~104(lowlevel_init)锁存上电信号

    13  110~115(lowlevel_init)判断当前uboot在sram还是DDR中

    14  118 bl system_clock_init初始化时钟系统

    15  121 bl mem_ctrl_asm_init 初始化内存

    16  125 bl uart_asm_init 初始化串口打印‘O’

    17  151~156 打印‘K’ 返回start.s中

    18  292~294 锁存上电信号和第12步一样

    19  297~299 设置栈0x33e00000

    20  313~318 如果 BL1复制于 SD/MMC CH2则跳转mmcsd_boot,我们这里是

    21  349  bl      movi_bl2_copy 将uboot复制到内存0x33e00000

    22  361~371设置域访问和TTB(页表基地址)

       该一级页表为兆式映射有效映射为c0000000-d0000000 30000000-40000000 256MB 3G-3.25G

    23  374~381  开mmu

    24  387~396 再次设置栈

    25  400~411 清bss 长跳转到start_armboot函数

  • 相关阅读:
    青蛙学Linux—Zabbix部署之构建LNMP环境
    青蛙学Linux—Zabbix运维监控平台
    青蛙学Linux—ProxySQL实现MySQL读写分离
    青蛙学Linux—ProxySQL配置系统
    青蛙学Linux—MySQL中间件ProxySQL
    青蛙学Linux—MySQL主从复制
    青蛙学Linux—MySQL备份工具XtraBackup
    PicGo+图床,编写本地markdown
    mfix输出自定义数据
    OpenFoam+CFDEM+Liggghts安装耦合
  • 原文地址:https://www.cnblogs.com/genshu123/p/11798773.html
Copyright © 2011-2022 走看看