我们正在开始一个基于微芯片 PIC18F252 的新项目。最好使用的“c”编译器是什么?
15 回答
- Microchip C18 编译器:确实是最好的和最容易使用的。非常适合专业使用。
- HI-TECH:在 Microchip 不工作时使用(用于 PIC16)。
- CCS
- 源升压
PS:我自己在PIC18F25XX和 PIC18F45xx 系列上工作过,所以我对此略知一二。;)
PS2:如果出现编译器错误(它发生在我们身上),Microchip 团队非常被动,新版本很快发布。尝试找到与 Microchip 有联系的当地经销商,然后与他们一起参加活动并获得直接联系。无价。
几年前,我对 Hitech PICC18 编译器和 Microchip C18 编译器进行了广泛的研究。
我认为大多数决定使用 Microchip C18 编译器的人只是因为他们在访问 microchip 网站时看到它并且已经熟悉 MpLab 进行汇编(恕我直言,这是一个糟糕的 IDE)。
HiTech 的解决方案更接近 ANSI C(因此代码更便携)。使用 C18,您添加了各种编译器特定的关键字,并且您被迫更多地管理内存。
- 您必须指定将变量分配到哪个 ram bank。
- 为了将 const 字符串分配给程序空间(而不是 ram),您必须使用 rom 关键字。
- 如果不编辑链接描述文件,则无法分配大于 256 字节的变量。
可以在此处找到更深入的出色比较:http ://www.xargs.com/pic/picc18-vs-c18.html
除了编译器之外,您还需要考虑 IDE。我是 Eclipse 的狂热粉丝,因此我非常喜欢 HiTech 的 HiTide。但是,自从Microchip收购了HiTech……他们似乎不再支持HiTide了。我不认为这是官方的……但根据我在 HiTech 支持方面的经验……他们不再修复错误,这真是太可惜了。
我也试过他们的专业编译器。我真的很喜欢这个主意。但是,我的项目超出了自动参数块的要求,无法使用它。编译似乎也需要很长时间,但这可能是程序复杂性的原因。
tech PICC对我来说一直很可靠,并且已经发展了很多年。
我没有使用过 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 位指针。
我要求太多了吗?
我们使用CCS,它非常好。非常慢,但效果很好。无论如何,我没有与其他编译器进行任何比较,因此可能会有更好的选择。
我不喜欢CCS,它太古怪了。
SourceBoost 还不错,而且很便宜,大约 40 英镑。
Microchip C18 编译器是最好的 IMO,但非常昂贵。不过,有一个免费的演示/学生版。
我目前使用 CCS 并且讨厌它。它是如此非标准,并且是 C 的一个子集,以至于它很糟糕。我正在考虑尽快切换。我将首先尝试 Microchip C18 编译器,然后我会努力吞咽并获得 HighTech,从查看试用版和示例来看,它看起来非常可靠。
使用 sdcc:
对于非免费(但免费!)PIC 编译器,mikroC 是 gr8!
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
高温高压
IAR System 有一个 PIC18 编译器/IDE:IAR Embedded Workbench for PIC18。
我已经使用 CCS 很多年了。我发现了一些错误,但支持很好,我可以使用 CCS 比使用 C18 或 HiTec 更快、更轻松地开发
我会坚持你使用 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 稍好一些。
我喜欢它的地方是:
- 好吧,代码大小肯定看起来比竞争对手小。
- 语言的一些扩展(例如参考)。但是,会扼杀便携性。
- 价格。
- 通过论坛的支持实际上是相当不错的。作者经常发帖。
- 自动消除未使用的代码(我认为这个功能会减慢编译和链接的速度)
因为我不喜欢 SB IDE,所以我使用 Source Insight 作为编辑器,它非常棒!SB“make”实用程序也没有希望,所以我使用 GnuWin32 make,这绝对是真正的交易,而且是免费的。
所以总而言之,我对我选择的工具感觉好多了。
无论如何,希望这可以帮助那里的人。
MPLAB C-18 很好,他们有免费的学生版。它有一个很好的用户界面,它足够简单,不会让用户感到困惑。这是我使用的。
如果您能侥幸成功(我的偏好是),请使用带有 MPLAB 的 PIC18 汇编器。它的优点是免费且相对完善的文档以及它具有不错的硬件/调试器支持的事实。它的小指令集和简单性使其能够轻松快速地进行编码。
如果您设置在 c 上:
CCS 是一个很好用的编译器,有一点问题,而且相当昂贵,但也有很好的调试能力。
如果您已经习惯了使用 Visual Studio 6 编写 c 代码的方法,Microsoft Embedded Studio(或类似的东西)就非常好。再次良好的硬件支持和出色的调试器。
我相信,如果您正在寻找免费的解决方案,您确实可以获得 MPLAB 的 c 编译器,尽管我个人从未使用过,所以我无法通过判断。