程序設計思路:通過狀態寄存器與通用寄存器之間數據傳輸指令MRS/MSR實現,修改時應采用“讀取-修改-寫回”三個步驟來實現。每次只需修改相應的域即可,如本次程序只修改C控制域。同時應注意系統模式與用戶模式共用SP,只需初始化其一即可。
程序代碼如下:
(1)在GNU ARM開發環境下編程:
.equ _ISR_STARTADDRESS, 0xC7FF000 @設置棧的內存基地址
.equ UserStack, _ISR_STARTADDRESS @用戶模式堆棧地址0x7FF000
.equ SVCStack, _ISR_STARTADDRESS+256 @管理模式堆棧地址0x7FF100
.equ UndefStack, _ISR_STARTADDRESS+256*2
.equ AbortStack, _ISR_STARTADDRESS+256*3
.equ IRQStack, _ISR_STARTADDRESS+256*4
.equ FIQ Stack, _ISR_STARTADDRESS+256*5
.equ USERMODE, 0x10
.equ FIQMODE, 0x11
.equ IRQMODE, 0x12
.equ SVCMODE, 0x13
.equ ABORTMODE, 0x17
.equ UNDEFMODE, 0x1B
.equ SYSMODE, 0x1F
.equ MODEMASK, 0x1F
.global _start
.text
_start:
MRS R0, CPSR @讀取當前CPSR
BIC R0, R0, #MODEMASK @清除模式位
#設置用戶模式下的SP
ORR R1, R0, #SYSMODE
MSR CPSR_c, R1
LDR SP, =UserStack
#設置未定義模式下的SP
ORR R1, R0, #UNDEFMODE
MSR CPSR_c, R1
LDR SP, =UndefStack
#設置終止模式下的SP
ORR R1, R0, #ABORTMODE
MSR CPSR_c, R1
LDR SP, =AbortStack
#設置管理模式下的SP
ORR R1, R0, #SVCMODE
MSR CPSR_c, R1
LDR SP, =SVCStack
#設置IRQ模式下的SP
ORR R1, R0, #IRQMODE
MSR CPSR_c, R1
LDR SP, =IRQStack
#設置FIQ模式下的SP
ORR R1, R0, #FIQMODE
MSR CPSR_c, R1
LDR SP, =FIQStack
Stop:
B Stop
.end
(2)程序執行結果如下:
SP_usr=0xC7FF000
SP_svc=0xC7FF100
SP_und=0xC7FF200
SP_abt=0xC7FF300
SP_irq=0xC7FF400
SP_fiq=0xC7FF500
上一篇:有關設置棧指針sp寄存器r13
下一篇:ARM指針寄存器 -程序計數器PC、堆棧指針SP
推薦閱讀
史海拾趣
品質是Big-Sun Electronics Co Ltd公司一直以來的核心競爭力。公司建立了嚴格的質量管理體系,從原材料采購到生產流程控制,再到產品出廠檢驗,每一個環節都嚴格把關。同時,Big-Sun還注重品牌建設,通過廣告宣傳和客戶服務,不斷提升品牌知名度和美譽度。
Big-Sun Electronics Co Ltd公司自成立以來,始終致力于技術研發和產品創新。在成立初期,公司便投入大量資源于研發部門,通過不斷試驗和改進,成功研發出了一款具有高效能、低能耗特點的電子芯片,這一技術突破迅速在市場上引起了廣泛關注。隨著產品線的不斷擴展,Big-Sun的電子產品逐漸在行業內樹立起了技術領先的形象。
宜源科技公司非常重視人才培養和團隊建設。公司建立了一套完善的人才培養體系,為員工提供豐富的培訓和發展機會。同時,宜源科技還積極引進優秀人才,打造高素質、專業化的技術和管理團隊。這些團隊在公司的各個領域中發揮著重要作用,為公司的長遠發展提供了有力的人才保障。
在電子行業的激烈競爭中,宜源科技公司始終將技術創新作為公司發展的核心驅動力。公司投入大量研發資源,成功開發出一系列具有自主知識產權的電子產品和解決方案。其中,其獨特的智能芯片技術,不僅大幅提升了產品的性能,還降低了生產成本,使得宜源科技在市場中迅速脫穎而出。
在XXXX年,Exel Microsystems Inc公司成功進入國際市場。公司憑借優質的產品和服務,贏得了國外客戶的認可和信任。為了更好地服務國際市場,Exel還在多個國家和地區設立了分支機構和研發中心。這一市場拓展的成功不僅為公司帶來了更多的商業機會,也提升了公司的國際知名度和影響力。
請問誰知道PBWorkspaces的工程目錄下,release\\postproc子目錄的含義?為什么包含和上一級目錄同樣的.bib,.reg配置文件?… 查看全部問答∨ |
|
請教專家:如何在.net2003種的C#里調用WinCE生成的DLL,謝謝! 我用的S3C2440開發板,在WinCE5.0中編譯了成功,并且導出了針對S3C2440的SDK,該SDK安裝成功后,在.net2003的模擬 工具-〉選項-〉設備工具-〉設備 中看不見S3C2440設備,請問是什么原因; 另外,我在C#中調用WinCE編譯生成的DLL,在模擬器上運行時 ...… 查看全部問答∨ |
|
我的arm9開發板開通了telnet,pc下的linux也開通了telnet,pc的IP地址設為192.168.1.13,開發板IP地址設為192.168.1.33,我用交叉網線連接pc機的網口和開發板的網口,在linux的minicom下面啟動開發板,進入了其操作系統,然后在終端下telnet,open ...… 查看全部問答∨ |
請教~~~正在編寫過程中~~~<img src="http://bbs.eeworld.com.cn/upfiles/img/200712/2007123121286625.gif" ...… 查看全部問答∨ |
最近在做一個紅外解碼的程序,要求解碼紅外并將解碼結果通過串口輸出,初步構思是先不管紅外的標準,直接將接收到的高低電平狀態及持續時間輸出,當接收到紅外時,觸發外部中斷0,中斷函數如下:void to() interrupt 0//解碼輸出 外部中斷0{ uch ...… 查看全部問答∨ |