SylixOS最小系统开发(二)

  1. 系统Tick

    MPC8313芯片的Tick实现比较特殊,因为在MPC8313芯片中存在名为Decrementer的寄存器,如图 1.1 Decrementer寄存器所示。

    图 1.1 Decrementer寄存器

    Decrementer寄存器中保存的数据会每4个总线周期减1,当Decrementer寄存器递减到0时,触发Decrementer异常,CPU会执行异常服务程序。Decrementer的异常服务函数需要在startup.S文件中设置,如图 1.2 startup.S所示。

    图 1.2 startup.S

  2. Decrementer异常流程解析

    第一步:当Decrementer寄存器递减到0时,触发Decrementer异常,CPU会执行异常服务程序,系统通过异常向量表跳转到archDecrementerInterruptEntry函数。

    第二步:archDecrementerInterruptEntry函数会执行archDecrementerInterruptHandle函数,在archDecrementerInterruptHandle中会对Decrementer寄存器进行设置并调用系统的中断服务函数。

    第三步:系统的中断服务函数会根据archDecrementerInterruptHandle传入的用户注册的伪中断向量查找用户注册的Tick中断服务函数。

  3. Tick实现

    根据上文所述,可以看出MPC8313的系统Tick可以在Decrementer寄存器的基础之上实现。由于Decrementer寄存器的控制接口已经在PowerPC的系统Base中实现,所以笔者无需自己实现,只需要调用系统接口即可。

    Tick的实现分以下三个步骤:

    第一步:使用非已有中断向量号并且大于255的非负数作为Tick的伪中断向量注册中断,如图 1.3 注册Tick中断所示。

    图 1.3注册Tick中断

    第二步:声明archDecrementerInit函数,如图 1.4 声明archDecrementerInit所示

    图 1.4声明archDecrementerInit

    第三步:初始化Decrementer,如图 1.5 初始化Decrementer所示

    图 1.5初始化Decrementer

  4. 高速定时器

    由于系统Tick是基于Decrementer寄存器实现的,所以高速定时器也需要基于Decrementer寄存器实现。

  5. 高速定时器原理简述

    高速定时器实质上是为了补偿系统Tick的不足,用于统计比一个Tick粒度更小的时间。在MPC8313中笔者通过读取Decrementer寄存器中的值来实现高速定时器的功能。

  6. 高速定时器的实现

    由于Decrementer寄存器无状态位可读取,无法通过读取硬件获得是否产生了Tick中断,因此在base中添加了状态全局变量_G_bTickinterTag,并且在系统进入archDecrementerInterruptHandle时把_G_bTickinterTag置为LW_TRUE。

    高速定时器在bspLib.c下的bspTickHighResolution函数实现,如程序清单 2.1 高速定时器所示。

    程序清单 2.1高速定时器

  7. VOIDbspTickHighResolution (struct timespec *ptv)
    {
        REGISTER UINT32uiCntCur,uiDone;
        ULONGulCPUId =LW_CPU_GET_CUR_ID();
    
    								 
        uiCntCur = ppcGetDEC ();
        uiDone   = GuiFullCnt - uiCntCur;
    
    								 
    /*
    * 由于Decrementer寄存器无状态位可读取,无法通过读取硬件获得是否产生
    * 了Tick中断,因此在base中添加了状态全局变量_G_bTickinterTag
    */
        if (_G_bTickinterTag[ulCPUId] ==LW_TRUE) {
    /*
    * 这里由于 TICK 没有及时更新, 所以需要重新获取并且加上一个 TICK 的时间
    */
            uiCntCur= ppcGetDEC ();
            uiDone =GuiFullCnt - uiCntCur;
    
    								 
            if (uiCntCur != 0) {
                uiDone +=GuiFullCnt;
            }
        }
    
    								 
        ptv->tv_nsec += (LONG)((Gui64NSecPerCnt7 * uiDone) >> 7);
        if (ptv->tv_nsec >= 1000000000) {
            ptv->tv_nsec -= 1000000000;
            ptv->tv_sec++;
        }
    }
  8. 参考资料

时间: 2024-08-07 22:20:40

SylixOS最小系统开发(二)的相关文章

SylixOS最小系统开发(一)

\ 开发环境 操作系统:SylixOS 编程环境:RealEvo-IDE3.1.5 硬件平台:MPC8313E-RDB MPC8313E芯片介绍MPC8313E是飞思卡尔(Freescale)基于 PowerPC-e300c3内核的系列芯片,MPC8313E-RDB采用的是MPC8313E处理器.芯片具有 : 16KB I-Cache,16KB D-Cache,8MB NOR Flash,128MB DDR2,32MB NAND Flash: 两路三速(10/100/100 Mbps)的以太网控

二码公益系统开发二码公益详解

