色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在ARM開發環境下C語言的設置堆棧指針和清理BSS段的作用概述

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:易水寒 ? 2018-05-19 09:55 ? 次閱讀

以前稍微寫過操作系統上的C程序,感受不出來:BSS段,堆棧的意義。到了在單片機上寫程序也沒有考慮這些問題。但是到了ARM上環境似乎沒有那么簡單了,C的環境要自己來創建,不然就不能用。這也深刻的感受到了C語言中原來難以理解的概念。

裸機建立C語言環境-設置堆棧指針

這個是使用C語言的首要條件,不過這個就是指定一個sp指針就可以了,很簡單的。ldr sp, =4096。

裸機建立C語言環境-清理BSS段

如果C語言中用到的全局變量或者靜態變量,這個編譯的時候是把它們放到了BSS段,這個段在內存中。怎么建成的?手動寫一個鏈接腳本,添加__bss_start __bss_end變量來表示BSS段的開始和結束。如下:

SECTIONS {

. = 0x00000000;

.text : { *(.text) }

.rodata ALIGN(4) : AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)) {*(.rodata*)}

.data ALIGN(4) : AT((LOADADDR(.rodata)+SIZEOF(.rodata)+3)&~(0x03)) { *(.data) }

__bss_start = .;

.bss ALIGN(4) : { *(.bss) *(COMMON) }

__bss_end = .;

}

這樣在應用程序中清理__bss_start到__bss_end之間內在中的內容。這樣全局變量就可以用了,否則會出現異常。我遇到的具體表現為:全局變量的值無法更改。代碼可以學習u-boot中匯編方法清理:

/*

* These are defined in the board-specific linker script.

*/

.globl _bss_start

_bss_start:

.word __bss_start

.globl _bss_end

_bss_end:

.word __bss_end

/*

* 清BSS段

*/

clear_bss:

ldr r0, _bss_start /* find start of bss segment */

ldr r1, _bss_end /* stop here */

mov r2, #0x00000000 /* clear */

clbss_l:str r2, [r0] /* clear loop... */

add r0, r0, #4

cmp r0, r1

ble clbss_l

mov pc, lr

/* end_of clear_bss */

也可以用C語言來實現:

void clean_bss(void)

{

extern int __bss_start, __bss_end;

int *p = &__bss_start;

for (; p < &__bss_end; p++)

*p = 0;

}

總結:就是往這段內存中寫0.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9164

    瀏覽量

    368585
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137421
  • BSS
    BSS
    +關注

    關注

    0

    文章

    19

    瀏覽量

    12238
  • 堆棧指針
    +關注

    關注

    0

    文章

    5

    瀏覽量

    2931

