在mini2440(S3C2440)的板子上運行LED 的程序,使GPB5輸出低電平,點亮LED.
將代碼在ISRAM 內仿真
1.Led_on.s的完整程序如下
程序代碼:
-----------------------------led_on.S----------------------------------------------------
PRESERVE8 ;保持堆棧8字節對齊,符合新的ARM ABI標準
AREA LED,CODE, READONLY
ENTRY
START1
LDR R0,=0x56000010 ;@ R0設為GPBCON寄存器。此寄存器
;@ 用于選擇端口B各引腳的功能:
;@ 是輸出、是輸入、還是其他
MOV R1,#0x00000400
STR R1,[R0] ;@ 設置GPB5為輸出口, 位[10:9]=0b01
LDR R0,=0x56000014 ;@ R0設為GPBDAT寄存器。此寄存器
;@ 用于讀/寫端口B各引腳的數據
MOV R1,#0x00000000 ;@ 此值改為0x00000020,
;@ 可讓LED1熄滅
STR R1,[R0] ;@ GPB5輸出0,LED1點亮
MAIN_LOOP
B MAIN_LOOP
END
---------------------------------------------------------------------------------------------
2.使用分散加載文件GPIO.sct
;*************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
;LR_IROM1結尾地址不能超過4KB
;因為S3C2440的內部Stepingstone只有4KB,如果超過了4KB ,就必須從NAND搬移代碼到SDRAM
;而主程序里并沒有搬移的程序,也就是保證裝載的程序必須在4KB以內的nand flash里。
;其實還有個隱形的條件。LR_IROM10x00000FE0 最大也只能為0x00000FE0,因為第一條指令的反匯編是
LDR R0,[PC,#0x0014],要保證PC+0X0014是小于0x1000,當設置為0x00000fe0,這條指令的是把
地址0x00000fe8+0x0014=0x00000FFC的內容裝載到R0里,仔細看代碼,果真如此。
;PC指針是指向下兩條指令的位置:(執行A,取指B,譯碼C),當執行A指令,PC已經指向C指令位置了。
如果設置成0x00000fe4,那么地址是0x00000fec+0x0014=0x1000,已經不小于0x1000,所以不能設置成0x000000FE4。
------------------------------disassembly----------------------------------------------------
6: LDR R0,=0x56000010 ;@ R0設為GPBCON寄存器。此寄存器
7: ;@ 用于選擇端口B各引腳的功能:
8: ;@ 是輸出、是輸入、還是其他
0x00000FE0 E59F0014 LDR R0,[PC,#0x0014]
9: MOV R1,#0x00000400
0x00000FE4 E3A01B01 MOV R1,#0x00000400
10: STR R1,[R0] ;@ 設置GPB5為輸出口, 位[10:9]=0b01
0x00000FE8 E5801000 STR R1,[R0]
11: LDR R0,=0x56000014 ;@ R0設為GPBDAT寄存器。此寄存器
12: ;@ 用于讀/寫端口B各引腳的數據
0x00000FEC E59F000C LDR R0,[PC,#0x000C]
13: MOV R1,#0x00000000 ;@ 此值改為0x00000020,
14: ;@ 可讓LED1熄滅
0x00000FF0 E3A01000 MOV R1,#0x00000000
15: STR R1,[R0] ;@ GPB5輸出0,LED1點亮
16: MAIN_LOOP
0x00000FF4 E5801000 STR R1,[R0]
17: B MAIN_LOOP
0x00000FF8 EAFFFFFE B 0x00000FF8
0x00000FFC 56000010 ???PL
0x00001000 00000000 ANDEQ R0,R0,R0
-------------------------------------------------------------------
---------------GPIO.sct-----------------------------------------
LR_IROM1 0x00000FE00x04000000 { ; load region size_region
ER_IROM1 0x00000FE0 0x04000000 { ; load address = executionaddress
led_on.o (LED, +First)
;*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x30000000 UNINIT 0x04000000 { ; RW data
.ANY (+RW +ZI)
}
}
--------------------------------------------------------------------------------
3.實際操作發現進入調試,程序pc會首先跑到0x00000000,而不是我們裝載的地方0x00000FE0,
所以我們必須另寫一個調試的啟動腳本文件,并載keil 里設置
-------------------------GPIO.ini--------------------------------------------
FUNCvoid Setup(void) {
PC = 0x00000FE0;
}
Setup();
---------------------------------------------------------------------------------
代碼都準備好了,剩下的工作是在Keil里設置了
在Option for Target“Target1”,或者點擊工具欄的魔法棒
上一篇:MDK S3C2440啟動代碼簡單分析
下一篇:S3C2440 FLASH 介紹
推薦閱讀
史海拾趣
在1924年,大金工業株式會社成功合成了碳氟化合物,并在隨后的18年里,這項技術逐漸成熟并開始批量生產。這一突破性的技術不僅為大金在化學領域奠定了堅實的基礎,也為公司后續在家用空調市場的進軍提供了技術支持。
隨著電子產品的更新換代速度加快,散熱技術也面臨著更高的要求。Aavid Niagra公司敏銳地捕捉到了這一市場變化,加大了在研發方面的投入,推出了一系列創新性的散熱產品。這些產品不僅提高了電子設備的性能穩定性,還大大降低了能耗,贏得了客戶的廣泛好評。公司的技術創新能力成為了其持續發展的核心競爭力。
近年來,電子行業正經歷著深刻的變革,新興技術的不斷涌現對傳統散熱技術提出了嚴峻挑戰。Aavid Niagra公司面對這一變革,積極調整戰略方向,加大在新興技術領域的研究力度。通過與高校、研究機構的合作,公司成功研發出了一系列適應新興技術需求的散熱產品,成功應對了行業變革帶來的挑戰。
在發展過程中,B&B公司注重與上下游企業的合作與共贏。公司與多家知名的芯片制造商、原材料供應商建立了長期穩定的合作關系,確保了產品的質量和供應鏈的穩定性。同時,公司也積極與集成商、解決方案提供商等合作伙伴開展深度合作,共同為客戶提供更加完善的服務。
隨著科技的不斷進步,B&B公司意識到,要在競爭激烈的電子行業中立足,必須不斷進行技術革新和產品升級。因此,公司加大了在研發上的投入,推出了一系列具有創新性的產品,如智能無線M2M和物聯網連接解決方案。這些產品不僅提升了數據傳輸的效率和穩定性,也為客戶提供了更加便捷和高效的解決方案。
B&B公司成立于二戰后的經濟恢復期,最初是一家小型的電子制造公司。在創始人對電子技術的深厚興趣和不懈追求下,公司逐漸在數據通信和商業應用領域找到了自己的定位。初步的產品線主要集中在轉換器、控制器等基礎電子設備上,為當時的工業自動化和過程控制提供了穩定可靠的解決方案。
在CEF中國電子展的展出的電子元器件、電阻電容、電感、變壓器、磁性元件、諧振器、振蕩器、濾波器、電聲器件、連接器、開關、繼電器、微特電機、電線電纜、二極管、三極管、電力器件、晶閘管、敏感元件、傳感器、電保護器件、LED光電與顯示器件、激 ...… 查看全部問答∨ |
|
拜托各位大蝦,迷茫中??!女孩到底適合不適合做嵌入式?????? 學習嵌入式學了一些了,都還沒入門。有朋友勸我放棄,覺得女孩做這個沒有什么前途。真的迷茫啊,如果不做這個那又做什么呢?女孩到底做什么合適?。∥业暮芏嗯笥讯荚谧龌A測試,我覺得我現在做好像晚了點,況且還很無聊。我對自己能否 ...… 查看全部問答∨ |
DM9000 linux2.6 驅動解析,網絡上面找的,感覺還不錯轉帖給需要朋友。 /* * dm9000.c: Version 1.2 03/18/2003 * * A Davicom DM9000 ISA NIC fast Ethernet driver for Linux. * & ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 04:09 編輯 #include #include"lcd12864.h" #include"BoardConfig.h" #define Num_of_Results 32 static uint results[Num_of_Results]; //保存ADC轉換結果的數組 void int_adc() { P6SEL |= ...… 查看全部問答∨ |
|
現在遇到一個問題,我用的是F2812,做的系統里有兩片DSP,之間存在通訊,將程序燒入Flash后,去掉仿真器上電,程序部分正常,要對硬件看門狗進行手動復位,而且要先復位先發送的那片DSP,在復位另一片,程序才能全部正常運行,這是為什么? 連著仿 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 關注有禮 | 泰克中端示波器增“重”計劃
- Microchip最新SAM 以及 PIC32單片機軟件開發平臺-- MPLAB® Harmony V3介紹 ”
- 分分鐘完成電子設計的奧秘—2015WEBENCH邀你共同見證!
- 答題贏禮! | 如何利用PI Expert 電源設計工具快速搭建PD充電器
- 答題抽獎:Mentor Tessent Automotive相關測試解決方案(獎品池還剩不少獎品喲)
- 直播已結束|TI 嵌入式直播周帶您直擊工業應用
- 泰克《MIPI物理層測試》下載有禮!
- Keysight 有獎直播 | 基于數字孿生的軟件工具,助力射頻子系統驗證
- MSP430 多款開發工具優惠促銷,總有一款會適合你!