littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于AVR微控制器的Flash内存CRC扫描与操作项目

项目简介

本项目聚焦AVR微控制器,通过CRCSCAN外设对Flash内存开展Cyclic Redundancy Check(CRC)操作,利用Nonvolatile Memory Controller(NVMCTRL)外设实现Flash内存的读写操作。旨在确保Flash内存代码完整,检测潜在故障,支持用户在运行时与Flash内存交互。

项目的主要特性和功能

  1. CRC扫描:CRCSCAN外设能周期性对整个Flash内存进行CRC计算,并与预计算值对比,结果显示在终端窗口。
  2. 内存分区管理:Flash内存分为Boot Code、Application Code和Application Data三个部分,应用程序加载到指定的APPCODE区域。
  3. 实时读写操作:借助NVMCTRL外设,可在运行时对Flash内存进行读写。
  4. 用户交互:按下开关,可向Flash内存的APPDATA区域写入数据,使后续CRC扫描失败并点亮LED灯;再次按下开关可恢复数据,让CRC扫描恢复正常。

安装使用步骤

硬件准备

把AVR128DA48 Curiosity Nano评估板通过标准微型B USB电缆连接到主机(PC)。

软件安装

确保安装以下软件,且版本需相同或更新: - Atmel Studio 7.0.2397 - AVR/GNU C编译器 - Atmel START - AVR - Dx DFP 1.3.67 - Standalone Data Visualizer v2.20.674

项目配置与编程

  1. 打开Atmel Studio,选“File -> Open Project”打开CRCSCAN on Flash Memory项目。
  2. 在项目的“post - build command section”添加相应命令,预计算CRC校验和并存储在Flash内存末尾:
    • 16位CRC:srec_cat "$(OutputDirectory)\$(OutputFileName).hex" -intel -fill 0xFF 0 0x1FFFE -crop 0 0x01FFFE -CRC16_Big_Endian 0x1FFFE -broken -o "$(OutputFileName)_crc.hex" -intel -line - length = 44
    • 32位CRC:srec_cat "$(OutputDirectory)\$(OutputFileName).hex" -intel -fill 0xFF 0 0x1FFFC -crop 0 0x01FFFC -CRC32_Little_Endian 0x1FFFC -ccitt -o "$(OutputFileName)_crc.hex" -intel -line - length = 44
  3. 在“Project -> Properties -> Toolchain -> AVR/GNU Linker -> Memory Settings -> Flash segment”添加命令.text = 0x200,将应用程序加载到APPCODE区域。
  4. 点击构建图标构建解决方案,确保无构建错误。
  5. 进入Fuses选项卡,配置相关寄存器:
    • 16位CRC:将SYSCFG0寄存器中的CRCSEL位设为Enable CRC16CRCSRC位设为CRC OF FULL FLASHBOOTSIZE寄存器设为0x02CODESIZE寄存器设为0XFE,然后点击Program
    • 32位CRC:将SYSCFG0寄存器中的CRCSEL位设为Enable CRC32
  6. 选“Tools -> Device Programming”,选工具并点击Apply
  7. 进入“Production file”选项卡,浏览项目文件夹中的_crc.hex文件,勾选FlashFuses选项,点击Save,保存为.elf格式文件。
  8. 再次进入“Production file”选项卡,浏览保存的.elf文件,勾选FlashFuses选项,点击Program

运行演示

  1. 打开Standalone Data Visualizer,选AVR DA Curiosity Nano板连接的虚拟COM端口,点击Connect
  2. 编程完成后,终端窗口开始显示消息。
  3. 8秒后CRCSCAN开始,状态显示在终端窗口。
  4. 按下开关(SW0),改变Flash内存中指定位置的数据,观察CRC扫描结果和LED灯状态变化。

注意:编程_crc.hex文件前,需清理项目。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】