新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM JTAG仿真器調試方法之SDRAM篇

        ARM JTAG仿真器調試方法之SDRAM篇

        作者: 時間:2016-11-26 來源:網絡 收藏
        之前介紹了使用ARM JTAG仿真器將映像文件加載到ARM處理器內部SRAM中進行程序調試的方法,而在實際操作中,將映像文件加載到外部SDRAM中進行調試的方式更為常見。
        要把映像文件加載到SDRAM中,除了要正確設置好映像文件的RO段基地址外(對于一個加載時域和運行時域相同的映像文件來說,RO段基地址實際上就是該映像文件在存儲空間的起始地址),更關鍵的是要對SDRAM進行初始化。因為在上電時,SDRAM是沒有被初始化的,所謂初始化SDRAM,就是要設置處理器的SDRAM空間以及讀寫SDRAM的時序參數,因而SDRAM在初始化之前是不能進行讀寫操作的。
        對于PXA270處理器,初始化SDRAM的工作通過配置存儲控制器寄存器來完成,這些寄存器包括MDCNFG,MDREFR,MDMRS。
        由于這些寄存器都映射到了某一存儲空間地址,因而可以在AXD的命令行窗口(System Views->Command Line Interface [Alt+L])中使用setmem命令來對寄存器進行配置。setmem命令(簡寫為smem)可以為存儲空間的某一地址單元指定值。例如“setmem 0x48000000 0xac9 32”的含義就是將常數0xac9保存到地址為0x48000000的字中(一個字32bit)。實際上,通過查閱Intel PXA27x Processor Family Developer’s Manual可知,0x48000000正是寄存器MDCNFG的地址,因而這條命令實質上完成了對MDCNFG寄存器的配置,使能SDRAM partition 0,使用32bit寬的SDRAM數據總線,9位列地址,13位行地址,SDRAM內部采用4 bank設計,tRP=3,CL=3,tRCD=3,tRAS=7,tRC=10,采用普通尋址模式;不使用SDRAM partition 2/3。具體設置要根據實際所使用的SDRAM芯片進行。
        因此,可使用3~4條setmem命令初始化SDRAM,之后就可以正確地將映像文件加載到SDRAM中運行了。順便提一句,PXA270有兩種SDRAM存儲模式,一種是小空間模式,支持4個64M的partition共計256M字節,起始地址為0xa0000000;另一種是大空間模式,支持4個256M的partition共計1GB,起始地址為0x80000000。應根據實際情況設置正確的RO BASE地址。
        關于使用ob命令自動初始化SDRAM:
        由于每次上電后往SDRAM加載映像時都需要對其進行初始化,手工輸入多條命令有時是很繁瑣的。這時,可以把初始化SDRAM的命令序列保存在一個*.ini文本文件中(也可以是*.txt文件),每條命令占一行。然后在AXD命令行窗口使用obey命令調用該*.ini文件,就可以將文件中的命令順序執行,繼而完成SDRAM的初始化。
        例如,將SDRAM初始化命令序列保存在PXA270.ini文件中,執行命令:
        ob $PATH/PXA270.ini
        就可自動執行初始化SDRAM的命令。其中,ob是obey的簡寫,$PATH是PXA270.ini文件的絕對路徑。
        更多AXD命令和內容可以參考ADS手冊之《AXD and armsd Debuggers Guide》。
        啟動AXD時自動初始化SDRAM:
        感謝網友Garfield的指點,他提出了在硬件平臺不變的情況下,在啟動AXD時自動初始化SDRAM的一勞永逸的辦法,經筆者證實,該方法確實是可行的。
        具體辦法如下:
        將初始化SDRAM的命令序列保存為一個*.txt文本文件(可以直接將上述的*.ini文件后綴改為.txt),然后在AXD的主窗口下選擇菜單Options->Configure Interface...,在Session File一頁中選擇“Run Configuration Script”,將該.txt文本文件作為一個腳本加進來,確定。這樣以后每次啟動AXD時,就會自動運行該腳本來完成對SDRAM的初始化。
        附:每次系統重新上電或硬件復位后都需要重新初始化SDRAM才能把映像文件加載到SDRAM??梢栽O置在AXD啟動時自動對SDRAM進行初始化,見“啟動AXD時自動初始化SDRAM”部分。有時候AXD啟動后需要重新配置,這是ADS自身的問題,主要是看啟動后在CommandLineInterface窗口有沒有出現初始化SDRAM的命令,另外在AXD的源碼窗口右鍵InterleaveDisassembly,看各條代碼在SDRAM中對應地址的內容是否為正確的機器碼,來檢查映像文件是否成功加載。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 荣成市| 陵川县| 枝江市| 绵竹市| 鹤庆县| 庆元县| 日喀则市| 萨迦县| 苗栗市| 绥芬河市| 嵊州市| 凤庆县| 宣恩县| 陈巴尔虎旗| 通州市| 安国市| 文山县| 资兴市| 余姚市| 克什克腾旗| 缙云县| 龙游县| 麻栗坡县| 陵水| 汶川县| 宁武县| 平南县| 五寨县| 西充县| 滦平县| 金山区| 当雄县| 中西区| 密山市| 封丘县| 德钦县| 越西县| 博白县| 梁平县| 班戈县| 荔波县|