• u-boot简单学习笔记(二)——AR9331 uboot.lds分析


    最开始系统上电后 从uboot.lds开始引导

    OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")  /* 这里是生成格式为elf。大端,mips */
    OUTPUT_ARCH(mips)  /* mips架构 */
    ENTRY(_start)  /* 入口点为_start ,在cpu/mips/start.S中定义*/
    SECTIONS
    {

    /*指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。必须使编译器知道这个地址,通常都是修改此处来完成*/
        . = 0x00000000;  /* 从0x0位置开始 */

        . = ALIGN(4);      /* 代码4字节对齐 */
        .text:                             /* 这个是程序存放的地方 ,代码段 */
        {
          *(.text*)
        }

        . = ALIGN(4);   /* 表示以4字节对齐 */
        .rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }  /* 指定只读数据段 */

        . = ALIGN(4);
        .data  : { *(.data*) }            /* 指定读/写数据段 */

        . = .;
        _gp = ALIGN(16);

        .got  : {                           /* 指定got段, got段式是uboot自定义的一个段, 非标准段 */
        __got_start = .;
            *(.got)
        __got_end = .;
        }

        . = ALIGN(4);
        .sdata  : { *(.sdata*) }     /* 指定静态读/写数据段 */

        __u_boot_cmd_start = .;  /* 把__u_boot_cmd_start赋值为当前位置, 即起始位置 */
        .u_boot_cmd : { *(.u_boot_cmd) }   /*  指定u_boot_cmd段, uboot把所有的uboot命令放在该段. */
        __u_boot_cmd_end = .;   /*  把__u_boot_cmd_end赋值为当前位置,即结束位置  */

        uboot_end_data = .;    /*  把uboot_end_data赋值为当前位置,即作为data段结束位置  */
        num_got_entries = (__got_end - __got_start) >> 2;  /* 指定 num_got_entries 地址 */

        . = ALIGN(4);
        .sbss  : { *(.sbss*) }
        .bss  : { *(.bss*) . = ALIGN(4); }  /*指定bss段,告诉加载器不要加载这个段*/
        uboot_end = .; /*把_end赋值为当前位置,即bss段的结束位置*/
    }

  • 相关阅读:
    移动 Web 开发技巧
    判断手机是苹果还是安卓,并且判断安卓的高低版本
    JavaScript判断移动端及pc端访问不同的网站
    input实时监控和获取焦点的问题,oninput,ononfocus
    几个CSS3动画
    canvas加载进度条
    animation动画兼容所有手机
    背景渐变,兼容所有手机端
    文字动画和文字镂空
    前端面试题
  • 原文地址:https://www.cnblogs.com/xuyh/p/5091738.html
Copyright © 2020-2023  润新知