打印

发一个我以前写的IAR FOR NEC编译器的使用介绍(原创)

[复制链接]
9991|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yewuyi|  楼主 | 2009-8-23 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
出差在外,进行了一下整理,整理的不好,大家可别骂我,另外,IAR的编译器很多地方都差不多,选择用IAR FOR NEC说明问题,主要是国内用IAR FOR NEC的人特别少,包括NEC自己的工程师,也基本不会用,所以我就稍微整理一点拉。

的开发环境实在是太烂太烂,光装它那垃圾环境就得花费半小时以上,KAO,NEC中国还没有IAR FOR NEC的技术支持,真不知道NEC是怎么在中国推广的。我很少使用仿真器调试程序,所以有关MINICUBE2仿真方面的话题,就不要问我了。

MINICUBE2可以编程,有一个QBP的软件。另外,NEC还提供一个价格奇贵的专用编程器,那玩意没什么东西,但却需要卖2800元,NEC简直是打劫,那玩意300块半卖半送就拉倒了。

IAR FOR NEC的效率和PM+的效率完全不可同日而语,嘿嘿,我一般都不给别人讲,谁用谁知道。。。

IARF FOR NEC的入门很简单,DOWN软件后建个空项目编译就是了,呵呵,那样就爬进门了,IAR FOR NEC的问题主要有如下一些:
1、IAR FOR NEC环境下如何连接MINICUBE2仿真,如果是78F9222、9234这样的,一般不能直接仿真,需要在CHIP中保留出一块区域,并放一段代码进去,应该类似ROM-monitor这样的方式,这个很麻烦,还占用MCU部分ROM资源和IO资源,并且这几个型号也比较简单,所以一般不仿真,直接DOWNLOAD到CHIP中看就可以了
2、对于0537等型号,NEC提供一些带D后缀的型号供开发用,说白了,在这些型号里面,做进来类似的JTEG等调试硬件,但具体生产时,选择那些不带D后缀的型号,目的只有一个:省点晶圆面积,这做法真TMD的变态啊。。。
3、有关中断的写法,一般和如下类同:
#pragma     vector=INTTM000_vect              //定时中断
__interrupt void T0(void){
                         }
请仿照写就可以了,至于INTTM000_vect关键字,可查阅IAR安装目录下的连接文件中的定义。
4、可选字节和保护字节的写法如下:
#pragma     location =      "OPTBYTE"                               //0x0080~0x0081赋值
__root      const           uchar optbyte[2]={0x9D,0xff};           //可选字节和保护字节
有关OPTBYTE的定义可参考IAR目录下的相关文件即可,里面都有定义
5、头文件写法:
#include    <io78f9222.h>
#include    <intrinsics.h>
你用到哪个就包含哪个了,intrinsics.h中包含了一些本征函数,一般都需要包括,除非你不用本征函数,但不用本征函数的代码估计不多,而且也是不可想象的,所以直接拷贝包含进去就可以了,io78f9222.h这样的文件就不用多说了把。
6、其它的就是有关IAR的一些设置了,包括堆、栈的大小、范围、库函数、CALLT启用、LIST文件生成、编译的一些设置,HEX文件的生成等等了,这些查阅IAR的帮助可以得到解释,如果有不明白得地方可以跟贴提问,俺一定尽量知无不言。。。

另特别申明:俺不提供有关IAR FOR NEC任何D版软件,请不要向本人索取,请自行使用GOOGLE获得帮助。

相关帖子

沙发
huangqi412| | 2009-8-23 10:18 | 只看该作者
小叶的沙发?  有来我这推过,了解了下编译器后,发现太恶心。

使用特权

评论回复
板凳
yewuyi|  楼主 | 2009-8-23 10:28 | 只看该作者
呵呵,什么太恶心?IAR FOR NEC很恶心还是PM+很恶心?!

使用特权

评论回复
地板
huangqi412| | 2009-8-23 11:17 | 只看该作者
反正,当时就强烈向俺推荐它的那个PWM还有啥。。。

使用特权

