色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440國(guó)嵌學(xué)院gboot-bss段初始化

          TQ2440國(guó)嵌學(xué)院gboot-bss段初始化

          作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          BSS段主要用來(lái)存放未初始化的全局變量

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

          本文引用地址:http://cafeforensic.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段的開(kāi)始地址bss_start和結(jié)束地址bss_end,

          bss主要是存放未初始化的全局變量,因?yàn)槭菦](méi)有初始化,因此值可能是隨機(jī)值,如果被應(yīng)用程序調(diào)用,可能會(huì)有影響,因此初始化bss,也就是將bss段的內(nèi)容全部賦值為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



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