什么是Pic18 micro的最佳c编译器

我们正在开始一个基于微芯片PIC18F252的新项目。 什么是最好的’c’编译器?

技术PICC对我来说一直很可靠,并且已经有多年的发展。

  1. Microchip C18编译器 :真的是最好也是最容易使用的。 非常适合专业用途。
  2. 高科技 :当Microchip不工作时使用(用于PIC16)。
  3. CCS
  4. SourceBoost

PS:我自己在PIC18F25XX和PIC18F45xx系列上工作过,所以我对此有所了解。 ;)

PS2:如果编译器错误(它发生在我们身上),Microchip团队非常反应,新版本很快就会发布。 尝试找到与Microchip联系的本地经销商,然后与他们一起参加活动并获得直接联系。 无价。

几年前,我对Hitech PICC18编译器和Microchip C18编译器进行了广泛的研究。

我想大多数决定使用Microchip C18编译器的人只是因为他们在进入微芯片网站时看到它并且已经熟悉MpLab进行汇编(这是一个糟糕的IDE恕我直言)。

HiTech的解决方案更接近ANSI C(因此代码更加便携)。 使用C18,您可以添加各种编译器特定的关键字,并且您不得不更多地管理内存。

  1. 您必须指定要将变量分配给哪个ram bank。
  2. 为了将const字符串分配给程序空间(而不是ram),您必须使用rom关键字。
  3. 如果不编辑链接描述文件,则无法分配大于256字节的变量。

可以在这里找到一个更深入的优秀比较: http : //www.xargs.com/pic/picc18-vs-c18.html

除了编译器,您还需要考虑IDE。 我是一个狂热的日食爱好者,因此我非常喜欢HiTech的HiTide。 但是,由于Microchip购买了HiTech ……似乎他们不再支持HiTide了。 我不认为这是正式的…但是根据我对HiTech支持的经验……他们不再修复错误了,这真是一种耻辱。


我也试过他们的专业编译器。 我真的很喜欢这个主意。 但是,我的项目超出了自动参数块要求,无法使用它。 它似乎也需要花费很长时间来编译,但它可能是程序复杂性的b / c。

我没有使用Microchip编译器,但多年来一直在使用HiTech的产品。 我一般都喜欢他们的PIC16编译器,但发现他们的PIC18编译器相当令人沮丧。 虽然我很欣赏不必将所有变量都放到银行中,但HiTech编译器使用的规则令人烦恼,奇怪和愚蠢。 简要背景:该芯片有16个256字节的变量组(*并非所有256字节都可用于所有组)和一个组指针。 直接访问变量需要选择适当的库; 换银行需要一条指令。

全局和静态整数和结构及其数组,其大小范围为2-255字节,每个模块将按模块分配到psect; 每个模块的psect必须适合256字节的页面。 字节数组以及单个字节进入“大”psect,其中假定每个字节可能位于不同的页面中。

整个程序中的所有自动变量和参数必须适合256字节的页面(它们在链接时静态分配)。 链接器确实覆盖了永远不会同时存在的变量,但它假定对具有特定签名的函数指针的任何调用都可以调用其地址被采用且具有该签名的任何函数。

可以将最多128个字节的全局和静态变量声明为“接近”。 这些都可以在没有银行转换的情况下访问 无法指定将自动变量或参数放置在“附近”。

HiTech使用的银行转换规则意味着许多function,即使他们从不在自己的模块之外使用任何变量,也会使用movlb(交换机组)指令。

我不想要“无所不知的代码生成”。 我希望能够通过为自定义psect定义关键字或宏来添加一些提示来明智地放置事物,允许自动和局部变量与其他变量共享psect(在给定指定的银行限制的情况下尽可能覆盖自动变量/参数)。 如果编译器供应商真的想要很好,请允许指针接受存储区限定符,这样只能指向某个psect中的东西的指针才能以8位存储。 同样,允许函数和函数指针上的bank限定符指定某些间接调用只能用于某些函数。 而不是使函数指针24位或必须工作以确保间接调用的函数在第一个64K中结束,而是在第一个64K中放置一个自动GOTO,因此函数指针可以是16位。 或者更好的是,如果函数“类”的函数少于64个,则使用8位指针。

