两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

擴(kuò)展串行引導(dǎo)代碼量的方法

文檔序號(hào):6407178閱讀:221來(lái)源:國(guó)知局
專利名稱:擴(kuò)展串行引導(dǎo)代碼量的方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信和計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及擴(kuò)展串行引導(dǎo)代碼量的方法。
背景技術(shù)
處理器的引導(dǎo)代碼存儲(chǔ)器(Boot Rom,一般包括EEPROM和Flash兩種)通常分為并行和串行兩種,對(duì)于功耗、體積受到一定限制的產(chǎn)品,采用串行BootRom是一種較好的選擇。串行Boot Rom一般采用標(biāo)準(zhǔn)的SPI(Serial PeripheralInterface)接口,該接口為四線連接方式,其中包括時(shí)鐘信號(hào)CLK、片選信號(hào)CS、主器件數(shù)據(jù)輸出信號(hào)MOSI和主器件數(shù)據(jù)輸入信號(hào)MISO,如圖1所示。串行Boot Rom具有一些通用的操作指令,比如讀指令、寫(xiě)指令、寫(xiě)使能和寫(xiě)保護(hù)等,在主器件進(jìn)行相應(yīng)操作之前必須先發(fā)送相應(yīng)的操作指令。
每次上電引導(dǎo)(Boot)時(shí),處理器運(yùn)行內(nèi)部固化的初始引導(dǎo)程序,該引導(dǎo)程序負(fù)責(zé)通過(guò)SPI接口把Boot Rom中的代碼搬移到處理器的RAM存儲(chǔ)空間,搬移完畢后程序指針跳轉(zhuǎn)到存儲(chǔ)代碼的RAM空間首地址,開(kāi)始運(yùn)行用戶的應(yīng)用程序,Boot過(guò)程結(jié)束。處理器內(nèi)部固化的引導(dǎo)程序和存放引導(dǎo)程序的ROM空間對(duì)用戶來(lái)說(shuō)通常是不可以修改和訪問(wèn)的。
SPI接口的讀取時(shí)序如圖2所示首先處理器輸出串行Boot Rom的讀命令比如0x03,然后輸出將讀取的外部Boot Rom的地址,之后處理器就通過(guò)MISO信號(hào)通道讀取所指定地址空間的數(shù)據(jù)。
處理器在Boot時(shí),從外部Boot Rom讀取的數(shù)據(jù)格式通常由對(duì)應(yīng)的處理器編譯器生成,程序代碼通常格式如圖3所示。
首先,處理器從Boot Rom的0x00位置讀取程序代碼有效標(biāo)志和部分初始化參數(shù),通常為幾個(gè)字節(jié),設(shè)為n1,讀入后進(jìn)行解析,獲得相關(guān)信息,比如當(dāng)前數(shù)據(jù)塊是否有效,真正的程序代碼的起始地址或相對(duì)偏移量,程序塊的大小等等。如果有效標(biāo)志指示有效,則把讀取地址指針偏移n1讀取代碼塊首部,設(shè)該首部為n2個(gè)字節(jié),讀入后分析該段代碼的屬性,然后把指針偏移n2,根據(jù)代碼段長(zhǎng)度的指示讀取代碼段,并根據(jù)代碼塊內(nèi)部存放首地址指示把代碼塊搬移到內(nèi)部的地址空間中。
通常編譯器所生成的代碼塊有多塊,塊數(shù)和源代碼中鏈接文件的定義有關(guān)。處理器會(huì)根據(jù)代碼塊的屬性來(lái)判斷該代碼塊是否是最后塊,從而判斷出是否繼續(xù)讀取代碼塊。
由于現(xiàn)有的處理器Boot時(shí),對(duì)外部Boot Rom空間的尋址多為8或16bit地址,因此整個(gè)處理器代碼量的大小就受到限制(處理器的運(yùn)行代碼都是從BootRom搬入的,所以Boot Rom的尋址空間直接決定了處理器代碼量的大小)。如采用16bit尋址,則整個(gè)Boot Rom中僅能存放64KB的代碼。對(duì)于比較復(fù)雜的系統(tǒng),代碼量會(huì)大大超出64KB,如果選擇更大容量,如選擇24bit地址的串行Boot Rom來(lái)存儲(chǔ)代碼,則處理器將無(wú)法進(jìn)行正常的Boot過(guò)程。

