麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

分散加載
發(fā)布時間:2020-02-21

1、什么是分散加載 ??

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

?

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

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

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

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

?

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

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

?

????????* 訪問擴展存儲&對存儲區(qū)的劃分

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

?

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

?

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

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

????RW-data段:已經初始化的所有靜態(tài)變量

????ZI-data段:未初始化的靜態(tài)變量

????RO段:指Code以及RO-data的統(tǒng)稱

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

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

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

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

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

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

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

?

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

TIP

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

關于億道電子

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



摘自21ic