【C语言常识】Keil MDK的分散加载文件.sct
https://blog.csdn.net/wuhenyouyuyouyu/article/details/71171546?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164259812916780269822566%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164259812916780269822566&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-71171546.first_rank_v2_pc_rank_v29&utm_term=sct%E6%96%87%E4%BB%B6%E5%88%86%E6%95%A3%E5%8A%A0%E8%BD%BD&spm=1018.2226.3001.4187
STM32之MDK分析,分散加載
STM32分散加載
我們知道MDK的分散加載主要是通過.sct文件實現的,鏈接器根據.sct文件的配置分配各個節區地址,生成分散加載代碼,因此我們通過修改該文件可以定制具體節區的存儲位置。
如何打開.sct文件
在Options for Targets->Linker界面下面去掉默認選項,然后edit scatter file 就可以在編輯界面中看到.sct文件了。
.sct文件結構
LR_IROM1 0x08000000 0x00010000 { ; load region size_region ##就是所有代碼需要下載到0x08000000 開始的區域中,且這個區域大小只有0x00010000 這么大ER_IROM1 0x08000000 0x00010000 { ; load address = execution address ##加載域等于執行域,只能是只讀的代碼段和只讀數據段*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO)}RW_IRAM1 0x20000000 0x00004000 { ; RW data ##執行域是以0x20000000 開始的長度為0x00004000 一段區域.ANY (+RW +ZI) ;其中包括的是哪些文件}RW_IRAM2 0x20004000 0x00001000 { ##執行域是以0x20004000 開始的長度為0x00001000 一段區域delay.o (+ZI +RW).ANY (+RW +ZI)} }修改分散加載文件
其實上面貼的這段代碼是修改之后的.sct文件,如果需要修改分散加載文件,并使其生效需要
修改Options for Targets->Target 的onchip 的rom或者ram,容量地址必須和選擇的芯片一致修改某個文件的存儲屬性,在工程窗口中右擊文件名字 Options for file ,然后出現窗口可以修改文件的存儲屬性修改完,重新編譯,點開.sct文件就可以看到.sct已經被修改了,然后可以看map文件可以看到相關變量函數地址信息已經改變。
原文鏈接:https://blog.csdn.net/qq_33894122/article/details/81877630
總結
以上是生活随笔為你收集整理的【C语言常识】Keil MDK的分散加载文件.sct的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS7.9奶妈级教程安装Ansi
- 下一篇: C++判断输入内容是否为整数