新问题
马林v1 -漏洞修复/纠正 #159
对话
|
干得好! 两个问题:
|
|
|
PROGMEM警告完全是错误的。这是GCC中的一个bug,在更新的GCC版本中得到了修复。 我一直在用gcc-4.6.2和avr-libc-1.8.0以及Arduino 1.0库编译ErikZalm/马林。没有任何警告。(Arduino库需要一个小的改变,这样它们就不再发出警告了) 真实的的问题是,您是否希望因为编译器中的bug而在代码中进行一些丑陋的修改,或者您是否告诉人们使用更新的编译器版本? |
|
此外,不支持“prog_short”。GCC从不支持在类型上设置PROGMEM属性。属性需要在变量上设置,而不是没有类型。所以你实际上在那里做的事情不被新的GCC版本支持,并且会发出警告或错误。 |
|
日期: |
|
轻度OT:你在arduino上使用哪个JTAG适配器? |
|
就像上面提到的“Atmel JTAG ICE MKII”(我发现它在我的地窖上周,还没有使用它5年以来,我切换到我所有的开发ARM在这个时候)。 我将JTAG直接焊接到Arduino 1280底部的ADC 4、5、6、7(A4、A5、A6、A7)、RESET、GND和VCC。然后,我从RAMPS1.4板上切下4个ADC接头引脚,使其不干扰RAMPS电子器件,并通过添加细线将Y-STEP(A6)和Y-DIR(A7)重新布线至A9和A10。就像这样,我可以在正常的机器操作中使用JTAG(不丢失Y驱动程序)。 我尝试了很多方法来让Eclipse和AVR插件工作,但包含的“贪婪”根本不起作用(在MacOS和Windows上测试)。我一用AVRStudio5.1试用,第一次就成功了。 |
|
不客气。令人沮丧的是,有很多关于这个问题的错误信息,所以我花了相当多的研究,以找出一些真正的问题在哪里。最后,我发现一个gcc维护人员的帖子说,类型上的PROGMEM属性不受支持,也不应该使用。这解释了我注意到的大部分问题。 这是一个真实的的耻辱,Arduino 1.0来默认与这个错误的GCC的Windows。不过话说回来,默认情况下Arduino不会显示任何警告。Arduino还使用了一些具有PROGMEM属性的typedef,因此需要更新这些属性。 我仍然使用“将所有PDE文件逐个粘贴”的技巧来编译,所以您的更新单独编译PDE文件是一个非常受欢迎的变化:-) |
|
你好爸爸, 我找到了一个很好的资源来更新AVRStudio与最新的gcc-avr编译器,其中也涵盖了所需的变化Arduino库: http://andybrown.me.uk/ws/2012/04/28/avr-gcc-4-7-0-and-avr-libc-1-8-0-compiled-for-windows 在我这样做之后,所有(错误的)警告都消失了。 最大的惊喜:近似值程序内存使用量减少了1kB,数据内存使用量减少了几百字节(因此编译器优化方面有了很大改进) 谢谢你的提醒。现在,我对正确的工具链设置感到非常满意。 附言在阅读avr-gcc的“重要错误修复”注释时,我发现了一些非常有趣的事情: |
|
我还注意到闪光灯的尺寸缩小了。AVR-GCC正在变得更好(这并不奇怪,因为它产生的工作,但巨大的代码在第一个版本)数据大小的减少让我感到惊讶。默认情况下,启动代码不使用任何数据区,所以我不知道优化器如何可以删除数据。除非有些东西在应该存储的时候没有正确存储在闪存中。 但是我还没有时间去测试它,也许你可以看看新的GCC是否引入了第142号问题。因为Erik无法复制它,但当我用我的工具链构建时,它发生了。 (Note,如果您还不知道,我的工具链可以用于构建马林: http://daid.mine.nu/~daid/marlin_build/) |
|
我又花了一些时间来调试和修复“ultralcd”(LCD/Menu)代码中的一些严重问题。 我发现在打印过程中调整流速对我来说不太合适。“hardwarekiller”还向我展示了他的LCD上显示的z-steps_per_mm完全错误。 主要的问题是“encoderpos”只使用了一个“int”(16位),但数字可能会变得比这更大。所以我把它改为使用“long”作为数据类型,并修复了所有问题。 我还在“show_mainmenu”函数中添加了一个小显示(2行)的修复程序,以使其正确滚动。 我是否需要做/准备其他事情才能让拉取请求被接受? 迈克 |
|
变化看起来不错!“encoderpos”bug也一直困扰着我,但我从来没有抽出时间去找原因。“每E单位的步数”对于Ultimaker也有同样的bug,它需要大约865步。 您的分支目前比’主线’落后2个提交,这可能会使合并拉取请求变得更困难(但我不确定) |
|
daid:“您的分支目前比’mainline’落后2个提交,这可能会使合并拉取请求变得更困难(但我不确定)” 我刚刚与上游合并(没有任何冲突)。因此,现在应该很容易评估/应用这些更改。 迈克 |
|
嗨马克, 我想在Eclipse上使用马林,但是我有很多bug。 求求你!Thnx |
|
Arduino IDE是下载的首选方法(检查Readme.md文件)。 |


.jpg)
我花了很多时间让我的JTAG调试器与Arduino和马林一起工作,以便为我计划的多挤出机更改提供一个真实的的开发环境。为了能够使用JTAG,需要将项目移植到AVRStudio,以便在那里编译/上传/调试(我尝试了Eclipse,但没有成功,因为avrice和我的JTAG ICE MKII并不真正喜欢对方)。
这个拉取请求包括一些更正(错别字),错误修复和稳定(看看个别提交评论)我回移植,我认为这是有用的应用到马林。
迈克