新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 針對Motorola微處理器的BDM調試系統的設計

        針對Motorola微處理器的BDM調試系統的設計

        作者: 時間:2012-04-19 來源:網絡 收藏

        由于所有的信號都是單向的,時序和邏輯比較簡單,因此,采用GAL器件實現并口操作時序與操作時序的轉換。GAL要實現的功能主要是數據的串并和并串轉換。

        GAL器件與并口接口的信號有:

        輸入信號:D0~D7,C1(主機忙狀態線),DSCLK(提供串行通信時鐘信號)。
          輸出信號:S3,S4,S5,S7(這4個信號做數據反向輸出),S6(給PC機提供一個中斷信號)。

        他與端口接口的信號有:

        輸入信號:PSTCLK,DSO。
        輸出信號:DSI。 
         
        故需配置12個輸入端和6個輸出端,故選用74GAL16V8的器件即可滿足要求[2]。現在GAL器件要實現的即是將與并口接口的輸入信號(D0~D7,C1,DSCLK)轉換成與接口的輸出信號(DSI),同理,也要將與BDM端口接口的輸入信號(PSTCLK,DSO)轉換成與并口接口的輸出信號(S3,S4,S5,S6,S7),實現了這2個轉換,然后對GAL編程,PCB版圖,可以很快做出BDM卡。

        3.2 BDM驅動程序的

        BDM卡已經實現了并口到BDM口的時序操作轉換,按照一定的數據格式傳送和接收數據則是BDM卡的驅動程序要完成的工作,驅動程序對數據的處理分為2層:底層完成基本的字節數據的收發(恢復和拆分);上層則完成數據包的收發。底層的數據收發原理在調試卡的過程中已經做了詳細的介紹,以下主要介紹數據包的收發處理程序設計應注意的事項。

        從BDM操作時序圖中可以看出,串行通道數據傳輸速度從直流到PSTCLK頻率的1/5頻率之間,該通道使用雙工模式,數據可在主控設備和從控設備之間同時發送和接收,每次傳送的數據塊由一個17 b的數據包組成,該數據包由一個狀態/控制位和一個16 b數據字組成。數據格式如下所示:

        本文引用地址:http://www.104case.com/article/149202.htm

        發送數據時最高位為控制標志,該位保留,在開發向CPU發出命令和數據時,該位應該被清除。

        接收數據時最高位為狀態標志位,指示從CPU返回的消息類型。他與數據域及數據表示的消息含義之間的關系為:

        顯然,由于每次只能傳送一個字節,故發送一個數據包需要執行3次傳送操作。應注意由于并口工作在4位組模式,每次只能接收4 b數據[1],而并口操作是以字節為單位進行的,因此,實際上接收一個數據包最少應該執行6次接收操作,而不是5次。也即是說最后剩下一位數據也要當一個字節傳送,這在驅動程序的設計當中很容易弄錯。

        BDM調試模塊為外部開發提供了12個基本類型的命令(用助記符表示):RAREG/RDREG(讀A/D寄存器),WAREG/WDREG(寫A/D寄存器),READ(從存儲器讀數據),WRITE(向存儲器寫數據),DUMP(與READ命令結合使用轉儲數據塊),FILL(與WRITE命令結合使用填充數據塊),GO(繼續執行程序),NOP(不做任何操作,可以被用做一個空指令),RCREG(讀控制寄存器),WCREG(向系統控制寄存器寫入數據),RDMREG(讀調試模塊寄存器),WDMREG(寫向調試模塊寄存器寫入數據);各種命令和他對應的應答數據的格式可以從MCF5272芯片資料上查到。上層驅動程序最終的任務就是實現這12種基本命令數據和應答數據的收發,并為調試軟件提供相應的函數調用接口,具體的驅動程序設計比較簡單,關鍵是要注意對從調試模塊返回的狀態數據進行出錯處理。特別是應該區別CPU還沒準備好和總線操作被中止2種消息。前者出現的比較多,一般是在CPU正在執行一個任務,不能及時響應BDM命令時返回的消息,而后者則往往是CPU執行了2條有沖突的指令(也即是非法訪問資源)。這個在驅動程序中看不出有很大的區別,但是在調試應用程序時經常報告“BUSError”信息。

        3.3 BDM調試軟件的設計

        該軟件應該具有如下基本的功能:系統初始化,重啟系統,檢查CPU外圍期間工作是否正常,讀寫Flash中的數據,讀寫SRAM中的數據,單步執行程序。

        調試軟件主要是調用驅動程序實現的12種BDM調試命令接口函數來實現各種功能的。其中需要傳遞參數給驅動程序的有:

        ①檢查外部設備接口是否工作正常:如RS232串口、USB口、并口、網口等。這類操作需要接口地址和中斷號等參數,并且需要返回操作結果。

        ②讀寫SRAM和Flash中的數據:這些操作需要提供存儲器的地址范圍。

        調試軟件的設計因開發系統的操作系統不同,在實現上有比較大的區別,但處理過程基本相同,因此,軟件的設計也比較簡單,沒有必要贅述。

        3.4 系統運行及其測試

        應用MCF5272做嵌入式系統開發時,開發平臺的操作系統是RedHatLinux,因此,驅動程序和調試軟件都是Linux設計的。驅動程序將BDM調試卡作為一個字符設備看待,BDM卡的初始化是在/usr/src/linux/driverschar/mem.c中添加BDM卡初始化代碼[3],該設備的基本入口點在驅動程序的file_operation結構中,對BDM卡的操作命令均在此實現,具體代碼不再詳述。

        調試系統做整體測試時,首先要在Linux下創建一個字符型的BDM設備,然后執行insmod命令將驅動程序模塊打入操作系統內核中[3],在成功地創建了BDM設備文件和安裝好BDM調試卡的驅動程序之后,就可以調試和執行該調試軟件了。

        4 結語

        BDM調試系統具有成本低、操作方便、移植簡單等特點。在Linux環境下MCF5272成功開發了BDM調試系統后,又先后將該系統軟件稍加改動,就輕易地移植到與MCF5272同屬ColdFire系列的MCF5249和Power PC系列的MPC555等CPU上,并且在Window下重新編寫了驅動程序和調試軟件,使用圖形界面操作,基本上達到了CodeWarrior相應軟件的功能,為產品的快速低成本開發做出了貢獻。

        經緯儀相關文章:經緯儀原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宣城市| 乐昌市| 湖口县| 邢台市| 施秉县| 安阳县| 亚东县| 醴陵市| 镇雄县| 承德市| 湄潭县| 乌兰县| 怀宁县| 临颍县| 襄城县| 田阳县| 西峡县| 十堰市| 淮南市| 玉环县| 稷山县| 辽中县| 沈丘县| 铜鼓县| 绥中县| 南和县| 安福县| 莎车县| 犍为县| 高唐县| 江山市| 仪陇县| 栾城县| 宽城| 宿迁市| 甘泉县| 新密市| 三江| 鱼台县| 南康市| 钟祥市|