zoukankan      html  css  js  c++  java
  • 代码搬移

    2440初始化:

      一般我们都让芯片从Nandflash启动(Nandflash不参与统一变址),SRAM的前面4KB的容量把Nandflash里面前4KB字节的代码往里复制,然后如果Nandflash里面的代码量大于4KB,那么就把SRAM就把Nandflash里面剩余的代码复制进内存,然后再从内存里面启动。

    copy_to_ram:
    ldr r0, =0x00000000
    ldr r1, =0x30008000
    add r3, r0, #1024*4
    
    copy_loop:
    ldr r2, [r0], #4
    str r2, [r1], #4
    cmp r0, r3
    bne copy_loop
    
    mov pc, lr

     绝对跳转:就是直接给pc指针赋值

    相对跳转:就是以链接器脚本文件里的起始地址为基准,往后的代码的地址和起始地址的差值赋给pc指针,比如起始地址位0x30008000,而reset的地址是0x30008058,所以赋给pc指针的只就是0x58。

    2440、6410、210的这部分代码不同之处在于,起始地址和结束地址。

    6410起始地址是0x0c000000,结束地址是0x50008000

    210起始地址是0xd0020010,结束地址是0x20008000


  • 相关阅读:
    mysql 主从复制
    通过git-bash 批量管理VMware虚拟机
    MySQL基础
    lnmp架构
    搭建yum仓库服务器
    什什么是集群?么是分布式?
    nginx介绍1
    网络抓包工具 wireshark 入门教程
    DNS原理总结及其解析过程详解
    PetaPoco中使用Exists
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8367524.html
Copyright © 2011-2022 走看看