天嵌 ARM开发社区

 找回密码
 注册
查看: 2449|回复: 1

关于头文件里面的一个地址配置和io配置

[复制链接]
落秋 发表于 2013-6-12 21:11:47 | 显示全部楼层 |阅读模式
本帖最后由 落秋 于 2013-6-12 22:20 编辑

#define _RAM_STARTADDRESS  0x30000000
#define _ISR_STARTADDRESS  0x33ffff00     
#define _MMUTT_STARTADDRESS 0x33ff8000
#define _STACK_BASEADDRESS 0x33ff8000
#define HEAPEND     0x33ff0000
#define _NONCACHE_STARTADDRESS 0x31000000
搞不懂 上面的地址怎么在2440手册上查不到啊   容量怎么不是2的N呢。0x30000000——0x33ffff00    才63M ,这样设置有什么好处啊  设置64M不行?
还有个
void key_init(void)
{
    rGPGCON &= ~(0x3<<6);     /*set eint11 as interrupt*/
    rGPGCON |=  (0x2<<6);

   
    rEXTINT1 &= ~(0xf<<12);   /*set eint11 with low level*/
    rEINTPEND |= (1<<11);
    rEINTMASK = ~(1<<11);
   
    /*设置ISR*/
    pISR_EINT8_23=(U32)key_handler;
    EnableIrq(BIT_EINT8_23);
}   
红色部分 必须是两个语句吗? 第一条是吧 6-7位 置0  其余位不变 第二句是第[6]置0 ,其余位不变,两句要的结果和 只要第一句的结果一样哒  理解对了没?
还有个 在2440addr.h 里面有一段
#define EnableIrq(bit)  rINTMSK &= ~(bit)
#define DisableIrq(bit)  rINTMSK |= (bit)
#define EnableSubIrq(bit) rINTSUBMSK &= ~(bit)
#define DisableSubIrq(bit) rINTSUBMSK |= (bit)

__inline void ClearPending(int bit)
{
register i;
rSRCPND = bit;
rINTPND = bit;
i = rINTPND;
}
  红色部分里面的bit  并没有 定义啊, 它的值怎么来的?    DisableIrq(bit)   这个是个函数还是什么啊?

亚瑟王 发表于 2013-6-13 09:35:17 | 显示全部楼层
1、0x30000000 这个地址是bank6的基地址,也就是内存开始的地址,这个在2440的datasheet的memory controller章节有介绍,然后在TQ2440核心板的原理图上使用了nGCS6这个片选,就决定了它使用bank6,地址也就确定了。
2、为什么使用0x33FFFF00,因为使用了0x33FFFFFF,那ISR后面还怎么存东西呢?再存就越界了。
3、设置GPGCON寄存器,你想怎么写代码都可以,写成一行和两行无所谓,只要把对应的位的值设置对就好。
4、DisableIrq是一个函数。你可以理解为是函数,也可以理解为一个预定义。反正你调用它的时候,是操作的INTMSK寄存器就行了。至于这个寄存器请参考2440的datasheet的interrupt controller章节。
以上讲的datasheet是英文原版。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-18 18:06 , Processed in 2.034251 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表