Contact me: hankecnc@gmail.com

马林v1 -漏洞修复/纠正 #159

推推 grbl 3年前 (2023-01-25) 276次浏览
新问题

马林v1 -漏洞修复/纠正 #159

 合并
 合并11个提交到  从  on May 17, 2012

对话

马林v1 -漏洞修复/纠正 #159
贡献者

我花了很多时间让我的JTAG调试器与Arduino和马林一起工作,以便为我计划的多挤出机更改提供一个真实的的开发环境。为了能够使用JTAG,需要将项目移植到AVRStudio,以便在那里编译/上传/调试(我尝试了Eclipse,但没有成功,因为avrice和我的JTAG ICE MKII并不真正喜欢对方)。

这个拉取请求包括一些更正(错别字),错误修复和稳定(看看个别提交评论)我回移植,我认为这是有用的应用到马林。

迈克

马林v1 -漏洞修复/纠正 #159
贡献者

干得好!
我为基于构造函数的lcd初始化承担责任,我没有意识到这是一个问题。

两个问题:

  • 你对这些变化的效果做了多少测试?是否需要进一步测试?如果是,应检测哪些内容?
  • 您是否测试过PROGMEM更改是否确实有效?例如,通过查看内存使用情况?
马林v1 -漏洞修复/纠正 #159
贡献者作者
  • 大多数变更为更正(排印错误)/删除过时/错误代码,不会产生任何影响
  • 只有将DISPLAY_INIT移出构造函数才是真实的的变化,我使用一个大显示器和一个小显示器+旋转编码器在Arduino 1280 +RAMPS1.3/1.4上进行了测试。
  • 我再次使用当前的Arduino1.0工作室编译和上传所有测试,结果与预期相同。
  • 我做了一个比较的结果两个AVR-Studio十六进制文件(有和没有PROGMEM调整),他们是二进制identcal。然后,我对Arduino1.0 Studio做了同样的操作–使用和不使用PROGMEM调整进行编译,并再次获得相同的二进制十六进制文件。
马林v1 -漏洞修复/纠正 #159
贡献者

PROGMEM警告完全是错误的。这是GCC中的一个bug,在更新的GCC版本中得到了修复。

我一直在用gcc-4.6.2和avr-libc-1.8.0以及Arduino 1.0库编译ErikZalm/马林。没有任何警告。(Arduino库需要一个小的改变,这样它们就不再发出警告了)

真实的的问题是,您是否希望因为编译器中的bug而在代码中进行一些丑陋的修改,或者您是否告诉人们使用更新的编译器版本?

马林v1 -漏洞修复/纠正 #159
贡献者

此外,不支持“prog_short”。GCC从不支持在类型上设置PROGMEM属性。属性需要在变量上设置,而不是没有类型。所以你实际上在那里做的事情不被新的GCC版本支持,并且会发出警告或错误。

马林v1 -漏洞修复/纠正 #159
贡献者作者

日期:
谢谢你的澄清。我不知道这个gcc错误在新版本中得到了修复。
我恢复了PROGMEM魔术定义的提交。我会尝试升级我的AVRStudio到新的测试版,其中应包括新的gcc版本。

马林v1 -漏洞修复/纠正 #159
贡献者

轻度OT:你在arduino上使用哪个JTAG适配器?

马林v1 -漏洞修复/纠正 #159
贡献者作者

就像上面提到的“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试用,第一次就成功了。

马林v1 -漏洞修复/纠正 #159
贡献者

不客气。令人沮丧的是,有很多关于这个问题的错误信息,所以我花了相当多的研究,以找出一些真正的问题在哪里。最后,我发现一个gcc维护人员的帖子说,类型上的PROGMEM属性不受支持,也不应该使用。这解释了我注意到的大部分问题。

这是一个真实的的耻辱,Arduino 1.0来默认与这个错误的GCC的Windows。不过话说回来,默认情况下Arduino不会显示任何警告。Arduino还使用了一些具有PROGMEM属性的typedef,因此需要更新这些属性。