發(fā)明內(nèi)容
本發(fā)明提供一種擴(kuò)展串行引導(dǎo)代碼量的方法,以解決現(xiàn)有技術(shù)中因處理器引導(dǎo)時(shí)對(duì)尋址位數(shù)的制約而導(dǎo)致引導(dǎo)程序代碼量受到限制的問(wèn)題。
為解決上述問(wèn)題,本發(fā)明提供以下技術(shù)方案一種擴(kuò)展串行引導(dǎo)代碼量的方法,包括下述步驟處理器執(zhí)行初始引導(dǎo)程序,從串行存儲(chǔ)器中導(dǎo)入尋址位數(shù)大于所述初始引導(dǎo)程序的二次引導(dǎo)程序;執(zhí)行所述二次引導(dǎo)程序,由該二次引導(dǎo)程序控制處理器從串行存儲(chǔ)器中導(dǎo)入指定程序;處理器執(zhí)行所述指定程序完成相應(yīng)操作。
其中所述指定的程序?yàn)閼?yīng)用程序或控制程序。當(dāng)所述指定程序?yàn)榭刂瞥绦驎r(shí),處理器執(zhí)行該控制程序進(jìn)行控制判斷,并根據(jù)判斷結(jié)果執(zhí)行相應(yīng)操作。
所述控制判斷是指判斷應(yīng)用程序是否需要更新;如果是則先更新應(yīng)用程序,然后導(dǎo)入更新后的應(yīng)用程序并執(zhí)行,否則,直接導(dǎo)入應(yīng)用程序并執(zhí)行。
通過(guò)在內(nèi)部程序存儲(chǔ)區(qū)的首地址存放跳轉(zhuǎn)指令,使處理器在完成初始引導(dǎo)程序后跳轉(zhuǎn)到二次引導(dǎo)程序的主體代碼開(kāi)始運(yùn)行。
根據(jù)初始引導(dǎo)程序在引導(dǎo)時(shí)對(duì)代碼的解析過(guò)程確定所述二次引導(dǎo)程序在串行存儲(chǔ)器中的存儲(chǔ)格式。
本發(fā)明在現(xiàn)有技術(shù)的基礎(chǔ)上,通過(guò)多次引導(dǎo)來(lái)實(shí)現(xiàn)處理器和大容量BootRom的匹配,打破了處理器本身一些固有Boot方式的制約,從而擴(kuò)展了軟件代碼的存放空間。采用本發(fā)明,在Boot時(shí)可以根據(jù)需要對(duì)Boot Rom的尋址空間進(jìn)行擴(kuò)展,不必局限于處理器本身對(duì)Boot Rom的支持方式,因而使系統(tǒng)設(shè)計(jì)的靈活性大大增強(qiáng)。


