娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月22日(星期二)

正在發生

2020年04月22日 | jz2440學習筆記———代碼重定位相關

發布者:Mingyue1314 來源: eefocus關鍵字:jz2440  代碼重定位  全局變量 手機看文章 掃描二維碼
隨時隨地手機看文章

實驗引導:

在main函數中引入全局變量a時,若將連接后的文件燒寫在nand flash上,則可以訪問修改全局變量a,若將連接后的文件燒寫在nor flash上,則只可訪問a,不能修改a。這是由于燒寫在nand flash 上的代碼會被加載到4K的片內內存SRAM上,全局變量a放在內存里是可讀可寫的;但將代碼燒寫在nor flash上時,cpu可以直接通過內存控制器來訪問nor flash,然而全局變量在nor flash中是不可修改的,因此需要重定位代碼,即將全局變量a,或者是整段代碼重定位到SDRAM中,這樣就能讀寫全局變量了。


概念梳理:

加載地址:指二進制.bin文件燒寫時的地址,默認從零地址開始

運行時地址:指程序在真正運行時的地址

絕對跳轉:在代碼進行跳轉時采用的是絕對地址,訪問全局變量時采用絕對跳轉

相對跳轉:在代碼進行跳轉時采用的是相對地址,即匯編中的B/BL命令跳轉

重定位步驟:1.指定代碼的運行地址 2 將代碼從加載地址復制到運行時地址。若采用將全部代碼重定位,則在跳轉到main時,需要使用絕對跳轉(ldr pc,=main)才能使程序運行在SDRAM中,否則代碼還是運行在加載地址。


注意點:在復制代碼時,如果是以byte為單位復制并且以byte為單位讀數據,則無需考慮字節對齊;但若是以4*byte為單位,則需注意字節對齊,否則有可能導致數據被破壞。


段分類說明:

.text :代碼段

.data:數據段,存放已經初始化了的全局變量

.rodata:只讀數據段,存放靜態常量(const修飾)

.bss:存放未初始化或者初始化為0的全局變量

.初始化.bss段:

.bss段并不會被程序自動初始化,因此不會在內存中有.bss段,需要人為地添加.bss段,并且對其初始化為0。


鏈接腳本:

重定位運行時地址和加載地址的指定,是通過鏈接腳本實現的。以下代碼為例子:


SECTIONS

{

. = 0x30000000;


. = ALIGN(4);

.text      :

{

  *(.text)

}


. = ALIGN(4);

.rodata : { *(.rodata) }


. = ALIGN(4);

.data : { *(.data) }


. = ALIGN(4);

__bss_start = .;

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

_end = .;

}


知識點補充

:鏈接腳本在被編譯時會產生符號表,里面存儲了定義的各個標簽極其位置的信息,在使用c語言進行編程時,將標簽用extern聲明為外部引用,然后進行取地址就能得到該地址了。


說明:本筆記只用于筆者個人總結知識點,指導意義有限,若有同樣學習了韋老師視屏的同學,歡迎相互交流。

關鍵字:jz2440  代碼重定位  全局變量 引用地址:jz2440學習筆記———代碼重定位相關

上一篇:S3C2440 代碼重定位實驗(一)
下一篇:MY2410開發板(S3C2410)INC文件1----2410addr.h

推薦閱讀

2017年全球新能源汽車銷量首次突破100萬輛大關,蓬勃發展的新能源汽車帶動了相關技術的發展,無線充電技術就是其中之一。無線充電技術的相關概念自19世紀被提出,陸續有研究機構進行技術研發;2007年以后,無線充電技術進入了快速發展階段;2010年左右,汽車行業開始陸續進行相關技術的應用。近幾年,無線充電已經成為熱點,眾多零部件供應商、車企和科技...
據麥姆斯咨詢介紹,開發與人手媲美的的機器手所面臨的多方面挑戰仍然是需要大量研究的課題。毋庸置疑,研究人員在復制人手諸多功能和特征,如某項或幾項性能(抓取和操縱等)已經取得了一些進展。然而,人手是多功能的結合,如骨骼結構、肌肉力量、完全控制的關節、壓力/剪切力/運動/加速度/溫度感知,等等,并在很寬泛的動態范圍內擁有這些屬性。斯坦福大...
今天在添加uart 驅動時,需要向現有的 uC/OS 工程文件中添加頭文件。1. 直接在工程目錄下新建一個目錄,將uart.c 和 uart.h 添加到該目錄下,2. 在工程項目上右鍵->add->add group ,添加一個組 uC-UART3. 在該組上繼續右鍵->add->add file ,添加 uart.c 和 uart.h4. 修改includes.h ,添加 #include <uart.h>5. 此時直接編譯會報...
在新冠肺炎疫情蔓延之際,筆記型計算機與平板計算機高速成長,直接壓縮桌上型計算機市場,但隨著各國積極投入新冠肺炎疫苗研發與生產,并實行更積極的防疫措施,預期疫情終將趨緩,而筆記型計算機、平板計算機也不至于持續壓縮桌上型計算機市場,畢竟不是所有工作職務都會永久轉換為居家或遠端辦公型態。 根據TrendForce集邦咨詢旗下拓墣產業研究院估計,...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 蓬莱市| 阳新县| 云南省| 镇康县| 河间市| 郁南县| 长沙市| 吐鲁番市| 红原县| 沙河市| 基隆市| 抚松县| 常德市| 邯郸市| 漳平市| 许昌市| 静海县| 库伦旗| 杨浦区| 朝阳县| 鹤岗市| 江油市| 盐津县| 达州市| 邻水| 霍邱县| 平潭县| 蓬莱市| 涞水县| 凤翔县| 延庆县| 孝昌县| 翁牛特旗| 达孜县| 临洮县| 日土县| 临高县| 即墨市| 张家界市| 南木林县| 垣曲县|