本發(fā)明涉及直放站內模塊設計領域,尤其涉及一種直放站內模塊程序在線升級方法與系統(tǒng)。
背景技術:
直放站(包括數(shù)字直放站、模擬直放站和干線放大器)屬于同頻放大設備,是指在無線通信傳輸過程中起到信號增強的一種無線電發(fā)射中轉設備。直放站在工程使用中具備完整的遠程監(jiān)控和控制功能,能夠通過網(wǎng)關監(jiān)控中心獲取各個直放站工作的狀態(tài)和參數(shù),直放站是由各個功能模塊組成,包括低噪放、變頻以及功率放大模塊等;這些模塊的工作狀態(tài)需要傳遞給整機系統(tǒng)監(jiān)控,通常獨立模塊具有單獨的控制電路;特別對于功放模塊,其功耗占整機功耗約為90%,是直放站中最主要的功率模塊,具有單獨的控制電路;而由于成本的問題,控制單元采用低成本單片機與系統(tǒng)監(jiān)控通過串口連接。
由于直放站內模塊成本控制和模塊尺寸都要求嚴格,目前,大多數(shù)遠程升級功能均針對直放站整機系統(tǒng)監(jiān)控,而并未實現(xiàn)直放站內部模塊程序升級功能;直放站內部模塊程序在生產中通過編程器燒寫到芯片內,安裝在整機機箱內部,當需要修改單片機程序時需要從整機中拆下,由于射頻類模塊均有屏蔽蓋板,還必須打開內部模塊蓋板,再通過編程器進行程序升級或修改。對于已經(jīng)安裝好的整機來說,當需要對內部模塊程序升級時,通常的做法就是把整個直放站從安裝點拆下,發(fā)回廠里進行維修升級;這無疑在成本和時間上造成了極大地浪費,也給客戶造成產品質量差的嚴重影響。
現(xiàn)有的單片機程序升級方法或者技術中存在以下的不足:
1、直放站內部模塊程序升級(如單片機)通常要打開模塊蓋板通過編程器升級,操作復雜,可行性差。
2、采用外部存儲器或者芯片將升級代碼存于其中通過SPI總線、USB升級或預先將升級代碼存入單片機內的Flash中,然后根據(jù)升級代碼進行升級;這又對于Flash空間要求增加,而對成本和尺寸要求嚴格的直放站內部模塊通常只能使用Flash容量很小的單片機。
3、沒有考慮在升級時突然斷電導致程序跑飛或者代碼丟失的情況,而此時只能再次通過編程器下載程序,完全失去了在線升級功能的便捷性;而且在直放站模塊中,留給控制電路的空間非常有限,如果要增加掉電保護電路,就增加需要電壓電流檢測等電路,同時在單片機中增加保護程序代碼,這無疑就增加了電路的復雜性和控制電路面積以及增大程序代碼所占的空間。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術的不足,提供一種直放站內模塊程序在線升級方法與系統(tǒng),解決現(xiàn)有技術采用外部存儲器、將升級代碼預先存入單片機內的Flash中導致對成本和尺寸要求嚴格的直放站內單片機中的Flash容量空間增加的問題以及沒有考慮到程序升級過程中掉電而導致的程序跑飛、缺失和崩潰使得失去在線升級便捷性的問題。
本發(fā)明的目的是通過以下技術方案來實現(xiàn)的:一種直放站內模塊程序在線升級系統(tǒng),它包括上位機和直放站;所述的直放站包括主機MCU和內部升級模塊;所述的上位機實現(xiàn)存儲升級數(shù)據(jù),與直放站內的主機MCU或者內部升級模塊通信將升級數(shù)據(jù)傳送給內部升級模塊后完成程序在線升級;所述的主機MCU實現(xiàn)將上位機的相關升級命令和升級數(shù)據(jù)轉發(fā)給內部升級模塊;所述的內部升級模塊實現(xiàn)根據(jù)相關升級命令和升級數(shù)據(jù)完成程序的在線升級。
所述的內部升級模塊內有用戶程序和升級程序,所述的用戶程序和升級程序分別存于內部升級模塊內Flash中的不同地址,保證升級程序不被擦除。
所述的用戶程序放在Flash中的地址前段,所述的升級程序放在Flash中的地址末端。
所述的Flash地址前3字節(jié)處理為:首字節(jié)跳轉指令、第二和第三字節(jié)為升級程序入口地址高低字節(jié),保證內部升級模塊上電后首先跳轉到升級程序入口地址處執(zhí)行升級程序。
在內部升級模塊正常工作時執(zhí)行所述的用戶程序;所述的升級程序只在升級時使用,升級程序在第一次寫入后不再進行更改;所述的升級程序所占內部升級模塊內的Flash空間遠小于所述用戶程序所占內部升級模塊內的Flash空間。
一種直放站內模塊程序在線升級系統(tǒng)的在線升級方法,所述的方法包括的步驟如下:
S1、將升級數(shù)據(jù)存儲于上位機中,并把用戶程序和升級程序分別存于內部升級模塊內Flash中的不同地址;
S2、擦除內部升級模塊內的Flash,并寫入升級程序入口地址和用戶程序數(shù)據(jù);
S3、上位機將升級數(shù)據(jù)發(fā)送到內部升級模塊后完成升級;
S4、將新的用戶程序入口地址保存后寫入預定位置,結束并復位。
在進行S2步驟之前還包括判斷內部升級模塊是否收到正確的握手信息這一步驟。
所述判斷內部升級模塊是否收到正確的握手信息的具體步驟如下:
A1、硬件初始化;
A2、在規(guī)定時間內收到正確的握手信息后接收首地址數(shù)據(jù);
A3、對接收的首地址數(shù)據(jù)進行校驗后進入升級模式;
A4、沒有在規(guī)定時間收到正確的握手信息,尋找用戶程序,進入正常工作狀態(tài)。
所述S2的具體步驟如下:
S21、擦除內部升級模塊內Flash首扇區(qū)中舊的用戶程序;
S22、寫入Flash地址前3個字節(jié),保證上電或復位后跳轉到升級程序入口地址;
S23、按要求在Flash首扇區(qū)寫入新的用戶程序。
所述S4的具體步驟如下:
S31、上位機對升級數(shù)據(jù)和校驗碼一同分包發(fā)送,并進行校驗;
S32、校驗碼驗證正確后將升級數(shù)據(jù)寫入Flash,根據(jù)升級數(shù)據(jù)完成所有數(shù)據(jù)的寫入后,寫入用戶程序入口地址,完成程序的升級;
S33、校驗碼驗證不正確,判斷是否是升級數(shù)據(jù)有錯誤,如果升級數(shù)據(jù)沒有錯誤,則重新接收升級數(shù)據(jù);如果升級數(shù)據(jù)有錯誤,則清除用戶程序入口地址,重新發(fā)送握手信息。
本發(fā)明的有益效果是:一種直放站內模塊程序在線升級方法與系統(tǒng),具有以下優(yōu)點:
1、能夠直接低成本實現(xiàn)直放站內模塊單片機在線程序升級,避免了打開模塊蓋板通過編程器升級而導致的操作性復雜和可行性差的問題。
2、通過將升級數(shù)據(jù)存儲在上位機上而不是單獨存儲在單獨設置的外部存儲設備或者芯片中,在保證直放站內模塊尺寸和空間不會增大的同時又控制了直放站內模塊的成本。
3、上位機利用單片機串口將升級數(shù)據(jù)發(fā)送到直放站內模塊單片機中而不是將升級數(shù)據(jù)存儲在單片機內的Flash中,節(jié)約了直放站內部模塊通常只能使用Flash容量很小的單片機內Flash的空間。
4、在擦除Flash首扇區(qū)后,立即寫入前3個字節(jié)即跳轉到升級程序入口地址的數(shù)據(jù),保證在單片機上電或復位后始終先執(zhí)行升級程序,在最短的時間內成功寫入升級程序入口地址;并通過硬件電路提供足夠的電能維持時間,保證在掉電后有足夠的時間成功寫入升級程序入口地址。
附圖說明
圖1為系統(tǒng)第一種連接結構圖;
圖2為系統(tǒng)第二種連接結構圖;
圖3為系統(tǒng)第三種連接結構圖;
圖4為PC上位機流程圖;
圖5為在線升級程序流程圖。
具體實施方式
下面結合附圖進一步詳細描述本發(fā)明的技術方案,但本發(fā)明的保護范圍不局限于以下所述。
一種直放站內模塊程序在線升級系統(tǒng),它包括上位機和直放站;所述的直放站包括主機MCU和內部升級模塊;所述的上位機實現(xiàn)存儲升級數(shù)據(jù),與直放站內的主機MCU或者內部升級模塊通信將升級數(shù)據(jù)傳送給內部升級模塊后完成程序在線升級;所述的主機MCU實現(xiàn)將上位機的相關升級命令和升級數(shù)據(jù)轉發(fā)給內部升級模塊;所述的內部升級模塊實現(xiàn)根據(jù)相關升級命令和升級數(shù)據(jù)完成程序的在線升級。
所述的內部升級模塊內有用戶程序和升級程序,所述的用戶程序和升級程序分別存于內部升級模塊內Flash中的不同地址,保證升級程序不被擦除;所述的用戶程序是指在模塊正常工作時的控制程序;所述的升級程序是指在程序需要升級時所執(zhí)行的代碼程序。
所述的用戶程序放在Flash中的地址前段,所述的升級程序放在Flash中的地址末端。
所述的Flash地址前3字節(jié)處理為:首字節(jié)跳轉指令、第二和第三字節(jié)為升級程序入口地址高低字節(jié),保證內部升級模塊上電后首先跳轉到升級程序入口地址處執(zhí)行升級程序;在升級程序中加入定時器,當在規(guī)定時間內收到PC上位機握手信息并解析和校驗正確后進入升級模式,若在規(guī)定時間內未收到正確握手信息,則尋找用戶程序,若存在用戶程序則跳轉執(zhí)行用戶程序,進入正常工作狀態(tài)。
所述的用戶程序還包括可根據(jù)條件直接跳轉到升級程序中進行升級工作,即可以在正常工作狀態(tài)中不用重啟電源發(fā)送握手信息而直接跳轉到升級程序。
單片機升級程序在上電或復位后執(zhí)行,在一定時間內未收到正確握手信息時則執(zhí)行正常的用戶程序,如果在模塊正常工作時想要升級那就要重啟或復位,而且需要在規(guī)定時間內進行握手,通過在正常的用戶程序內適當增加代碼來判斷是否符合升級條件,實現(xiàn)從用戶程序到升級程序的直接跳轉,不用重啟或復位,在跳轉到升級程序后仍然需要發(fā)送握手信息來判斷握手信息的是否正確。
所述單片機程序在線升級是指通過單片機串口和內部Flash實現(xiàn)在線升級。
在內部升級模塊正常工作時執(zhí)行所述的用戶程序;所述的升級程序只在升級時使用,升級程序在第一次寫入后不再進行更改;所述的升級程序所占內部升級模塊內的Flash空間遠小于所述用戶程序所占內部升級模塊內的Flash空間。
如升級程序代碼所占Flash空間小于1.5K,用戶程序在編寫代碼時根據(jù)單片機Flash容量和升級程序代碼大小綜合考慮;例如單片機內部Flash空間大小為32K,則用戶程序最大為31.5K。
所述的升級程序在執(zhí)行升級過程時需要擦寫單片機內部Flash,將擦除舊的用戶程序代碼寫入新的用戶程序代碼并將升級數(shù)據(jù)寫入升級程序入口地址后完成升級;
發(fā)明人意想不到地發(fā)現(xiàn)擦除Flash首扇區(qū)需要約25ms,寫入前3個字節(jié)需要約150μs,總共時間小于30ms;因此,只要電源掉電后單片機供電能維持的時間超過30ms,則在任何情況下掉電都不會導致升級數(shù)據(jù)的丟失。所以,為了解決在升級過程中突然斷電的問題,采用一簡易的硬件電路,該硬件電路中6V電源下降到4.5V,也能保證3.3V的單片機電源供電,升級程序中單片機的電流控制在100mA以內,硬件6V電源電路采用3300μF電容,在電源掉電后可維持約為50ms,完全滿足前面所述的30ms。
所述的上位機包括PC上位機、電腦以及一切智能移動終端;所述的內部升級模塊包括單片機和其他可實現(xiàn)在線升級的芯片或者程序模塊;
優(yōu)選地,上位機為PC上位機,內部升級模塊為直放站內的模塊單片機;如圖1所示,PC上位機直接通過串口線和專用轉接頭與模塊單片機接口連接,實現(xiàn)單片機程序在線升級。
如圖2所示,PC上位機通過串口線與直放站內的主機MCU連接,主機MCU與模塊單片機連接,主機MCU轉送PC上位機升級數(shù)據(jù)對模塊單片機進行在線程序升級。
如圖3所示,PC上位機通過無線方式(如無線modem、無線通信網(wǎng)絡等)與直放站內的主機MCU實現(xiàn)通信連接,主機MCU與模塊單片機連接,主機MCU轉送PC上位機升級數(shù)據(jù)對模塊單片機進行在線升級。
如圖4所示,將升級數(shù)據(jù)存儲在PC上位機中,PC上位機首先確定與直放站的連接方式,并完成相關設置,隨后根據(jù)所選擇的升級數(shù)據(jù)文件是否符合要求,如文件格式、文件長度、寫入地址等,然后發(fā)送握手數(shù)據(jù),只有在正確握手后方可升級,最后按照一定的格式將升級數(shù)據(jù)文件分包發(fā)送,所發(fā)送的升級數(shù)據(jù)全部進行校驗,同數(shù)據(jù)一同發(fā)送校驗碼,并根據(jù)返回信息判斷寫入的正確性。
如圖5所示,一種直放站內模塊程序在線升級系統(tǒng)的在線升級方法,所述的方法包括的步驟如下:
S1、將升級數(shù)據(jù)存儲于上位機中,并把用戶程序和升級程序分別存于內部升級模塊內Flash中的不同地址;
S2、擦除內部升級模塊內的Flash,并寫入升級程序入口地址和用戶程序數(shù)據(jù);
S3、上位機將升級數(shù)據(jù)發(fā)送到內部升級模塊后完成升級;
S4、將新的用戶程序入口地址保存后寫入預定位置,結束并復位。
當升級完成后,必須要跳轉執(zhí)行新的用戶程序,而這個新用戶程序入口地址和原來舊的用戶程序入口地址是不相同的,因此需要保存下來,其保存的位置就是事先規(guī)劃好的“預定位置”,這個位置專門保存用戶程序入口地址,是在單片機內部FLASH中。
在進行S2步驟之前還包括判斷內部升級模塊是否收到正確的握手信息這一步驟。
所述判斷內部升級模塊是否收到正確的握手信息的具體步驟如下:
A1、硬件初始化;
A2、在規(guī)定時間內收到正確的握手信息后接收首地址數(shù)據(jù);如果握手信息檢驗錯誤,則重新發(fā)送握手信息;如果首地址數(shù)據(jù)檢驗錯誤,則重新發(fā)送握手信息;
A3、對接收的首地址數(shù)據(jù)進行校驗成功后進入升級模式;如果校驗不成功則重新發(fā)送握手信息;
A4、沒有在規(guī)定時間收到正確的握手信息,尋找用戶程序,進入正常工作狀態(tài)。
所示的硬件初始化包括對時鐘配置、端口配置和串口等進行初始化。
所述的A4的具體步驟如下:
A41、發(fā)送握手信息的時間超時,尋找是否存在用戶程序;如果存在則執(zhí)行用戶程序,進入正常工作狀態(tài),如果不存在則重新發(fā)送握手信息;
A42、沒有收到握手信息,尋找是否存在用戶程序;如果存在則執(zhí)行用戶程序,進入正常工作狀態(tài),如果不存在則重新發(fā)送握手信息;
所述S2的具體步驟如下:
S21、擦除內部升級模塊內Flash首扇區(qū)中舊的用戶程序;
S22、寫入Flash地址前3個字節(jié),跳轉到升級程序入口地址;
S23、按要求在Flash首扇區(qū)寫入新的用戶程序。
所述S4的具體步驟如下:
S31、上位機對升級數(shù)據(jù)和校驗碼一同分包發(fā)送,并進行校驗;
S32、校驗碼驗證正確后將升級數(shù)據(jù)寫入Flash,根據(jù)升級數(shù)據(jù)完成所有數(shù)據(jù)的寫入后,寫入用戶程序入口地址,完成程序的升級;
S33、校驗碼驗證不正確,判斷是否是升級數(shù)據(jù)有錯誤,如果升級數(shù)據(jù)沒有錯誤,則重新接收升級數(shù)據(jù);如果升級數(shù)據(jù)有錯誤,則清除用戶程序入口地址,重新發(fā)送握手信息。
從握手信息到分包升級數(shù)據(jù)接收,所有數(shù)據(jù)均需要校驗,只要有錯誤發(fā)生則升級失敗,只有當全部數(shù)據(jù)校驗正確并完成寫入Flash后,才將用戶程序入口地址保存起來,否則用戶程序入口地址將清除,避免在升級發(fā)生錯誤后跳轉到錯誤的用戶程序地址中。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述構想范圍內,通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權利要求的保護范圍內。