如果不少的話,就值得花些時間去進一步研究,提供更多方便。
貌似stc51就是靠這個流行起來的!?
現在的eagleCom+mcuisp聯(lián)動方式,已經使stm32達到了stc下載的方便性。串口ISP下載的速度,甚至高于低端的仿真器。
初步列一下用ISP調試的優(yōu)越性:
1、仿真度高,排除了仿真器對時序的干擾。
2、沒有仿真器系統(tǒng)bug帶來的困擾。
3、可將調試環(huán)節(jié)擴展到實際運行期。
4、低成本,只需串口線,及軟仿真、編譯環(huán)境。
5、無需引出JTAG,可節(jié)省口線,簡化PCB布線。
缺陷:
1、觀察、調試能力較低。
2、對編程要求稍高。
網友評論:使用匯編編程時,偶爾會用仿真器。
網友評論:當然,沒有好
工具就另當別論了。
網友評論:《脫離仿真器玩單片機》
網友評論:有串口的,盲調很容易的啦。
把調試代碼寫入片子,把需要的觀察的變量或中間變量的值通過串口送出。就能知道得一目了然。
網友評論:現在一般都是片內
硬件仿真,價格也很便宜了,不會超過500RMB,在一百至三百之間,方便的很,當然也還有一些既不支持硬件調試,也沒有ISP功能的IC,只能看效果,通過IO,LED,UART間接調試了.
網友評論:各位都是在私企老板下工作?那倒是可以理解。老板是不把員工當人的。
一個項目20W,要求一個月完成,公司里只一個工程師小A負責技術設計,包括硬件、軟件編程。小A要求老板配置一臺仿真器,1,000¥左右。老板同意還是不同意?
“工欲善其事,必先利其器。”老板還想不想賺錢?
還有另一情景:如果老板待俺不錯,7k以上一個月,那咱也不提這事,自己掏錢買一個就是了,非公司財產,還能拿回家做實驗。不過沒有仿真器,一個月絕對完不成也做不好。好程序是依靠工具調試出來的。
網友評論:1個盲調的電工與一個依賴仿真器的電工,我相信出活更快更好的是盲調的。
一方面,盲調本身代表這個電工更資深。
另一方面,胸有成竹,則下筆如有神。能盲調的,一定會胸有成竹。
網友評論:試試去受一次建設部金融POS標準時序測試,一個ETU一個ETU的對準,校驗協(xié)議內所有的可能情況,就是上仿真器你都找不著北,還盲調?8個小時6000大洋的檢測費,盲調?幾十個仿真器都讓你廢了。
說盲調比仿真器快的,基本沒玩過嚴格的時序類,復雜的協(xié)議類,和資源嚴重緊缺的設計。
有工具不用和沒有工具是兩個概念。
網友評論:看來是資深編程員了。有項目能否有償幫助?介紹一下費用級別?
例如:這個20W的項目,程序不到2K匯編。一個月內完成,價格?下次有求一定請幫忙。
俺是菜鳥級別,沒有仿真器的事情能做也不做,趁機撈一把拿回家學習玩是不是。
網友評論:33樓的復雜時序類,不是仿真器和isp能解決的吧?
復雜協(xié)議棧似乎用仿真器也就是速度能加快,而不是離了他不可以吧?
用過一個單片機,51內核的,不支持調試,也就是沒有調試接口,全用keil支持的ISD51調的,把頭文件和初始化加上,占用一個串口,哪里要中斷,直接在哪里調用ISD_Break();一樣在keil里可以看變量。
這個單片機就是,TUSB3410,性價比奇差,當時就因為他帶usb和硬i2c才選的。
網友評論:“有工具不用和沒有工具是兩個概念。”
32樓的意思,不用工具的人比用工具的人還要快?咱實在弄不懂如今的資深編程員怎么一個比一個厲害。估計肯定沒做過一級菜鳥所做的工作,8小時6000¥的檢測費,建議下次一級菜鳥聘請32樓不用仿真器的資深電工來幫忙。
還有,不用仿真器的比用仿真器的出活更快,那全國那么多研究開發(fā)仿真器的公司都要改行辦“資深電工培訓班”啦?
網友評論:像我們公司是做CAN網絡的,通常只用51外掛SJA1000CAN
控制器那種節(jié)點。
我看他們編接口軟件的程序員,一個人在一個CAN網絡上同時掛3、4個51仿真器,每個距離二、三米遠;3、4個筆記本終端在實驗室里來回輪流轉來轉去分別編程,挺佩服的。
不用仿真器?能同時考慮4個節(jié)點之間的通信協(xié)議關系?資深電工大概一個SJA1000接口程序也沒做過。所以只是在談自己曾經從事過的簡單項目,不用仿真器也可以完成的項目。有沒有不用仿真器就能完成一個CAN網絡的資深電工?我們公司馬上要。
簡單的項目要求可以不要仿真器,可是資深電工是從事簡單項目的嗎?讓學生去做就行,資深電工做資深的項目。
網友評論:但簡易的調試器弄一個用用也不錯,特別是USB口的,既可以當編程器用同事還可以偶爾做簡易調試用用,用編程器燒寫后用UART的方式并沒有優(yōu)點,呵呵,這還是一個簡易調試器罷了,只是換成自己做UART部分罷了,但可比專用的調試器麻煩多,光那么多線連接就比較麻煩,而且UART也不如USB來的方便不是。。。
完全的盲調就是用編程器燒寫后直接觀察實際運行的結果,呵呵,如果沒有工具或工具不好用,我有的時候也會這么辦,但這顯然不是一個很好的選擇。
有工具不用確實是一個很笨的選擇。。。
網友評論:我相信有人盲調可以解決問題,但是我要強調當代碼到了一定的復雜度后,盲調一定比仿真器的效率低,進一步復雜時,效率就更低。
這個比方好比上海到蘇州,乘汽車可能比乘飛機要快,若是上海到烏魯木齊,兩者的差距就顯著增大,到美國,乘汽車就幾乎(我是說幾乎)是不可能的任務。
而資源非常緊張代碼又不簡單的情況下,盲調就幾乎成為不可能的任務,你已經沒有任何可以浪費的資源來支持你的盲調手段了。
盲調的中間手段導致代碼與實際運行環(huán)境有差距,例如ISD51,它占用串口外,還占用堆棧,另外單步時占用大量中間時間,單個指令周期的STEP可能需要額外的上百個指令來運行,對于時序有要求的應用,這是致命的。
最后,盲調無法靈活的STEPBYSTEP的了解整個代碼在每一個過程的狀態(tài),很可能遺留相當的BUG,你看到的只是一個結果,而不是代碼真正運行的實質。
當你你有足夠多的資源,甚至你的應用里存在OS,那么你不妨試試盲調。當你的應用足夠簡單,不涉及復雜時序與協(xié)議,那么你不妨試試盲調。
總之,強調盲調能方便的解決一切的,多是有米之人,起碼他的資源讓我羨慕,菜鳥沒那么好的命,菜鳥需要在256的字節(jié)RAM的資源下完成中文無字庫點陣LCD界面、ISO14443;ISO7816全部協(xié)議、3DES算法、20個鍵的鍵盤、實時語音、IIC、計時處理、小型數據庫寫入讀出與查詢,與PC交換數據。這其中好幾個是需要并發(fā)處理的,整個MCU包括
寄存器就是256個字節(jié)。盲調?算了吧。
網友評論:雖然我在條件允許的情況下會選擇用仿真器,但現實也經常無奈不是。
一定要掌握盲調的技術,即使不經常用。
比如說現在的JLINK的D版的市場價只要五六十塊錢,你用還是不用?
要知道JLINK可是比
ULINK還穩(wěn)定啊,而且支持IAR、Keil、GDB等諸多調試平臺。
還有個現實就是,某種情況下,你的板子上沒有JTAG接口,你想不盲調都不行。
比如我去客戶那邊看情況,我只帶著一臺筆記本,其余的工具全在公司。
而且產品板上jtag口或者被一些東西占用了,或者沒引出來。
正好我們的產品是有IAP的,USB既是user的通訊接口,又是升級接口。
我就改一些自己懷疑的bug然后升級進去,發(fā)現故障變了,再改下再灌進去,
折騰幾次,問題就搞定了,終于可以躲開交通高峰回公司了,哈哈。
網友評論:僅僅是代碼模塊化一些。
但我也不排斥仿真器,有就用,當編程器,觀察變量,還是比盲調方便啦。
網友評論:我沒怎么用過
不過我看一半一半的排除很笨和慢吧
為何不用普通IO口仿真PWM
在外看占空比呀
網友評論:這跟你用的mcu和代碼錯誤的級別有關系。
假如你用的at89c51單片機,仿真器很貴,公司不肯出錢買,那沒辦法,只能硬著頭皮上了。還有些單片機,比如msp430,arm7,都有jtag的接口,那些調試器很便宜,簡單的調試器上面就一個244,diy也很方便,這個仿真就很方便了。
代碼的一些運算錯誤,這個用仿真器看比較容易發(fā)現,但是一些關鍵代碼段運行錯誤,這個錯誤有的時候幾天才能重現一次,那推薦用串口把信息打印出來,這樣更容易發(fā)現。
網友評論:作為“調試器”現多數都已嵌入到目標IC中,所以只要有相應的軟支持,配備一定的硬件接口,就可方便的調試目標系統(tǒng)了。
網友評論:隨機應變吧
網友評論:如ls某位所說
涉及到協(xié)議,接口的問題,多少還是需要仿真的
網友評論:同意48樓!
網友評論:因為盲調的調試周期能延伸到運行期。即能夠在實際運行中進行調試。
而協(xié)議、外部接口的問題,很多需要在運行時才反映出來。
我調試某GPRS系統(tǒng)終端時,有切身體會。當時GPSR系統(tǒng)的問題都是出在移動網絡那邊,但是表現的卻像終端的不穩(wěn)定現象。
最終使用盲調,不但抓出問題,還證實給移動方,并提出解決方法,避免了繼續(xù)無休止的扯皮。當然,題外話,飛鳥盡,良弓藏,咱們電工解決了大問題還是要留點小問題,要不...呵呵。
而如果用仿真器,抓這種大系統(tǒng)的問題是不可能的。一方面現場運行時每個終端都掛仿真器,怪異而可笑,不可實施。另一方面,仿真器根本不能在復雜現場穩(wěn)定運行。
網友評論:用串口寫入,再用串口讀出想要看的數據.
網友評論:2秒鐘報廢1根針。仿真器是“事后控制”,做事應該“事前控制”。
網友評論:IO輸出固定電平時你的線圈就死燒?還真的膽子挺大!佩服!
說說仿真器怎么個屬于“事后控制”法?
網友評論:日本人搞這個的時候確實加了硬件保護電路,我們給他取了,因為俺寫的程序,死機概率不到幾萬分之一,所以就把那對看起來煩的電路給PK掉了。
表說偶做滴東東不可靠,那么多臺在加油站(內行知道其打印機的工作量)里7x24小時工作了2年多,沒見因為死機燒針的。
仿真器的作用是:出了bug,放到你面前給你看。
盲調的意義是:你一次性認真寫,不就沒事了。
與其除了錯來改錯,不如一次把事情做好。我?guī)煾嫡f的:程序要裝在自己腦袋里,不要裝在仿真器里!
網友評論:比較低端,公司小不舍得配置仿真器,一直就是直接寫片調試。
我的習慣是通過LCD來觀察和測試代碼,結果就是落下了一個通病。幾乎我經手得每個項目都會保留一個LCD驅動接口,無論是否需要。LCD是串行的那種,只需要2個IO。
每次開始寫代碼的時候,首先就是移植LCD的驅動!
說來也怪可憐的,有時真有自己掏錢買臺仿真器的沖動!!好在到目前為止,手頭的活都還能過得去,一直就這樣湊合著過!!
網友評論:盲調麻煩.
特殊情況,需要盲調.
網友評論:還好有了C8051F,連仿真器都省的買了...
網友評論:記得最初搞51的時候用的可是通用燒錄器,燒一下,運行一下...
網友評論:寫tcpip的人用ice嗎?反正我寫音視頻相關的代碼不用ice,要求的高實時性,用了反而會影響到程序的正確性。調試基本靠猜,哦,不對,靠打印。
網友評論:”因為俺寫的程序,死機概率不到幾萬分之一“
55的設計的產品可靠性以代碼質量來做為保證,按55樓的邏輯,“因為代碼可靠,所以不會死機”
殊不知代碼可靠只是產品可靠性中一個必須但不是充分的條件,怪不得國人的東西總是做不過小日本,因為國人認為日本人加的“硬件保護電路”“看起來煩”,可以“PK掉”。
現在我認為不僅你的設計不合格,你同樣不是一個合格的電工。
網友評論:現在jtag仿真器很便宜,基本上百把塊錢就可以搞定了。
就算你是高手,用不到斷點、單步,寫程序一氣呵成,總不會一個bug沒有吧。
用仿真器可以很快找到問題,盲調的話你要反復看代碼才能發(fā)現。
當然盲調的好處就是你會多閱讀代碼,代碼會很熟。
但是一般情況下,自己寫的代碼自己再看n遍也很難找到問題。。。。
就像打字,自己校對往往校對不出來的。
另外,燒片ok未必就ok了。
花個百把塊錢節(jié)約幾個小時就回來了,仿真完了還可以燒片測試,2不誤
網友評論:我也是使用盲調,
用過STC
也用過S3F9454
網友評論:估計大多數也是被逼的、并被逼出來的
網友評論:也更直接
適合小成本的系統(tǒng)
網友評論:盲調的好方法
//調試代碼的條件編譯,測試完后不編譯調試代碼
#defineTEST_DATA_CODE1
一個任務設置一個測試變量,如:
#if(TEST_DATA_CODE)
typedefstruct
{
ucharGPS;
ucharGSM;
ucharGPRS;
ucharADC;
}TEST_DATA,*pTEST_DATA;
TEST_DATATD;
#endif
每個任務都定義很多
測試點,測試點的值從串口輸入
#if(TEST_DATA_CODE)
if(TD.GPS==0x00)//調試點
{
//測試代碼
}
#endif
網友評論:人都是逼出來的
網友評論:越簡單的東西越可靠。任何附加上去的東西都會有他帶來的負面效應,多的不講了。
網友評論:有關系的是相關性……
網友評論:俺好象從事這行(七年)以來就沒有用過仿真器,嗯,最喜歡的是通過電腦串口來查詢MCU的運行狀態(tài),有MCU主動發(fā)數據出來的,也有用串口助手發(fā)代碼查詢MCU的。
不過現在電腦都沒有串口了,逼的俺現在都是Keil里軟仿真Debug解決了。
網友評論:但是有些地方還的用仿真。
盲調的好處是不至于有個問題,仿真了很長時間也沒有發(fā)現問題,后來才發(fā)現仿真器不連接就好了。