发 帖  
原厂入驻New
[问答] 怎么从PIC32MX移植到PIC32MZ?
134 PIC32 控制器
分享
嗨,偷看。我在这里贴了一会儿关于改变我的UP解决方案从PIC32MX到MZ以帮助解决一些图形问题(直接从MX运行QVGA屏幕,不使用控制器)。线程被锁定了,所以我张贴在PIC32MZ1024EFE100中。我们用PIC32MX695F512代替PIC32MX695F512EFE100进行设计。我还没有使用和声,也不想和MZ一起玩。在编译器发行说明中,它说v1.34确实支持MZ系列,所以希望我能够只使用当前所有用于uart、内部ADC、bitbasedI2C的驱动程序代码?本周,我将用目标设备作为新的MZ来编译项目,以检查它是否编译,并希望在获得硬件之前修复任何问题,因为我们至少几个星期内不会看到新的PCB。呃?我知道的一个广泛的问题,只是想知道是否有任何直接的告白者,谢谢,亚历克斯。
0
2019-11-1 13:01:39   评论 分享淘帖 邀请回答

相关问题

19个回答
嗨,我还没有使用PIC32 MZ,所以没有实际的经验。为什么你仍然使用XC32 V1.34?PIC32设备的当前编译器版本是v1.42。查看版本1.34的编译器安装目录,在处理器include文件中没有用于PIC32MZ1024EFE100设备的设备支持文件,因此我认为1.34不适用于MZ EFE100。mxincludeprocp32mz1024efe100.hthere与版本v1.40和v1.42中的相应文件是一堆差异。
2019-11-1 13:07:28 评论

举报

您可以将1.42部分支持补丁添加到1.34,但是如果您想使用FPU,则需要1.42个补丁。我建议直接转到1.42(如果使用FP,下一个版本据说有很多FP库修复)。注意,MZ....EF上的ADC与MX上的ADC非常不同。UART是相同的(我想),并且比特I2C是你想要的任何东西…
2019-11-1 13:19:29 评论

举报

谢谢FICOSO,我的PLIB调用/使用它的定义等。对于V1.42,他们还行吗?还是我需要重新使用这些基于和声的?体面的浮点支持会很有用。明天我将升级到最新的MX代码编译器,看看我该怎么做。然后我将目标设备更改为MZ部分,希望有一个平稳的转换。
2019-11-1 13:38:52 评论

举报

PLIB不支持MZ。你需要写所有的电话。你可能想做一个骨架和谐项目并把你的代码放进去。
2019-11-1 13:53:29 评论

举报

嗨,PIC32MX和PIC32MZ之间的许多外围设备非常相似。对于这些外围设备,我建议您远离Harmony,而是将代码移植到PIC32MZ。在Plib中使用函数或宏的地方,您可以查看函数实际做什么,以及b使用结构名,或者使用在设备支持文件中定义的寄存器和字段名,将所需的源代码循环到您自己的目录中,或者替换为直接寄存器访问:<xc.h>和v1.42pic32mxincludeproc\p32mz1024;1024efe100.h您可以对您进行这些修改中的大部分r现有PIC32MX平台。不要直接在程序中包含设备特定文件,如前所述,使用<xc.h>但是与设备数据表一起研究设备支持文件,有助于理解可以使用哪些合成符号名称。设备文件与数据表紧密对应。Harmony中有一个硬件访问功能的外围层。它们不是您可能已经使用的Plib函数的兼容替换。Harmony外围层定义它们自己的硬件抽象,这完全不同。从你认识到的任何东西,不符合数据表。和睦外围层本身没有带来好处。只有在用作和谐驱动程序和系统服务功能的基础时才有用。PIC32MX和PIC32MZ设备之间的振荡器设置不同,中断处理也不同。在MZ中,闪存中没有中断向量阵列。相反,中断控制器具有ISR。寄存器中的地址,因此避免一层闪存访问。每个中断请求位都有一个独立的ISR向量寄存器。这个寄存器用于从PIC32MZ设备文件中删除中断请求符号名称表。只有一个中断向量定义列表,_UART1_RX_VECTOR、_UART1_TX_VECTOR和_UART1_FAULT_VECTOR符号,如_UART1_TX_IRQ、_UART1_RX_IRQ、_UART1_ERR_IRQ和_UART_1_VECTOR没有为MZ设备定义。您最终可以定义自己的翻译,而不是将所有源改变为不同的MX和MZ。upt源是不同的,IFS1、IEC1、IFSx和IECx编号不匹配。您需要处理这些差异,或者您可能执行如下操作:用内联和优化编译这些函数,编译器应该优化大部分代码,因为参数主要是一个定义的常数从设备文件。问候,Mysil
2019-11-1 14:09:34 评论

举报

谢谢你的所有信息。在移植到MZ之前,我今天开始消除对PIC32MX项目plib的依赖,所以希望大多数寄存器调用能够顺利地迁移。但是不确定如何编写中断处理程序,仅仅删除\include<plib.h&gt会影响DMA处理程序,即:Errors are:./Source/GraphicsDriver.c:245:12:error:expecd声明说明符或“...”在数值常数之前。/Source/GraphicsDriver.c:245:26:error:expecd声明说明符或“...”在“ipl7SRS”之前。在“DmaHandler1”之前的预期声明指定符。/Source/GraphicsDriver.c:297:1:error:.'{'在inputAnyway末尾,仅使用include<xc.h>谢谢!
2019-11-1 14:27:44 评论

举报

我们还将MX代码移植到MZ(NoHarmony)、ISR翻译isvoid_.(_.(_DMA1_VECTOR)、中断(IPL4SRS)、优化("-fno-.-wrap")、nomicromips))DmaHandler1(void)
2019-11-1 14:35:36 评论

举报

很好,非常感谢。现在我在RTC库中玩得很开心:DI会不断更新我的进度,因为它可能对人们有用。
2019-11-1 14:46:05 评论

举报

我的代码的功能有些问题……仍然使用XC32v1.34,但是已经删除了所有plib依赖项,并且正在编译。现在,我陷入了调试器报告的某个地方:在当前的PC0xbfc00000上没有找到源代码行。直截了当?不记得如何检查状态RG说哪个向量是错误的…
2019-11-1 14:52:59 评论

举报

嗨,地址0xbfc000是启动闪存的起始地址。这是一个重置地址,CPU在重置后启动,当您在调试器中启动程序时,或者打开电源时,它是C运行时启动代码的开始,它通常从一个对象库存档文件中加载,没有访问源代码,因此没有找到源代码行……应该在启动调试器或尝试运行之后得到这个吗?如果你在运行之后到达那里,就会有一个崩溃导致重置。检查RCON寄存器,它主要有状态位。然后在程序中安装源代码的异常处理程序,这样你就可以设置断点,并在处理器复位之前停止,并且信息丢失。在编译器安装目录中有缺省处理程序的源代码,如:C//Microchip/XC32/V1.42/PIC32 LIBS/LIBPIC32/DeFultType/Debug中断。cc:/Script文件(X86)/Microchip /XC32/V1.42/PIC32 LIBS/LIBPIC32/启动/…C//程序文件(X86)/Microchip/XC32/V1.42/Pic32 LIBS/LIBPIC32/存根/…C运行时启动的源代码是:C:/程序文件(X86)/Microchip /XC32/V1.42/PIC32 LIBS/LIBPIC32/Studio/CRT0. S,它是一个汇编源代码。
2019-11-1 14:59:46 评论

举报

谢谢,Mysil,是的,我一直在使用EPC寄存器来查看我的代码中哪里出现故障。概括地说,为了消除PLIB依赖性,我已经把我的ISR例程更改为不使用_u ISR宏并使用标准原型:有没有一种简单的方法来复制SYSTEMConfig.(80000000);陆上通信线?我把它分解为:.CheckCheKseg0CacheOn基本上是这个函数的本地副本:但是在某些地方,我仍然会出错。我还使用这个定义来代替库调用:
2019-11-1 15:10:54 评论

举报

1。你不需要改变使用μiSr()宏。只包括“sys /ATTRBS.H”,在这里定义它(我现在不知道为什么“XC.H”在默认情况下不包括这一点)。2。你正在使用SRS寄存器,但是你在设置PISS吗?默认值为0,这意味着在多向量模式下,所有中断共享相同的影子寄存器集(SS0),而在单向量模式下,中断不呈现影子寄存器集。我使用0x765633.3。您不需要启用缓存。默认启动代码为您执行此操作。4。您需要设置PRECON以启用预取,并为您的机器设置正确的Flash等待状态。等待状态的值在数据表中的表33-13中。
2019-11-1 15:29:26 评论

举报

嗨,我看不出你的问题有何原因。既然你已经移除了对Plib函数和宏的依赖,你可以进入“Project Properties”,选择Linker分支,然后从“Link.pheralLibrary”_ISR(.,ipl)宏中移除Tick,这个宏不是真正的Plib依赖,而是s编译器提供的头文件提供的宏:.../xc32/v1.xx/pic32-libs/include/sys/attribs.hand可以包括:include<sys/attribs.h&gt,但是用_u.((...))替换它应该同样好。ion:您做了什么来替换:INTEnableSystemMultiVectoredInt();C运行时启动代码执行了一些必要的设置,但我认为您仍然需要在INTCON寄存器中设置MVEC位,确保您有位置:请参阅附件中的系统设置.SYS_Setup.c和func的替换文件其中的tions旨在同时在PIC32MX和MZ上工作,但是还没有在PIC32MZ上进行真正的测试。编译器中有_u builtin...();可用的函数,可以用来代替INTEnableInter.s(void)和一些类似的函数。参见XC32编译器用户指南。_CP0_GET_COUNT()是一个ma。编译器安装系统中定义的cro包括file:.../xc32/v1.xx/pic32-libs/pic32-libs/include/cp0defs.hinclude<cp0defs.h>并且应该是O.k。
SYS_Tools_h.txt(3.96KB)-下载105次INT_Tools.c(2.92KB)-下载93次INT_Tools_h.txt(8.43KB)-下载96次
2019-11-1 15:45:48 评论

举报

现在我已经运行了,我的代码是XC32 V1.34,没有PLIB依赖。问题是SRS而不是AUTO,所以我认为SIMONG是正确的,因为我没有正确地设置影子寄存器集。我使用:这似乎很好。下一步是让最新的编译器工作正常,然后把我的uP改为MZ部分,看看在板子进入之前它是如何编译的。我们的帮助!
2019-11-1 15:55:27 评论

举报

嗨,伙计们,我回来了——我有一个30%号板运行。在振荡器配置上玩得很开心,并且正在用用于POSC和SOSSC的MEMs振荡器做另一个PCB旋转,阅读关于I2C的差错,我不需要从MX版本修改太多代码,但是我已经将总线速度降低到100kHz(希望!)克服勘误表。尽管在调用这个命令之前,我还是遇到了公交车碰撞,但还是挺直了盒子:我在打开I2C模块之前,在MX上做了一个手动设置SCL线高的工作。这仍然适用于MZ吗?我有点希望我不必写我所有的I2C,有点轰轰烈烈的实现!
2019-11-1 16:12:17 评论

举报

为什么不呢?自从最初的带有I2C错误的MX以来,我没有在任何PIC32上使用过I2C硬件。它比硬件简单而且灵活得多。
2019-11-1 16:29:47 评论

举报

仔细查看CPU勘误表。一些I2C外围设备在MZ工作,有些没有。我们使用I2C 3,发现它不起作用,所以我们不得不咬它。也检查CPU时钟。我们不得不切换到使用振荡器,因为CPU中的晶体振荡器电路不工作。还有一些技巧需要使用缓存来使MZ正常工作。我记不清细节了。这里有一个关于“手提篮里的和谐地狱”的引述。如果没有人记得,我可以把它挖出来。
2019-11-1 17:00:22 评论

举报

对于它的价值,这里是我们在项目中使用的CPU初始化
2019-11-1 17:17:39 评论

举报

只有小组成员才能发言,加入小组>>

65个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表