青青av-亚洲激情一区二区-欧洲色综合-看片网址国产福利av中文字幕-成人精品毛片-亚洲黄色免费观看-国产夫妻在线观看-69av电影-久久性片-中文字幕av影片-色综合久久久久无码专区

分散加載
發布時間:2020-02-21

1、什么是分散加載 ??

??????簡單來說就是讓編譯器高速MCU內核哪里存的是代碼、哪里存的是數據,去哪個特定的地址找到下一步需要運行的函數,就是高速編譯器把每一個編譯好的函數、數據放到具體的哪一個物理地址。

?

2、分散加載常見應用場景

????????* Bootloader & 程序升級

?????Bootloader的原理就簡單來說在MCUFlash里面同時擺放2個(或多個)不同工程的程序,一個Bootloader程序和一個用戶程序,那么這就需要調整分散加載文件,以達成在一個Flash里面同時擺放兩個不同程序的目的。

???????程序升級都是為了增加一個小功能或修復一個小BUG,不需要全部升級而是只升級一點點。當然要實現這個功能同樣需要分散加載的配合,把可能會后續升級的部分函數或數據事先分配好空間,留好空間上的余量,這些都需要分散加載來完成。

?

????????* 加速程序運行速度(如:對速度有較高要求的算法等、RTOS kernel

????????SRAM中運行的程序要比在XIP Flash中執行要快,性能提升明顯。

?

????????* 訪問擴展存儲&對存儲區的劃分

???????如果要把外擴的存儲用于運行代碼/擴展RW數據段等用途,簡單來說就是把片內地址映射到片外,需要按照尋址空間的方式來訪問擴展存儲的話,比如擴展Nor-Flash、擴展SDRAM、擴展SRAM等,那就需要分散加載配合。(只作存儲數據的話,分散加載不是必要的!!!)

?

3、分散加載的基本結構定義以及分散加載的目的

?

????Code段:表示程序代碼部分

????RO-data段:程序定義的所有常量以及const類型數據

????RW-data段:已經初始化的所有靜態變量

????ZI-data段:未初始化的靜態變量

????RO段:指Code以及RO-data的統稱

????????????具體分布可查看對應的*.map文件。

????RW+ZI數據段最終運行時會占用片內SRAM或外擴的RAM存儲器,而Code+RO-data+RW-data數據最終會產生對片內Flash的占用或外擴程序存儲區的占用。

所以分散加載的根本目的就是:

????????* 指引把RO-data數據段、RW數據段從片內程序存儲區里面(一般是片內Flash),搬到片內程序運行區(一般是片內SRAM;

????????* 在片內程序運行區(一般是片內SRAM)內分配ZI數據段運行需要的空間并把這段數據初始化為0

????????* 初始化堆棧;

????????* 對于有些指定加載到程序運行區(一般是片內SRAM)的RO數據段,把他們加載到程序運行區(一般是片內SRAM)里面。

?

{ 類比:這個和使用的電腦運行操作系統或者軟件原理類似,電腦就是把硬盤里面的操作系統加載到內存里面,然后CPU從內存里面取數據以及程序指令來運行的。}

TIP

??????RW以及ZI數據段的初始化是在分散加載過程中完成的,也就是在__main中完成的,比如你定義一個全局變量,并給它賦值,只有在__main結束后你才能看到這個全局變量被賦值成功的,也就是說在__main之前,使用全局變量是行不通的。

關于28quan官網電子

28quan官網電子是國內最全面的開發工具提供商,致力于將全球先進的軟件產品引薦給國內研發型企業使用,為企業提供研發、設計、管理過程中使用的各種軟件工具,并致力于和客戶一同提高研發、設計效率,縮短設計周期。28quan官網電子先后與armAltiumAnsysQTTestPlantCollabNetParasoft以及TouchGFX等多家全球知名公司建立戰略合作伙伴關系,并成為他們在中國區的重要分銷合作伙伴。28quan官網電子專注開發、設計、管理工具數十年,客戶超過6000家,具有豐富的工具使用及客戶支持經驗積累,可以為客戶提供從arm開發、EDA板級設計、軟件編譯及測試工具、結構設計工具、多物理場仿真工具以及嵌入式GUI工具等產品與服務。28quan官網電子在北京、上海、深圳設有分公司,業務遍布全國。



摘自21ic

主站蜘蛛池模板: 霍州市| 铜陵市| 年辖:市辖区| 大宁县| 登封市| 黑河市| 米林县| 铁力市| 琼海市| 岑溪市| 鄂州市| 来宾市| 慈利县| 四会市| 凌源市| 宾川县| 九江市| 长春市| 改则县| 桦南县| 呈贡县| 布拖县| 历史| 裕民县| 奉节县| 南溪县| 腾冲县| 高淳县| 阳高县| 巍山| 光泽县| 临澧县| 苗栗县| 兰西县| 含山县| 马公市| 公安县| 繁昌县| 梅河口市| 铜川市| 商南县|