这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 44B0,44BLIB 求助,向各位大哥请教 44B0 的 44BLIB.C 中

共2条 1/1 1 跳转至

44B0,44BLIB 求助,向各位大哥请教 44B0 的 44BLIB.C 中一段代码?

院士
2006-09-17 18:14:16     打赏
44B0,44BLIB 求助,向各位大哥请教 44B0 的 44BLIB.C 中一段代码?



关键词: 44BLIB     求助     各位     大哥     请教     44BLIB    

院士
2006-12-22 22:43:00     打赏
2楼
问 /************************************************
* NAME    : 44BLIB.C                            *
************************************************/


#include "44b.h"
#include "44blib.h"
#include "def.h"
#include "option.h"


#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>


#define STACKSIZE    0xa00 //SVC satck size(do not use user stack)
#define HEAPEND     (_ISR_STARTADDRESS-STACKSIZE-0x500) // = 0xc7ff000
    //SVC Stack Area:0xc(e)7ff000-0xc(e)7ffaff

extern char Image$$RW$$Limit[];

void *mallocPt=Image$$RW$$Limit;



#define STACKSIZE  0xa00 //SVC stack size(do not use user stack )
#define HEAPEND    (_ISR_STARTADDRESS-STACKSIZE-0x55) //=0xc7ff000
    //SVC Stack Area:0xc(e) 7ff000-0xc(e)7ffaff
    
extern char Image$$RW$$Limit[];
void *macllocPt=Image$$RW$$Limit;  


void Port_Init(void)
{
    rPCONA=0x1ff;    
    rPDATB=0x3ff;
    rPCONB=0x3ff;
    rPDATC=0xffff;    
    rPCONC=0x0f05ff55;    
    rPUPC=0x30f0;    
    rPDATD=0xff;
    rPCOND= 0x0;
    rPUPD = 0x0;
    rPDATE=0x1ff;      
    rPCONE=0x25568;    
    rPUPE=0x0ff;    
    rPDATF=0x1ff;    
    rPCONF=0x20900a;
    rPUPF=0x163;
    rPDATG=0xff;
    rPCONG=0x00ff;    
    rPUPG=0x0;            
    rSPUCR=0x7;         
    rEXTINT=0x0;        
    rNCACHBE0=(((Non_Cache_End)>>12)<<16)|((Non_Cache_Start)>>12);
}



这是 44B0 的测试代码中一段小程序: 44BLIB.C

请教:
问题1:
      STACKSIZE 是不是表示堆栈的大小?

问题2:
     为什么定义:#define HEAPEND     (_ISR_STARTADDRESS-STACKSIZE-0x500) // = 0xc7ff000
问题3:
     extern char Image$$RW$$Limit[]; 是什么意思?
问题4:
     void *macllocPt=Image$$RW$$Limit; 是什么意思?
问题5:
     rNCACHBE0=(((Non_Cache_End)>>12)<<16)|((Non_Cache_Start)>>12);
     为什么要写成这样啊?
     主要是为了实现什么啊?


谢谢各位大哥!
1: 各位大侠请帮我鼎鼎啊!各位大侠请帮我鼎鼎啊!
谢谢!
2: 高手啊~~高手啊!
是不是非常难啊?
谢谢! 3: 盼高人!有没有哪位大哥知道这个问题啊!
在此多谢了! 4: 这个东西确实看不懂啊!这个东西确实看不懂啊! 5: 俺来随便说说问题1:STACKSIZE 如果没有意外的话,当然是制堆栈大小拉,除非你改成别的了,呵呵
问题2:一般来说,堆都和栈放在相邻的内存区,便于管理。个人看法
问题3和问题4:Image$$RW$$Limit是ADS里CodeWarrior编译器指定的一个地址。
              意思是指RW区的结束地址+1,也是ZI地址的开始地址。理解了这个,
              这两个问题自然就明白什么意思了。
问题5:你可以结合这个寄存器看看,就什么都明白了,这么写是为了增强可读性。
       在配置CPU的寄存器时经常这样通过移位写,而寄存器相关位的定义放在一
       个头文件里。这样需要修改的时候只要修改头文件里的内容就可以了

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]