圖1為處理器和串行Boot Rom的連接示意圖;圖2為SPI讀取數(shù)據(jù)的時(shí)序圖;圖3為程序代碼的存儲(chǔ)格式示意圖;圖4為初始引導(dǎo)程序讀取代碼有效標(biāo)志字的時(shí)序圖;圖5為初始引導(dǎo)程序讀取代碼首部的時(shí)序圖;圖6為初始引導(dǎo)程序讀取代碼塊的時(shí)序圖;圖7為本發(fā)明的流程圖。
具體實(shí)施例方式
本發(fā)明是采用多次引導(dǎo)(Boot)的方式,即通過(guò)二次Boot程序來(lái)接管初始Boot程序的工作,由二次Boot程序來(lái)完成用戶應(yīng)用程序的Boot過(guò)程;而二次Boot程序可以用較多地址位的方式尋址Boot Rom,從而擴(kuò)展處理器Boot時(shí)對(duì)外部BootRom的尋址能力。
本實(shí)施例以支持16bit Boot尋址的處理器和24bit串行Boot Rom連接為例來(lái)對(duì)本發(fā)明進(jìn)行說(shuō)明。
二次Boot程序完全按照初始引導(dǎo)程序Boot時(shí)對(duì)代碼塊的解析過(guò)程進(jìn)行編寫(xiě)和存儲(chǔ),并且該代碼在運(yùn)行時(shí)是采用24bit的地址來(lái)對(duì)Boot Rom進(jìn)行尋址。二次Boot程序在鏈接文件中指定該代碼的主體運(yùn)行在處理器的L2或者外部RAM存儲(chǔ)區(qū),在內(nèi)部程序存儲(chǔ)區(qū)的首地址存放跳轉(zhuǎn)指令,跳轉(zhuǎn)到二次Boot的主體代碼。由于固化初始Boot程序在完成之后是跳轉(zhuǎn)到內(nèi)部程序存儲(chǔ)區(qū)的首地址,因此這樣既可以保證在初始Boot后二次Boot程序可以正常運(yùn)行,也可以保證二次Boot程序本身在完成二次Boot后可以釋放其自身所占用的地址空間,不影響用戶應(yīng)用程序的運(yùn)行。
把二次Boot程序編譯生成二進(jìn)制文件,按照下列步驟燒入Boot Rom中(1)首先在Boot Rom的0x00處寫(xiě)入n1-1個(gè)程序代碼有效標(biāo)志字,去除了標(biāo)志字中的第一個(gè)字節(jié),該字節(jié)為0。由于這時(shí)Boot Rom需要24bit地址,這樣可以保證處理器在以16bit方式尋址時(shí)可以正確的讀取n1個(gè)標(biāo)志字。時(shí)序如圖4所示。
(2)在Boot Rom的0xn1 00處寫(xiě)入n2-1個(gè)代碼塊首部,去除了首部中的第一個(gè)字節(jié),該字節(jié)為0。這樣可以保證處理器在16bit方式尋址時(shí)可以正確讀取n2個(gè)首部字節(jié),時(shí)序如圖5所示。
(3)在Boot Rom的0x(n1+n2)00處寫(xiě)入n3-1個(gè)字節(jié)的代碼塊,去除了首部中的第一個(gè)字節(jié),該字節(jié)可以通過(guò)在源代碼首行加空指令(NOP)來(lái)保證為0。這樣可以保證處理器在16bit方式尋址時(shí)可以正確讀取n3個(gè)代碼塊,時(shí)序如附圖6所示。
重復(fù)上述(2)、(3)步驟,把二次Boot代碼全部寫(xiě)入Boot Rom中,則可以保證僅支持16bit尋址進(jìn)行Boot的處理器可以在初始Boot時(shí)完成對(duì)二次Boot程序的導(dǎo)入。
把最終的軟件包代碼燒入Boot Rom的0x(n1+n2+n3)00以后的地址段,該燒入段的首地址需要和二次Boot程序中Boot時(shí)指定的外部Boot Rom首地址相一致。
參閱圖7所示,處理器處理的具體過(guò)程如下步驟10處理器上電后開(kāi)始初始引導(dǎo)程序。
步驟20初始引導(dǎo)程序以16bit方式尋址,從串行Boot Rom中將二次Boot程序?qū)雰?nèi)存。
步驟30在導(dǎo)入完二次引導(dǎo)程序后,處理器執(zhí)行內(nèi)部程序存儲(chǔ)區(qū)的首地址中存放的跳轉(zhuǎn)指令,跳轉(zhuǎn)到二次Boot程序并運(yùn)行。二次Boot程序以24bit尋址的方式,完成應(yīng)用程序的導(dǎo)入。
步驟40執(zhí)行應(yīng)用程序,完成相應(yīng)的操作。如初始化處理器通信接口、開(kāi)始和外部通信、執(zhí)行相關(guān)的信號(hào)處理操作等。
步驟50完成引導(dǎo)。
二次引導(dǎo)程序?qū)氲某绦蜻€可以是控制程序代碼,控制程序在完成控制判斷和執(zhí)行相應(yīng)操作后,實(shí)現(xiàn)對(duì)應(yīng)用程序的再次Boot,從而實(shí)現(xiàn)多次Boot。
控制程序可以用來(lái)判斷是否更新應(yīng)用程序代碼,如果是則將新的應(yīng)用程序代碼更新原來(lái)的應(yīng)用程序代碼,然后再將更新后的代碼導(dǎo)入內(nèi)存并執(zhí)行,如果不需要更新則直接將應(yīng)用程序?qū)雰?nèi)存并執(zhí)行。
本實(shí)施例雖以支持16bit Boot尋址的處理器和24bit串行Boot Rom連接為例進(jìn)行說(shuō)明,但本發(fā)明的應(yīng)用并不僅限于此,如支持8bit Boot尋址的處理器和16bit串行Boot Rom連接等同樣可以采用本發(fā)明的方法進(jìn)行串行引導(dǎo)代碼量的擴(kuò)展,其原理與上述相同。
權(quán)利要求
1.一種擴(kuò)展串行引導(dǎo)代碼量的方法,其特征在于該方法包括下述步驟處理器執(zhí)行初始引導(dǎo)程序,從串行存儲(chǔ)器中導(dǎo)入尋址位數(shù)大于所述初始引導(dǎo)程序的二次引導(dǎo)程序;執(zhí)行所述二次引導(dǎo)程序,由該二次引導(dǎo)程序控制處理器從串行存儲(chǔ)器中導(dǎo)入指定程序;處理器執(zhí)行所述指定程序完成相應(yīng)操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述指定程序?yàn)閼?yīng)用程序或控制程序。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)所述指定程序?yàn)榭刂瞥绦驎r(shí),處理器執(zhí)行該控制程序進(jìn)行控制判斷,并根據(jù)判斷結(jié)果執(zhí)行相應(yīng)操作。
4.如權(quán)利要求3所述的方法,其特征在于,所述控制判斷是指判斷應(yīng)用程序是否需要更新;如果是則先更新應(yīng)用程序,然后導(dǎo)入更新后的應(yīng)用程序并執(zhí)行,否則,直接導(dǎo)入應(yīng)用程序并執(zhí)行。
5.如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,通過(guò)在內(nèi)部程序存儲(chǔ)區(qū)的首地址存放跳轉(zhuǎn)指令,使處理器在完成初始引導(dǎo)程序后跳轉(zhuǎn)到二次引導(dǎo)程序的主體代碼開(kāi)始運(yùn)行。
6.如權(quán)利要求5所述的方法,其特征在于,在二次引導(dǎo)程序中指定程序的主體運(yùn)行在處理器的二級(jí)緩存或者外部RAM存儲(chǔ)區(qū)。
7.如權(quán)利要求5所述的方法,其特征在于,根據(jù)初始引導(dǎo)程序在引導(dǎo)時(shí)對(duì)代碼的解析過(guò)程確定所述二次引導(dǎo)程序在串行存儲(chǔ)器中的存儲(chǔ)格式。
8.如權(quán)利要求1所述的方法,其特征在于,所述指定程序在串行存儲(chǔ)器中存儲(chǔ)的首地址與所述二次引導(dǎo)程序中指定的外部引導(dǎo)程序存儲(chǔ)器的首地址相同。
全文摘要
本發(fā)明公開(kāi)了一種擴(kuò)展串行引導(dǎo)代碼量的方法,以解決因處理器引導(dǎo)時(shí)對(duì)尋址位數(shù)的制約而導(dǎo)致引導(dǎo)程序代碼量受到限制的問(wèn)題;所述方法為處理器執(zhí)行初始引導(dǎo)程序從串行存儲(chǔ)器中導(dǎo)入尋址位數(shù)大于所述初始引導(dǎo)程序的二次引導(dǎo)程序;執(zhí)行所述二次引導(dǎo)程序,由該二次引導(dǎo)程序控制處理器從串行存儲(chǔ)器中導(dǎo)入指定程序;處理器執(zhí)行所述指定程序完成相應(yīng)操作。
文檔編號(hào)G06F9/445GK1716196SQ20041004838
公開(kāi)日2006年1月4日 申請(qǐng)日期2004年6月30日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者李連峰, 陶小平, 張銘虎, 汪秦嶺 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
乐平市| 张家界市| 玉田县| 满城县| 万载县| 广元市| 弥渡县| 承德县| 兰州市| 和田市| 德令哈市| 兰州市| 龙泉市| 高邑县| 和硕县| 垫江县| 乐亭县| 京山县| 清苑县| 崇仁县| 高雄县| 黄山市| 常宁市| 宁晋县| 景谷| 如皋市| 谷城县| 叶城县| 高邮市| 汝阳县| 竹北市| 平定县| 荥经县| 原阳县| 平南县| 石门县| 高邑县| 澄迈县| 揭阳市| 大同县| 孟州市|