原文標題:嵌入式ARM開發環境下,設置堆棧指針和清理BSS段的意義

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM9處理器C語言編程(全) ADS開發環境創建簡介

    與簡介ADS1.2的安裝ADS1.2的仿真,調試用AXD進行代碼仿真,調試JTAQ概述Nor和Nand Flash的區別與使用Flash編程ARM使用C
    發表于 07-28 15:06

    淺談text、databss

    的一塊內存區域,一般初始化時bss 部分將會清零(bss屬于靜態內存分配,即程序一開始就將其清零了)。 比如,
    發表于 08-21 15:51

    C語言ARM堆棧指針SP設置的理解與總結(轉載)

    的,從地址向高地址,依次為:程序(.text),BSS,然后上面還可能會有堆空間,然后最上面才是堆棧,這樣安排
    發表于 01-26 17:11

    初步學習ARM11

    。但是STM32采用的是THUMB2指令,其中包含THUMB的16位指令,所以指令不是嚴格的4字節對齊。但是寫STM32程序的時候,都是用C語言寫的,所以對這些就不怎么關心。但是ARM
    發表于 12-10 18:08

    如何設置堆棧指針清理BSS

    嵌入式ARM開發環境設置堆棧指針
    發表于 02-04 06:26

    嵌入式ARM開發環境下為什么要設置堆棧指針清理BSS?

    嵌入式ARM開發環境,設置堆棧指針
    發表于 04-02 06:39

    概述C語言的特點

    的資源,得到更多的信息,對軟件工具的發展起到了更大的促進作用。1、嵌入式Linux C語言開發概述C
    發表于 11-04 07:21

    ARM匯編在嵌入式Linux開發中有何作用

    前言??我們進行嵌入式 Linux 開發的時候是絕對要掌握基本的 ARM 匯編,因為 Cortex-A 芯片一上電 SP 指針還沒初始化, C
    發表于 12-20 08:20

    堆棧指針作用是什么?

    堆棧指針作用是什么
    發表于 11-02 08:10

    C語言指針電子教程

    本資料是一份不錯的關于C語言指針的電子教程,希望對大家有所幫助... 指針簡介 指針C
    發表于 07-30 16:00 ?77次下載

    堆棧指針是什么_有什么作用

    堆棧指針總是指向棧頂位置。一般堆棧的棧底不能動,所以數據入棧前要先修改堆棧指針,使它指向新的空余空間然后再把數據存進去,出棧的時候相反。
    發表于 11-10 11:01 ?1w次閱讀

    C語言ARM堆棧指針SP設置的理解與總結

    開始將堆棧指針設置在內部RAM,是因為不是每個板上都有外部RAM,而且外部RAM的大小也不相同,而且如果是SDRAM,還需要初始化,在內部RAM開始運行的一般是一個小的引導程序,基本上不怎么使用
    的頭像 發表于 04-06 19:46 ?9328次閱讀

    C語言入門教程之堆棧的詳細資料概述

    本文檔的主要內容詳細介紹的是C語言入門教程之堆棧的詳細資料概述
    發表于 11-29 11:47 ?12次下載

    堆棧C語言中的定義是怎么樣的

     計機領域,堆棧是一個不容忽視的概念,我們編寫的C語言程序基本上都要用到。但對于很多的初學著來說,堆棧是一個很模糊的概念。
    發表于 08-16 17:32 ?0次下載
    <b class='flag-5'>堆棧</b><b class='flag-5'>在</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>中的定義是怎么樣的

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是
    的頭像 發表于 02-09 17:20 ?1129次閱讀
    主站蜘蛛池模板: 色戒2小时38分在线观看 | 最近免费中文字幕MV在线视频3 | 三级黄色高清视频 | 国内精品久久久久久久试看 | 牛牛在线视频 | 久久中文字幕综合不卡一二区 | 一区二区不卡在线视频 | 国产成久久免费精品AV片天堂 | 久久黄色精品视频 | 久久re6热在线视频 久久er国产免费精品 | 亚洲精品国产熟女久久久 | 浪潮AV色综合久久天堂 | 亚洲手机在线人成视频 | 亚洲AV色香蕉一区二区三区 | 99久久爱看免费观看 | 果冻传媒在线观看视频 | 中文字幕在线不卡日本v二区 | 中文字幕不卡一区二区三区 | 品色堂主页 | 成人网络电视破解版 | 日本久久高清视频 | 亚洲欧洲日韩国产一区二区三区 | 日日夜夜影院在线播放 | 国产午夜精品理论片久久影视 | 国产午夜在线视频 | 亚洲精品电影久久久影院 | 在线成人精品国产区免费 | 青青草伊人网 | 亚洲欧美成人在线 | 激情内射亚洲一区二区三区 | 伊人久久精品中文字幕 | 99热这里只有精品8 99热这里只有精品6 | 中国老女人xxhd69 | 亚洲国产果果在线播放在线 | 色欲AV精品一区二区入口 | 亚洲乱妇88网 | 俄罗斯15一16处交 | 欧美不卡一区二区三区 | 国产精品自在自线亚洲 | 久久婷婷丁香五月色综合啪免费 | 久久久久久91香蕉国产 |