您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机如何开发arm(4) 正文
如何开发arm(4)

如何开发arm(4)

点击数:7625 次   录入时间:03-04 11:52:58   整理:http://www.55dianzi.com   ARM单片机

/* 用循环调用所有初始化函数 */
        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
        {
               if ((*init_fnc_ptr)() != 0)
               {
                      /* 当每个函数初始化失败时,就会挂机在这里。 */
                        hang();
                }
        }
上次说到在函数指针数组里,不断地调用所有初始化函数进行初始化,下面就来仔细地分析一下,它们到底是做什么

的,做什么样的初始化,怎么样为后面做好运行的准备工作。看到第一个初始化函数,就是CPU初始化(cpu_init),

这个函数是在cpu\s3c44b0\cpu.c里,它的作用就是进行S3C44B0初始化工作。看到这个函数内容如下:

/* CPU初始化。蔡军生 2005/07/23*/
int cpu_init (void)
{
        /* 清空缓冲区 */
        icache_enable();
        return 0;
}
它在里面调用了函数icache_enable(),它就是用来初始化S3C44B0的缓冲区,并且启用CPU缓冲区。因为CPU在加电之

后,它的初始化值是不启用内部的8K缓冲区的,必须由程序进行设置。接着看看那个调用的函数又是怎么样初始化内

部缓存区的呢?

/* CPU内存的缓冲初始化。蔡军生 2005/07/23*/
void icache_enable (void)
{
        ulong reg;
        /* 清空内存的缓冲区.  */
       s3c44b0_flush_cache();
        /* 初始化缓冲区,设置非缓冲区的起始地址和结束地址。第一个寄存器指明下面的地址不要缓存,低16位是起始地址,高16位是结束地址。并且空间大小都是以4K为界。0x0000:0000 - 0x0C00:0000*/

        NCACHBE0 = 0xC0000000;
        NCACHBE1 = 0x00000000;

        /* 设置SYSCFG寄存器启用8K缓冲区。 */

  reg = SYSCFG;
  reg = 0x00000006; /* 8kB */

        SYSCFG = reg;
}

在这个函数里,第一个先调用函数是进行缓冲区清0的工作,它有一些特别的地方,如下:

/



上一页  [1] [2] 


本文关键字:如何  开发  ARM单片机单片机-工控设备 - ARM单片机