1.CPU如何控制外設?
2.CPU如何選擇寄存器?
CPU通過內存控制器選擇
發出地址addr
根據地址選擇不同的模塊
CPU
內存控制器
讀寫數據
3.外設共用地址、數據總線,如何互不干擾?
通過片選CS引腳,選擇不同的外設
4.誰控制片選引腳
發出地址addr
根據地址發出片選信號
CPU
內存控制器
使能相應的外設
由芯片手冊得知:當CPU發出地址是0x00000000時 nGCS0為低電平選擇(有效)
5.CPU如何讀寫數據的方向?
通過外設芯片的讀寫引腳控制
6.CPU不同位寬設備如何連接并讀取數據【內存控制器】
6.1 連接方式
8bit ROM (從A0開始對應連接)
16bit ROM (A0不接,從A1開始)
32bit ROM(A0、A1不接,從A2開始)
6.2 CPU讀取ROM數據1個字節
例如在 地址3上讀取一個字節數據
mov R0.#3
LDRB R1,[R0]
過程 CPU發出的地址 ROM接收到的地址 ROM返回的數據 內存控制器挑出指定字節送給CPU
8bit 000011 000011 第3個byte 第3個byte
16bit 000011 00001 第1個16bit 根據A0=1,挑出16bit中的第1個byte給CPU(從0byte開始)
32bit 000011 00000 第0個32bit 根據A0 A1=11挑出第3個byte給CPU(從0byte開始)
綜上,也就是所有的地址線都會用到,內存控制器根據未接的地址線狀態判斷挑出指定的byte
6.3 CPU讀取ROM數據4個字節
mov R0,#4
LDR R1,[R0] ;從地址4上取出4個字節
過程 CPU發出的地址 內存控制器轉發給ROM的地址 ROM返回的數據 內存控制器組裝數據返回給CPU
8bit 000100 000100、000101、000110、000111(共四次) 得到地址4、5、6、7上的byte 組裝給一個32bit數據給CPU
16bit 000100 00010、00011(共兩次) 得到第2、3個16bit 組裝給一個32bit數據給CPU
32bit 000100 0001(共一次) 得到第1個32bit 直接發送給CPU
7.如何根據原理圖確定芯片訪問地址
7.1 方法
1.根據片選引腳確定基地址,見4.誰控制片選引腳
2.根據芯片所接地址線確定范圍
7.2 Nor Flash確定訪問地址
例如Nor Flash芯片:用到A20~A0共21條線
地址線21:即可訪問2M內存,0x1FFFFF
根據它片選信號為nGCS0可以得到基地址BASE = 0x00000000
其范圍為BASE+0x0000 0000 ~ BASE+0x001F FFFF,即0x0000 0000 ~ 0x001F FFFF
7.3 Net芯片確定訪問地址
例如網卡net芯片:只連接了A2,但是其A0是用來確定16bit(網卡數據線為16位)中的高8位還是低8位,因此A2 A0
根據其片選引腳為nGCS4,可以得到基地址BASE = 0x2000 0000
其范圍為BASE+0x0000 0000 ~ BASE+0x0000 0101,即0x2000 0000 ~ 0x2000 0005
8. Nor Flash時序分析
8.1 MX29LV160 讀數據時序
Taa:發出地址信號之后多長時間數據有效
Tce:發出片選信號之后多長時間數據有效
Toe:發出讀信號之后多長時間數據有效
Toh:數據保持時間
Tdf:數據浮動時間
Trc:讀取周期時間(70ns,即讀取速率最大為70ns)
8.2 S3C2440 可編程訪問周期時序
為了方便,使得Addr、CS、OE信號同時拉低使能,然后確保Tacc>=70ns,即可滿足Nor Flash的時序
則當HCLK=100M,內存控制器周期為T=10ns,Tacc = 8T即可
9.代碼重定位
1.Nand啟動時,一上電,硬件會把前4K數據復制到SRAM
2.CPU從0地址運行
如果程序大于4K,前4K的代碼需要把整個程序讀取出來放到SDRAM【重定位:重新確定程序地址】
9.1 Nor Flash特點
可以像內存一樣的讀取
不可以像內存一樣直接寫入(寫入有保護)
9.2 Nor直接寫入的結果
程序中含有需要修改(寫入)的變量,寫在Nor上,直接修改變量是無效的
因此需要重定位,放到SDRAM上
9.3 實驗
以Nor Flash 啟動,修改一變量,改變量并不會被修改,即無效
以Nand Flash 啟動,修改一變量,改變量會被修改
9.4 程序包含哪幾部分
代碼段text 代碼
數據段data (一般的全局變量)
只讀數據段rodata const 全局變量
bss 初值為0或無初值的全局變量 不保存在bin文件中
comment 注釋 不保存在bin文件中
bss:是“Block Started bySymbol”的縮寫,意為“以符號開始的塊”。 BSS是Unix鏈接器產生的未初始化數據段。
bss段與注釋段不保存在bin文件中
char g_Char = 'A'; //定義全局變量
const char g_Char2 = 'B'; //只讀全局變量
int g_A = 0; //初值為0的全局變量
int g_B; //未定義初值的全局變量
上一篇:【ARM裸板】ARM模式、異常與狀態
下一篇:【ARM裸板】S3C2440 時鐘設置與分析
推薦閱讀
史海拾趣
1954年至1973年,Emerson在總裁帕森斯的領導下,開始實施多元化戰略。公司通過一系列并購活動,成功收購了包括威諾、美國電氣電機、里奇工具等在內的36家公司,進一步拓寬了業務范圍。同時,Emerson還注重研發和創新,通過不斷推出新產品和技術,鞏固了其在電氣行業的領先地位。在此期間,公司的規模迅速擴大,從最初的2家工廠、4000名員工和5600萬美元產值發展到82家工廠、31000名員工和8億美元產值。
Engelking Elektronik GmbH公司成立于20世紀90年代初,最初只是一家小型電子產品制造商。在創始人Engelking先生的領導下,公司專注于生產高質量的電子元件和模塊。隨著技術的不斷進步和市場的擴大,Engelking Elektronik開始將產品范圍擴展到更復雜的電子系統。通過持續的研發投入和嚴格的質量控制,公司逐漸在電子行業中樹立了專業可靠的聲譽。
作為一家有社會責任感的企業,Engelking Elektronik始終關注環保和可持續發展問題。公司積極采用環保材料和清潔能源,減少生產過程中的污染排放和資源浪費。此外,Engelking Elektronik還積極參與公益活動和慈善捐贈,回饋社會。公司堅信只有關注社會責任和可持續發展才能實現企業的長期繁榮和穩定。
作為一家有社會責任感的企業,Engelking Elektronik始終關注環保和可持續發展問題。公司積極采用環保材料和清潔能源,減少生產過程中的污染排放和資源浪費。此外,Engelking Elektronik還積極參與公益活動和慈善捐贈,回饋社會。公司堅信只有關注社會責任和可持續發展才能實現企業的長期繁榮和穩定。
AVX一直致力于綠色技術的研發與應用。在數十年的深入研發支持下,AVX的產品為各種綠色技術提供了關鍵的支持,如風能、太陽能和水力發電等領域。這些技術的應用旨在節省現有能源并創建可靠、價格合理的電子系統,為可持續發展做出了積極貢獻。AVX在這一領域的持續投入和創新,使其在綠色技術領域取得了顯著成果。
奇力公司一直致力于環保和社會責任。在生產過程中,奇力公司采用環保材料和工藝,減少對環境的影響。同時,奇力公司還積極參與社會公益活動,回饋社會。這種環保和社會責任的理念也贏得了客戶和社會的認可和支持。
以上五個故事分別從不同角度展現了臺灣奇力(Chip)公司的發展過程。這些故事不僅體現了奇力公司的技術實力和市場策略,也展現了其持續創新、綠色環保和社會責任的企業形象。
部分幾臺機子出現CF卡內容被沖掉的現象, 格式化后重新分區又可以使用, 個別出現CF損壞。 可自己怎么實驗就是沒法模擬重現這個想象,真沒頭緒 CF卡使用的PXA255的自帶CF控制器,Kinston 1G CF卡,OS是4.2。 大家有沒有碰到過這個現象? 謝謝 … 查看全部問答∨ |
|
原來在windows mobile 6.0上開發了個應用程序,現在想移植到wince6.0 的PND上(找別人買的,好象沒有提供SDK),不知該如何做,我用VS2005,只能選擇mobile 6.0的開發環境。我想在在這個pnd上開發程序,并能在其模擬器運行與調試… 查看全部問答∨ |
愛晶電子 基于ENC28J60的PIC以太網開發板(PIC實驗板/PIC開發板) ¥450 http://item.taobao.com/auction/item_detail-db2-cdaacf2253921bc4ab5b5d41b991e651.jhtml 小新電子 PIC18F97J60 以太網開發板 一 口 價: 298.00元 http:/ ...… 查看全部問答∨ |
【VxWorks5.x -->VxWorks6.x 移植問題】 大家好,誰有沒有做過 PPC的BSP 從 5.X ---> 6.X 的移植啊? 我所知道的是,從6.x對5.X的支持是兼容的,那么我就先把 5.X 的BSP文件夾 如 ppc_myself_XXX 放到 h/config/ 下,然后新建立 BSP 工程,進行編譯,可是編譯的時候,發現ERROR超多啊 ...… 查看全部問答∨ |
|
103系列的好用的USB iap現在挪到105下不好用了。 對這個USB很不了解。 現在哪里能找到基于USB-OTG的USB iap例程? 哪位能分享一下例程不勝感激… 查看全部問答∨ |
|
Tue Oct 27 20:36:27 2009: The stack \'CSTACK\' is filled to 100% (1024 bytes used out of 1024). The warning threshold is set to 90.% 請問是不是堆棧用光了… 查看全部問答∨ |