评论回复
5
yewuyi|  楼主 | 2009-8-23 13:08 | 只看该作者
NEC的PWM有什么问题吗?
我没感觉有什么不好啊?!

使用特权

评论回复
6
yewuyi|  楼主 | 2009-8-24 01:11 | 只看该作者
呵呵,看来使用NEC和IAR的人确实很少很少!

使用特权

评论回复
7
gtw| | 2009-8-24 12:48 | 只看该作者
虽然说IARforNEC比PM+好一些。但是和IAR其他的编译器比起来,优化效果还是要差一些。

使用特权

评论回复
8
phoenixmy| | 2009-8-24 12:52 | 只看该作者
顶老叶

貌似韩系的开发环境也不是很好用

使用特权

评论回复
9
gtw| | 2009-8-24 12:53 | 只看该作者
ABOV的开发环境是相当的垃圾,比HT和SONIX的都要差。

使用特权

评论回复
10
yewuyi|  楼主 | 2009-8-24 13:07 | 只看该作者
IAR for nec的效率稍微低点不是IAR本身对NEC的支持不好,而应该是NEC比较古老的MCU内核造成的把。

韩国三星的也有IAR的编译器,但效率也不太好,这也是因为SAMSUNG仿制的MCHP比较老的MCU内核结构造成的。

IAR比PM+好用多了,主要是因为IAR是一种集成性质的开发环境,而PM+光装软件就好几个,每个装起来还特别大,特别慢,那就很烦人拉。

使用特权

评论回复
11
yewuyi|  楼主 | 2009-8-24 13:57 | 只看该作者
我有关NEC的抗干扰性能的一些讨论:
1、抗干扰是系统级问题,一般不直接归类到MCU上
2、MCU的可靠性一般有它自己的可靠性测试指标,大家关注比较多的ESD、EFT等,NEC的指标都比较差,当然相对台湾的MCU还是稍好那么一点的。
3、NEC的驱动能力太弱,他的指标很容易忽悠了大家,例如仅针对单个IO来说的话,它的驱动能力似乎也不是很弱,但请大家要仔细看手册中的总电流限制,那个电流是出奇的低,例如78F9222、9234一般都只有几十个MA,哈哈,很多人死在这上面都不知道怎么死的。
4、NEC吹嘘内部的OSC的精度如何如何高,一般都吹嘘在全电压、全温度范围内1%,俺当年就被他们给忽悠了一次,因为开始时是看的英文手册,并没有仔细看这一项,但后来有中文手册后,比对着看,才知道它的手册标的清清楚楚,折算成全电压、全温度范围内,最大误差5%,KAO,简直是瞎忽悠嘛。
5、NEC的CPU核非常落后,效率不高,指令集效率也不高,即使使用IAR的编译器,生成的代码量也是用巨大形容,而国内用IAR编译器开发NEC的人很少,呵呵,如有打算用IAR开发NEC的XDJM,俺到是可以帮帮大家。。。
6、NEC的IO排列简直就是毫无规则可言,乱七八糟,怎么看着都不舒服。
7、NEC的AD的绝对精度也一般。
8、NEC没有内部EEPROM,而且它的FLASH寿命很低,一般只有10年的保存数据能力,擦写次数也很低,K0S的只有100次,其它是1000次
9、NEC的价格低主要是因为它采用了很多欧美大厂不屑采用的半导体工艺,这些工艺的结果就是NEC的工作电流很小、ESD效果很差等
10、其它还有很多,NEC就是一个特殊的芯片,只能偶尔在一些特殊的应用中用一下,而不可能在作为通用芯片在各个行业中都能得到大量应用。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
程序匠人 + 6
12
程序匠人| | 2009-8-24 14:16 | 只看该作者
呜呼!又被小叶童鞋骗去一条裤子外加6分!

使用特权

评论回复
13
yewuyi|  楼主 | 2009-8-24 15:59 | 只看该作者
呵呵,最近天热,但穿的裤子却变多了。。。

使用特权

评论回复
14
phoenixmy| | 2009-8-24 16:11 | 只看该作者
NEC的人看到了估计连死的心都有啦,哈哈

使用特权