我问得太多了吗?

我们使用CCS ,它非常好。 很慢,但效果很好。 无论如何,我没有与其他编译器进行任何比较,因此可能有更好的选择。

我不喜欢CCS,它太古怪了。

SourceBoost不错,价格便宜,约40英镑。

Microchip C18编译器是最好的IMO,但非常昂贵。 但是有一个免费的演示/学生版。

我目前使用CCS并讨厌它。 它是如此非标准和C的一个子集,它只是糟透了。 我正在考虑转换。 我将首先尝试Microchip C18编译器,然后我会努力吞下并获得HighTech,这在审查试用版和样本时看起来非常可靠。

IAR System具有PIC18编译器/ IDE: 用于PIC18的IAR Embedded Workbench 。

我一直在使用CCS多年。 我发现了一些错误,但是支持很好,我可以使用CCS比使用C18或HiTec更快更容易地开发

使用sdcc:

http://sdcc.sourceforge.net/

对于非免费(但免费!)PIC编译器,mikroC是gr8!

http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/

HTH

我坚持你使用C18编译器。 它非常坚固且易于使用。 这是专业发展的必备条件。 这实际上取决于您正在处理的项目的大小。

从免费/学生版开始,您将获得使用它的良好感觉。 如果您的项目很小,那可能就是您所需要的。 我刚刚在PIC 18F上完成了一个大型的开发项目,我对C18编译器非常满意。

MPLAB C18 – 学生

我一直在使用SourceBoost一年左右,我并不是很激动,但一切都很好。 但是,我刚刚完成了SourceBoost 7,MCC18和Hi-Tech C之间的代码大小测试。结果非常出色。

对于一个小样本程序(包含结构,数组,函数指针,结构指针,字符和整数),SB7工具包生成的代码大约是MCC18和HTC的2/3。 我想确定其中有多少是启动和运行时开销,因此我在示例程序中添加了更多随机内容,并且大小增量显示SB仍然是其他人的2/3。 HTC略小于MCC18,但不显着。 所有优化都在所有环境中进行。

我不喜欢SB的事情是:

  • 有限的在线汇编程序
  • 编译和链接速度慢
  • IDE仅略好于MPLAB。

我喜欢它的事情是:

  • 嗯,代码大小肯定比竞争对手小。
  • 语言的一些扩展(例如引用)。 但是,杀死了便携性。
  • 价格。
  • 通过论坛支持实际上非常好。 作者经常发帖。
  • 自动消除未使用的代码(我认为此function会降低编译和链接的速度)

由于我不喜欢SB IDE,因此我使用Source Insight作为编辑器并使用ROCKS! SB“make”实用程序也没用,所以我使用GnuWin32 make,这绝对是真正的交易,而且是免费的。

总而言之,我对我选择的工具感觉好多了。

无论如何,希望这有助于那里的人。

MPLAB C-18很不错,他们有一个免费的学生版。 它具有良好的用户界面,足够简单,不会混淆用户。 这是我用的。

如果您可以使用它(我的偏好是),请使用带有MPLAB的PIC18汇编程序。 它具有免费和相对良好的文档记录以及它具有良好的硬件/调试器支持这一事实的优点。 它的小指令集和简单性使其易于快速编码。

如果你在c上设置:

CCS是一个很好的编译器使用,有点错误,相当昂贵,但也具有良好的调试function。

如果您已经习惯了编写c代码的Visual Studio 6方法,那么Microsoft Embedded Studio(或类似的东西)就非常出色。 再次良好的硬件支持和出色的调试器。

我相信,如果你正在寻找一个免费的解决方案,你确实可以获得MPLAB的c编译器,虽然我个人从来没有使用任何,所以我不能通过判断。