我仍然使用“将所有PDE文件逐个粘贴”的技巧来编译,所以您的更新单独编译PDE文件是一个非常受欢迎的变化:-)

马林v1 -漏洞修复/纠正 #159
贡献者作者

你好爸爸,

我找到了一个很好的资源来更新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-libc的早期版本包含全局构造函数初始化的错误代码。“
这将解释我在MainMenu全局构造函数初始化中遇到的所有问题。但我建议应用我的补丁,因为大多数用户仍然使用旧的(Arduino)GCC,这是受此错误的影响。

马林v1 -漏洞修复/纠正 #159
贡献者

我还注意到闪光灯的尺寸缩小了。AVR-GCC正在变得更好(这并不奇怪,因为它产生的工作,但巨大的代码在第一个版本)数据大小的减少让我感到惊讶。默认情况下,启动代码不使用任何数据区,所以我不知道优化器如何可以删除数据。除非有些东西在应该存储的时候没有正确存储在闪存中。

但是我还没有时间去测试它,也许你可以看看新的GCC是否引入了第142号问题。因为Erik无法复制它,但当我用我的工具链构建时,它发生了。

(Note,如果您还不知道,我的工具链可以用于构建马林: http://daid.mine.nu/~daid/marlin_build/

马林v1 -漏洞修复/纠正 #159
贡献者作者

我又花了一些时间来调试和修复“ultralcd”(LCD/Menu)代码中的一些严重问题。

我发现在打印过程中调整流速对我来说不太合适。“hardwarekiller”还向我展示了他的LCD上显示的z-steps_per_mm完全错误。

主要的问题是“encoderpos”只使用了一个“int”(16位),但数字可能会变得比这更大。所以我把它改为使用“long”作为数据类型,并修复了所有问题。

我还在“show_mainmenu”函数中添加了一个小显示(2行)的修复程序,以使其正确滚动。

我是否需要做/准备其他事情才能让拉取请求被接受?

迈克

马林v1 -漏洞修复/纠正 #159
贡献者

变化看起来不错!“encoderpos”bug也一直困扰着我,但我从来没有抽出时间去找原因。“每E单位的步数”对于Ultimaker也有同样的bug,它需要大约865步。

您的分支目前比’主线’落后2个提交,这可能会使合并拉取请求变得更困难(但我不确定)

马林v1 -漏洞修复/纠正 #159
贡献者作者

daid:“您的分支目前比’mainline’落后2个提交,这可能会使合并拉取请求变得更困难(但我不确定)”

我刚刚与上游合并(没有任何冲突)。因此,现在应该很容易评估/应用这些更改。

迈克

埃里克·扎尔姆 添加了一个提交 引用了 该拉取请求 on May 17, 2012

马林v1 -漏洞修复/纠正 #159 埃里克·扎尔姆 合并提交 b2a9ccd 变成 Marlin固件马林鱼_v1 on May 17, 2012
马林v1 -漏洞修复/纠正 #159

嗨马克,

我想在Eclipse上使用马林,但是我有很多bug。
我试图使用avr工作室,但我不能闪光我的arduino兆!!
请你帮帮我!!!
我在上面花了很多时间!!

求求你!Thnx

马林v1 -漏洞修复/纠正 #159
贡献者

Arduino IDE是下载的首选方法(检查Readme.md文件)。
如果您想使用其他IDE,我希望您知道自己在做什么,并能够解决问题。

格威3R特伦 推送提交 至qw3rtrun/马林 引用了 该拉取请求 on Sep 8, 2022

格威3R特伦 推送提交 至qw3rtrun/马林 引用了 该拉取请求 on Sep 8, 2022

免费注册 加入GitHub上的对话。 已经有账户? 登录以发表评论
标签
还没有
项目

还没有

发展

成功合并此拉取请求可能会解决这些问题。

还没有

5名参加者
马林v1 -漏洞修复/纠正 #159马林v1 -漏洞修复/纠正 #159马林v1 -漏洞修复/纠正 #159马林v1 -漏洞修复/纠正 #159马林v1 -漏洞修复/纠正 #159

喜欢 (0)