您当前的位置:五五电子网电子知识电工技术电子技术ARM7TDMI-S芯片LP2106在嵌入式系统中的Bo 正文
ARM7TDMI-S芯片LP2106在嵌入式系统中的Bo

ARM7TDMI-S芯片LP2106在嵌入式系统中的Bo

点击数:7535 次   录入时间:03-04 11:43:57   整理:http://www.55dianzi.com   电子技术
    
    BL InitStack 调用InitStack函数初始化芯片各种模式的堆栈
    
    BL TargetResetInit ;调用TargetResetInit函数对系统进行基本初始化
    
    B _main ;跳转到ADS提供的启动代码_main函数处,它初始化函数库并最终引导CPU进入操作系统的main()函数
    
     上面的程序代码只包含了流程图中的几个主机步骤。这些步骤都是必不可少的,其余的步骤都在TargetResetInit函数中加以实现。本例中的TargerReset Init函数如下:
    
    void TargetResetInit(void)
    
    {/*设置系统各部分时钟*/
    
    PLLCON=1;
    
    #if((Fcclk /4)/Fpclk==1
    
    VPBDIV=0;
    
    #endif
    
    #if((Fcclk/4)/Fpclk==2
    
    VPBDIV=2;
    
    #endif
    
    #if((Fcclk/4)/Fpclk==4
    
    VPBDIV=1;
    
    #endif
    
    #if(Fcco/Fcclk)==1
    
    PLLCFG=((Fcclk/Fosc)-1)|(1<<5);
    
    #endif
    
    #if(Fcco/Fcclk)==2
    
    PLLCFG=((Fcclk/Fosc)-1|(2<<5);
    
    #endif
    
    #if(Fcco/Fcclk)==4
    
    PLLCFG=((Fcclk/Fosc)-1|(3<<5);
    
    #endif
    
    #if(Fcco/Fcclk)==8
    
    PLLCFG=((Fcclk/Fosc)-1)|(4<<5);
    
    #endif
    
    PLLFEED=0xaa;
    
    PLLFEED=0x55;
    
    while(PLLSTAT &(1<<10)==0)
    
    PLLCON=3;
    
    PLLFEED=0xaa;
    
    PLLFEED=0x55;
    
    /*设置存储器加速模块*/
    
    MAMCR=2;
    
    #if Fcclk<20000000
    
    MAMTIM=1;
    
    #else
    
    #if Fcclk<40000000
    
    MAMTIM=2;
    
    #else
    
    MAMTM=3;
    
    #endif
    
    #endif
    
    /*初始化VIC,使芯片在进入μC/OS-II多任务环境前关中断*/
    
    VICIntEnClr=0xffffffff;
    
    VICVectAddr=0;
    
    VICIntSelect=0;
    
    /*其它步骤的代码与实际的软件功能相关,不具有代表性,故在此不列出*/
    
    }
    
    3 结论
    
    本文介绍的Bootloader代码已经在基于Philips公司的LPC2106芯片开发的系统上运行并测试通过。针对不同的CPU芯片编写Bootloader代码,首先要了解该CPU的内核结构、指令系统,其次是具体芯片的结构和各种片上资源,以及所采用的操作系统。以上所列的设计流程不是一成不变的,在具体应用中要权衡取舍。

上一页  [1] [2] 


本文关键字:嵌入式  电子技术电工技术 - 电子技术