评论回复
15
yewuyi|  楼主 | 2009-8-24 16:16 | 只看该作者
话说NEC和瑞莎的产业合并:

两个难兄难弟,如今走到了一起,瑞莎的牛皮吹的还是很响亮,每次有代理或者原厂FAE过来拜访我,都忽悠俺一通,忽悠词语不外乎如下:瑞莎是单片机销量全球冠军等等。。。

搞的我每次都问他们,为什么你这全球冠军不被亚军和季军嫉妒呢?是别的厂家太嚣张呢还是吓跑了?为什么你们这全球冠军会亏损这么多年没起色?

瑞莎的人每次还忽悠俺说自己的价格比NEC的都好,呵呵,让他们一报价格,比NEC高了一截,真能忽悠啊。

使用特权

评论回复
16
yewuyi|  楼主 | 2009-8-24 16:57 | 只看该作者
任何产品,绝对不是因为产品有缺点,所以大家才不去采用,绝大多数的情况下,都是因为大家不了解他,所以才没有人去使用它,呵呵,有人研究它的缺点,说明有人把他当回事情,因为只有在使用中才会明白它的缺点和优点。例如,NEC也有优势啊,那就是价格,呵呵,在CHINA的大环境下,价格还是一个很重要的因素哦。。。

使用特权

评论回复
17
gtw| | 2009-8-24 21:15 | 只看该作者
纠正一下,IARforNEC的优化效果差也不完全是因为MCU Core,一些常规优化也有不如其他MCU的地方;
另外,k0s的flash擦写寿命是1000次,不要嫌少,足够了。和擦写10次的相比又如何?不过擦写10次的和otp相比已经是天壤之别了!

使用特权

评论回复
18
xnwxq| | 2009-8-31 08:21 | 只看该作者
一直没有使用IAR,但是开发NEC处理器的时候,也是使用PM+开发软件进行编译,但编辑和代码的调试都不是使用他!感觉有几个不好的地方我说明如下:
首先:PM+的使用起来比较别扭,
其次:PM+的注释功能比较烂,对中文的注释功能支持不是很好,不过是可以通过一个比较好的处理方式实现,
我举例说明一下:在/**/间加入中文注释
由于对中文支持不是很好,在每个中文注释前加2个半角字符,我在程序中为了代码给美观,在子程序的功能说明中使用的是2个"**",这样使用PM+软件打开就不会出现乱码的问题!有什么好的解决办法大家也可以谈谈
/*******************************************************************************
**
**原型:void Delay_Time(uchar time);
**功能:大约250ms的延时函数
**入口参数:time(0~255)
**出口参数:无
**
*******************************************************************************/
void Delay_250ms(uchar time)
{
        uint i;                                            
        for(;time > 0;time--){
                Start_WDT();/**防止因延时函数造成单片机复位**/
                for(i = 7000;i > 0;i--){;}
        }
        return;
}

/*******************************************************************************
**
**原型:void main(void);
**功能:工程主程序
**入口参数:无
**出口参数:无
**
*******************************************************************************/
void main(void)
{
        System_Init();
        while(1){
                Start_WDT();
                /**
                Pulse_LED_Right();
                NPulse_LED_Right();
                NPulse_LED_Right();
                **/
                LED_Work();
        }
}

使用特权

评论回复
19
lovedata| | 2009-12-21 21:44 | 只看该作者
楼上的办法好,看来叶公是nec高手!

使用特权

评论回复
20
ssf621| | 2011-11-4 15:28 | 只看该作者
19# xnwxq
按你的方法还是有乱码

使用特权

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

本版积分规则

个人签名:一:我的回帖多数只是猜测/估计/想象,建立在我现有知识结构的理解和分析上,多数都没有动手实际检验过,请斟酌采纳. 二:若对我的技术类主帖或回帖有异议,欢迎讨论,拒绝过激攻击或辱骂,否则全站追杀屏蔽发帖,后果自负. 三:对本人的其它意见,请直接向站长投诉,勿使用站内短信骚扰/挑衅/辱骂,否则将全站追杀屏蔽发帖,后果自负.

1416

主题

20007

帖子

232

粉丝