?
雖然在安心那里得到了肯定的答復(fù),但具體協(xié)議及相關(guān)內(nèi)容的修改,必須與軟件部的工程師進(jìn)行交流,只有在確認(rèn)無誤之后,才能增加相關(guān)通信指令以及指令對應(yīng)的數(shù)據(jù)內(nèi)容。
這是她第二次與軟件部工程師的合作,本次的合作伙伴是軟件部的副經(jīng)理---洪流,目前他的主要任務(wù)是網(wǎng)絡(luò)版客戶端軟件的維護(hù),同時(shí)也正在參與目前事業(yè)部進(jìn)行中的項(xiàng)目—基于網(wǎng)絡(luò)架構(gòu)的終端設(shè)備在線升級,負(fù)責(zé)客戶端程序的編寫。
說明來意之后,華容直奔主題,洪流接過文件之后,快速的瀏覽,平靜地問道:“你確定只增加三條指令就可以嗎?”
“是的,增加三條就可以,分別對應(yīng)升級開始、升級數(shù)據(jù)傳輸和升級結(jié)束,在指令的發(fā)送和接收方面,使用原來的HEX格式的協(xié)議結(jié)構(gòu)。”華容小心翼翼地回答,態(tài)度是格外的肯定。
“協(xié)議沒有問題,只要你的指令不沖突,那么通信沒有問題,你把升級的文件給我就可以?!?/p>
這是華容在接收煙草局項(xiàng)目以來,聽到的最簡潔、最有效的答復(fù)。
“好的,那么工期需要多久?”
“你提前半天通知我就可以?!币琅f是干脆、利落的答復(fù)。
走訪了兩個(gè)部門,疑惑一一排除,方案隨之確定下來,接下要做的就是網(wǎng)卡程序的改寫和MCU程序的編寫和調(diào)試。
這樣的通信協(xié)議下,網(wǎng)卡程序的改寫非常簡單,只不過是增加三條指令的解析和驗(yàn)證,指令來自于PC端。在ISP_Line默認(rèn)打開文件的路徑和名稱,然后添加一個(gè)按鈕,對應(yīng)的代碼是打開文件,并將文件拆分為若干個(gè)數(shù)據(jù)包,然后逐個(gè)數(shù)據(jù)包發(fā)送和接收應(yīng)答。通信的過程與原來的方式是完全相同:升級開始依次發(fā)送升級數(shù)據(jù)升級結(jié)束。
?
在MCU的程序編寫方面,難度也不大,考慮到安心所說的“不穩(wěn)定”的問題,在ISP與IAP的狀態(tài)切換方面,特別細(xì)化了狀態(tài)的描述,狀態(tài)轉(zhuǎn)換過程定義為4個(gè)狀態(tài):
狀態(tài)1:IAP ISP,接收到程序升級指令后,從正常的運(yùn)行狀態(tài),切換到ISP狀態(tài),準(zhǔn)備進(jìn)行升級;
狀態(tài)2:升級中,從接收到第一個(gè)升級字節(jié)數(shù)據(jù)開始,直到最后一個(gè)字節(jié)接收,MCU均維持此狀態(tài),如果在升級過程中出現(xiàn)異常終止,那么在下一次復(fù)位后,可以根據(jù)此狀態(tài)的判斷,直接進(jìn)入狀態(tài)1,防止程序“跑飛”。
狀態(tài)3:升級成功,用于對狀態(tài)2結(jié)果的提示,提示用戶,當(dāng)前程序升級完畢。
狀態(tài)4:ISP? IAP,升級完畢后,將狀態(tài)標(biāo)記為此狀態(tài),復(fù)位后,將直接運(yùn)行IAP程序。
方案已定,華容著手對軟硬件程序的編寫和調(diào)試,在進(jìn)行數(shù)次的修改之后,伴隨著對ISP_Line的功能完善,經(jīng)歷了山重水復(fù),終于獲得了柳暗花明,網(wǎng)絡(luò)版的在線升級功能調(diào)試成功。
經(jīng)過了初步的調(diào)試和驗(yàn)證,華容將程序交給了助手林鴻陽,安排他進(jìn)行多機(jī)驗(yàn)證,每個(gè)網(wǎng)卡同時(shí)進(jìn)行12臺(tái)PDA的升級,測試升級的穩(wěn)定性和成功率。
下班前的半個(gè)小時(shí),林鴻陽準(zhǔn)時(shí)出現(xiàn)在華容的辦公桌前,遞上了測試報(bào)告,與以往不同的是,這次是神情有些沮喪。
“測試出了問題?”這是華容的第一反應(yīng),說著,接過了測試報(bào)告,快速地瀏覽,但是報(bào)告的結(jié)果顯示的是升級成功,程序運(yùn)行正常。
“測試正常,你這是什么表情?。俊比A容抬起頭,有些不解,帶著微笑問道。
“沒什么,就是……就是……”,林鴻陽欲言又止。
“別緊張,坐下來,慢慢說”,華容示意他做到自己的對面,然后原地轉(zhuǎn)身,把測試報(bào)告放在中間,繼續(xù)探詢:“你遇到了問題,是吧?不會(huì)是受人欺負(fù)了吧?”帶著一點(diǎn)兒調(diào)侃的語氣。
“沒有,大家對我挺好的,是我自己的問題?!钡椭^,搓著手,低聲回答。
“認(rèn)錯(cuò)到時(shí)很積極,說說吧,怎么回事?”
“測試的內(nèi)容越多,我發(fā)現(xiàn)自己懂得越少?!?/p>
“呵,就因?yàn)檫@個(gè)?這個(gè)感覺太正常了!”華容笑了,放下手中的筆,身子靠在椅子了,換了一個(gè)舒服的姿勢。
?
“這個(gè)項(xiàng)目難度很大,尤其是你測試的部分,別說是你,事業(yè)部的工程師也沒有幾個(gè)能搞懂的。”
“真的?不是安慰我?”終于抬起頭,眼睛里放出了一絲亮光。
“當(dāng)然是真的,別急,我猜一下,你一定被升級程序的原理搞暈了。”
“嗯呢,是的?!绷著欔桙c(diǎn)頭承認(rèn),“在生產(chǎn)部工作將近一個(gè)月了,所有的升級,都是用起拔器將芯片取下來,然后在編程器上燒寫,完事了再安回去,再開機(jī)的時(shí)候,程序就可以運(yùn)行了。同樣的設(shè)備,為什么這次需要兩個(gè)步驟,第一次燒完程序的方法和以前一樣,但設(shè)備無法正常運(yùn)行,需要再下載一次。但是第二次下載不需要編程器了,只用你寫的軟件就可以了,而且可以進(jìn)行無數(shù)次的升級。這種方法對于以后的升級來說,非常方便,并且一次可以下載多臺(tái),效率很高的。單片機(jī)我也接觸過,這種方式還是第一次,但原理是什么,怎么也想不明白。我問過柳姐,她也不知道?!?/p>
顯然,剛才的一席話,打消了林鴻陽的顧慮,一下子放開了,滔滔不絕說出了事情的緣由。
“是啊,連柳姐都不知道,你還擔(dān)心什么呀?”
“啊,也對,剛才沒轉(zhuǎn)過來?!闭f著,嘴角揚(yáng)起笑容,用手撓撓了頭發(fā)。
“想知道嗎?” 華容明顯是打趣兒,但收斂了剛才的嬉笑,并將自己的將椅子向前拉了一下,把姿勢調(diào)整為正坐。
“當(dāng)然想!”
“這樣,先介紹兩個(gè)名詞:ISP和IAP”,邊說邊在紙上畫了一個(gè)瘦長的矩形,在頂部偏上方畫了一條分割線,上部分標(biāo)記為ISP,下部分標(biāo)記為IAP,然后一邊指著圖,一邊介紹這兩個(gè)概念:
ISP (In-System Programming) ,指的是“在系統(tǒng)編程”。
意思是在目標(biāo)板上直接完成MCU程序的燒寫,不用取出來,這種情況下,要求在設(shè)計(jì)目標(biāo)板的時(shí)候,必須將接口電路設(shè)計(jì)在上面,所以叫“在系統(tǒng)編程”,也就是不用脫離系統(tǒng)的意思;但是如果目標(biāo)板上沒有保留這種接口,那么就需要采用第二種方法,也就是常用的方法,借助編程器將程序代碼燒入到MCU中,這種方法,需要將芯片從目標(biāo)板上取下來,燒寫完畢后,在放回去。
?
IAP(In-Application Programming),指的是“應(yīng)用中編程”。
有些芯片本身或通過外圍的芯片,可以通過一系列操作將執(zhí)行程序的代碼寫入,比如現(xiàn)在用的STC89C58RD+,就是一款支持IAP的單片機(jī),在存儲(chǔ)區(qū)中劃分3個(gè)程序區(qū),1作引導(dǎo)程序區(qū),2作運(yùn)行程序區(qū),3作下載區(qū)。芯片通過串口接收到下載命令,進(jìn)入引導(dǎo)區(qū)運(yùn)行引導(dǎo)程序,在引導(dǎo)程序下將待執(zhí)行的程序內(nèi)容下載到下載區(qū),下載完畢并校驗(yàn)通過后再將下載區(qū)內(nèi)容復(fù)制到2區(qū),運(yùn)行復(fù)位程序,則IAP完成。
兩者的差別在于應(yīng)用場合的不同:
前者的程序升級需要到現(xiàn)場解決,設(shè)計(jì)得好,可以不必拆機(jī)器了,否則,需要拆機(jī)才能完成。
后者,非常適合網(wǎng)絡(luò)下的升級,如果有網(wǎng)管系統(tǒng)的話,那么用網(wǎng)管下載一切搞定,人不用跑來跑去,更不必拆機(jī)了,因此效率是很高的。
說完抬頭看來一下對方,一副似懂非懂的面孔,遲疑了一下,換了一種方法解釋:
“說說看,給你的兩個(gè)程序,哪個(gè)是引導(dǎo)區(qū)的程序,哪個(gè)是應(yīng)用程序?”有些時(shí)候,提問比講解的效果更好。
“我想想,引導(dǎo)區(qū)應(yīng)該是第一個(gè)程序吧”。
“沒錯(cuò),這個(gè)引導(dǎo)區(qū)的程序,由于不包含應(yīng)用程序的代碼,所以下載后設(shè)備不能正常運(yùn)行,但可以通過它來完成應(yīng)用程序的下載,也就是給你的第二個(gè)程序?!?/p>
“道理明白了,但還是不能完全理解。”
“好吧,換個(gè)話題聊聊,你一定在PC上安裝過WINDOWS系統(tǒng)吧?!比A容轉(zhuǎn)移了話題。
“安裝過,但是安裝操作系統(tǒng),與IAP有關(guān)系嗎?”
“如果沒有BIOS,可以安裝操作系統(tǒng)嗎?”沒有直接回答問題,而是繼續(xù)跑題。
“不可以的?!?/p>
“第二個(gè)問題,安裝后的操作系統(tǒng),放在哪里?”
“硬盤上。”
“沒錯(cuò),來,你看一下他們之間的對應(yīng)關(guān)系?!痹趧偛诺膯柎鹬g,華容用筆記錄做了記錄,在矩形圖的旁邊,增加了新的注釋:BIOS和WIN,用箭頭將引導(dǎo)區(qū)和BIOS連在一起,將IAP和WIN連在一起,把注釋完畢的圖,調(diào)轉(zhuǎn)了一下方向,推到了林鴻陽的面前。然后,雙手交叉,目光盯著對方。
林鴻陽咬著下唇,仔細(xì)端詳著圖,突然有所悟,騰的一下,幾乎是從座位上跳起來的,興奮地說:“我懂了”。
華容看在眼里,喜在心里,但臉上卻是靜如止水,“說說看,懂什么了?”。
“引導(dǎo)區(qū)的程序,相當(dāng)于BIOS的功能,雖然功能比較簡單,但是通過它可以完成IAP的程序的下載,就像通過BIOS完成WIN程序的安裝一樣,只要BIOS沒有問題,那么可以無限次的安裝各種版本的WIN?!?/p>
“沒錯(cuò),就是這么回事!”,華容鼓掌,“ISP的優(yōu)勢你已經(jīng)領(lǐng)教了吧,只要待升級的程序發(fā)給你,那么只要有網(wǎng)卡的地方,任何人都可以對設(shè)備進(jìn)行升級,即使遇到問題,只要硬件電路沒有問,電話也可以搞定的,再也不必跑現(xiàn)場了?!?/p>
“哈哈哈,是的”,林鴻陽笑了,華容笑了,笑得如正午的陽光一樣燦爛。
與非網(wǎng)原創(chuàng)內(nèi)容,謝絕轉(zhuǎn)載!
內(nèi)容匯總:
摘要:沈陽的一場大雪似乎也預(yù)示著公司的某些變動(dòng),果然在休整后的第二天得到了證實(shí),去掉一個(gè)部門,重組一個(gè)部門,孤立了一些人,拉攏了一些人,兵還是兵,將還是將...
摘要:部門雖然重新劃分,但辦公室里的格局和人員的位置都沒有變動(dòng),好像沒有發(fā)生任何事情。華容原本是個(gè)局部變量,從不參與本部門以外的事情,但這次人事變動(dòng),她的主管設(shè)計(jì)師的職位依舊,只不過屬性變成了全局變量...
摘要:華工對自己的項(xiàng)目滿腹疑惑,后來在和燕飛的一場談話中了解到了很多緣由,看似表面風(fēng)光的銷售業(yè)績只有還有不為人知的秘密...
之四:要根據(jù)PCB設(shè)計(jì)程序,被算計(jì)了!
摘要:經(jīng)過與燕飛中午的一番談話,華容不敢再對眼前的PDA(手持機(jī))怠慢了,但是只有她自己清楚其中的問題:框圖已經(jīng)有了,芯片的資料可查,那么詳細(xì)的電路原理圖,就不再是問題,可是偏偏無人提供原理圖的電子版,害得她不得不自己動(dòng)手...
之五:憶當(dāng)年200K代碼聯(lián)調(diào)的默契
摘要:平心而論,華容覺得自己與華萍之間還談不上“默契”,因?yàn)榈侥壳盀橹?,這個(gè)詞只屬于當(dāng)年那個(gè)team。是她在轉(zhuǎn)行之后,加入的第一個(gè)開發(fā)團(tuán)隊(duì)—中鼎公司中文版ECR的項(xiàng)目組...
摘要:真正的交接開始了,果然不出華容的意料,華萍想盡辦法隱藏原理圖,讓她感到意外的是華容在兩年前已經(jīng)開始學(xué)習(xí)畫板子,而華容也知道她開始寫程序,曾經(jīng)推心置腹的合作伙伴如今心有芥蒂...
摘要:華容冷靜地思考了一下整個(gè)“事件”進(jìn)展和所經(jīng)歷的“談話”,她認(rèn)定這個(gè)項(xiàng)目的背后,一定有不為自己所知的內(nèi)幕,尤其是與華萍的一番交涉,加上自己對她的了解,更加確認(rèn)了這一點(diǎn):這個(gè)項(xiàng)目不簡單...
摘 要:華容向家里人“請假”,然后埋頭工作。按照既定的計(jì)劃,第9個(gè)工作日,進(jìn)行了網(wǎng)絡(luò)聯(lián)調(diào),包括終端與網(wǎng)卡服務(wù)器以及服務(wù)器與后臺(tái)軟件的通信,由于物理層 的協(xié)議沒變,數(shù)據(jù)層的定義和格式也沒有變化,變化的只是填充的內(nèi)容,因此,毫無懸念,網(wǎng)絡(luò)聯(lián)調(diào)順利通過,但是在PDA檢測的時(shí)候她卻沒有看到檢測文 檔...
摘要:由于項(xiàng)目工期緊張,華容從制定方案到實(shí)施方案,加班加點(diǎn),甚至向家人請假,最后終于如期測試通過,在驗(yàn)收的時(shí)候她偶爾遇到了以前的合作伙伴林杰森,也是這次偶遇讓她知道了自己的項(xiàng)目工期被壓縮減半...
之十:你可以暗算我,但是擋不住我的技術(shù)比你強(qiáng)
摘要:煙草局的項(xiàng)目驗(yàn)收完成以后,華容終于松了一口氣,但是被壓縮工期的陰影始終縈繞心頭,以至于想起來心中難受。某一天華萍的項(xiàng)目組出了一個(gè)搞不定的Bug,于是要求華容過去解決...
之十一:設(shè)備出現(xiàn)“幽靈” Bug,華容奔赴現(xiàn)場“救火”
摘要:煙草局的項(xiàng)目忽然出變,原本都測試通過的設(shè)備有好幾臺(tái)被退回,華容展開緊張地測試,后來發(fā)現(xiàn)是板子上的一顆芯片型號(hào)...
摘要:一天發(fā)布在OA里的一條最新消息,如一石激起千層浪,波及到了公司的各個(gè)角落—有史以來,SD公司第一次裁員。這則消息,如同前天的暴風(fēng)雪一樣,來勢兇猛,威力強(qiáng)大...
摘要:岳海上任后開始了第一次裁員風(fēng)暴,楊玉庭本來不在名單了,但是因?yàn)槟挲g偏大而成了這次裁員的犧牲品...
之十四:為研發(fā)爭取時(shí)間和資源,華容對岳海的博弈
摘要:華容、岳海以及燕飛坐下來討論項(xiàng)目的執(zhí)行策略,由于已經(jīng)提前知道岳海的態(tài)度,華容提出項(xiàng)目進(jìn)展中的各種問題,最后為項(xiàng)目爭取了時(shí)間和資源...
摘要:華容制定了一套嚴(yán)謹(jǐn)?shù)难邪l(fā)計(jì)劃,而她最擅長的射頻卡的讀寫距離問題。這個(gè)問題對于其他人來說,也許高難的,但對于她來說幾乎談不上難度,只不過是一、兩個(gè)小時(shí)的問題...
摘要:華容準(zhǔn)備好測試流程,發(fā)現(xiàn)需要個(gè)測試助手,人選哪里來?經(jīng)過與測試部的商議從中抽出一個(gè)新來的實(shí)習(xí)生林鴻陽幫助華容完成測試,經(jīng)過一天的試用,華容發(fā)現(xiàn)小林出乎意料地滿足自己的需求...
之十七:時(shí)鐘亂碼幽靈般光顧了所有設(shè)備,追蹤尋跡趁勢撲捉?
摘 要:經(jīng)過近4晝夜的測試,時(shí)鐘的亂碼顯現(xiàn),如“幽靈”一般,光顧了在不同編號(hào)的設(shè)備,最少的只有一次,最多的有10次。從結(jié)果上看,與用戶描述的情況基本 一 致:不一定什么時(shí)候,不一定是哪一臺(tái)設(shè)備,在上傳到后臺(tái)的記錄中,就會(huì)爆出一條錯(cuò)誤的記錄數(shù)據(jù)。ISP_Line剛好小試牛刀...
之十八:奇怪的溢出數(shù)據(jù)“65535”,不可抗拒的EMC
摘要:錯(cuò)誤再現(xiàn),便可以分析其原因了。分析之后,關(guān)于時(shí)鐘亂碼的問題,華容得到了初步的結(jié)論:EMC問題,也就是常說的電磁兼容問題...
本系列為付麗華老師原創(chuàng)故事《51的江湖》連載,故事中有職場,故事中還有技術(shù),最真實(shí)的項(xiàng)目案例與大家一起探討。每周一期,更多內(nèi)容請查看: