完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用STM9S003F3做IAP升级, 用IAR编译器,ST提供的库函数,稍加改写,以块编程的方式(64Byte),去写FLASH, 现在是流程可以跑通,但是在写APP程序到APP地址区时,发现有字节没有写成功,请帮忙分析,谢谢。
下面贴上我的块写程序: IN_RAM(void userFLASH_ProgramBlock(uint16_t BlockAddr, uint8_t *Buffer)) { uint16_t Count; /* Point to the first block address */ /* Standard programming mode */ /*No need in standard mode */ FLASH->CR2 |= FLASH_CR2_PRG; FLASH->NCR2 = (uint8_t)(~FLASH_NCR2_NPRG); /* Copy data bytes from RAM to FLASH memory */ for(Count = 0; Count < FLASH_BLOCK_SIZE; Count++) { *((PointerAttr uint8_t *) (MemoryAddressCast)BlockAddr + Count) = ((uint8_t)(Buffer[Count])); } } |
|
相关推荐
1个回答
|
|
在分析这个问题之前,我们需要了解一些关于STM9S003F3和IAP(In-Application Programming)升级的基本信息。STM9S003F3是一款8位微控制器,具有内置的Flash存储器,可以进行IAP升级。IAP升级是一种在应用程序运行期间更新Flash存储器的技术,这使得设备可以在不重新启动的情况下进行固件更新。
根据您提供的代码片段,您正在尝试使用块编程方式(64字节)将APP程序写入APP地址区。您提到在写入过程中,有些字节没有成功写入。为了分析这个问题,我们需要考虑以下几个可能的原因: 1. 地址对齐问题:确保BlockAddr和Buffer指针都是64字节对齐的。如果地址没有正确对齐,可能会导致写入失败。 2. 写入时序问题:在写入Flash时,需要遵循特定的时序要求。请检查您的代码是否遵循了STM9S003F3的数据手册中关于Flash编程时序的要求。 3. 中断影响:在写入Flash期间,如果有中断发生,可能会影响写入过程。确保在写入过程中禁用所有非关键中断,以避免干扰。 4. 电源电压问题:Flash编程需要足够的电源电压。请检查您的电源电压是否稳定且在规定的范围内。 5. 写入保护:检查您的设备是否启用了某些写入保护功能,这可能会阻止Flash写入。 6. 代码错误:仔细检查您的代码,确保没有逻辑错误或遗漏。例如,确保您正确地设置了FLASH_CR2寄存器,以及其他与Flash编程相关的寄存器。 7. 硬件问题:如果以上所有可能性都排除了,那么可能是硬件问题。您可以尝试使用另一块STM9S003F3芯片进行测试,以确定问题是否与硬件有关。 为了更准确地诊断问题,您可以尝试以下步骤: 1. 使用ST提供的库函数进行单字节编程,而不是块编程。这可以帮助您确定问题是否与块编程有关。 2. 在写入每个字节后,立即读取并验证该字节是否已正确写入。这可以帮助您确定写入失败的具体位置。 3. 使用调试器或逻辑分析仪检查与Flash编程相关的寄存器和信号,以获取更多关于写入过程的信息。 4. 如果可能,尝试在不同的STM9S003F3芯片上重复实验,以排除硬件问题。 5. 查阅STM9S003F3的数据手册和IAR编译器文档,以确保您正确地使用了所有相关功能和选项。 希望这些建议能帮助您找到问题的根源并解决它。祝您好运! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 23:55 , Processed in 0.607466 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号