本公開(kāi)涉及計(jì)算機(jī)程序,尤其涉及一種用于任務(wù)動(dòng)態(tài)加載的裝置、方法和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、微控制單元(microcontroller?unit,mcu)是一種高度集成的微型計(jì)算機(jī)系統(tǒng),具有微處理器、存儲(chǔ)器、輸入/輸出接口及時(shí)鐘電路等功能。與傳統(tǒng)的計(jì)算機(jī)相比,它的體積小、功耗低,且具有低成本、高可靠性、低復(fù)雜度等特點(diǎn),廣泛應(yīng)用于各個(gè)領(lǐng)域,如家用電器、工業(yè)控制、通信設(shè)備、汽車(chē)電子等。mcu可以在電子產(chǎn)品中起到控制和處理等作用。mcu通過(guò)在存儲(chǔ)器上執(zhí)行控制程序來(lái)與外部電路進(jìn)行交互,從而實(shí)現(xiàn)各種功能或任務(wù)。由于隨機(jī)存取存儲(chǔ)器(ram)的讀寫(xiě)速度最快,mcu通常需要將不同的任務(wù)動(dòng)態(tài)加載到ram中來(lái)執(zhí)行,以滿(mǎn)足實(shí)時(shí)性要求。此外,mcu的存儲(chǔ)空間也非常有限。因此,需要一種既能提高mcu的存儲(chǔ)器利用率、又能簡(jiǎn)便高效地實(shí)現(xiàn)任務(wù)動(dòng)態(tài)加載、開(kāi)發(fā)和/或調(diào)試的架構(gòu)和方法。
技術(shù)實(shí)現(xiàn)思路
1、本公開(kāi)的實(shí)施例提供了一種用于任務(wù)動(dòng)態(tài)加載的裝置,包括:第一存儲(chǔ)器,被配置為存儲(chǔ)主任務(wù)和一個(gè)或多個(gè)子任務(wù);第二存儲(chǔ)器,所述第二存儲(chǔ)器包括具有第二地址空間的動(dòng)態(tài)加載區(qū);地址處理單元,被配置為在加載所述一個(gè)或多個(gè)子任務(wù)中的第一子任務(wù)時(shí),將所述第一子任務(wù)的第一運(yùn)行地址轉(zhuǎn)換為所述第二地址空間內(nèi)的第二運(yùn)行地址;以及總線(xiàn),被配置為連接所述第一存儲(chǔ)器、所述第二存儲(chǔ)器和所述地址處理單元,其中,所述裝置被配置為基于所述第二運(yùn)行地址將所述第一子任務(wù)從所述第一存儲(chǔ)器加載到所述動(dòng)態(tài)加載區(qū)。
2、根據(jù)本公開(kāi)的實(shí)施例,所述地址處理單元還被配置為:基于所述第一子任務(wù)的第一起始運(yùn)行地址和第一長(zhǎng)度確定與所述第一子任務(wù)相對(duì)應(yīng)的第一地址空間;以及在運(yùn)行所述第一子任務(wù)時(shí),在所述總線(xiàn)上傳輸?shù)牡谝坏刂穼儆谒龅谝坏刂房臻g的情況下,將所述第一地址轉(zhuǎn)換為所述第二地址空間內(nèi)的第二地址。
3、根據(jù)本公開(kāi)的實(shí)施例,將所述第一運(yùn)行地址轉(zhuǎn)換為所述第二運(yùn)行地址包括:將所述第一運(yùn)行地址中的最高n位設(shè)置為0,以獲得第一地址偏移;以及將所述第一地址偏移與所述動(dòng)態(tài)加載區(qū)的起始地址相加,以獲得所述第二運(yùn)行地址,其中,所述n基于所述第一運(yùn)行地址的位數(shù)和所述第二存儲(chǔ)器的總地址空間長(zhǎng)度來(lái)確定,并且所述n為大于或等于0的整數(shù)。
4、根據(jù)本公開(kāi)的實(shí)施例,所述地址處理單元包括第一寄存器、第二寄存器和第三寄存器,其中,所述地址處理單元還被配置為在加載所述第一子任務(wù)時(shí):將所述第一子任務(wù)的第一起始運(yùn)行地址存儲(chǔ)在所述第一寄存器中;將所述第一子任務(wù)的第一長(zhǎng)度存儲(chǔ)在所述第二寄存器中;以及將所述n存儲(chǔ)在所述第三寄存器中。
5、根據(jù)本公開(kāi)的實(shí)施例,所述第一長(zhǎng)度小于或等于所述動(dòng)態(tài)加載區(qū)的所述第二地址空間的長(zhǎng)度。
6、根據(jù)本公開(kāi)的實(shí)施例,所述第二存儲(chǔ)器還包括具有第三地址空間的固定區(qū),其中,所述裝置還被配置為將所述主任務(wù)的可讀寫(xiě)數(shù)據(jù)從所述第一存儲(chǔ)器加載到所述固定區(qū)。
7、根據(jù)本公開(kāi)的實(shí)施例,所述地址處理單元還被配置為:在加載所述一個(gè)或多個(gè)子任務(wù)中的第二子任務(wù)時(shí),將所述第二子任務(wù)的第三運(yùn)行地址轉(zhuǎn)換為所述第二地址空間內(nèi)的第四運(yùn)行地址。
8、根據(jù)本公開(kāi)的實(shí)施例,所述主任務(wù)和所述一個(gè)或多個(gè)子任務(wù)作為一個(gè)文件連續(xù)存儲(chǔ)在所述第一存儲(chǔ)器中的連續(xù)存儲(chǔ)地址空間中。
9、根據(jù)本公開(kāi)的實(shí)施例,所述第一子任務(wù)為所述一個(gè)或多個(gè)子任務(wù)中的任何子任務(wù)。
10、本公開(kāi)的實(shí)施例提供了一種用于任務(wù)動(dòng)態(tài)加載的方法,包括:在第一存儲(chǔ)器上存儲(chǔ)主任務(wù)和一個(gè)或多個(gè)子任務(wù);在加載所述一個(gè)或多個(gè)子任務(wù)中的第一子任務(wù)時(shí),由地址處理單元將所述第一子任務(wù)的第一運(yùn)行地址轉(zhuǎn)換為第二地址空間內(nèi)的第二運(yùn)行地址,其中,所述第二地址空間為第二存儲(chǔ)器上包括的動(dòng)態(tài)加載區(qū)的地址空間;以及基于所述第二運(yùn)行地址將所述第一子任務(wù)從所述第一存儲(chǔ)器加載到所述動(dòng)態(tài)加載區(qū)。
11、根據(jù)本公開(kāi)的實(shí)施例,所述方法還包括:基于所述第一子任務(wù)的第一起始運(yùn)行地址和第一長(zhǎng)度確定與所述第一子任務(wù)相對(duì)應(yīng)的第一地址空間;以及在運(yùn)行所述第一子任務(wù)時(shí),在所述總線(xiàn)上傳輸?shù)牡谝坏刂穼儆谒龅谝坏刂房臻g的情況下,將所述第一地址轉(zhuǎn)換為所述第二地址空間內(nèi)的第二地址。
12、根據(jù)本公開(kāi)的實(shí)施例,將所述第一運(yùn)行地址轉(zhuǎn)換為所述第二運(yùn)行地址包括:將所述第一運(yùn)行地址中的最高n位設(shè)置為0,以獲得第一地址偏移;以及將所述第一地址偏移與所述動(dòng)態(tài)加載區(qū)的起始地址相加,以獲得所述第二運(yùn)行地址,其中,所述n基于所述第一運(yùn)行地址的位數(shù)和所述第二存儲(chǔ)器的總地址空間長(zhǎng)度來(lái)確定,并且所述n為大于或等于0的整數(shù)。
13、根據(jù)本公開(kāi)的實(shí)施例,所述方法還包括,在加載所述第一子任務(wù)時(shí):將所述第一子任務(wù)的第一起始運(yùn)行地址存儲(chǔ)在第一寄存器中;將所述第一子任務(wù)的第一長(zhǎng)度存儲(chǔ)在第二寄存器中;以及將所述n存儲(chǔ)在第三寄存器中。
14、根據(jù)本公開(kāi)的實(shí)施例,所述第一長(zhǎng)度小于或等于所述動(dòng)態(tài)加載區(qū)的所述第二地址空間的長(zhǎng)度。
15、根據(jù)本公開(kāi)的實(shí)施例,所述第二存儲(chǔ)器還包括具有第三地址空間的固定區(qū),其中,所述方法還包括將所述主任務(wù)的可讀寫(xiě)數(shù)據(jù)從所述第一存儲(chǔ)器加載到所述固定區(qū)。
16、根據(jù)本公開(kāi)的實(shí)施例,所述方法還包括:在加載所述一個(gè)或多個(gè)子任務(wù)中的第二子任務(wù)時(shí),將所述第二子任務(wù)的第三運(yùn)行地址轉(zhuǎn)換為所述第二地址空間內(nèi)的第四運(yùn)行地址。
17、根據(jù)本公開(kāi)的實(shí)施例,所述方法還包括:將所述主任務(wù)和所述一個(gè)或多個(gè)子任務(wù)作為一個(gè)文件連續(xù)存儲(chǔ)在所述第一存儲(chǔ)器中的連續(xù)存儲(chǔ)地址空間中。
18、根據(jù)本公開(kāi)的實(shí)施例,所述第一子任務(wù)為所述一個(gè)或多個(gè)子任務(wù)中的任何子任務(wù)。
19、本公開(kāi)的實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可讀指令,所述指令在被處理器執(zhí)行時(shí)能夠用于實(shí)現(xiàn)根據(jù)本公開(kāi)實(shí)施例的用于任務(wù)動(dòng)態(tài)加載的任何方法。
20、通過(guò)本公開(kāi)提出的任務(wù)動(dòng)態(tài)加載方法和架構(gòu),能夠提高mcu的存儲(chǔ)器利用率,同時(shí)能夠有效降低程序開(kāi)發(fā)和調(diào)試的復(fù)雜度。
1.一種用于任務(wù)動(dòng)態(tài)加載的裝置,包括:
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述地址處理單元還被配置為:
3.根據(jù)權(quán)利要求1所述的裝置,其中,將所述第一運(yùn)行地址轉(zhuǎn)換為所述第二運(yùn)行地址包括:
4.根據(jù)權(quán)利要求3所述的裝置,其中,所述地址處理單元包括第一寄存器、第二寄存器和第三寄存器,
5.根據(jù)權(quán)利要求2或4所述的裝置,其中,所述第一長(zhǎng)度小于或等于所述動(dòng)態(tài)加載區(qū)的所述第二地址空間的長(zhǎng)度。
6.根據(jù)權(quán)利要求1所述的裝置,其中,所述第二存儲(chǔ)器還包括具有第三地址空間的固定區(qū),
7.根據(jù)權(quán)利要求1所述的裝置,其中,所述地址處理單元還被配置為:
8.根據(jù)權(quán)利要求1所述的裝置,其中,所述主任務(wù)和所述一個(gè)或多個(gè)子任務(wù)作為一個(gè)文件連續(xù)存儲(chǔ)在所述第一存儲(chǔ)器中的連續(xù)存儲(chǔ)地址空間中。
9.根據(jù)權(quán)利要求1所述的裝置,其中,所述第一子任務(wù)為所述一個(gè)或多個(gè)子任務(wù)中的任何子任務(wù)。
10.一種用于任務(wù)動(dòng)態(tài)加載的方法,包括:
11.根據(jù)權(quán)利要求10所述的方法,還包括:
12.根據(jù)權(quán)利要求10所述的方法,其中,將所述第一運(yùn)行地址轉(zhuǎn)換為所述第二運(yùn)行地址包括:
13.根據(jù)權(quán)利要求12所述的方法,還包括,在加載所述第一子任務(wù)時(shí):
14.根據(jù)權(quán)利要求11或13所述的方法,其中,所述第一長(zhǎng)度小于或等于所述動(dòng)態(tài)加載區(qū)的所述第二地址空間的長(zhǎng)度。
15.根據(jù)權(quán)利要求10所述的方法,其中,所述第二存儲(chǔ)器還包括具有第三地址空間的固定區(qū),
16.根據(jù)權(quán)利要求10所述的方法,還包括:
17.根據(jù)權(quán)利要求10所述的方法,還包括:
18.根據(jù)權(quán)利要求10所述的方法,其中,所述第一子任務(wù)為所述一個(gè)或多個(gè)子任務(wù)中的任何子任務(wù)。
19.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可讀指令,所述指令在被處理器執(zhí)行時(shí)用于實(shí)現(xiàn)如權(quán)利要求10-18中任一項(xiàng)所述的方法。