关于双核单片机的常见问题

发布者:自在自由最新更新时间:2014-08-26 来源: cecb2b关键字:双核单片机  IDE  编译环境 手机看文章 扫描二维码
随时随地手机看文章

    在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已经直接支持ADC,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。

关于双核单片机的常见问题0

    上图为该双核单片机的内部构架示意图,从图可见该单片机内部有两个核,分别为FPP0和FPP1,每个核自己有独立的程序指针(PC)、堆栈指针(SP)、累加器(ACC)和状态寄存器(CF)。设计原理并不复杂,是让这两个核共享系统时钟,第一个系统时钟周期执行FPP0程序,第二个系统时钟周期执行FPP1程序,依次间隔往复,这样就可以让两个核各自运行自己的程序。

    两个核都可以访问控制RAM和特殊功能寄存器,因为在一个系统周期内只有一个核在工作,所以不会出现两个核同时写某个RAM或寄存器的状况。为了让大家更清晰地理解这个双核单片机的工作机理,下面我以问答的方式对部分特性进行说明。

    1. 两个核的程序放在什么地方?如何执行?

    样例代码:

    地址 指令

    0x000 goto main0

    0x001 goto main1

    …

    main0:

    …

    main1:

    …

    回答:单片机上电后FPP0的程序指针指向0x000,FPP1的程序指针指向0x001,但是单片机系统只启动FPP0,FPP0跳转到main0开始执行该位置的代码,FPP1需要在main0代码设置相应控制寄存器位才能启动。

    系统上电只启动FPP0是为了便于程序统一初始化各特殊功能寄存器,如果在FPP0和FPP1中都分别进行初始化,很有可能造成系统配置混乱。

 

    2. 如果我在main1中使用跳转指令跳转到main0中,会有什么后果?

    goto main0

    goto main1

    …

    main0:

    …

    main0_loop:

    …

    goto main0_loop

    …

    main1:

    …

    goto main0 //***这里跳转到main0中***//

    …

    回答:编译器会报警出错,所以后果就是代码错误无法通过编译,需要删除该代码。

    3. 会不会出现两个核同时写某个RAM变量而导致写失败的情况?

    回答:每个系统时钟周期只有一个核会工作,所以不会出现两个核在同一时刻写同一地址的情况。

    4. 既然FPP1需要FPP0的程序来启动,那不启动FPP1时是不是FPP0运行速度会增快一倍呢?

    回答:启动FPP1与不启动FPP1不影响FPP0的运行速度,FPP0的速度总是系统时钟的一半,这个是由系统硬件自动进行分配的,不启动FPP1的影响是在属于FPP1的那一半时间单片机没有执行代码。

    5. 应广双核单片机支持中断吗?

    回答:应广双核单片机支持中断,中断源和其它普通单片机没有太多差异,象常见的外部中断、定时中断、ADC中断都支持,使用上也和其它普通单片机没有区别。

    要留意的是应广双核单片机的中断程序只能由FPP0使用,所有的中断源共用一个中断入口,需要用户通过中断标志位判断中断类型。另外该单片机支持中断嵌套,需要用户自己对累加器和状态寄存器进行压栈和弹栈操作。

    6. 应广双核单片机采用什么语言编程?好不好掌握?

    回答:应广双核单片机IDE编译环境支持汇编和Mini C,非常容易上手,可以说是目前单片机IDE编译环境最好掌握的。

    就是经验丰富的工程师,不少单片机开发工具拿到手后都需要提供个相对完整的工程样例才能开始编程,有的单片机甚至写完代码后工程师都还不会自己创建新工程。应广提供的IDE开发环境完全是智能傻瓜式,根本不需要任何样例代码,拿着datasheet就可以开始编程。

    应广双核单片机总共有90余条汇编指令,IDE编译器支持汇编和基本C语句混合编程,而且IDE编译器会自动识别,不象其它编译器需要使用伪指令进行标示,我们可以通过一些简单例子来感受其编程的便捷性。 [page]

 

    代码样例1

    .romadr 0x000 //这一句也可以去掉,没有这一句编译器会自动从0地址开始放代码,是同样结果

    goto main0

    goto main1

    .romadr 0x010

    …

    main0:

    …

    main0_loop: //这里是用汇编实现FPP0主循环

    …

    goto main0_loop

    …

    main1:

    …

    while(1) //这里是用基本C语句实现循环

    {

    …

    }

    代码样例2

    word word_data //定义一个WORD变量

    byte byte_data //定义一个字节变量

    bit bit_data //定义一个位变量

    …

    set1 bit_data //用汇编指令设置该位变量为1

    set1 byte_data.5 //用汇编指令将该字节变量的bit5设为1,不需要在变量中进行位定义

    bit_data = 0 //用C基本语法将位变量清0

    byte_data = 0 //用C基本语法将字节变量清0

    mov a,0x12 //用汇编将WORD变量赋值0x3412

    mov lb@word_data,a

    mov a,0x34

    mov hb@word_data,a

    word_data = 0x5678 //用C基本语法将WORD变量赋值0x5678

    pa = 0b111_101_00 //用二进制对pa口进行设置,注意可以自由添加下划线做分隔标示符

    pb = 0b11110000 //

    …

    word_data = 0 //C基本语句和汇编可以任意组合

    byte_data = 100

    while(byte_data)

    {

    word_data++

    byte_data--

    mov a,byte_data

    mov pa,a

    }

    要留意的是对于分号(;)编译器当做注释符,所以使用C语句时不能用分号,这样for(;;)循环就无法使用。另外编译器对部分C语法支持有限,建议只用最基本的C指令。

    7. 应广双核单片机开发环境复杂吗?是否支持在线编程?

    回答:应广双核单片机的开发环境非常精简,IDE编译器和烧录软件的安装文件大小总共不到7M,安装后就编译和烧录两个文件。

    编译器自带样例工程,并可用指定IO口自动生成软件模拟的UART/SPI/I2C等代码。

    目前应广单片机均为OTP类型,需要专门的仿真器进行调试,然后用专门的烧录器进行烧写。仿真器和烧录器都是免驱动USB接口,插上电脑即可使用。

    8. 应广双核单片机价格贵吗?和其它普通单片机相比最大优势是什么?

    回答:应广双核单片机价格不但不贵,而且可以说相当便宜。前面我有介绍部分其它品牌单片机市场参考价,这里我不能很详细的透露应广的价格,但可以很明确的告诉大家,应广的价格和上述单片机比非常有竞争力。

    和其它普通单片机相比,在我看来最大优势是用硬件在一个简单的单片机上实现了类似多任务操作系统的功能,在一些需要处理多个实时性比较强的事件时会非常简单。除了双核单片机,应广还有四核和八核的型号,价格约为双核的2~3倍。

    9. 应广双核单片机性能稳定吗?抗干扰能力怎么样?

    回答:我的回答肯定是性能稳定,抗干扰能力强。

    客观的说个说法需要大量用户的实际产品应用作为辅证,应广科技是台湾近几年才升起的一家公司,和松翰与义隆有一定技术渊源,从技术上讲不会弱于这两家,而且已经有相当数量的出货量,从客户反馈看在稳定性和抗干扰能力方面都不错,比较典型的用户是用到HW公司产品的风扇控制上。

