久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8712|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

解放串口之重定向printf輸出到IAR虛擬終端

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-24 16:04 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
      通過串口打印調(diào)試信息或者實(shí)現(xiàn)上下位機(jī)交互是我們最常使用的調(diào)試手段之一,畢竟實(shí)現(xiàn)起來無論是硬件成本(接出兩根線Txd和Rxd,外加一個電平轉(zhuǎn)換芯片)還是軟件成本(下位機(jī)寫好UART驅(qū)動,上位機(jī)直接超級終端或者一些第三方串口調(diào)試助手)都是相對較低的,所以這種方式還是灰常受廣大“攻城師”們歡迎的。不過如果由于I/O資源緊缺串口被用做其他用處或者板子直接沒有引出串口的話(是不是產(chǎn)生共鳴了,呵呵),那該怎么辦呢?


當(dāng)然,所謂時代不同了(liao)(我咋順口想說“男女都一樣呢”,呵呵,哎,都是生在舊社會長在紅旗下的孩子啊),隨著嵌入式開發(fā)生態(tài)系統(tǒng)越來越完善,目前也是有越來越多的Poweful開發(fā)工具支持豐富的調(diào)試功能(支持打印調(diào)試信息和交互等),但是涉及到一些版權(quán)的問題價(jià)格上還是有點(diǎn)小貴的(對一些小企業(yè)來說還是難以接受的),所以這個時候就需要我們動動腦筋去摸索摸索其他的方法(所謂路是探索出來的),事實(shí)證明破釜沉舟下人的潛力是無限的,呵呵,這里就分享一個折衷的辦法去解決大家一直苦惱的問題,即使用IAR虛擬的串口終端來實(shí)現(xiàn)信息的交互和打印,下面進(jìn)入正題:

測試平臺:IAR6.6 + FRDM KE02開發(fā)板(我目前手里有就拿這個了,其他板子都可以放心用的,呵呵)

測試代碼:KE驅(qū)動庫(KEXX_DRIVERS_V1.0.1_DEVD\kexx_drv_lib_release_r1.0.1\build\iar\ke02\platinum)

這里稍微提一句,我測試的是KE驅(qū)動庫的代碼,但是實(shí)際上只要你看懂了我下面的解決方法(授之以漁而不是魚),其他代碼都是類似的。

1)打開KE02 platinum的IAR工程,進(jìn)入到platinum.c文件,找到main函數(shù)如下圖1,可以看到其調(diào)用了printf打印函數(shù),而該工程是默認(rèn)調(diào)用底層串口的,我們跳轉(zhuǎn)到該函數(shù)的定義如圖2,再繼續(xù)跳轉(zhuǎn)到out_char的函數(shù)定義如圖3,這下就屢清楚了,我們可以很直觀的看到工程默認(rèn)是調(diào)用UART底層的,呵呵,下面我們就要動手改造它對printf進(jìn)行重定向;




2)首先我們需要注釋掉printf的實(shí)現(xiàn)函數(shù),將其屏蔽掉,然后需要給printf一個重新指向的地址,下面就該我們常見的這位老兄出場了(貌似當(dāng)初自打我開始接觸Turbo C的時候就已經(jīng)用到它了,老生常談的“Hello world”就是調(diào)用它內(nèi)部的printf來實(shí)現(xiàn)的)。我們找到Common.h文件,將添加到其中,如下圖,這樣凡是需要printf的文件只需要添加common.h頭文件即可:


3)這里先說說stdio.h文件的作用,我們打開stdio.h文件可以看到其內(nèi)部定義了標(biāo)準(zhǔn)輸入輸出函數(shù),包括我們常見的scanf和printf等函數(shù),而這些函數(shù)所調(diào)用的底層即為IAR提供的鏈接到其Terminal的驅(qū)動,所以……懂的,呵呵。除此之外,我們肯定不滿足只輸出打印(給人略顯低端的趕腳有木有),所以為了體現(xiàn)我們不是“土豪”,我覺著有必要讓它交互起來,實(shí)現(xiàn)真正的串口功能(因?yàn)橐恍╊愃芺ootloader之類的還是需要輸入?yún)?shù)的),我在main函數(shù)添加了scanf語句用來測試輸入功能,如下:


4)準(zhǔn)備工作就緒,編譯鏈接整個工程,然后下載到KE02的板子中并進(jìn)入到Debug調(diào)試環(huán)境中,點(diǎn)擊View->Terminal I/O調(diào)出虛擬終端,然后全步運(yùn)行,就可以看到Terminal下開始打印調(diào)試信息,如下。當(dāng)然顯示輸出有點(diǎn)小case了,我們再試試輸入功能,在input框中輸入‘a(chǎn)’,然后回車,如下圖,perfect:



5)還沒完,我們要玩就玩高端大氣上點(diǎn)檔次的,我們再探索探索呢,結(jié)果又發(fā)現(xiàn)個小驚喜,我們點(diǎn)擊上圖右下角的“Input Mode”,彈出設(shè)置框如下,很高端啊有木有:


呼,終于寫完了,呵呵,看完之后是不是有種躍躍欲試的興奮呢,哈哈,enjoy it~

未完待續(xù)~



附件為我修改好的工程,僅供參考:

KE Driver platinum.zip (194.69 KB, 下載次數(shù): 24)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 四虎影院免费观看 | 一级毛片免费看 | 国产女人高潮毛片 | 亚洲精品一二 | 日韩精品一区在线观看 | 欧美日韩在线精品 | 国产精品美女久久 | 欧美日韩不卡 | 亚洲综合自拍 | 精品免费 | www.精品| 国产欧美日韩一区二区三区 | aaa一级片 | av黄色片 | 欧美一区在线视频 | 国产探花视频在线观看 | 国产午夜一区二区三区 | 国产一级黄色录像 | 久久夜色精品 | 亚洲免费精品 | 国产成人一区二区 | 成人一级视频 | 日韩精品视频在线免费观看 | 日韩在线观看 | 国产成人99久久亚洲综合精品 | 国内精品视频在线观看 | 国产三级做爰高清在线 | h视频免费在线观看 | 四虎影视在线播放 | 夜夜夜夜操 | 国产又粗又猛又爽又黄 | 欧美日韩免费看 | 久久久精品一区二区三区 | 激情丁香婷婷 | 一本色道久久加勒比精品 | 一级毛片免费播放 | 3d动漫精品h区xxxxx区 | 精品一区二区三区中文字幕 | 亚洲一级免费视频 | 精品欧美一区二区三区久久久 | 日韩亚洲欧美在线 |