GD32F系列MCU產(chǎn)品片上Flash分Code區(qū)和Data區(qū),以GD32F303系列為例,從GD32F303xx Datasheet中可以獲取code區(qū)和data區(qū)大小,那Code區(qū)和Data區(qū)在代碼執(zhí)行上有什么差別呢?

Code區(qū)代碼運(yùn)行0等待,一般用于存放實(shí)時(shí)性要求高的代碼,比如中斷服務(wù)程序等;Data區(qū)代碼運(yùn)行有較大延遲(平均比Code區(qū)慢一個(gè)數(shù)量級(jí)),Data區(qū)一般用于存放對(duì)實(shí)時(shí)性要求不高的代碼或數(shù)據(jù)。導(dǎo)致該問(wèn)題的原因是GD32F系列產(chǎn)品架構(gòu)決定,其采用SIP的方式疊封了GD Flash,帶來(lái)的優(yōu)勢(shì)是代碼執(zhí)行在code區(qū)相同主頻下具有最高的代碼執(zhí)行效率,帶來(lái)的問(wèn)題是data區(qū)代碼執(zhí)行會(huì)慢一些,該問(wèn)題是個(gè)雙刃劍,具有兩面性,我們需要在了解原理的情況下,更大限度的發(fā)揮優(yōu)勢(shì)。
解決方案為如果代碼量沒(méi)有超過(guò)code區(qū)大小,恭喜你,沒(méi)有這個(gè)問(wèn)題的煩惱;如果代碼量超過(guò)了code區(qū)大小,可以通過(guò)分散加載方式將實(shí)時(shí)性要求高的代碼存放在Code區(qū),將實(shí)時(shí)性要求低的代碼存放在Data區(qū)。
PS:有關(guān)分散加載的說(shuō)明,聚沃會(huì)有專題進(jìn)行說(shuō)明,如需要可以移步參考。