二码公益开发,二码公益系统开发(苏念.188.1414.7927)二码公益平台开发 二码公益制度开发 二码公益项目开发 二码公益app开发 开发二码公益一公益,从人性角度思考,信息是人类获取互联网的最基本的需求,也就是类比食欲.社交对于人类来说属于第二个需求,所谓温饱思社交就是这个意思,因此社交网络是类比.合作是一种精神属性的行为,标志着人类进入了文明时代,因此子超把合作类比精神的层面.任何一个互联网产品的发展趋势都是先满足食欲,最后是精神的层面,我们判断未来的趋势也是可以这样类比判断的. 那么

二维码营销系统开发二维码营销系统模式详解

二维码营销系统开发(李想.185.6504.8478)二维码营销系统是什么?二维码营销系统有什么用?我为什么要需求购买二维码营销系统?二维码营销系统到底能给我带来解决什么问题?如果你想了解这些,那就跟随笔者一起往下看!市场营销是指,企业发现或挖掘准消费者需求,从整体氛围的营造以及自身产品形态的营造去推广和销售产品,主要是深挖产品的内涵,切合准消费者的需求,从而让消费者深刻了解该产品进而购买的过程.营销的目的是:产生可持续性收益.营销的本质是:抓住用户的需求,并快速把需求商品化.笔者下面介绍二维码

论ERP系统开发 二:框架结构

前面说了设计的数据结构,以及数据的传递,操作 为了更好的完成上面的操作,我们需要设计php的框架结构 现在一个都是面向对象的开发方式 继承,多态,封装 我个人感觉如下: 多态:是为了让一个函数处理更多方式的数据,增强功能性,这个对框架影响不大 继承:这个一般是层层继承,这玩意一般是框架的法宝,各级类都是由一个基层类,逐级的继承而来 封装:我个人认为这是一个最牛逼的,对于封装,一般对应一个类,我个人的方式一般用静态类,进行功能模块的封装 譬如shipping的功能,我都封装到Shipping.ph

搭建CnetOS6.5x64最小系统及在线yum源的配置

CentOS系统作为红帽系列的一款linux系统,因为其免费.开源,在中小企业中得到了广泛应用,生产上为了更好的利用资源,都采用最小系统安装,因为一个图形界面都会占去系统资源的30%到40%,生产上一般都是最经济原则,不装图形界面,软件也是需要什么装什么,一般通过ssh连接或者xshell连接即可.本文从以下四个方面给出了CentOS系统的最小化安装及在线yum源的配置. 大纲:一.搭建CnetOS6.5x64最小系统.二.ip,主机名等的相关配置.三.本地和在线yum源的配置.四.快照及克隆.

家电二维码售后服务平台系统开发

家电二维码售后服务平台系统开发,家电二维码售后系统开发,小吴183.2071.6434微电,家电二维码售后软件开发,家电二维码售后平台开发. 互联网平台的节点有两大类型:第一基数节点,也就是弱连接的节点,其规模要大,越大越好,互联网的价值与节点数的平比成正比.第二活跃节点,也就是强连接的节点,其能量要强,越强越好,互联网的价值与其强度成正比. 一.家电维修行业"维修黑幕"层出不穷 记者从一位从事家电维修人士那里了解到,目前行业公认当前家电维修行业有陷阱,"维修黑幕"

[嵌入式开发入门]4412开发板从零建立Linux最小系统

本文转自iTOP-4412开发板实战教程书籍 http://www.topeetboard.com iTOP-4412开发板不仅可以运行Android,还可以运行简单的Linux最小文件系统. 最小Linux 系统“麻雀虽小,五脏俱全”,它不带图形界面的Linux 系统,剔除干扰因素便于理解,用来学习Linux系统编程非常合适. 另外,Linux最小系统占用的内存空间很小,也经常用于不带图形界面的项目. 1. 最小Linux系统简介 制作文件系统需要使用到Busybox工具. BusyBox是一

二码公益系统开发分析——互联网+公益+商业到底怎么做?

二码公益开发,二码公益系统开发(苏念.188.1414.7927)二码公益模式开发,一点公益模式开发,二码公益平台开发,开发二码公益模式系统,开发二码公益app,互联网技术不仅能吸引公众参与,也可以帮助公益组织提高运作效率.目前,公益组织面临无法找到募捐对象的困境.近年来,互联网公司都设立了企业社会责任部门,致力于用自身的平台和技术帮助公益组织提高运作能力. 以百度公司为例,百度每天处理50亿次用户真实搜索,基于这些用户真实的大数据,百度可以为用户贴标签并分析人物的属性,例如,百度可以通过个人日

二维码点餐系统开发app

二维码点餐系统开发(陈琦:138-2848-7919可微)二维码点餐模式开发,二维码点餐系统平台,二维码点餐平台APP,二维码点餐定制开发,二维码点餐软件APP,二维码点餐定制模式,二维码点餐商城平台. 微信自助点餐系统将精致的菜单推送给客户.通过微信自助点餐系统让客户方便的自助点菜,完成支付后,厨房无线打印机立即收到订单并打印出菜单,且告知是哪个桌台的客户的订单.另外还有短信.邮件提醒店主以防漏单. 一.如何用微信自助点餐系统来点菜 1.扫下餐桌的二维码 2.微信自助点餐系统自动采集用户所在的