打印

C5402CFG.H(父亲节版)

[复制链接]
2015|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2008-6-15 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------
文   件   名 :  C5402CFG.H(父亲节版)
创   建   人 :  DSP菜鸟  HotPower@126.com
创 建 日  期 :  2006.6.09  11:19
最近修改日期 :  2008.6.15  21:18 
创 建  地 点 : 西安大雁塔村队部(http://www.**/blog/hotpower/)
版   本   号 : V4.01
修 改 理  由 :  修正和增订内容
                增加对C++多文件系统的支持
                必须在系统中同时加入C5402CFG.C
升 级 理  由 ;  全面升级后支持真正的位操作和废除汇编启动代码的"创举"
发 布 理  由 ;  今天是父亲节。菜农想对父亲说---您老真伟大!!!
                您发明的独门绝学使弟弟十几岁开始独步江湖至今.打败无数的
                权威甚至是专科专学院的大鼻子老外.
                菜农不孝未能继承您的绝学...
                从小就看您早起晚睡整日忘我读书,甚至**也未终止过...
                孩儿只继承了您这点甚至大大超越.
                当我看到同行提起您和弟弟的名号时都不敢"拔剑"时,我为您自豪!!!
                该头文件就算献给85岁老父亲的礼物吧。
                菜农也会和您一样---站在红旗下就不畏惧任何人!!!
                菜农本是粗人,但年轻时巧遇无数高手,虽未得到真传,也不想让俺这
                一身"水学"失传...俺知道不可能再像父亲有人继承自己的绝学,那么
                就通过这网络发散吧...
                父亲---孩儿想对您说---您真伟大,儿也不会给您丢脸!!!
备        注 : 由此文件出现的问题,DSP菜鸟不负任何责任
                菜农将不断更新和完善本头文件。
升 级 方  法 :  只需在旧版C5402DEF.H或C5402CFG.H的结构成员后加.Regs即可
                例如:
                SREG->ST0 &= ~(1 << ST0_C);
                改为:
                SREG->ST0.Regs &= ~(1 << ST0_C);
                或:
                SREG->ST0.Bits.C = 0;
     
                父亲节版新旧版近似兼容使其更强大:
                SREG->ST1.Bits.XF = 1;
                SREG->ST1.Bits.CPL = 1;

                SREG->ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);

                SREG->GPIOCR.Bits.DIR7 = 1;
                SREG->GPIOCR.Regs |= (1 << GPIOCR_DIR7);

声        明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。                
---------------------------------------------------------------------------*/

相关链接:http://blog.**/hotpower/125144/message.aspx#

相关帖子

沙发
hotpower|  楼主 | 2008-6-15 23:30 | 只看该作者

菜农搞残废启动过程汇编文件核心代码部分

以下是c5402cfg.h部分
extern void c_int00(void);
extern interrupt void DefaultIsr(void);

enum DspCodeEnum_Enum
{
 DSPCODE_BD = (TI_IREG)0xf273,
 DSPCODE_RETE = (TI_IREG)0xf4fb,
 DSPCODE_NOP = (TI_IREG)0xf495,//,
 DSPCODE_SP_200L = (TI_IREG)0x7718,//STM #200,SP
 DSPCODE_SP_200H = (TI_IREG)0x00c8//STM #200,SP
};

#define ISR_Reset() {DSPCODE_BD, (pfnVectorEntry)c_int00, DSPCODE_SP_200L, DSPCODE_SP_200H}
#define ISR_Return() {DSPCODE_RETE, (pfnVectorEntry)DSPCODE_NOP, DSPCODE_NOP, DSPCODE_NOP}
#define ISR_Default() {DSPCODE_BD, (pfnVectorEntry)DefaultIsr, DSPCODE_NOP, DSPCODE_NOP}
#define ISR(addr) {DSPCODE_BD, (pfnVectorEntry)addr, DSPCODE_NOP, DSPCODE_NOP}

typedef interrupt void (*pfnVectorEntry)(void);
typedef struct
{
 TI_IREG Code;
    pfnVectorEntry Isr;//中断入口地址
 TI_IREG DataLow;
 TI_IREG DataHi; 
}uVectorEntry;

