查看: 4210|回复: 5

2410啟動代碼有些地方不太明白?

[复制链接]
发表于 2009-8-28 09:22:12 | 显示全部楼层 |阅读模式
有幾個常量的定義不知道是根據什麽決定的?
看了datasheet也沒有找到說明的地方?
可以說說這些常量定義為多大,是根據什麽嗎?

1.BIT_SELFREFRESH EQU (1<<22)       ;

2. UserStack   EQU (_STACK_BASEADDRESS-0x3800)      ;0x33ff4800 ~
            SVCStack    EQU (_STACK_BASEADDRESS-0x2800)      ;0x33ff5800 ~
            UndefStack  EQU (_STACK_BASEADDRESS-0x2400)      ;0x33ff5c00 ~
            AbortStack  EQU (_STACK_BASEADDRESS-0x2000)      ;0x33ff6000 ~
            IRQStack    EQU (_STACK_BASEADDRESS-0x1000)      ;0x33ff7000 ~
            FIQStack    EQU (_STACK_BASEADDRESS-0x0)       ;0x33ff8000 ~
发表于 2009-8-28 17:08:17 | 显示全部楼层
堆栈空间的大小,定义小了会不够用而出现程序跑飞,定义大了浪费,所以要根据具体情况给了。
官方给出的默认值能够满足大部分应用,除非你的内存确实不够那就将有些没怎么用的减小些,如AbortStack\FIQStack。。。等。
通常堆栈空间都定义在SDRAM地址的末端以防止冲突,64MB的SDRAM地址范围为0x30000000 ~ 0x33FFFFFF
 楼主| 发表于 2009-8-28 19:21:02 | 显示全部楼层
謝謝,啊南老師.關於堆棧的問題大致懂了,
我查閱了datasheet第5章memory controller,
對於各個工作模式,好像只介紹了CPSR的低5位來確定處理器工作在何種模式,并沒有具體說明各個模式的堆棧如何定義及用法.如果我想在仔細研究一下這方面,可以參考什麽資料呢?

還有下面這個問題了,從字面上理解好像是 : 位刷新,我看了您的LED的啟動代碼,好像後面并沒有用到這個值啊
可以說下大致的用法嗎?
1.BIT_SELFREFRESH EQU (1<<22)       ;

還有啊南老師,關於作業的問題.之前我是打算按著老師給的進度走,分析2410的原理,設計最小系統.
但是在看了處理器地址線接法的時候,有些暈了.後來就硬記住了,比如:
選型參考那個表格.
地址線8為接ADDR0,16位接ADDR1,32位接ADDR2.
設置BANK地址那個根據我們選用SDRAM的型號,參照表格BANK地址的接法接入BA[1:0]上面.
這一切只是記住了,沒有理解為什麽,如何和程式部分結合.所以這段時間我就開始看數據手冊和啟動代碼了,想弄個所以然來
另一方面現在工作量比之前大了好多導致沒有辦法花更多的的精力在沒有理解的基礎上而單純的照著資料去畫原理圖,所以我就沒有繼續完成作業了,見諒見諒
发表于 2009-8-28 21:04:10 | 显示全部楼层
鼓励一下认真的学员
 楼主| 发表于 2009-8-28 21:38:38 | 显示全部楼层
谢谢
发表于 2009-8-29 09:30:11 | 显示全部楼层
堆棧就是先进后出,这是计算机原理的内容,你可以查查计算机原理或单片机原理的书。
如果你有仿真器或者仿真软件,单步执行程序也可以看出堆栈的变化情况。
BIT_SELFREFRESH 没用到就先不用管它,很多是原来官方程序遗留下来的,用到您对应一下即可。
关于地址,您可以查一些存储原理的资料,书中推荐的《嵌入式硬件设计》应该有。
很多东西记住也没有什么不好,看多了自然就变成了一种常识。很多东西您如果让我讲,我一下也反应不过来,还要想想甚至查相关原理,但这些在我脑海里早就成了一种常识性的知识。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表