杰发科技AC7801——读取Flash数据做CRC校验

查看Keil的编译结果发现总共6160个字节。计算结果如下,

代码如下

#include "ac780x_crc.h"
#include "ac780x.h"
#include "ac780x_debugout.h"
#include "string.h"
#include "ac780x_eflash.h"

#define TestSize 1024 ///< 4K
#define TestAddressStart 0x08000000
uint8_t Data[9000]; // 共6140 Bytes

uint32_t tmpResult = 0;                   /* CRC计算结果 */
uint32_t tmpCRCType = CRC_PROTOCOL_32BIT; /* CRC 支持16位和32位长度多项式 */
/**
 * @prototype main(void)
 *
 * @param[in] void
 * @return	 void
 *
 * @brief  	 main entry.
 *			 main函数.
 */

int main(void)
{
    CRC_ConfigType CRCConfig;
    memset(&CRCConfig, 0, sizeof(CRCConfig));

    CRCConfig.crcProtocolType = (CRC_ProtocolType)tmpCRCType;

    uint32_t CRCSeed = 0;

    InitDebug(); // Initialize debug UART 1

    // printf("AC7801: CRC_Demo\r\n");

    // if (tmpCRCType > 1)
    // {
    //     printf("tmpCRCType: 0: CRC-CCITT; 1: CRC-32! \r\n");
    //     return -1;
    // }

    EFLASH_UnlockCtrl();
    EFLASH_Read(TestAddressStart, (uint32_t *)Data, TestSize);
    EFLASH_Read(TestAddressStart + TestSize, (uint32_t *)Data + 256, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 2, (uint32_t *)Data + 256 * 2, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 3, (uint32_t *)Data + 256 * 3, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 4, (uint32_t *)Data + 256 * 4, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 5, (uint32_t *)Data + 256 * 5, TestSize);
    EFLASH_Read(TestAddressStart + TestSize * 6, (uint32_t *)Data + 256 * 6, 20);

    EFLASH_LockCtrl();

    printf("0x8000000  ");
    unsigned i = 0;
    while (i < 6160)
    {
        printf("%02x", Data[i]);
        i++;
        if (i % 16 == 0)
        {
            printf("\r\n0x%7x  ", 0x8000000 + i);
        }
    }

    printf("\r\n");
    // CRCDataLength = strlen((char *)CRCMsg); // Length of data

    if (tmpCRCType == CRC_PROTOCOL_32BIT) // CRC32 configuration
    {
        CRCConfig.poly = 0x4C11DB7; // CRC-32 Poly: 0x4C11DB7
        CRCSeed = 0xFFFFFFFF;       // CRC-CCITT seed: 0xFFFFFFFF
        CRCConfig.finalXOR = ENABLE;
        CRCConfig.readTransposeType = CRC_READ_TRANSPOSE_BITS_BYTES;
        CRCConfig.writeBytesNumOnce = CRC_WRITE_1_BYTE_ONCE;
        CRCConfig.writeTransposeType = CRC_WRITE_TRANSPOSE_BITS;
    }
    // else // CRC16 configuration
    // {
    //     CRCConfig.poly = 0x1021;     // CRC-CCITT Poly: 0x1021
    //     CRCSeed = 0xFFFF;            // CRC-CCITT seed: 0xFFFF
    //     CRCConfig.finalXOR = ENABLE; // disable final xor
    //     CRCConfig.readTransposeType = CRC_READ_TRANSPOSE_NONE;
    //     CRCConfig.writeTransposeType = CRC_WRITE_TRANSPOSE_BITS_BYTES;
    // }

    CRC_Init(&CRCConfig);

    // if (CRCConfig.crcProtocolType == CRC_PROTOCOL_16BIT)
    // {
    //     tmpResult = CRC_Check(CRCSeed, &CRCMsg[0], CRCDataLength);
    //     printf("CRC-CCITT, Poly:0x%X\r\n", CRCConfig.poly);
    // }
    // else
    {
        tmpResult = CRC_Check(CRCSeed, &Data[0], 6156);
        printf("CRC-32, Poly:0x%X\r\n", CRCConfig.poly);
    }
    printf("CRC result is: 0x%X\r\n", tmpResult);

    while (1)
        ;
}

发现去掉Flash内容后四位的值都是正确的,加上后四位值就不对了,这个据说是Flash的CRC值,但是跟计算出来的去掉4位的值不同。后续有空再慢慢研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

静态网络配置

一、查看网络命令 1.命令行查看网络配置 1、查看ip\硬件设备-网卡 ifconfig -a ifconfig ens160 网卡名称 ip addr show ip addr show ens160 nmcli device show ens160 nmcli con up ens160 2、主机名称 hostname hostname hfj.huaxia.com 3、查看路由和网关 rou…

leetcode 3081