关键字:双核单片机  IDE  编译环境 引用地址:关于双核单片机的常见问题

上一篇:以ADSP2BF537为核心的网络通信模块的设计
下一篇:以单片机设计为核心的数字频率计

推荐阅读最新更新时间:2024-03-16 13:40

瑞萨发布双核微控制器 车载半导体挺进65nm时代
2008年8月25日,瑞萨科技宣布,今年10月起将供应采用65nm工艺技术生产的双核构造车载微控制器“SH7786”。主要用于高级车载导航仪。 该公司07年9月上市了90nm工艺的SH7786样品(参阅本站报道)。此次的65nm工艺产品除支持DDR3方式的同步DRAM(SDRAM)外,还减小了耗电量。对DDR3 SDRAM的支持“在车载微控制器领域还是首次”(瑞萨)。使用频率533MHz的32bit专用总线,可实现最快4.27GB/秒的高速数据传输。整个芯片全部工作时的耗电量控制在5W以内。每个处理器内核可设定3种节电模式。 配备有两个32bit的处理器内核“SH-4A”,533MHz频率下可实现最大1920MIPS
[单片机]
MSP432学习-01-CCS编译器安装及驱动库环境搭建
一、CCS编译器和驱动库安装 对MSP432进行开发,建议使用TI官方的CCS编译器进行编译和调试,下面我将为大家讲解CCS的详细安装过程:(PS:全部教程基于CCS6.2!) 下载CCS 官网下载 百度云分享 提取码:8zg5 下载驱动库(SDK) 官方下载 百度云分享 提取码:1nou 安装CCS编译器 下载完成后解压(解压到的路径中不能包含中文,安装路径也一样),点击如下图的图标开始安装。 选择“我同意安装协议”,点击下一步: 选择CCS的安装位置后,单机Next按钮,如下图: 务必勾选MSP Ultra Low Power MCUs中的MSP432 Ultra Low Power MCUs,其它芯片
[单片机]
MSP432学习-01-CCS<font color='red'>编译</font>器安装及驱动库<font color='red'>环境</font>搭建
S12X系列双核单片机的整车控制器CAN结点设计
引言 高精度、高速度、高可靠性的混合动力汽车整车控制器是实现整车控制的基础。为了避免车载环境中的电磁干扰,满足闭环控制系统的快速响应,整车控制器与其他控制器的通信采取CAN总线方式。CAN总线位速率最大可达1 Mb/s,可以满足整车控制器与外界的高速通信。 Freeseal公司MC9S12XE(简称S12X)系列单片机专门用于汽车网络和通用车身应用,具有32位单片机的性能,且具有16位MCU的所有优点和功效。内部的增强型XGATE模块,允许高速数据自主地在单片机外设和内部RAM、I/O端口之间进行数据传输与处理,XGATE内置有一个16位的精简指令集内核,可以对要传输的数据进行预处理并执行复杂的通信协议,易于用C语言进行编程。合
[单片机]
S12X系列<font color='red'>双核</font><font color='red'>单片机</font>的整车控制器CAN结点设计
在MPLAB X IDE下用SEGGER J-LINK调试PIC32
总的来说,在MPLAB X IDE下用J-LINK调试PIC32会有一些限制;推荐的做法还是使用Microchip自己的调试工具。 以下是帮助文档中,关于J-LINK相关部分的节选。 SEGGER J-Link Debug Probes SEGGER J-Link debug probes bring JTAG development to MPLAB X IDE. J-Link Debug Probes Supported The following J-Link probe versions and types have been tested and are supported in MPLAB X IDE: Ver
[单片机]
在MPLAB X <font color='red'>IDE</font>下用SEGGER J-LINK调试PIC32
STM32再学习——集成开发环境IDE
嵌入式系统是一个软件和硬件相结合的计算机系统。软件代码经编写、编译、汇编、链接,生成可执行文件,然后将可执行文件加载到嵌入式系统的ROM或flash中,通过嵌入式系统的MCU来控制、检测外部的装置。 软件的编辑需要文本编辑器,编译需要编译器,汇编需要汇编器,链接需要编译器,可执行文件需要软件工具来加载文件,同时软件还需要一些函数库,中间件等。为了使开发更便捷,简单,几乎所有的MCU芯片都会有对应的集成开发环境(IDE),该环境囊括了软件开发从编辑到可执行文件的所有工具,同时还包括常用的库,调试工具,在线调试工具链等。 STM32主流的集成开发环境有两种:IAR和MDK。我在这里不想讨论哪一种IDE好,谈论这个没有意义,就像你认为版
[单片机]
STM32再学习——<font color='red'>集成开发环境</font><font color='red'>IDE</font>
MPLAB X IDE v3.40软件安装教程
Microchip官网MPLAB X IDE软件下载链接:http://www.microchip.com/mplab/mplab-x-ide
[单片机]
MPLAB X <font color='red'>IDE</font> v3.40软件安装教程
Linux系统下搭建C/C++开发的IDE环境
  RedHat Linux上面没有提供Anjuta软件包,上面提供了一个Glade应用程序界面设计工具。Linux上面使用Anjuta和Glade以及 Glademm软件包可以搭建一个Linux下面进行C/C++软件开发的IDE环境,可以进行GTK+/Gnome的应用程序开发。   以前开发 Linux 程序时写出好的图形化用户界面比较难。 在 GIMP 工具包 (GTK)诞生之后,这件事就变得比较容易了。当 Damon Chaplin 写出 GLADE 这个用于在 GTK 环境下生成图形化用户界面的工具后,就更容易了。但是 GLADE 仍然不能算是一个“集成开发环境”(如 Visual Basic 等等。), 因为程序员不能
[嵌入式]
STM8—STVD+Cosmic编译环境下查看代码的实际长度
下载“stvd代码大小显示工具” 将上面的软件放在COSMIC编译软件的安装目录 默认的是C:Program FilesCOSMICCXSTM8 打开一个stm8工程,右键选择stm8l工程名,在弹出的快捷菜单中选择Setting选项,在弹出的工程选项设置中找到post-build选项卡,在commands输入框中增加一行:size $(OutputPath)$(TargetSName).map 备注:size后面有一个空格,不然编译会报错; 重新编译(选择Rebuild All),即可显示出代码大小(代码大小单位Byte)
[单片机]
STM8—STVD+Cosmic<font color='red'>编译</font><font color='red'>环境</font>下查看代码的实际长度
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved