跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Blogs
  3. YTM32Bx MCAL NVR Flash操作Demo

YTM32Bx MCAL NVR Flash操作Demo

已定时 已固定 已锁定 已移动 Blogs
1 帖子 1 发布者 37 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • houjun_xiaoH 离线
    houjun_xiaoH 离线
    houjun_xiao YunTu
    编写于 最后由 编辑
    #1

    YTM32Bx系列的NVR Flash区域可用于存放用户特殊用途的数据,由于其操作的特殊性,故在云途MCAL Fls模块中不支持对NVR Flase的读、写、擦除操作(HCU NVR load key除外)。各个型号NVR区域的详细信息及操作指南,可参考各个型号RM以及《AN_0062_EFM_Application_Note》。

    MCAL的工程如何操作NVR Flash

    在MCAL工程中,为满足客户操作NVR区域的需求,特编写Fls_Nvr.c/.h文件,用于支持用户操作NVR Flash。如下方压缩包所示:

    Fls_NvrDriver.zip

    用户可将上述两个文件添加至工程中,并根据添加的位置修改CMakeList文件,如下所示,下图示例中将上述文件添加至App/Fls_NvrDriver,并修改工程的CMakeList。
    ea857a9f-b8bb-4d35-b587-e7e68ae641c4-image.png

    NVR Flash操作注意事项

    与MCAL Fls模块资源冲突问题

    由于Fls 模块与NVR Flash操作均需使用EFM模块,因此在调用NVR Flash操作API时,应尽量避免与Fls模块的操作同时工作的问题。虽然在NVR Flash的API中判断了Fls模块是否处于BUSY状态有判断,但是Fls无法判断NVR Flash API是否正在被调用,因此如果两者同时操作EFM,容易导致操作失败。故在使用上需规避二者同时操作EFM。

    CUS NVR注意事项

    向CUS NVR中指定位置写入数据可修改MCU的CUS KEY,可修改Flash写保护寄存器初始值,可开关MCU debug功能等,因此CUS NVR区域的写入操作需谨慎执行。各个型号CUS NVR功能及地址映射关系详见《AN_0062_EFM_Application_Note》。在测试CUS NVR写入时,需注意:

    • CUS KEY

    YTM32B1MD1、YTM32B1MD2、YTM32B1MC0、YTM32B1ME1、YTM32B1HA0的CUS KEY均可通过向CUS NVR中的0-7字节写入数据来更改。因此若用户需要CUS KEY, 可向CUS NVR前8字节中24bit key以及0x5A5A5A5A。修改CUS KEY后,MCU默认的KEY失效,用户需自行记录更新后的KEY,并在每次调用相关接口时使用更新后的KEY,若KEY遗失,则CUS NVR读、写、擦除操作,HCU NVR擦除均无法再执行。

    • Debug使能及禁用

    通过向CUS NVR指定位置写入0x5A5A5A5A,0x5A5A5A5A,可实现MCU debug功能禁用,debug功能禁用后,只能通过擦除CUS NVR中指定位置写入的值,才能再次启用MCU debug功能。因此在禁用MCU debug功能前,请确保CUS NVR擦除代码可被有效调用。

    • YTM32B1HA0 CUS NVR注意事项

    YTM32B1HA0 CUS NVR的写入的最小长度为32字节,但是在disable debug或修改cus key时,其需要写入的数据长度仅为8字节。如下图所示:
    78de7815-a857-4db1-8ba9-b33d23d814a8-image.png
    因此应用程序在执行上述功能时,为了不影响其他位置的数据,需要先读取CUS NVR中的数据,在读取结果的基础上修改对应位置的数据,最后再写入到CUS NVR中。
    如下所示代码为CUS NVR中禁用debug功能所示代码,代码中为不影响cus key及EFM PROT0/1初始值,先读取CUS NVR 0-32字节中的数据,然后修改8-15字节中的数据,然后擦除CUS NVR,并将数据再次写入到CUS NVR中。此示例中由于调用了Fls 擦除,因此对于32字节之后的数据,客户应视情况而定是否需要再次写入。

    /*Disable Jlink or SWD debug when SW1 is pressed*/
            if(TRUE == Fls_CurNvrDebugDisEn)
            {
                /*read data*/
                TestResult = Fls_ReadCusNvr(0x10000000, Fls_ReadData, 32,Fls_TestCusKey);
                while(FLASH_E_OK != TestResult)
                {
                    __asm("NOP");
                }
    
                /*Clear the register init value in customer nvr*/
                TestResult = Fls_EraseCusNvr(0x4dff32);
                while(FLASH_E_OK != TestResult)
                {
                    __asm("NOP");
                }
                for(LoopCnt = 0;LoopCnt < 32;LoopCnt++)
                {
                  Fls_WriteData[LoopCnt] = Fls_ReadData[LoopCnt];
                }
    
                *((uint32 *)&Fls_WriteData[8]) = 0x5A5A5A5A;
                *((uint32 *)&Fls_WriteData[12]) = 0x5A5A5A5A;
                TestResult = Fls_WriteCusNvr(0x10000000, Fls_WriteData, 32,0x4dff32);
    
                if(FLASH_E_OK == TestResult)
                {
                    /*test code nothing to do*/
                }
                else 
                {
                    /*test code nothing to do*/
                }
                Fls_CurNvrDebugDisEn = FALSE;
            }
    

    OTP NVR注意事项

    OTP NVR的最末尾8字节(YTM32B1HA01为最末尾32字节)为OTA使用,用户禁止写入。

    各个型号NVR Flash操作Demo

    各个型号Demo工程如下所示:

    • YTM32B1HA0
      Fls_HA0NvrDemo.zip
    • YTM32B1MC0
      Fls_MC0NvrDemo.zip
    • YTM32B1MD1
      Fls_MD1NvrDemo.zip
    • YTM32B1MD2
      Fls_MD2NvrDemo.zip
    • YTM32B1ME0
      Fls_ME0NvrDemo.zip
    • YTM32B1ME1
      Fls_ME1NvrDemo.zip
    1 条回复 最后回复
    1

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • can
    28
    demo
    23
    uds
    14
    lin stack
    13
    md14
    6
    yt-link
    6
    fbl
    5
    adc模块
    4
    Online Users
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门