專利名稱:一種程序燒寫(xiě)方法和系統(tǒng)以及一種待燒寫(xiě)裝置和燒寫(xiě)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及燒寫(xiě)技術(shù),特別涉及一種利用控制器局域網(wǎng)絡(luò)(CAN, Controller Area Network )總線來(lái)實(shí)現(xiàn)的脫機(jī)程序燒寫(xiě)方法和系統(tǒng),以及一種 待燒寫(xiě)裝置和燒寫(xiě)裝置。
背景技術(shù):
在汽車技術(shù)高速發(fā)展的今天,車身上面的電子產(chǎn)品越來(lái)越多。在開(kāi)發(fā)及 測(cè)試時(shí),這些電子產(chǎn)品中的用戶程序經(jīng)常需要進(jìn)行更新。但是,這些電子產(chǎn) 品通常都是被內(nèi)飾隱藏在里面的,所以,每次進(jìn)行程序更新時(shí),都需要從車 上拆下這些電子產(chǎn)品來(lái)重新進(jìn)行程序燒寫(xiě),燒寫(xiě)完成之后,再將其重新安裝 上去;而且,重新燒寫(xiě)過(guò)程通常都是在非脫機(jī)狀態(tài)下,由電腦及開(kāi)發(fā)設(shè)備等 必要工具的輔助才能完成??傊?,用戶實(shí)際操作起來(lái)很不方便。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種程序燒寫(xiě)方法,能夠方便用 戶使用。
本發(fā)明的另一目的在于提供一種程序燒寫(xiě)裝置,能夠方便用戶使用。 本發(fā)明的又一目的在于提供一種待燒寫(xiě)裝置,能夠方便用戶使用。 本發(fā)明的再一目的在于提供一種燒寫(xiě)裝置,能夠方便用戶使用。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 一種程序燒寫(xiě)方法,預(yù)先將帶有控制器局域網(wǎng)絡(luò)CAN模塊的用于進(jìn)行程序
燒寫(xiě)的母板以及帶有CAN模塊的等待進(jìn)行程序燒寫(xiě)的子板通過(guò)CAN總線相
連;其中,所述子板中預(yù)先燒寫(xiě)有引導(dǎo)程序;該方法包括
所述子板進(jìn)行復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行用戶程序的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述母板的用戶程序,所述用戶 程序?yàn)樗瞿赴孱A(yù)先保存于自身緩存Flash中的所述子板的用戶程序,并寫(xiě)入 到所述子板的Flash中。
一種程序燒寫(xiě)系統(tǒng),該系統(tǒng)包括
帶有控制器局域網(wǎng)絡(luò)CAN模塊的用于進(jìn)行程序燒寫(xiě)的母板以及帶有CAN 模塊的等待進(jìn)行程序燒寫(xiě)的子板,兩者通過(guò)CAN總線相連,所述母板中預(yù)先 燒寫(xiě)有母板程序,所述子板中預(yù)先燒寫(xiě)有引導(dǎo)程序;其中
所述子板,用于在復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行用戶程序 的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述母板的用戶程序,所述 用戶程序?yàn)樗瞿赴逯蓄A(yù)先保存的所述子板的用戶程序,并寫(xiě)入到自身的緩存 Flash中;
所述母板,用于在自身的Flash中保存所述子板的用戶程序,并在接收到 需要給所述子板中的用戶程序進(jìn)行更新的命令后,由所述母板程序讀取所述母 板Flash中保存的所述子板的用戶程序,并通過(guò)CAN總線發(fā)送給所述子板。
一種待燒寫(xiě)裝置,該裝置包括第一控制器局域網(wǎng)絡(luò)CAN模塊以及第一存 儲(chǔ)模塊;
所述待燒寫(xiě)裝置通過(guò)所述第一 CAN模塊與同樣具備CAN模塊的燒寫(xiě)裝置 利用CAN總線相連;所述第一存儲(chǔ)模塊中預(yù)先燒寫(xiě)有引導(dǎo)程序;
所述第一存儲(chǔ)單元,用于在復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行 用戶程序的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述燒寫(xiě)裝置的用 戶程序,所述用戶程序?yàn)樗鰺龑?xiě)裝置中預(yù)先保存的所述待燒寫(xiě)裝置的用戶程 序,并寫(xiě)入到自身的緩存Flash中。
一種燒寫(xiě)裝置,該裝置包括第二控制器局域網(wǎng)絡(luò)CAN模塊以及第二存儲(chǔ) 模塊;
所述燒寫(xiě)裝置通過(guò)所述第二 CAN模塊與同樣具備CAN模塊的待燒寫(xiě)裝置 利用CAN總線相連;所述第二存儲(chǔ)模塊中預(yù)先燒寫(xiě)有母板程序;
7所述第二存儲(chǔ)^f莫塊,用于在自身的緩存Flash中保存所述待燒寫(xiě)裝置的用 戶程序,并在接收到需要給所述待燒寫(xiě)裝置中的用戶程序進(jìn)行更新的命令后, 由所述母板程序讀取所述Flash中保存的所述子板的用戶程序,并通過(guò)CAN總 線發(fā)送給所述待燒寫(xiě)裝置。
可見(jiàn),采用本發(fā)明的技術(shù)方案,預(yù)先將帶有CAN模塊的母板以及帶有CAN 模塊的子板通過(guò)CAN總線相連接;當(dāng)子板進(jìn)行復(fù)位后,確定是否需要進(jìn)行用 戶程序的更新,如果是,則通過(guò)CAN總線接收來(lái)自母板中預(yù)先保存的用戶程 序,并寫(xiě)入到自身的Flash中。與現(xiàn)有技術(shù)相比,本發(fā)明所述方案中可通過(guò)CAN 總線直接更新子板中的用戶程序,省去了每次更新都需要拆卸子板的麻煩;而 且,可以脫機(jī)燒寫(xiě),不需要電腦和其它開(kāi)發(fā)工具,只需母板和CAN總線即可 完成程序更新的過(guò)程,簡(jiǎn)單快捷,方便了用戶使用。
圖1為本發(fā)明程序燒寫(xiě)方法實(shí)施例的流程圖。 圖2為本發(fā)明程序燒寫(xiě)系統(tǒng)實(shí)施例的組成結(jié)構(gòu)示意圖。 圖3為本發(fā)明待燒寫(xiě)裝置實(shí)施例的組成結(jié)構(gòu)示意圖。 圖4為本發(fā)明燒寫(xiě)裝置實(shí)施例的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式
針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提出一種利用CAN總線實(shí)現(xiàn)的脫機(jī)燒 寫(xiě)方案。其具體實(shí)現(xiàn)包括預(yù)先將帶有CAN模塊的用于進(jìn)行程序燒寫(xiě)的母板 以及帶有CAN模塊的等待進(jìn)行程序燒寫(xiě)的子板通過(guò)CAN總線相連;子板在進(jìn) 行復(fù)位后,確定是否需要進(jìn)行用戶程序的更新,如果是,則通過(guò)CAN總線接 收來(lái)自母板的用戶程序,并寫(xiě)入到自身的緩存(Flash)中。
這里所提到的用戶程序是指母板中預(yù)先保存的子板的用戶程序。對(duì)于母板 來(lái)說(shuō),在其上電后,根據(jù)接收到的用戶命令確定是需要給子板中的用戶程序進(jìn) 行更新,還是需要給自身預(yù)先保存的所述子板的用戶程序進(jìn)行更新;如果是需要給子板中的用戶程序進(jìn)行更新,則將自身預(yù)先保存的子板用戶程序通過(guò)CAN 總線發(fā)送給子板;否則,擦除自身Flash中預(yù)先保存的子板用戶程序,并從上 位機(jī)接收新的用戶程序,寫(xiě)入到自身的Flash中;之后,當(dāng)接收到需要給子板 中的用戶程序進(jìn)行更新的命令后,將自身Flash中保存的子板用戶程序通過(guò) CAN總線發(fā)送給子板。對(duì)于上位機(jī)來(lái)說(shuō),其預(yù)先會(huì)將子板的源程序編譯成HEX 文件并進(jìn)行保存,當(dāng)接收到來(lái)自用戶的文件發(fā)送命令后,將該HEX文件發(fā)送給 母板,以對(duì)母板中保存的子板用戶程序進(jìn)行更新。
在實(shí)際應(yīng)用中,上述母板和子板的確定及寫(xiě)入等功能可分別由預(yù)先燒寫(xiě)在 母板中的母板程序以及子板中的引導(dǎo)程序來(lái)完成。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí) 施例,對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說(shuō)明。
圖1為本發(fā)明程序燒寫(xiě)方法實(shí)施例的流程圖。假設(shè)本實(shí)施例中的母板在更 新子板中的用戶程序之前,首先需要對(duì)自身保存的子板用戶程序進(jìn)行更新。另 外,假設(shè)本實(shí)施例中的母板和子板單片機(jī)均為帶有CAN模塊的外圍接口控制 器(PIC, Peripheral Interface Controller) 18系列單片機(jī);其中母板的PIC 18系 列單片機(jī)可為PIC18系列的4680,通過(guò)串口與上位機(jī)進(jìn)行通訊。那么,如圖1 所示,包括以下步驟
步驟101:將母板和上位機(jī)進(jìn)行連接。
假設(shè)本步驟之前,預(yù)先已經(jīng)將子板的源程序通過(guò)編譯軟件編譯成了 HEX文 件并保存在上位機(jī)中,具體如何編譯為現(xiàn)有技術(shù),不再贅述。本步驟中,使用 串口線將母板和上位機(jī),如個(gè)人計(jì)算機(jī)(PC, Personal Computer )連接起來(lái)。
步驟102:打開(kāi)位于上位才幾中的串口調(diào)試助手SSCOM3.2,設(shè)置好正確的 波特率(默認(rèn)為19200bps),并對(duì)母板進(jìn)行上電。
串口調(diào)試助手將打印出字符"3A",以提示用戶進(jìn)入將HEX文件發(fā)送到母 板上的階段。
本實(shí)施例中,釆用現(xiàn)有的串口調(diào)試工具串口調(diào)試助手SSCOM3.2作為上位 機(jī)軟件,從而節(jié)省了重新開(kāi)發(fā)上位機(jī)軟件所需的時(shí)間。步驟103:母板進(jìn)行上電,并判斷是需要給子板中的用戶程序進(jìn)行更新, 還是需要給自身預(yù)先保存的子板用戶程序進(jìn)行更新,如果是需要給子板中的用 戶程序進(jìn)行更新,則執(zhí)行步驟109;否則,執(zhí)行步驟104。
母板上預(yù)先設(shè)置有不同的按鍵,每個(gè)按鍵分別代表不同的功能,比如,用
程序的按鍵等。用戶可通過(guò)操作這些按鍵向母板發(fā)出相應(yīng)的命令,母板接收到 用戶的命令后,即會(huì)執(zhí)行相應(yīng)的功能。由于本實(shí)施例中需要對(duì)母板中保存的子 板用戶程序進(jìn)行更新,所以,在母板上電完成后,用戶需要按下母板上相應(yīng)的 按鍵,以通知母板進(jìn)入更新?tīng)顟B(tài)。母板根據(jù)接收到的用戶命令進(jìn)行判斷,以確 定是需要給子板中的用戶程序進(jìn)行更新,還是需要給自身預(yù)先保存的子板用戶 程序進(jìn)行更新,如果是第一種情況,則執(zhí)行步驟109;如果是第二種情況,則 執(zhí)行步驟104。
步驟104:母板擦除自身Flash中原有的子板用戶程序,并等待來(lái)自上位機(jī) 的新的用戶程序。
步驟105:用戶在串口調(diào)試助手SSCOM3.2所顯示的界面中打開(kāi)"選擇文 件"按鈕,并選擇要發(fā)送給母板的HEX文件,然后點(diǎn)擊"發(fā)送文件"按鈕;上 位機(jī)隨即將用戶所選擇的HEX文件發(fā)送給母板。
本步驟中所提到的要發(fā)送給母板的HEX文件,即為步驟101中所提到的利 用子板的源程序編譯而成的HEX文件。
步驟106:母板接收來(lái)自上位機(jī)的HEX文件,并寫(xiě)入到自身的Flash中。
HEX文件的發(fā)送時(shí)長(zhǎng)視HEX文件的大小而定。另外,可在母板上設(shè)置指 示燈,用于指示母板所處的不同的工作狀態(tài)。比如,在接收HEX文件的過(guò)程中, 母板上的指示燈可通過(guò)持續(xù)閃爍,提示用戶當(dāng)前是在對(duì)母板中保存的子板用戶 程序進(jìn)行更新。
另夕卜,母板在接收到來(lái)自上位機(jī)的HEX文件后,還可對(duì)其進(jìn)行校-驗(yàn),以保 證接收到的數(shù)據(jù)是正確的,從而避免將錯(cuò)誤的數(shù)據(jù)寫(xiě)入到Flash中。具體如何 校驗(yàn)為現(xiàn)有技術(shù),不再贅述。步驟107: HEX文件發(fā)送完畢后,串口調(diào)試助手SSCOM3.2顯示"發(fā)送完 畢"的提示。
之后,即可進(jìn)入由母板對(duì)子板中的用戶程序進(jìn)行更新的過(guò)程。 步驟108:利用CAN總線將母板和子板進(jìn)行連接,并對(duì)子板進(jìn)行上電。 步驟109:母板根據(jù)接收到的用戶命令,向子板發(fā)送通知命令,以通知子 板需要進(jìn)行用戶程序的更新。
依據(jù)之前的介紹可知,母板上設(shè)置有不同的按鍵,本步驟中,用戶點(diǎn)擊相 應(yīng)的按鍵(與母板單片機(jī)的RB5引腳相連的按鍵)后,母板即可知道當(dāng)前需要 進(jìn)入對(duì)子板中的用戶程序進(jìn)行更新的過(guò)程,隨即向子板發(fā)出通知命令。此時(shí), 如果母板仍然和上位機(jī)處于連接狀態(tài),則串口調(diào)試助手SSCOM3.2會(huì)打印出字 符"20 08",如果進(jìn)入失敗,則串口調(diào)試助手SSCOM3.2會(huì)打印出字符"E0 0E"。 另外,本實(shí)施例中,可定義母板和子板之間利用CAN總線進(jìn)行通信的協(xié) 議。比如,母板向子板發(fā)送的通知命令可以為
uchar StartUpdata[8] = (Oxff, Oxaa, 0x55, 0x00, 0x20, 0x08, 0x06, 0x13}。 步驟110:子板進(jìn)行復(fù)位,判斷是否需要進(jìn)行用戶程序的更新,如果是, 則執(zhí)行步驟lll;否則,結(jié)束流程。
子板判斷是否需要進(jìn)行用戶程序的更新的方式可以是子板判斷是否接收 到母板發(fā)來(lái)的通知命令,且該通知命令中順序攜帶有Oxff、 Oxaa、 0x55、 0x00、 0x20、 0x08、 0x06以及0xl3 8個(gè)字符,如果是,則確定需要進(jìn)行用戶程序的更 新,執(zhí)行步驟111;對(duì)于"否則"這種情況,由于子板如何進(jìn)行后續(xù)的處理與 本發(fā)明無(wú)關(guān),故不作詳細(xì)介紹,比如可以直接運(yùn)行Flash中原有的用戶程序等。 本步驟中,子板如何進(jìn)行復(fù)位為現(xiàn)有技術(shù),不再贅述。 步驟lll:子板執(zhí)行與母板之間的握手過(guò)程。
用戶點(diǎn)擊相應(yīng)的4皿(與母板單片機(jī)的RB7引腳相連的按鍵),以通知母 板開(kāi)始進(jìn)行與子板之間的數(shù)據(jù)幀轉(zhuǎn)送過(guò)程,但在執(zhí)行這一過(guò)程之前,需要首先 執(zhí)行母板與子板之間的握手過(guò)程,具體實(shí)現(xiàn)方式為
母板向子板發(fā)送握手命令uchar StartHandShake[8] = (Oxff, Oxaa, 0x55, 0x00, 0x19, 0x84, Oxll, 0x20};
子板正確接收到上述8個(gè)字符后,向母板返回確認(rèn)字符"0x20";進(jìn)一步地, 在向母板返回確認(rèn)字符"0x20"之前,子板還需要確定自身Flash中是否保存 有用戶程序,如果有,則擦除;
母板接收到確認(rèn)字符"0x20"后,確認(rèn)握手完畢,開(kāi)始向子板發(fā)送數(shù)據(jù)幀。
步驟112:母板向子板發(fā)送更新子板用戶程序的數(shù)據(jù)幀,子板將接收到的 數(shù)據(jù)寫(xiě)入到自身的Flash中,然后結(jié)束流程。
本步驟中,母板通過(guò)CAN總線向子板發(fā)送數(shù)據(jù)幀,每一幀的格式為
幀頭
母板向子板發(fā)送幀頭字符"0x55",等待子板返回第一握手字符"0xcc,,; 子板接收到幀頭字符"0x55"后,發(fā)送第一握手字符"0xcc',給母板; 母板接收到第一握手字符"0xcc"后,開(kāi)始進(jìn)行數(shù)據(jù)部分的發(fā)送; 數(shù)據(jù)
母板讀取自身Flash中的一個(gè)地址塊(每個(gè)地址塊中包括64個(gè)字節(jié)的用戶 程序數(shù)據(jù)),并將讀取到的數(shù)據(jù)發(fā)送給子板, 一共發(fā)送64個(gè)字節(jié); 子板接收到這64字節(jié)后,將其暫存到一個(gè)64字節(jié)的緩沖區(qū)中; 校驗(yàn)
母板接著發(fā)送校驗(yàn)和給子板;
子板根據(jù)接收到的校驗(yàn)和對(duì)暫存在緩沖區(qū)中的數(shù)椐進(jìn)行校驗(yàn),具體如何校 驗(yàn)為現(xiàn)有技術(shù),不再贅述;如果校驗(yàn)成功,則將暫存在緩沖區(qū)中的數(shù)據(jù)寫(xiě)入到 自身的Flash中,并發(fā)送第三握手字符"0x79"給母板,母板接收到第三握手 字符"0x79"后,接著發(fā)送幀尾給子板;如果校驗(yàn)失敗,則發(fā)送第二握手字符 "0xe9"給母板,母板接收到此第二握手字符"0xe9"后,會(huì)對(duì)數(shù)據(jù)進(jìn)行重發(fā), 即重復(fù)執(zhí)行上述發(fā)送幀頭、數(shù)據(jù)以及校驗(yàn)的過(guò)程,直到校驗(yàn)成功為止。
幀尾
母板向子板發(fā)送第一幀尾字符"0xaa",并等待子板返回第四握手字符
12"0x88";
子板接收到第一幀尾字符"Oxaa"后,發(fā)送第四握手字符"0x88"給母板; 母板接收到第四握手字符"0x88"后,接著發(fā)送下一個(gè)地址塊的數(shù)據(jù)。 結(jié)束
母板按照上述方式依次發(fā)送自身Flash中隨后的地址塊中的數(shù)據(jù),但對(duì)于 最后一個(gè)地址塊,發(fā)送幀尾的方式將有所不同,這種情況下,母板將直接向子 板發(fā)送第二幀尾字符"0x69";同時(shí),如果和上位機(jī)還處于連接狀態(tài)的話,向上 位機(jī)發(fā)送字符"0x88",相應(yīng)地,上位機(jī)中的串口調(diào)試助手SSCOM3.2會(huì)打印 出字符"88",以提示用戶更新過(guò)程結(jié)束。
另外,在上述母板向子板發(fā)送數(shù)據(jù)幀的過(guò)程中,如杲母板仍然和上位機(jī)處 于連接狀態(tài),那么串口調(diào)試助手SSCOM3.2會(huì)將所發(fā)送的HEX文件的數(shù)據(jù)打 印出來(lái),但前提是,用戶需要預(yù)先選中串口調(diào)試助手所顯示的界面中的"HEX 顯示"按鈕。同時(shí),母板上的指示燈會(huì)通過(guò)不斷的閃爍來(lái)提示用戶當(dāng)前正在對(duì) 子板的用戶程序進(jìn)行更新。
至此,即完成了對(duì)子板中的用戶程序的更新過(guò)程,之后,子板即可根據(jù)需 要運(yùn)行其更新后的用戶程序。
需要說(shuō)明的是,如果在母4反向子板發(fā)送數(shù)據(jù)幀的過(guò)程中,母板或子板發(fā)生 死機(jī),系統(tǒng)會(huì)自動(dòng)復(fù)位,并可看到串口調(diào)試助手再次打印出字符"3A",當(dāng)然, 前提是母板和上位機(jī)處于連接狀態(tài);同時(shí),母板上的指示燈會(huì)恢復(fù)為復(fù)位狀態(tài), 此時(shí)只需重新從步驟108中所述的對(duì)子板進(jìn)行復(fù)位開(kāi)始執(zhí)行即可。
基于上述方法,圖2為本發(fā)明程序燒寫(xiě)系統(tǒng)實(shí)施例的組成結(jié)構(gòu)示意圖。如 圖2所示,該系統(tǒng)包括帶有CAN模塊的用于進(jìn)行程序燒寫(xiě)的母板21以及帶 有CAN模塊的等待進(jìn)行程序燒寫(xiě)的子板22,兩者通過(guò)CAN總線相連,并且, 母板21中預(yù)先燒寫(xiě)有母板程序,子板22中預(yù)先燒寫(xiě)有引導(dǎo)程序;其中
子板22,用于在復(fù)位后,利用引導(dǎo)程序確定是否需要進(jìn)行用戶程序的更新, 如果是,則通過(guò)CAN總線接收來(lái)自母板21的用戶程序,所述用戶程序?yàn)槟赴?21中預(yù)先保存的子板22的用戶程序,并寫(xiě)入到自身的Flash中;母板21,用于在自身的Flash中保存子板22的用戶程序,并在接收到需要 給子板22中的用戶程序進(jìn)行更新的命令后,由母板程序讀取母板21的Flash 中保存的子板22的用戶程序,并通過(guò)CAN總線發(fā)送給子板22;該母板21還 可進(jìn)一步用于,在上電后,根據(jù)接收到的用戶命令,由母板程序確定是需要給 子板22中的用戶程序進(jìn)行更新,還是需要給自身預(yù)先保存的子板22的用戶程 序進(jìn)行更新,如果是需要給自身預(yù)先保存的子板22的用戶程序進(jìn)行更新,則擦 除自身Flash中預(yù)先保存的子板22的用戶程序,并接收新的用戶程序,寫(xiě)入到 自身的Flash中。在實(shí)際應(yīng)用中,可通過(guò)設(shè)置在母板21上的指示燈(未圖示) 來(lái)指示母板21當(dāng)前所處的工作狀態(tài),且脫機(jī)可用。
此外,該系統(tǒng)還可進(jìn)一步包括上位機(jī)23,用于將子板22的源程序編譯 成HEX文件并進(jìn)行保存,在接收到來(lái)自用戶的文件發(fā)送命令后,將該HEX文 件發(fā)送給母板21。
本實(shí)施例中,母板21和子板22的單片機(jī)均為PIC18系列單片機(jī),其中母 板21的PIC18系列單片機(jī)上帶有串口 ,通過(guò)該串口與上位機(jī)23進(jìn)行通訊。另 外,原則上,母板21內(nèi)的母板程序和子板22內(nèi)的引導(dǎo)程序可以存放在母板21 和子板22中的整個(gè)程序空間中的任何位置,但是為了簡(jiǎn)單方便、具有通用性和 盡量減少對(duì)用戶程序的影響,本實(shí)施例中將母板程序和子板程序均燒寫(xiě)在各自 內(nèi)存的最后3K的一段程序空間中;而且,子板中的用戶程序的入口地址(主 函數(shù)地址)可統(tǒng)一定位在0x200。另外,在實(shí)際應(yīng)用中,用戶程序的大小會(huì)受 到母板內(nèi)存大小的限制,如果當(dāng)前母板單片機(jī)的內(nèi)存不能滿足要求,可選用內(nèi) 存較大的帶有CAN模塊和串口的其它PIC單片機(jī)來(lái)進(jìn)行開(kāi)發(fā)。
圖3為本發(fā)明待燒寫(xiě)裝置實(shí)施例的組成結(jié)構(gòu)示意圖。如圖3所示,該裝置 包括第一 CAN模塊31以及第一存儲(chǔ)模塊32;
該待燒寫(xiě)裝置通過(guò)第一 CAN模塊31與同樣具備CAN模塊的燒寫(xiě)裝置利 用CAN總線相連;第一存儲(chǔ)^t塊32中預(yù)先燒寫(xiě)有引導(dǎo)程序;
第一存儲(chǔ)模塊32,用于在復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行用 戶程序的更新,如果是,則通過(guò)CAN總線接收來(lái)自燒寫(xiě)裝置的用戶程序,所述用戶程序?yàn)闊龑?xiě)裝置中預(yù)先保存的所述待燒寫(xiě)裝置的用戶程序,并寫(xiě)入到自
身的Flash中。
圖4為本發(fā)明燒寫(xiě)裝置實(shí)施例的組成結(jié)構(gòu)示意圖。如圖4所示,該裝置包 括第二CAN模塊41以及第二存儲(chǔ)模塊42;
該燒寫(xiě)裝置通過(guò)第二 CAN模塊41與同樣具備CAN模塊的待燒寫(xiě)裝置利 用CAN總線相連;第二存儲(chǔ);虔塊42中預(yù)先燒寫(xiě)有母板程序;
第二存儲(chǔ);漠塊42,用于在自身的Flash中保存待燒寫(xiě)裝置的用戶程序,并 在接收到需要給待燒寫(xiě)裝置中的用戶程序進(jìn)行更新的命令后,由母板程序讀取 自身Flash中保存的子板的用戶程序,并通過(guò)CAN總線發(fā)送給待燒寫(xiě)裝置。
另外,上述第二存儲(chǔ)模塊42還可進(jìn)一步用于,在上電后,根據(jù)接收到的用 戶命令,利用母板程序確定是需要給待燒寫(xiě)裝置中的用戶程序進(jìn)行更新,還是 需要給自身預(yù)先保存的待燒寫(xiě)裝置的用戶程序進(jìn)行更新,如果是需要給自身預(yù) 先保存的待燒寫(xiě)裝置的用戶程序進(jìn)行更新,則擦除自身Flash中預(yù)先保存的待 燒寫(xiě)裝置的用戶程序,并接收新的用戶程序,寫(xiě)入到自身的Flash中。
圖2、 3和4所述系統(tǒng)和裝置實(shí)施例的具體工作流程請(qǐng)參照方法實(shí)施例中的 相應(yīng)說(shuō)明,此處不再贅述。
總之,采用本發(fā)明的技術(shù)方案,可通過(guò)CAN總線直接更新子板中的用戶程 序,省去了每次更新都需要拆卸子板的麻煩;而且,可以脫機(jī)燒寫(xiě),不需要電 腦和其它開(kāi)發(fā)工具,只需母板和CAN總線即可完成程序更新過(guò)程,且母板可 自己開(kāi)發(fā),無(wú)需其它的CAN工具,節(jié)省了費(fèi)用;另外,可直接使用現(xiàn)有的串 口調(diào)試助手SSCOM3.2作為上位機(jī)軟件,無(wú)需專門(mén)編寫(xiě)上位機(jī)軟件,節(jié)省了開(kāi) 發(fā)時(shí)間;再有,本發(fā)明所述方案可重復(fù)操作,即在更新完一個(gè)子板后,可繼續(xù) 更新另一子板??傊景l(fā)明所述方案操作簡(jiǎn)單,容易實(shí)現(xiàn),方便了用戶使用。
綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種程序燒寫(xiě)方法,其特征在于,預(yù)先將帶有控制器局域網(wǎng)絡(luò)CAN模塊的用于進(jìn)行程序燒寫(xiě)的母板以及帶有CAN模塊的等待進(jìn)行程序燒寫(xiě)的子板通過(guò)CAN總線相連;其中,所述子板中預(yù)先燒寫(xiě)有引導(dǎo)程序;該方法包括所述子板進(jìn)行復(fù)位,利用所述引導(dǎo)程序確定是否需要進(jìn)行用戶程序的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述母板的用戶程序,所述用戶程序?yàn)樗瞿赴孱A(yù)先保存于自身緩存Flash中的所述子板的用戶程序,并寫(xiě)入到所述子板的Flash中。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述子板進(jìn)行復(fù)位之前,進(jìn) 一步包括所述母板進(jìn)行上電,并根據(jù)接收到的用戶命令,利用自身預(yù)先燒寫(xiě)的母板 程序確定是需要給所述子板中的用戶程序進(jìn)行更新,還是需要給自身預(yù)先保存 的所述子板的用戶程序進(jìn)行更新;如果是需要給所述子板中的用戶程序進(jìn)行更新,則將自身預(yù)先保存的所述 子板的用戶程序通過(guò)CAN總線發(fā)送給所述子板;否則,擦除自身Flash中預(yù)先保存的所述子板的用戶程序,并接收新的用 戶程序,寫(xiě)入到自身的Flash中;之后,當(dāng)接收到需要給所述子板中的用戶程 序進(jìn)行更新的命令后,將自身Flash中保存的所述子板的用戶程序通過(guò)CAN總 線發(fā)送給所述子板。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述接收新的用戶程序包括 預(yù)先將所述子板的源程序編譯成HEX文件并保存在上位機(jī)中;當(dāng)接收到來(lái)自用戶的文件發(fā)送命令后,所述上位機(jī)將所述HEX文件發(fā)送給 所述母板,所述母板接收所述HEX文件。
4、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述引導(dǎo)程序確定是否需要 進(jìn)行用戶程序的更新包括如果接收到來(lái)自所述母板的通知命令,則確定需要進(jìn)行用戶程序的更新。
5、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過(guò)所述CAN總線接 收來(lái)自所述母板的用戶程序之前,進(jìn)一步包括所述母板向所述子板發(fā)送握手命令;所述子板正確接收到所述握手命令后,向所述母板返回確認(rèn)字符; 所述母板接收到所述確認(rèn)字符后,向所述子板發(fā)送自身預(yù)先保存的所述子 板的用戶程序。
6、 根據(jù)權(quán)利要求5所述的方法,所述子板正確接收到所述握手命令之后, 進(jìn)一步包括確定自身Flash中是否保存有用戶程序,如果有,則擦除。
7、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過(guò)所述CAN總線接 收來(lái)自所述母^^的用戶程序包括Al、所述子板接收來(lái)自所述母板的幀頭字符,并向所述母板回送第一握手 字符;A2、所述母板接收到所述第一握手字符后,讀取自身Flash中的一個(gè)地址 塊,并將讀取到的數(shù)據(jù)發(fā)送給所述子板,所述子板將接收到的數(shù)據(jù)暫存到一個(gè) 緩沖區(qū)中;A3、所述母板向所述子板發(fā)送校驗(yàn)和,所述子板根據(jù)接收到的校驗(yàn)和對(duì)所 述暫存在緩沖區(qū)中的數(shù)據(jù)進(jìn)行校驗(yàn),如果校驗(yàn)失敗,則向所述母板回送第二握 手字符,然后返回執(zhí)行步驟A1;如果校驗(yàn)成功,則將所述暫存在緩沖區(qū)中的數(shù) 據(jù)寫(xiě)入到自身的Flash中,并向所述母板回送第三握手字符;A4、所述母板接收到所述第三握手字符后,向所述子板發(fā)送第一幀尾字符, 所述子板接收到所述第一幀尾字符后,向所述母板回送第四握手字符;A5 、按照步驟Al ~ A4所述過(guò)程依次接收所述母板中除最后一個(gè)地址塊以 外的其它地址塊中的數(shù)據(jù);對(duì)于最后一個(gè)地址塊,執(zhí)行完步驟A1-A3后,所 述母板向所述子板發(fā)送第二幀尾字符,所述子板接收所述第二幀尾字符,結(jié)束 用戶程序4妄收過(guò)程。
8、 根據(jù)權(quán)利要求3~7中任一項(xiàng)所述的方法,其特征在于,所述母板和子 板的單片機(jī)均為外圍接口控制器PIC18系列單片機(jī);所述母板的PIC18系列單片機(jī)通過(guò)串口與所述上位機(jī)進(jìn)行通訊。
9、 一種程序燒寫(xiě)系統(tǒng),其特征在于,該系統(tǒng)包括帶有控制器局域網(wǎng)絡(luò)CAN模塊的用于進(jìn)行程序燒寫(xiě)的母板以及帶有CAN 模塊的等待進(jìn)行程序燒寫(xiě)的子板,兩者通過(guò)CAN總線相連,所述母板中預(yù)先 燒寫(xiě)有母板程序,所述子;^反中預(yù)先燒寫(xiě)有引導(dǎo)程序;其中所述子板,用于在復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行用戶程序 的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述母板的用戶程序,所述 用戶程序?yàn)樗瞿赴逯蓄A(yù)先保存的所述子板的用戶程序,并寫(xiě)入到自身的緩存 Flash中;所述母板,用于在自身的Flash中保存所述子板的用戶程序,并在接收到 需要給所述子板中的用戶程序進(jìn)行更新的命令后,由所述母板程序讀取所述母 板Flash中保存的所述子板的用戶程序,并通過(guò)CAN總線發(fā)送給所述子板。
10、 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述母板進(jìn)一步用于, 在上電后,根據(jù)接收到的用戶命令,由所述母板程序確定是需要給所述子板中的用戶程序進(jìn)行更新,還是需要給自身預(yù)先保存的所述子板的用戶程序進(jìn) 行更新,如果是需要給自身預(yù)先保存的所述子板的用戶程序進(jìn)行更新,則擦除 自身Flash中預(yù)先保存的所述子板的用戶程序,并接收新的用戶程序,寫(xiě)入到 自身Flash中。
11 、根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,該系統(tǒng)中進(jìn)一步包括 上位機(jī),用于將所述子板的源程序編譯成HEX文件并進(jìn)行保存,在接收到 來(lái)自用戶的文件發(fā)送命令后,將所述HEX文件發(fā)送給所述母板。
12、 根據(jù)權(quán)利要求9 11中任一項(xiàng)所述的系統(tǒng),其特征在于,所述母板上 進(jìn)一步包括指示燈,用于指示所述母板當(dāng)前所處工作狀態(tài)。
13、 根據(jù)權(quán)利要求9 11中任一項(xiàng)所述的系統(tǒng),其特征在于,所述母板程 序燒寫(xiě)在所述母板內(nèi)存的最后3K程序空間中;所述引導(dǎo)程序燒寫(xiě)在所述子板 內(nèi)存的最后3K程序空間中。
14、 根據(jù)權(quán)利要求9 11中任一項(xiàng)所述的系統(tǒng),其特征在于,所述子板中的用戶程序的入口地址定位在0x200。
15、 根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述母板和子板的單片機(jī) 均為外圍接口控制器PIC18系列單片4幾;所述母板的PIC18系列單片機(jī)通過(guò)串 口與所述上位才幾進(jìn)行通訊。
16、 一種待燒寫(xiě)裝置,其特征在于,該裝置包括第一控制器局域網(wǎng)絡(luò)CAN 模塊以及第一存儲(chǔ)模塊;所述待燒寫(xiě)裝置通過(guò)所述第一 CAN模塊與同樣具備CAN模塊的燒寫(xiě)裝置 利用CAN總線相連;所述第一存儲(chǔ)-漠塊中預(yù)先燒寫(xiě)有引導(dǎo)程序;所述第一存儲(chǔ)單元,用于在復(fù)位后,利用所述引導(dǎo)程序確定是否需要進(jìn)行 用戶程序的更新,如果是,則通過(guò)所述CAN總線接收來(lái)自所述燒寫(xiě)裝置的用 戶程序,所述用戶程序?yàn)樗鰺龑?xiě)裝置中預(yù)先保存的所述待燒寫(xiě)裝置的用戶程 序,并寫(xiě)入到自身的緩存Flash中。
17、 一種燒寫(xiě)裝置,其特征在于,該裝置包括第二控制器局域網(wǎng)絡(luò)CAN 模塊以及第二存儲(chǔ)模塊;所述燒寫(xiě)裝置通過(guò)所述第二CAN模塊與同樣具備CAN模塊的待燒寫(xiě)裝置 利用CAN總線相連;所述第二存儲(chǔ)模塊中預(yù)先燒寫(xiě)有母板程序;所述第二存儲(chǔ)模塊,用于在自身的緩存Flash中保存所述待燒寫(xiě)裝置的用 戶程序,并在接收到需要給所述待燒寫(xiě)裝置中的用戶程序進(jìn)行更新的命令后, 由所述母板程序讀取所述Flash中保存的所述子板的用戶程序,并通過(guò)CAN總 線發(fā)送給所述待燒寫(xiě)裝置。
18、 根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述第二存儲(chǔ)模塊進(jìn)一步 用于,在上電后,根據(jù)接收到的用戶命令,由所述母板程序確定是需要給所述待 燒寫(xiě)裝置中的用戶程序進(jìn)行更新,還是需要給自身預(yù)先保存的所述待燒寫(xiě)裝置 的用戶程序進(jìn)行更新,如果是需要給自身預(yù)先保存的所述待燒寫(xiě)裝置的用戶程 序進(jìn)行更新,則擦除自身Flash中預(yù)先保存的所述待燒寫(xiě)裝置的用戶程序,并 接收新的用戶程序,寫(xiě)入到所述Flash中。
全文摘要
本發(fā)明公開(kāi)了一種程序燒寫(xiě)方法,預(yù)先將帶有控制器局域網(wǎng)絡(luò)(CAN)模塊的母板以及帶有CAN模塊的子板通過(guò)CAN總線相連;其中,子板中預(yù)先燒寫(xiě)有引導(dǎo)程序;子板進(jìn)行復(fù)位,利用引導(dǎo)程序確定是否需要進(jìn)行用戶程序的更新,如果是,則通過(guò)CAN總線接收來(lái)自母板的用戶程序,該用戶程序?yàn)槟赴逯蓄A(yù)先保存的子板的用戶程序,并寫(xiě)入到子板的緩存中。本發(fā)明同時(shí)公開(kāi)了一種程序燒寫(xiě)系統(tǒng)、一種待燒寫(xiě)裝置以及一種燒寫(xiě)裝置。應(yīng)用本發(fā)明所述的方法、系統(tǒng)和裝置,可通過(guò)CAN總線直接更新子板中的用戶程序,省去了每次更新都需要拆卸子板的麻煩;而且,可以脫機(jī)燒寫(xiě),不需要電腦和其它開(kāi)發(fā)工具,只需母板和CAN總線即可,方便了用戶使用。
文檔編號(hào)G05B19/418GK101673202SQ200810212020
公開(kāi)日2010年3月17日 申請(qǐng)日期2008年9月9日 優(yōu)先權(quán)日2008年9月9日
發(fā)明者吳愛(ài)國(guó), 李玉祥 申請(qǐng)人:比亞迪股份有限公司