完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我目前正在使用来自 crosstool-ng/crosstool-ng 的最新 crosstool-ng 为最新的 gcc 编译器 (6.3.0) 和 Cygwin64 构建 esp-open-sdk。
我发现我以前记录的许多问题现在都消失了。我之前使用 64 位 Cygwin 和插件时遇到的问题现在都消失了,启用预编译头文件并包含 GDB 的 TUI 界面时出现的问题也消失了。这些不再需要在 crosstool 构建覆盖中定义出来,为了获得几乎可以工作的构建,我所要做的就是将叠加层、样本和本地补丁复制到当前的 crosstool-NG 树中。 最后,我只需要稍微调整一下 0003-xtensa-add-HW-FPU-sequences-for-DIV-SQRT-RECIP-RSQRT 补丁,工具链就构建好了,似乎可以正常工作。然后我开始构建 open-sdk 的其余部分,这是我遇到了几个障碍的地方。 首先对于任何使用 Cygwin 的人来说,他们已经对实现 Posix 文件权限的方式和 Windows 下的权限顺序进行了一些更改,这会导致一些奇怪的事情发生。结合这一点,我认为 crosstool-ng 现在在最终构建的工具链上添加了更严格的文件和目录权限,结果是在将 esptool、libcirom 和其他库安装到树中时会出现文件访问错误。我必须将 chmod u+w 命令添加到主要 Makefile 的部分,它会在其中复制或创建文件。 其次,我现在有一个关于创建基于 sysroot 的工具链的 crosstool-NG 的未解决问题 - 似乎 CT_USE_SYSROOT 的默认选项设置不正确,结果是没有创建 sysroot 目录系统。当您正在寻找或创建 libc 或 libhal 等时,这会导致 Makefile 的其他部分失败。我不得不手动将 CT_USE_SYSROOT=y 添加到覆盖中,问题自行解决。 最后,构建 esp-open-lwip 失败了,因为它使用了 -mforce-l32 并且这个补丁没有添加到我的 gcc6.3.0 构建中。我没有删除此编译器选项,而是调整了 Makefile 以查看它是否适用,而且它几乎适用,只有几行被拒绝。但是,仔细查看被拒绝的补丁,似乎 -mauto-litpools 选项现在是代码的一部分,这可能会发生冲突。 所以想知道-mforce-l32是什么状态,能不能调整一下和后面的代码共存? 这是来自 xtensa.md 的被拒绝的补丁。另一个被拒绝的是针对 xtensa.opt 的并且是微不足道的,但是这个看起来有点繁琐。所有其他补丁应用完美。 代码:全选xtensa.md.rej --- gcc/config/xtensa/xtensa.md +++ gcc/config/xtensa/xtensa.md @@ -799,8 +802,8 @@ }) (define_insn "movhi_internal" - [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A") - (match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))] + [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A") + (match_operand:HI 1 "move_operand" "M,d,r,I,Y,Z,r,*A,*r"))] "xtensa_valid_move (HImode, operands)" "@ movi.n\t%0, %x1 @@ -808,12 +811,13 @@ mov\t%0, %1 movi\t%0, %x1 %v1l16ui\t%0, %1 + ssa8l\t%B1 ; srli\t%0, %B1, 2 ; slli\t%0, %0, 2 ; %v1l32i\t%0, %0, 0 ; srl\t%0, %0 ; extui\t%0, %0, 0, 16 %v0s16i\t%1, %0 rsr\t%0, ACCLO wsr\t%1, ACCLO" - [(set_attr "type" "move,move,move,move,load,store,rsr,wsr") + [(set_attr "type" "move,move,move,move,load,load,store,rsr,wsr") (set_attr "mode" "HI") - (set_attr "length" "2,2,3,3,3,3,3,3")]) + (set_attr "length" "2,2,3,3,3,18,3,3,3")]) ;; 8-bit Integer moves xtensa.md的相关部分 代码:全选xtensa.md }) (define_insn "movhi_internal" [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A") (match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))] "xtensa_valid_move (HImode, operands)" "@ movi.n\t%0, %x1 mov.n\t%0, %1 mov\t%0, %1 movi\t%0, %x1 movi\t%0, %1 %v1l16ui\t%0, %1 %v0s16i\t%1, %0 rsr\t%0, ACCLO wsr\t%1, ACCLO" [(set_attr "type" "move,move,move,move,move,load,store,rsr,wsr") (set_attr "mode" "HI") (set_attr "length" "2,2,3,3,3,3,3,3,3")]) ;; 8-bit Integer moves |
|
相关推荐
1个回答
|
|
如果你遇到了构建 esp-open-lwip 失败的问题,可以尝试以下解决方法:
1. 确保你已经正确配置了 crosstool-ng 和 Cygwin64,并且你的系统环境变量和路径都已经设置好。 2. 确认你的 esp-open-lwip 源代码没有出现错误或者缺失文件的情况,并下载并尝试最新的版本。 3. 检查你的交叉编译器和依赖库是否都为最新版本,并使用命令 make clean 清除旧的编译结果和中间文件。 4. 确保你的编译器选项和链接选项都正确配置,比如需要手动指定 Xtensa 架构和链接器脚本文件等。 5. 尝试在构建时添加调试选项,以便定位编译错误和异常情况,并根据错误提示进行相应的调整和修复。 如果以上方法都无法解决问题,你可能需要更换其他的编译器或者寻求专业的技术支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
528浏览 6评论
438浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
425浏览 5评论
421浏览 4评论
396浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 15:21 , Processed in 0.861930 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号