reset:
ldr sp, = 4*1024 @ SP=4096,設置棧指針,后面會調用C函數,調用C前需要設好棧
bl disable_watch_dog @ 關閉WATCHDOG,否則CPU會不斷復位
bl clock_init @ 設置MPLL,改變FCLK、HCLK、PCLK
bl memsetup @ 設置存儲控制器以使用SDRAM
bl copy_steppingstone_to_sdram @ 復制代碼到SDRAM中
ldr pc, =on_sdram @ 跳到SDRAM中繼續執行
on_sdram:
msr cpsr_c, #0xd2 @ 進入中斷模式
ldr sp, =4*1024 @ 設置中斷模式棧指針
msr cpsr_c, #0xdf @ 進入系統模式
ldr sp, =0x34000000 @ 設置系統模式棧指針,
bl init_led @ 初始化LED的GPIO管腳
bl timer0_init @ 初始化定時器0
bl init_irq @ 調用中斷初始化函數,在init.c中
msr cpsr_c, #0x5f @ 設置I-bit=0,開IRQ中斷
ldr lr, =halt_loop @ 設置返回地址
ldr pc, =main @ 調用main函數
如上程序中,由于ARM在各種執行模式下都需要設置各自的棧指針,所以"ldr sp,=xxxx"操作較多。根據ARM的ATPCS規則,對棧的操作屬于FD(滿遞減),即棧指針一直指向棧頂元素,是按地址減小的方向增長的,所以一般將SP設置在地址的最高處。
ldr sp, =4*1024, ldr sp, =4*1024, ldr sp, =0x34000000 ,這幾個值的確定與硬件關系很大:
1.在reset中:
ldr sp, =4*1024:在ARM9(S3C2440)中,SRAM有效地址范圍為0~4K,所以可以把棧初始指針設置在SRAM的有效地址的最高地址處,當然,如果空間夠用,也可以設置小點兒,比如:ldr sp , = 2*1024 。
2.在on_sdram中:
ldr sp, =4096 @ 設置中斷模式棧指針
ldr sp, =0x34000000 @ 設置系統模式棧指針,
這是分別設定中斷模式和系統模式下的堆棧指針到4096(SRAM的有效地址的最高地址)和0x34000000(從0x30000000開始的64M的SDRAM的最高地址處,此時SDRAM已經初始化,可以使用了)。
上一篇:ARM裸機程序開發17(堆棧尋址)
下一篇:ARM的堆棧學習筆記
推薦閱讀
史海拾趣
面對全球市場的競爭壓力,EAO公司堅定實施全球化戰略。公司在全球范圍內建立了完善的銷售網絡和售后服務體系,為客戶提供及時、高效的服務。同時,EAO公司還積極尋求與國際知名企業的合作機會,共同開拓市場、分享資源。通過全球化戰略的實施,EAO公司不斷提升品牌影響力和市場競爭力。
統宇電研公司成立于1995年,初創時期面臨著重重挑戰。當時,電子行業正值技術革新的關鍵時期,無源組件市場競爭激烈。統宇電研憑借對技術的敏銳洞察力和對市場趨勢的準確判斷,決定專注于高性能功率電感等無源組件的研發和生產。公司團隊夜以繼日地攻克技術難題,不斷優化產品設計,最終成功推出了一系列具有競爭力的產品,為公司贏得了市場的認可。
隨著產品線的不斷豐富和技術實力的提升,Bomar Interconnect公司開始積極拓展國內外市場。公司通過參加各類行業展會、舉辦技術研討會等方式,加強與客戶的溝通與合作。同時,公司還注重品牌建設,通過提升產品質量、優化客戶服務等舉措,樹立了良好的企業形象。這些努力不僅幫助公司贏得了更多客戶的信任和支持,也為公司的長遠發展奠定了堅實基礎。
Aavid Niagra公司在成立之初,面臨著資金短缺、市場競爭激烈以及技術壁壘等多重挑戰。然而,創始人憑借對電子散熱技術的深刻理解和前瞻性的市場洞察,成功研發出了一款高效能的散熱解決方案,贏得了行業內的初步認可。通過與幾家大型電子設備制造商的合作,公司逐漸在市場上站穩腳跟,為后續的發展奠定了堅實基礎。
中移物聯網在智能終端產品的創新方面也取得了顯著成果。公司設計并生產了物聯網專用模組和芯片,打造了智能組網、智能安防、智能家居、智能穿戴等行業終端。這些產品在市場上受到了廣泛歡迎,特別是在智能家居和智能穿戴領域,中移物聯網的產品憑借其高性能和穩定性,贏得了眾多消費者的青睞。
全志科技在早期以電源管理IC AXP系列和多媒體解碼F系列芯片為核心技術,成功挖掘了第一桶金。特別是在播放器等中小企業需求市場中,全志的產品獲得了廣泛認可。這種對市場需求的敏銳洞察和扎實的技術研發能力,使得全志在激烈的市場競爭中脫穎而出。
waveAPI.dll->audio device manager->software mixer waveAPI.dll->audio device manager->software mixer 請問這個software mixer怎么用? 怎么找到它的相關信息。我在help里找不到? 是不是添加什么item進去sysgen? app又要怎么用,相應的API是什么,哪里找得到信息。 ------------------- ...… 查看全部問答∨ |
|
我的SDRAM時鐘,按我的意思是配置到100M,但實際只配到了4M左右,單步調試發現int.s中分頻已經正確,但在MAIN.C函數,倍頻時,時鐘并沒有起來 ChangeUPllValue(56,2,2); // ...… 查看全部問答∨ |
|
問高手一個問題,俺正在做vxworks下的命令行程序,我要把它做的智能化,但是卻發現一個重要的問題,不能使用getch函數,怎么辦啊? 如題目: 我需要做一個智能化的命令行程序,類似windows下面的dos窗口,支持按上下鍵自動將上一個或下一個用戶使用的函數調出來,那么就必須檢索用戶輸入,必須使用getch()函數循環檢索輸入。 但是我發現 ...… 查看全部問答∨ |
|
一、貼片式LED PCB板結構選擇 選擇設計什么樣結構的PCB板及貼片式LED采用幾顆晶片的方式是根據市場用戶的要求進行的。在用戶沒有提出特殊要求時,一般選擇挖槽孔型結構設計PCB板。PCB基板為BT板。貼片式LED PCB板種類根據結構分:有導通孔型結構、 ...… 查看全部問答∨ |
對于ARM的程序,比如ARM7,對于寫一個很小的的工程時,比如就讓一個燈亮,一個蜂鳴器響。就要寫的程序就很多,比如要初始化GPIO,宏定義多個,又要設置FCO,PCLK,設置好多寄存器。沒51那么簡單。… 查看全部問答∨ |
MINI2440+uCOSII+uCGUI3.98+X35屏 這幾天倒騰了一下MINI2440+uCOSII+uCGUI3.98+X35屏其中在網上參考了很多論壇經過不斷嘗試最后弄出來了拿來分享給大家文件下在連接:http://115.com/file/c2ulz6bc要下的趕緊下… 查看全部問答∨ |