【发布时间】:2010-09-10 17:42:03
【问题描述】:
我们正在启动一个基于微芯片 PIC18F252 的新项目。什么是最好的“c”编译器?
【问题讨论】:
-
我建议你去制造商的论坛为每个编译器比较用户的问题和抱怨。
标签: c embedded microchip pic18 mikroc
我们正在启动一个基于微芯片 PIC18F252 的新项目。什么是最好的“c”编译器?
【问题讨论】:
标签: c embedded microchip pic18 mikroc
MPLAB C-18 不错,而且他们有免费的学生版。它有一个很好的用户界面,它足够简单,不会让用户感到困惑。这是我用的。
【讨论】:
PS:我自己在 PIC18F25XX 和 PIC18F45xx 系列上工作过,所以我对此了解一点bit。 ;)
PS2:如果出现编译器错误(发生在我们身上),Microchip 团队反应非常迅速,新版本很快发布。尝试找到与 Microchip 有联系的当地经销商,然后与他们一起参加活动并获得直接联系。无价之宝。
【讨论】:
使用 sdcc:
对于非免费(但免费!)PIC 编译器,mikroC 是 gr8!
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
HTH
【讨论】:
我已经使用 SourceBoost 大约一年了,我并不完全兴奋,但它很好。但是,我刚刚完成了 SourceBoost 7、MCC18 和 Hi-Tech C 之间的代码大小测试。结果非常显着。
对于一个小型示例程序(包括结构、数组、函数指针、结构指针、字符和整数),SB7 套件生成的代码大约是 MCC18 和 HTC 大小的 2/3。我想确定其中有多少是启动和运行时开销,所以我在示例程序中添加了更多随机内容,大小增量显示 SB 仍然是其他大小的 2/3。 HTC 比 MCC18 略小,但并不显着。所有环境中的所有优化均已启用。
我不喜欢SB的地方是:
我喜欢它的地方是:
因为我不喜欢 SB IDE,所以我使用 Source Insight 作为编辑器,它非常棒! SB“make”实用程序也没有希望,所以我使用 GnuWin32 make,这绝对是真正的交易,而且是免费的。
所以总而言之,我对自己选择的工具感觉好多了。
无论如何,希望这对那里的人有所帮助。
【讨论】:
我没有使用过 Microchip 编译器,但多年来一直在使用 HiTech 的产品。我通常喜欢他们的 PIC16 编译器,但发现他们的 PIC18 编译器相当令人沮丧。虽然我很欣赏不必手动将所有变量放入银行,但 HiTech 编译器使用的规则令人讨厌、奇怪和愚蠢。简要背景:该芯片有 16 个 256 字节的变量库(*并非所有 256 字节在所有库中都可用)和一个库指针。直接访问变量需要选择正确的库;更换银行只需一条指令。
大小范围为 2-255 字节的全局和静态 int 和结构及其数组将按每个模块分配到 psect;每个模块的 psect 必须适合 256 字节的页面。字节数组以及单个字节进入一个“大”psect,其中假定每个字节都可能驻留在不同的页面中。
整个程序中的所有自动变量和参数都必须适合 256 字节的页面(它们在链接时静态分配)。链接器确实覆盖了永远不会同时存在的变量,但它假定对具有特定签名的函数指针的任何调用都可以调用其地址被占用且具有该签名的任何函数。
可以将最多 128 字节的全局变量和静态变量声明为“near”。这些可以在没有银行切换的情况下访问。无法指定将自动变量或参数放置在“附近”。
HiTech 使用的 bank-switching 规则意味着许多函数,即使它们从不使用自己模块之外的任何变量,也会洒上 movlb (switch-bank) 指令。
我不想要“无所不知的代码生成”。我希望能够通过为自定义 psect 定义关键字或宏来添加一些提示以合理地放置事物,允许自动和局部变量与其他变量共享 psect(在指定的银行限制下尽可能覆盖自动变量/参数)。如果编译器供应商真的想变得更好,允许指针接受银行限定符,以便只指向某个 psect 中的事物的指针可以存储在 8 位中。同样,允许函数和函数指针上的银行限定符指定某些间接调用只能与某些函数一起使用。与其将函数指针设为 24 位,也不必努力确保间接调用的函数在前 64K 中结束,而是在前 64K 中放置一个自动 GOTO,以便函数指针可以是 16 位。或者更好的是,如果一个函数“类”的不同函数少于 64 个,则使用 8 位指针。
我是不是要求太多了?
【讨论】:
MPLAB C18 - 学生
【讨论】:
我已经使用 CCS 多年了。我发现了一些错误,但支持很好,我可以使用 CCS 比使用 C18 或 HiTec 更快、更轻松地开发
【讨论】:
几年前,我对 Hitech PICC18 编译器和 Microchip C18 编译器进行了广泛的研究。
我认为大多数决定使用 Microchip C18 编译器的人只是因为他们在访问 microchip 网站时看到它并且已经熟悉 MpLab 进行汇编(恕我直言,这是一个糟糕的 IDE)。
HiTech 的解决方案更接近 ANSI C(因此代码更易于移植)。使用 C18,您可以添加各种特定于编译器的关键字,并且您必须更多地管理内存。
可以在此处找到更深入的出色比较:http://www.xargs.com/pic/picc18-vs-c18.html
除了编译器之外,您还需要考虑 IDE。我是 Eclipse 的狂热粉丝,因此我非常喜欢 HiTech 的 HiTide。但是,自从Microchip收购了HiTech……他们似乎不再支持HiTide了。我认为这不是官方的……但根据我在 HiTech 支持方面的经验……他们不再修复错误,这真是太可惜了。
我也试过他们的专业编译器。我真的很喜欢这个主意。但是,我的项目超出了自动参数块的要求,无法使用它。编译似乎也需要很长时间,但这可能是程序复杂性的原因。
【讨论】:
IAR System 有一个 PIC18 编译器/IDE:IAR Embedded Workbench for PIC18。
【讨论】:
tech PICC 对我来说一直很可靠,并且已经发展了很多年。
【讨论】:
我目前使用 CCS 并且讨厌它。它是如此非标准,并且是 C 的一个子集,以至于它很糟糕。我正在考虑尽快切换。我将首先尝试 Microchip C18 编译器,然后我会努力吞咽并获得 HighTech,从查看试用版和示例来看,它看起来非常可靠。
【讨论】:
我会坚持你使用 C18 编译器。它非常强大且非常易于使用。这是职业发展的必备品。这实际上取决于您正在从事的项目的规模。
从免费/学生版开始,您将获得使用它的良好感觉。如果您的项目很小,那可能就是您所需要的。我刚刚在 PIC 18F 上完成了一个大型开发项目,我对 C18 编译器非常满意。
【讨论】:
我不喜欢 CCS,它太古怪了。
SourceBoost 还不错,而且很便宜,大约 40 英镑。
Microchip C18 编译器是最好的 IMO,但非常昂贵。不过,有一个免费的演示版/学生版。
【讨论】:
如果您能侥幸成功(我的偏好是),请将 PIC18 汇编器与 MPLAB 结合使用。它的优点是免费且相对有据可查,同时它还具有不错的硬件/调试器支持。它的小指令集和简单性使其能够轻松快速地进行编码。
如果你设置在 c 上:
CCS 是一个很好用的编译器,有一点问题,而且相当昂贵,但也有很好的调试能力。
如果您已经习惯了使用 Visual Studio 6 编写 c 代码的方法,那么 Microsoft Embedded Studio(或类似的工具)非常好。再次提供良好的硬件支持和出色的调试器。
我相信,如果您正在寻找一个免费的解决方案,您确实可以获得 MPLAB 的 c 编译器,虽然我个人从未使用过,所以我无法通过判断。
【讨论】:
我们使用CCS,它非常好。非常慢,但效果很好。反正我没有和其他编译器比较,可能会有更好的选择。
【讨论】: