完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我使用的是p32 MZ1024ECG100MPLAB X3.35xC32 1.42ICD3I,试图在Flash存储器中创建自定义部分,但由于某种原因,我失败了。我已经为这个MCU复制了XC32文件夹的默认链接器脚本,将它添加到项目中,并对它做了一些小的改动:创建了一个“KSG00A PrimaTym MEM”内存区域:…创建了我的PrimeType部分:…在我的C代码中,我给项目添加了一个变量:项目编译成功。我可以在.map文件中看到,我的变量确实映射到KSeG00B PrimaTym MEM区域。由于某些原因,在开始断点后立即停止固件崩溃/停止,尽管没有指定断点。ICD3屏幕转储:如果从C代码中删除变量,则所有的都运行Fink。我最终想达到的目的是在闪存中创建一个区段,我可以用一个程序校验和重写,使用HexMID注入,这样我就可以在启动时验证代码。如果有人能引导我找到正确的解决方案,这将是非常合适的。RDS
|
|
相关推荐
6个回答
|
|
嗨,虽然其他人,希望能够指导您在链接器脚本中定义._mem区域的原始方法,……我认为在不需要修改链接器脚本的情况下实现您想要的是可能的。通过使用编译器的属性,可以定义v。在不改变链接器脚本的情况下,在闪存中使用ARILE或数组。如果将Flash数据初始化为所有1位:0xFF…有可能不用先擦除整页就可以写入闪存位置。因为PIC32MZ有ECC用于闪存,所以我认为最小的闪存更新可能是128位。16字节或4个整数字,每个闪存更新必须在16字节的边界上对齐。如果必须擦除闪存数据,我认为每个闪存擦除页在MZ上是16kByte。
|
|
|
|
在MPLAB X中进入项目属性并导航到链接器选项(“XC32 LD”)。在“诊断”类别下,链接器生成一个MAP文件并选择“显示内存使用”选项。使用这些来查看链接器是否正在将您不想要的任何内容放入您的私有部分。伊维特段。这可能不是你想要的。参见http://ft.gun.org/Pub/旧GNU/手册/LD-2.91/HTMLYNOND/LDY16.HTML*SEC16。
|
|
|
|
不过要小心。编译器可以优化闪存读取,并直接使用初始化的值,这样即使您在实际的闪存中更改它们,它们也不会改变。
|
|
|
|
嗨,maxruben可能是对的,优化器可能误解并优化掉必需的代码。我在包含访问数组的多个函数的代码中只对大数组使用这些声明,并且在该上下文中没有检测到问题。不应该需要声明中的onst指定符,并且可以尝试省略它。甚至可以使用易失性指定符,易失性指定符是对编译器的警告,该声明可以通过编译器不知道的方式更改,从而优化r不应该对值进行假设。现在尝试了使用以下声明的测试程序,并且正确读取了之前存储在Flash程序内存中的数据:在这个程序中,闪存数组没有在声明中初始化。效果是编译器将我将程序十六进制文件清除为零,除非程序员读取存储在闪存中的先前数据并替换编译器生成的数据。如果没有以前的数据,或者MPLAB中没有指定“保存程序内存”,则闪存页在写入之前必须由固件擦除。Mysil,Tin数据
|
|
|
|
嗨,Mysil,没有易失性限定符的小矩阵(4个值)值在“if”比较中得到优化,即使没有在编译器中指定优化级别。这就是为什么我在代码中使用易失性的原因。我能看到使用代码的唯一方法是在下面的场景中:1。用0xFFFFFFF为CRC准备闪存部分,将固件上传到MCU2上。在第一次运行时,计算闪存(CRC当然没有CRC段)的CRC,并将其存储到准备好的CRC段。每隔一个电源周期计算闪存的CRC,并与存储的CRC比较,它可能工作得很好,但不是我真正想要的。我想在MCU闪烁的瞬间将CRC值嵌入到代码中。如果我误解了你的做法,请指正。
|
|
|
|
同意,易失性限定符在此上下文中是正确的规范。const限定符不应该需要,并且我认为应该被删除,就像maxruben建议的那样。const限定符传统上被微芯片编译器使用,作为在Fla中放置具有初始化数据的大型数据结构的提示嘘记忆。有了属性中的space(prog)和address(...)规范,常量限定符就变得多余了。您没有在原始消息中精确地描述您的需求。我认为您现在可以理解选择使用哪种方法了。
|
|
|
|
只有小组成员才能发言,加入小组>>
4778 浏览 9 评论
1814 浏览 8 评论
1733 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
2941 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2043 浏览 5 评论
419浏览 1评论
1100浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
343浏览 0评论
253浏览 0评论
LAN9252使用SQI通信,进行数字复位后读BYTE_TEST异常
1751浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 23:16 , Processed in 1.095593 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号