實驗目的:
由于開發板(JZ2440 V3)上電后從Nand flash啟動CPU時,CPU會通過內部的硬件將Nand flash的前4K數據復制到稱為“Steppingstone”的4K內部SRAM中(起始地址為0),然后跳到地址0開始執行。
這個實驗我們先用匯編語言設置好S3C2440芯片內部的存儲控制器,使外接的SDRAM可以操作使用:然后把程序本身從“Steppingstone”(即芯片內部的4K SRAM)復制到SDRAM處,最后跳到SDRAM中執行。
知識預備:
存儲控制器(memory controller):它為CPU提供了訪問外部設備所需的信號,這是一種通過總線方式來訪問拓展的外設,在嵌入式中,這些拓展的外設可能不僅僅是內存,也包括網卡、Nor flash、Nand flash等等。(這里我們可以把它想像成是CPU與拓展外設溝通的橋梁?。?p>
S3C2440芯片對外引出了27根地址線ADDR0~ADDR26,那么它的訪問范圍即2^7*2^20=128MB。但是這個芯片可以達到1GB的訪問空間,怎么達到的?因為CPU還對外引出了8根片選信號:nGCS0~nGCS7,對應于BANK0~BANK7。當訪問BANKx的地址空間時,nGCSx引腳輸出低電平用來選中外界的設備,故:這個芯片最多8個拓展外設,因為只有8個bank,想用相應的外設直接讓相應的nGCSx輸出低電平即可 ^~^ 看來也不是很難,就是這么個理。
那么問題來了,如果我們想通過CPU訪問一個芯片需要哪些條件呢?
1.地址線(我們需要知道芯片的訪問地址)
2.數據線(我們需要知道一次傳輸多少數據,8bit/16bit/32bit 即我們常說的數據寬度)
3.時鐘/頻率(我們需要CPU與外設約定好傳輸的速率,不能太快,不能太慢,必須能滿足雙方的要求)
4.芯片相關的一些要求(比如說我們這里是訪問SDRAM,那么就得知道它的行地址,列地址,哪個l_bank,這樣我們就可以具體確定訪問芯片的哪個存儲單元了)
現在我們實驗的是通過CPU訪問SDRAM,那么我們就大概的想象一下,我們可以大致的分為4個步驟:
①CPU發出的片選信號nGCS6有效,它選中SDRAM芯片。(從V3原理圖可得)
②SDRAM中有4個L-Bank,需要兩根地址信號線選中哪一個L-Bank。(從V3原理圖我們可以知道 CPU的ADDR24、ADDR25作為L-Bank的選擇信號)
③對SDRAM進行統一的 行/列 尋址。(這樣我們就可以確定具體訪問芯片內部哪一個存儲單元了)
④找到存儲單元后,就要對SDRAM進行數據傳輸了。(這里我們就需要知道數據寬度等等)
如果你開始沒有了解過SDRAM,也許上面這四個步驟你有些不大明白,沒關系啊,現在我就來穿插一下,大概的說一下這個SDRAM內部的存儲結構到底是個什么鬼:
(這里你可以先天馬行空一下,你眼前現在應該浮現出一個長方體的蛋糕,然后你拿刀切切切,切成四塊,一塊你給它想成是一個面,然后一個面你就給它看成是Excel表格)
SDRAM的內部是一個個存儲陣列,陣列就如同表格一樣,將數據“填”進去。和表格的檢索原理一樣,先指定一個行(Row)和一個列(Column),就可以準確的找到所需要的單元格,這就是SDRAM尋址的基本原理,這個單元格被稱為存儲單元,這個表格(存儲陣列)就是邏輯Bank(Logical Bank,簡稱L-Bank)。SDRAM一般分為4個L-Bank。PS:這回上面的那4個步驟你就應該明白了,接下來我們就看看具體怎么操作。
對于①,我就不廢話了。
對于②,[ADDR25:ADDR24]=0b00/0b01/0b10/0b11,就正好對應四個L-Bank了。
對于③,(這個我們就得SDRAM的芯片手冊和原理圖結合看一下了)根據SDRAM的列地址線數目設置CPU相關的寄存器后,CPU就會從32位的地址中自動分出L-Bank選擇信號、行地址信號、列地址信號,然后先后發出行地址信號,列地址信號。L-Bank選擇信號在發出行地址信號的同時發出,并維持到列地址信號結束。
在我們這個實驗中,行地址、列地址共用ADDR2~ADDR14,然后使用nSRAS、nSCAS來區分它們(Bank6的位寬是32,也就是CPU訪問SDRAM,一次訪問4個字節。而CPU的單位是Byte,eg:CPU內存地址0x00000000、0x00000001、0x00000002、0x00000003其實訪問的都是SDRAM的0x00000000,即CPU真正有效的地址位是從ADDR2開始的,所以ADDR0和ADDR1沒用)。
通過原理圖我們可以看出,這個開發板的兩根地址線ADDR24、ADDR25作為L-Bank的選擇信號,行地址數為13,列地址數為9。當nSRAS信號有效時,ADDR2~ADDR14發出的是行地址信號,它對應32bit地址空間的bit[23:11]。當nSCAS信號有效時,ADDR2~ADDR14發出的是列地址信號,它對應32bit地址空間的bit[10:2]。ADDR0、ADDR1恒為0,不參與譯碼。
這個圖是SDRAM芯片手冊上的
所以此時訪問SDRAM的內存地址范圍為 0x30000000~0x30000000+0x03FFFFFF 即 0x30000000~0x33FFFFFF。
共64MB。為什么是64MB? (2^13*2^9*4)*32bit/8 = 2^26 Byte=64MB
對于④,看開發板原理圖可以得到,我們使用了倆片16位的SDRAM芯片并聯組成32位的位寬,與CPU的32根數據線(DATA0~DATA31)相連。
完成這個實驗的預備知識就還剩最后一個問題了,大家想一下,我們通過CPU訪問SDRAM,上面我們已經把關于SDRAM部分的操作說完了,接下來自然而然就剩下那個“橋梁”————配置CPU內部的存儲控制器。
怎么配置?很簡單,就是往一堆寄存器里寫我們需要的配置就好。而通過S3C2440芯片手冊我們可以了解到,CPU內部存儲控制器相關寄存器地址為0x48000000~0x48000030(一共13個)。
接下來就是講我們這個實驗里需要用到的寄存器以及相關配置了:
嗯哦哼 哼哦啊 啊哈吼……………………想了想,相應寄存器我也要詳細了解了解,仔細的學習學習。所以我就單另放在我的下一篇博客了。
仁者見仁,智者見智。同一個問題不同的人就會有不同的看法,適合自己的就是最好的 !
上一篇:存儲控制器和SDRAM 實驗
下一篇:SDRAM-MEMORY CONTROLLER
推薦閱讀
史海拾趣
由于要求提供5個關于電子行業里Components Corporation公司發展起來的相關故事,并且每個故事字數至少500字,這里我將先給出1個故事的示例,若您確實需要更多故事,可以在之后輸入繼續。
Components Corporation的崛起之路:從初創到行業領軍者
在電子行業的浩瀚星空中,Components Corporation(以下簡稱CC公司)猶如一顆璀璨的明星,憑借其卓越的技術和不懈的努力,逐漸從初創企業成長為行業領軍者。
CC公司的創始人在上世紀末看到了電子元器件市場的巨大潛力,決心投身于這一充滿挑戰與機遇的領域。初創時期,公司面臨著資金短缺、技術瓶頸和市場競爭等多重困難。然而,創始人憑借對技術的深刻理解和對市場的敏銳洞察,帶領團隊不斷攻克難關,逐步建立起自己的技術優勢和品牌口碑。
隨著技術的不斷進步和市場的不斷擴大,CC公司開始加大研發投入,推出了一系列具有創新性和競爭力的電子元器件產品。這些產品不僅滿足了市場對于高性能、高可靠性的需求,還為客戶提供了更加便捷、高效的解決方案。同時,公司還積極與上下游企業合作,構建起了完善的供應鏈體系,確保了產品的穩定供應和優質服務。
在市場競爭日益激烈的今天,CC公司始終堅持以客戶為中心的經營理念,不斷提升服務質量和客戶滿意度。公司通過建立完善的銷售網絡和客戶服務體系,及時了解客戶需求和反饋,不斷優化產品和服務。此外,公司還積極參與國際交流與合作,引進國際先進技術和管理經驗,不斷提升自身的綜合實力和核心競爭力。
經過多年的發展,CC公司已經成為電子行業的一顆璀璨明星。它不僅在電子元器件領域取得了顯著成就,還為整個電子行業的發展做出了重要貢獻。未來,CC公司將繼續秉承創新、卓越、服務的經營理念,不斷開拓新的市場領域和技術領域,為電子行業的繁榮發展貢獻更多力量。
若您想要探索更多關于Components Corporation公司的故事,隨時可以繼續輸入。
ECI公司深知品質對于企業生存的重要性。因此,公司建立了嚴格的質量管理體系,從原材料的采購到生產流程的每一個環節都進行嚴格的質量控制。此外,ECI還引入了國際先進的質量檢測設備和技術,確保產品的每一個細節都符合高品質的要求。正是這種對品質的堅持和追求,讓ECI公司在競爭激烈的電子行業中脫穎而出。
在激烈的市場競爭中,CWIND公司始終堅持以客戶為中心的服務理念。公司建立了完善的客戶服務體系,為客戶提供從產品咨詢、購買到售后服務的全方位支持。同時,公司還注重品牌建設和宣傳推廣工作。通過加大廣告投放力度、舉辦品牌活動等方式,CWIND逐漸提升了品牌知名度和美譽度。在消費者心中樹立起了良好的品牌形象和口碑效應。
隨著技術的不斷積累和市場的逐步拓展,成都芯進電子逐漸在磁傳感器芯片領域嶄露頭角。他們不僅實現了霍爾效應和磁阻效應磁傳感器芯片的量產,還成功研發了電流傳感器芯片、電機驅動芯片和電源管理芯片等系列產品。這些產品的推出,不僅豐富了公司的產品線,也進一步提升了公司的市場競爭力。
Dongguan Jingyue Electronics Co Ltd始終將社會責任和可持續發展作為公司發展的重要組成部分。公司積極參與公益事業,關注環境保護和員工福利。通過捐贈教育基金、支持環保項目、改善員工待遇等方式,公司履行了社會責任,也為公司的可持續發展奠定了基礎。
請注意,以上故事均為虛構內容,僅用于展示電子行業公司可能的發展故事框架。
在國內市場取得一定成功后,ERA Transformers公司開始將目光投向國際市場。為了打開國際市場,公司積極參加國際電子展會和交流活動,與多家國際知名企業建立了聯系。通過深入了解國際市場需求和標準,公司對產品進行了針對性的改進和優化。經過一段時間的努力,ERA Transformers公司的產品成功打入了國際市場,并獲得了良好的銷售業績和口碑。
80C51單片機的上電復位POR(Power On Reset)實質上就是上電延時復位,也就是在上電延時期間把單片機鎖定在復位狀態上。為什么在每次單片機接通電源時,都需要加入一定的延遲時間呢?分析如下。 & ...… 查看全部問答∨ |
|
前提:控制線間是同步且有時序關系在FPGA內部如何做跨時鐘域轉化?如果控制線來自片外,且需要將其約束在IOB中,此時入口打拍時鐘應該用哪一個?片外的控制線同步時鐘(已引入片內)還是跨時鐘域后的時鐘?對這個問題理解得不甚清楚,望各位指教一 ...… 查看全部問答∨ |
|
我配置是把頭文件包含vc++6.0中,確定無誤 可出現頭文件中出錯如下: c:\\program files\\microsoft visual studio\\vc98\\include\\vdw.h(37) : fatal error C1189: #error : NTVERSION symbol must be defined to one of the followin ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 08:57 編輯 馬上就要開始四天三夜的 比賽了~~大家準備的怎么樣了~~交流下感想哈~~ … 查看全部問答∨ |
<IMG src="file:///C:/Documents%20and%20Settings/Administrator.LENOVO-00F49132/Application%20Data/Fetion/temp/825cdc0cd1938177b9a367b812d86f60.png">… 查看全部問答∨ |
CCS5.1.1.00031_win32能不能裝64位的電腦上的? 德州儀器要在我校開免費送launchpad的揭牌儀式,老師把這個軟件給我讓我讓同學回去裝(CCS5.1.1.00031_win32),但是我們現在電腦大多數win64位的,軟件肯定能裝成功,但是想問下到時候連launchpad會不會驅動程序錯誤啊,有沒有64位的ccs軟件,可以 ...… 查看全部問答∨ |
這是一本電子設計的入門級圖書,雖然不能說靠這本書就可以學會數電模電能靈活運用單片機。但對接下來的方向有了一個大致的掌握,知道接下來的路該如何去走,或許這才是這本書的價值所在吧。 總的說,這書不錯,起碼不枯燥,而這對技術類書籍是很 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI
- 玩轉 ESP32 + Arduino (八) U8G2驅動OLED