leetcode 3081 题目 例子 思路 使用minheap 记录字符出现频次 代码 class Solution { public:string minimizeStringValue(string s) {int freq[26]{};for(char c: s){if(c ! ?){freq[c-a];}}//std::greater<> 比较器比较 pair 对象时&#xff0c;默认比较规则是先比…

Python数学建模-2.8SymPy库

SymPy库是一个强大的符号计算库&#xff0c;它为Python提供了符号数学计算的能力&#xff0c;它提供了大量的数学符号操作的函数和类&#xff0c;可以帮助用户进行各种复杂的数学计算&#xff0c;如代数、微积分、离散数学、量子力学等。与NumPy等库主要关注数值计算不同&#…

GAMES101 学习3

Lecture 13 ~ 16 Shadow mapping 一种图像空间算法生成阴影时不需要知道场景中的几何信息会产生走样现象 最重要的思想&#xff1a;如果有的点不在阴影里你又能看到这个点&#xff0c;那么说明摄像机可以看到这个点&#xff0c;光源也可以看到这个点 经典的Shadow mapping …

【管理咨询宝藏54】资产管理公司战略规划报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏54】资产管理公司战略规划报告 【格式】PPT&#xff0c;可自由编辑 【关键词】战略规划、商业分析、管理咨询 【核心观点】 - 随着本地和国外资…

最新Java面试题3【2024初级】

下载链接&#xff1a;博主已将以上这些面试题整理成了一个面试手册&#xff0c;是PDF版的 互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字…

计算机毕业设计-基于python的旅游信息爬取以及数据分析

概要 随着计算机网络技术的发展&#xff0c;近年来&#xff0c;新的编程语言层出不穷&#xff0c;python语言就是近些年来最为火爆的一门语言&#xff0c;python语言&#xff0c;相对于其他高级语言而言&#xff0c;python有着更加便捷实用的模块以及库&#xff0c;具有语法简单…

diffusion model(十四): prompt-to-prompt 深度剖析

infopaperPrompt-to-Prompt Image Editing with Cross Attention Controlgithubhttps://github.com/google/prompt-to-promptOrg:Google Research个人复现https://github.com/myhz0606/diffusion_learning个人博客主页http://myhz0606.com/article/p2p 1 前言 基于扩散模型&a…

LightGBM:更好更快地用于工业实践集成学习算法

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

教务管理系统(java+mysql+jdbc+Druid+三层架构)

1、项目要求 1.1数据库表描述 设计一个教务管理系统&#xff0c;要求如下&#xff1a; 系统涉及的表有 account表&#xff08;账号表&#xff09; teacher表&#xff08;教师表&#xff09; student表&#xff08;学生表&#xff09; course表 (课程表) score表&#xff08;成…

2022年安徽省职业院校技能大赛 (高职组)“云计算”赛项样卷

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 第一场次&#xff1a;私有云(5…

Redis高阶使用消息队列分布式锁排行榜等

一、前言 在大多数传统的web系统中&#xff0c;使用Redis一般都是作为缓存使用&#xff0c;在大数据查询时作为缓解性能的一种解决方案。博主的的系统中使用Redis也主要使用到缓存的作用&#xff0c;还有做了注册中心&#xff0c;分布式事务。其他的强大的功能&#xff0c;没有…

【HMM】Hidden Markov Model

文章目录 1 HMM 的概念1.1 引入1.1.1 Markov property1.1.2 Markov chain1.1.3 一阶离散马尔可夫模型 1.2 HMM 的定义1.3 观测序列的生成过程1.4 HMM 的 3 个基本问题 2 三个基本问题的解法2.1 概率计算算法2.1.1 直接计算法2.1.2 向前算法2.1.3 向后算法2.1.4 一些概率与期望值…

localhost与127.0.0.1的区别 竟然还有人不知道?

localhost和127.0.0.1有什么区别&#xff1f;   很多用户都有接触过回送地址127.0.0.1用来测试一些数据&#xff0c;localhost在严格意义上来说是一个本地的服务器&#xff0c;编程用户或许更了解localhost的存在意义。   大多数使用localhost的编程工作者&#xff0c;实际…

java.lang.NoSuchFieldError: ASSIGN_ID

一、写在前面 很多时候我们都会遇到这个异常&#xff0c;我的场景是与mybatis有关&#xff0c;若看客不是此类情形&#xff0c;仅做参考即可。 二、异常提示 Caused by: java.lang.NoSuchFieldError: ASSIGN_IDat com.baomidou.mybatisplus.core.config.GlobalConfig$DbConf…

基于cifar-10的图像分类

一、 背景 CIFAR-10 数据集由 10 类中的 60000 张 32x32 彩色图像组成&#xff0c;每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。数据集分为五个训练批次和一个测试批次&#xff0c;每个批次有 10000 张图像。测试批次包含来自每个类的 1000 个随机选择的图像。…

国创证券|新手建议不要买哪些股票?新手股票避雷!

出资者在进行股票生意之前&#xff0c;对股票的选择也是一种很重要的环节&#xff0c;特别是对于新手出资者来说&#xff0c;很简单踩雷。那么新手主张不要买哪些股票&#xff1f;下面就由国创证券为我们分析&#xff1a; 新手主张不要买哪些股票&#xff1f; 1、业绩差的股票…

[LeetCode][LCR170]交易逆序对的总数

题目 LCR 170. 交易逆序对的总数 在股票交易中&#xff0c;如果前一天的股价高于后一天的股价&#xff0c;则可以认为存在一个「交易逆序对」。请设计一个程序&#xff0c;输入一段时间内的股票交易记录 record&#xff0c;返回其中存在的「交易逆序对」总数。 示例 1&#xf…

ABAQUS应用05——将开发好的Python封装起来供后续开发调用

闲话不多说&#xff0c;把写好的py文档放置在这里调用即可。 放置进来以后&#xff0c;会自动形成同名的pyc文件。有意思的是&#xff0c;此时将py文件和pyc文件删掉都不会影响建模&#xff0c;但是关掉ABAQUS再打开就会找不到。不过我想如果保留pyc文件的话应该不成问题。当…

AI - 机器学习GBDT算法

目录 GBDT 提升树 梯度提升树 GBDT算法实战案例 XGBoost &#x1f606;&#x1f606;&#x1f606;感谢大家的观看&#x1f606;&#x1f606; GBDT 梯度提升决策树&#xff08;Gradient Boosting Decision Tree&#xff09;&#xff0c;是一种集成学习的算法&…