新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TQ2440國嵌學院gboot-bss段初始化

        TQ2440國嵌學院gboot-bss段初始化

        作者: 時間:2016-11-26 來源:網絡 收藏
        BSS段主要用來存放未初始化的全局變量

        首先先查看我們的鏈接器腳本文件,也就是gboot.lds

        本文引用地址:http://www.104case.com/article/201611/321966.htm

        OUTPUT_ARCH(arm)
        ENTRY(_start)
        SECTIONS {
        . = 0x30008000;

        . = ALIGN(4);
        .text :
        {
        start.o (.text)
        *(.text)
        }

        . = ALIGN(4);
        .data :
        {
        *(.data)
        }

        . = ALIGN(4);
        bss_start = .;
        .bss :
        {
        *(.bss)
        }
        bss_end = .;
        }

        可以看到上面bss段的開始地址bss_start和結束地址bss_end,

        bss主要是存放未初始化的全局變量,因為是沒有初始化,因此值可能是隨機值,如果被應用程序調用,可能會有影響,因此初始化bss,也就是將bss段的內容全部賦值為0

        代碼如下:

        clean_bss:

        ldrr0,=bss_start

        ldrr1,=bss_end

        mov r3,#0

        cmp r0,r1

        moveqpc,lr

        clean_loop:

        strr2,[r0],#4

        cmp r0,r1

        bne clean_loop

        mov pc,lr



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 扎鲁特旗| 金塔县| 汝州市| 安岳县| 卢龙县| 南雄市| 三江| 双桥区| 鄂托克旗| 临西县| 榆中县| 道孚县| 石城县| 遂川县| 剑阁县| 忻州市| 西昌市| 日喀则市| 仪征市| 东源县| 南昌市| 绥中县| 三都| 江孜县| 峨眉山市| 沂源县| 奎屯市| 平谷区| 蓬安县| 阿克| 新疆| 长岭县| 赞皇县| 太康县| 新闻| 乌拉特中旗| 丹东市| 长沙市| 大方县| 礼泉县| 武山县|