存儲器ROM中。
[0022]具體步驟為:
步驟A:安裝OpenRISC交叉編譯工具鏈和EDA工具(XiIinx ISE);
步驟B:用匯編語言設(shè)計加載啟動代碼(bootloader);
步驟C:通過交叉編譯工具鏈把加載啟動代碼(bootloader)從匯編語言編譯成硬件描述語言(verilog),并實例化到soc系統(tǒng)頂層中。
[0023](3)將flash存儲器劃分成三個程序區(qū)(根據(jù)自己的需要劃分)。
[0024]具體步驟為:
步驟D:通過交叉編譯工具鏈將三個待燒錄程序編譯成三個二進(jìn)制文件,并把soc系統(tǒng)從硬件描述語言(verilog)變成bit文件;
步驟E:利用Xi I inx ISE中的impact工具將編譯好的soc系統(tǒng)bit文件燒錄至flash存儲器0x100000到OxIcOOOO區(qū)域,把三個二進(jìn)制文件分別燒錄到flash的三個不同程序區(qū);如圖3所示,flash存儲器地址從0x100000到OxIcOOOO是bit文件放置區(qū)I,0xlc0001到OxlfOOOO是程序區(qū)12,地址從OxlfOOOl到0x220000是程序區(qū)Π 3,地址從0x220001到0x250000是程序區(qū)ΙΠ4,地址從0x250001到0x300000是擴(kuò)展區(qū)5。
[0025](4)運行加載啟動代碼代碼后,執(zhí)行串行外設(shè)接口 SPI和通用異步收發(fā)傳輸器UART的初始化命令,并監(jiān)測串口接收到的命令,從flash存儲器中選擇相應(yīng)程序區(qū)實現(xiàn)程序到內(nèi)存模塊DDR2的拷貝。
[0026]如圖4所示,具體步驟為:
步驟F:初始化串行外設(shè)接口 SPI和通用異步收發(fā)傳輸器UART,并實時監(jiān)測終端發(fā)過來的命令;若監(jiān)測到命令,則執(zhí)行步驟G,否則繼續(xù)執(zhí)行步驟F;
步驟G:效驗接收到的命令是否為有效命令,是則執(zhí)行步驟H,否則通過通用異步收發(fā)傳輸器UART和藍(lán)牙模塊向終端發(fā)送“錯誤”提示,重新執(zhí)行步驟F;
步驟H:根據(jù)接收到的命令選擇flash存儲器相應(yīng)程序區(qū)的有效地址; 步驟I:初始化串行外設(shè)接口 SPI,產(chǎn)生串行外設(shè)接口 SPI時序和發(fā)送讀命令;
步驟J:根據(jù)flash程序區(qū)的有效地址拷貝程序到內(nèi)存模塊DDR2中;
步驟K:比較程序大小是否等于程序大小變量sizeword的值,是則表明程序拷貝完成,否則執(zhí)行步驟J。
[0027](5)執(zhí)行跳轉(zhuǎn)命令,將處理器指向內(nèi)存模塊DDR2的起始位置,實現(xiàn)系統(tǒng)的自啟動。
[0028]當(dāng)程序開始從內(nèi)存模塊DDR2執(zhí)行時,表示程序加載完成;發(fā)送不同的命令表示選擇flash存儲器不同的程序區(qū)中的程序加載到內(nèi)存模塊DDR2,也就實現(xiàn)了通過無線控制程序的加載,不需要下載線、預(yù)留接口和開發(fā)IDE工具就能實現(xiàn)程序的加載,簡化程序的二次開發(fā)過程。
【主權(quán)項】
1.一種基于SoC的無線智能程序加載方法,步驟如下: (1)搭建SoC系統(tǒng); (2)將加載啟動代碼燒錄至只讀存儲器中; (3)將flash存儲器劃分成若干個程序區(qū),并通過加載指令把不同的程序分別加載到不同的程序區(qū); (4)運行加載啟動代碼代碼后,執(zhí)行串行外設(shè)接口和通用異步收發(fā)傳輸器的初始化命令,并監(jiān)測串口接收到的命令,從flash存儲器中選擇相應(yīng)程序區(qū)實現(xiàn)程序到內(nèi)存模塊的拷貝; (5)執(zhí)行跳轉(zhuǎn)命令,將處理器指向內(nèi)存模塊的起始位置,實現(xiàn)系統(tǒng)的自啟動。2.根據(jù)權(quán)利要求1所述的基于SoC的無線智能程序加載方法,其特征在于:所述步驟(I)中,采用硬件描述語言搭建SoC系統(tǒng)。3.根據(jù)權(quán)利要求1所述的基于SoC的無線智能程序加載方法,其特征在于:所述步驟(2)的具體步驟為: 步驟A:安裝OpenRI SC交叉編譯工具鏈和Xi Iinx I SE工具; 步驟B:用匯編語言設(shè)計加載啟動代碼; 步驟C:通過交叉編譯工具鏈把加載啟動代碼從匯編語言編譯成硬件描述語言,并實例化到soc系統(tǒng)頂層中。4.根據(jù)權(quán)利要求3所述的基于SoC的無線智能程序加載方法,其特征在于:所述步驟(3)中,flash存儲器地址從0x100000到OxIcOOOO區(qū)域是soc系統(tǒng)bit文件放置區(qū),步驟(3)具體步驟為: 步驟D:通過交叉編譯工具鏈將三個待燒錄程序編譯成三個二進(jìn)制文件,并把soc系統(tǒng)從硬件描述語言變成bit文件; 步驟E:利用XiIinx ISE中的impact工具將編譯好的soc系統(tǒng)bit文件燒錄至flash存儲器0x100000到OxIcOOOO區(qū)域,把三個二進(jìn)制文件分別燒錄到flash的三個不同程序區(qū);其中,地址從OxIcOOOI到OxlfOOOO是程序區(qū)I,地址從OxlfOOOl到0x220000是程序區(qū)Π,地址從0x220001 到0x250000 是程序區(qū) ΙΠ。5.根據(jù)權(quán)利要求4所述的基于SoC的無線智能程序加載方法,其特征在于:所述步驟(4)具體步驟為: 步驟F:初始化串行外設(shè)接口和通用異步收發(fā)傳輸器,并實時監(jiān)測終端發(fā)過來的命令;若監(jiān)測到命令,則執(zhí)行步驟G,否則繼續(xù)執(zhí)行步驟F; 步驟G:效驗接收到的命令是否為有效命令,是則執(zhí)行步驟H,否則通過通用異步收發(fā)傳輸器和藍(lán)牙模塊向終端發(fā)送“錯誤”提示,重新執(zhí)行步驟F; 步驟H:根據(jù)接收到的命令選擇flash存儲器相應(yīng)程序區(qū)的有效地址; 步驟I:初始化串行外設(shè)接口,產(chǎn)生串行外設(shè)接口時序和發(fā)送讀命令; 步驟J:根據(jù)flash程序區(qū)的有效地址拷貝程序到內(nèi)存模塊中; 步驟K:比較程序大小是否等于程序大小變量sizeword的值,是則表明程序拷貝完成,否則執(zhí)行步驟J。6.—種無線智能程序加載SoC系統(tǒng),其特征在于:包括SoC最小系統(tǒng)、藍(lán)牙模塊和終端,所述SoC最小系統(tǒng)包括處理器、只讀存儲器、總線仲裁模塊、串行外設(shè)接口、內(nèi)存模塊、通用異步收發(fā)傳輸器、時鐘模塊,所述處理器、只讀存儲器、串行外設(shè)接口、內(nèi)存模塊、時鐘模塊分別與總線仲裁模塊相連,終端與藍(lán)牙模塊實現(xiàn)無線通信,藍(lán)牙模塊經(jīng)通用異步收發(fā)傳輸器與總線仲裁模塊相連。
【專利摘要】本發(fā)明公開了一種基于SoC的無線智能程序加載方法,步驟如下:搭建SoC系統(tǒng);將加載啟動代碼燒錄至只讀存儲器中;將flash存儲器分區(qū)并加載不同的程序;初始化串行外設(shè)接口和通用異步收發(fā)傳輸器,從flash存儲器中選擇相應(yīng)程序區(qū)實現(xiàn)程序到內(nèi)存模塊的拷貝;執(zhí)行跳轉(zhuǎn)命令,將處理器指向內(nèi)存模塊的起始位置,實現(xiàn)系統(tǒng)的自啟動。通過帶藍(lán)牙功能的終端發(fā)送不同的命令即可選擇flash程序區(qū)中不同的程序加載到內(nèi)存模塊,通過無線控制實現(xiàn)不同程序的加載,不需要添加額外的接口與復(fù)雜的模塊,不需要連接下載線和IDE開發(fā)環(huán)境等工具,簡化了芯片的二次開發(fā),增加了芯片的利用率。本發(fā)明還公開了一種無線智能程序加載SoC系統(tǒng)。
【IPC分類】G06F9/445, G06F15/78, H04W4/00
【公開號】CN105550010
【申請?zhí)枴緾N201610139229
【發(fā)明人】唐明華, 黃誠, 劉新, 馮艷華, 王震
【申請人】湘潭大學(xué)
【公開日】2016年5月4日
【申請日】2016年3月11日