#define nISR_REST    0    //0x0080
#define nISR_NMI       1    //0x0084
#define nISR_SINT17  2    //0x0088
#define nISR_SINT18  3    //0x008c
#define nISR_SINT19  4    //0x0090
#define nISR_SINT20  5    //0x0094
#define nISR_SINT21  6    //0x0098
#define nISR_SINT22  7    //0x009c
#define nISR_SINT23  8    //0x00a0
#define nISR_SINT24  9    //0x00a4
#define nISR_SINT25  10   //0x00a8
#define nISR_SINT26  11   //0x00ac
#define nISR_SINT27  12   //0x00b0
#define nISR_SINT28  13   //0x00b4
#define nISR_SINT29  14   //0x00b8
#define nISR_SINT30  15   //0x00bc
#define nISR_INT0  16   //0x00c0
#define nISR_INT1  17   //0x00c4
#define nISR_INT2  18   //0x00c8
#define nISR_TINT0      19   //0x00cc
 #define nISR_TIMER0   19 //0x00cc
#define nISR_RINT0      20   //0x00d0
#define nISR_XINT0      21   //0x00d4
#define nISR_RINT1      22   //0x00d8
#define nISR_XINT1      23   //0x00dc
 #define nISR_TIMER1   23 //0x00dc
#define nISR_INT3  24   //0x00e0
#define nISR_HPINT  25   //0x00e4
#define nISR_RESINT0 26   //0x00e8
#define nISR_RESINT1 27   //0x00ec
#define nISR_RESINT2 28   //0x00f0
#define nISR_RESINT3 29   //0x00f4
#define nISR_RESINT4 30   //0x00f8
#define nISR_RESINT5 31   //0x00fc

以下是interrupt.c部分
#pragma DATA_SECTION("vectors") 
const uVectorEntry g_pfnVectors[] = {
    ISR_Reset(),   //reset      0x0080 #0
    ISR_Default(), //nmi        0x0084 #1
    ISR_Default(), //sint17     0x0088 #2    
    ISR_Default(), //sint18     0x008c #3
    ISR_Default(), //sint19     0x0090 #4
    ISR_Default(), //sint20     0x0094 #5
    ISR_Default(), //sint21     0x0098 #6
    ISR_Default(), //sint22     0x009c #7
    ISR_Default(), //sint23     0x00a0 #8
    ISR_Default(), //sint24     0x00a4 #9
    ISR_Default(), //sint25     0x00a8 #10
    ISR_Default(), //sint26     0x00ac #11
    ISR_Default(), //sint27     0x00b0 #12
    ISR_Default(), //sint28     0x00b4 #13
    ISR_Default(), //sint29     0x00b8 #14
    ISR_Default(), //sint30     0x00bc #15
    ISR(Eint0Isr), //int0       0x00c0 #16
    ISR(Eint1Isr), //int1       0x00c4 #17
    ISR(Eint2Isr), //int2       0x00c8 #18
    ISR(Timer0Isr),//tint       0x00cc #19
    ISR(McBSPIsr), //rint0      0x00d0 #20
    ISR_Default(), //xint0      0x00d4 #21
    ISR_Default(), //rint1      0x00d8 #22
    ISR_Default(), //xint1      0x00dc #23
    ISR(Eint3Isr), //int3       0x00e0 #24
    ISR_Default(), //hpint      0x00e4 #25
    ISR_Default(), //           0x00e8 #26
    ISR_Default(), //           0x00ec #27
    ISR_Default(), //           0x00f0 #28
    ISR_Default(), //           0x00f4 #29
    ISR_Default(), //           0x00f8 #30
    ISR_Default(), //           0x00fc #31
};

extern "C" interrupt void DefaultIsr(void)
{
}

extern "C" interrupt void Eint0Isr(void)
{
}
......................

以下是cmd文件部分

MEMORY  
{
//(R读 W写 X运行 I初始化)
    PAGE 0: /* Program Space */
        MMRS    (RW  ) : o=000000h l=000060h /* Memory-mapped registers  */
        SCRATCH (RW  ) : o=000060h l=000020h /* scratch-pad DARAM        */
        VECT    (RW  ): o=000080h l=000080h /* Interrupt Vector Table   */
        IPROG   (RWX ) : o=000100h l=001f00h /* On-Chip DARAM            */
    PAGE 1: /* Data Space */
        /* declaration for DARAM already made in PAGE 0                 */
        IDATA   (RWX ) : o=002000h l=002000h /* On-Chip DARAM            */
        EDATA   (RW  ) : o=008000h l=008000h
}

SECTIONS
{
    .vectors    : > VECT    PAGE 0 /* interrupt vector table            */





使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