首页 > 其他分享 >AT32F403a/407开启RAM扩展,增加RAM到224K字节

AT32F403a/407开启RAM扩展,增加RAM到224K字节

时间:2024-11-21 20:55:46浏览次数:1  
标签:EOPB0 R0 extend AT32F403a SRAM RAM 407 sram

  1. 打开artery的AN0026应用笔记(AN0026_Extending_SRAM_in_User's_Program_ZH_V2.0.0.pdf),可以看到AT32的出厂预设的SRAM的大小为96K字节,可以修改EOPB0扩展到224K字节。EOPB0的寄存器设置如下,根据下方可知需要将EOPB0的0-7位设置位0xFE。

  2. 但是在设置EOPB0之后,必须执行系统复位的命令,新的EOPB0数值才可以生效并且真正的设定到所选的SRAM大小,就需要做如下操作:

    • main 文件中创建 extend_sram 函数

      void extend_sram(void)
      {
        // check if RAM has been set to 224K, if not, change EOPB0
        if(((USD->eopb0) & 0xFF) != 0xFE)
        {
          /* Unlock Option Bytes Program Erase controller */
          flash_unlock();
          /* Erase Option Bytes */
          flash_user_system_data_erase();
          /* Change SRAM size to 224KB */
          flash_user_system_data_program((uint32_t)&USD->eopb0,0xFE);
          NVIC_SystemReset();
        }
      }
      
    • 修改 startup_at32f403a_407.s 启动文件,在复位之前执行extend_sram函数:

      ; Reset handler  需要修改Reset_Handler
      Reset_Handler   PROC
                      EXPORT  Reset_Handler                       [WEAK]
                      IMPORT  __main
                      IMPORT  SystemInit
      ; 从此项以下开始添加
                      IMPORT  extend_sram
                      MOV32   R0,#0x20001000
                      MOV     SP,R0
                      LDR     R0, =extend_sram
                      BLX     R0
                      MOV32   R0,#0x08000000
                      LDR     SP,[R0]
      ; 到此项以上结束
                      LDR     R0, =SystemInit
                      BLX     R0
                      LDR     R0, =__main
                      BX      R0
                      ENDP
      
    • 之后修改RAM大小:

  3. 注意事项:

    • 必须在Reset_Handler的一开头就去做EOPB0的修改,不要在SystemInit()函数里头设置,因为 用户一开始在Keil/IAR等开发环境设定的SRAM范围,就可能是以扩充后的224K字节作设定,且 实际用到的SRAM可能超过了默认的96K,此时堆栈(STACK)的指针初始值会被设定到96K之后 的地址,执行SystemInit( )时就会出错,甚至发生HardFault而造成死机。
    • 在调用extend_sram()函数前,要将堆栈(STACK)的指针先改到 96K字节内(例程中是修改到 (0x20001000),避免因STACK的指针初始值被设定到96K之后的地址,而造成extend_SRAM函 数执行时发生错误。
  4. 编译运行结果:

标签:EOPB0,R0,extend,AT32F403a,SRAM,RAM,407,sram
From: https://www.cnblogs.com/PlayerPencil/p/18561535

相关文章

  • JFrame对象设置
     JFrame对象设置 publicclassHelloWorld{publicstaticvoidmain(String[]args){//创建窗体对象JFramejFrame=newJFrame();//设置窗体大小//jFrame.setSize(600,400);//设置窗体全屏展示......
  • Metasploit Framework 6.4.37 (macOS, Linux, Windows) - 开源渗透测试框架
    MetasploitFramework6.4.37(macOS,Linux,Windows)-开源渗透测试框架Rapid7Penetrationtesting,2024-11-20请访问原文链接:https://sysin.org/blog/metasploit-framework-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框架......
  • AO3407-ASEMI中低压P沟道MOS管AO3407
    编辑:llAO3407-ASEMI中低压P沟道MOS管AO3407型号:AO3407品牌:ASEMI封装:SOT-23最大漏源电流:-4.1A漏源击穿电压:-30V批号:最新RDS(ON)Max:65mΩ引脚数量:3沟道类型:P沟道MOS管芯片尺寸:MIL漏电流:恢复时间:5ns芯片材质:封装尺寸:如图特性:中低压MOS管、P沟道MOS管工作结温:-55℃~150......
  • Epigrams on Programming
    EpigramsonProgramming转载自这里AlanJ.PerlisYaleUniversityThistexthasbeenpublishedinSIGPLANNoticesVol.17,No.9,September1982,pages7-13.I'mofferingithereonlineuntilACMstopsme.Thephenomenasurroundingcomputersarediverse......
  • Pylon C++ Programmer's Guide
    移步至PylonC++Programmer'sGuide观看效果更佳GettingStartedpylon编程指南是一个关于如何使用BaslerpylonC++API进行编程的快速指南。它可以与pylon示例代码一起使用,以帮助初学者入门。此外,APIrenfence提供了有关BaslerpylonC++接口的描述。接口的描述也可在pylon的......
  • 人工智能之机器学习线代基础——克拉默法则(Cramer's Rule)
    克拉默法则是一种用于解线性方程组的方法,适用于系数矩阵为方阵的情况(即未知数的个数与方程的个数相等)。它通过计算行列式直接求解方程组的解。   克拉默法则的优缺点优点直接性:可以显式地通过行列式计算出解。理论价值:适合小规模问题,易于理解和验证解的正确性。......
  • Lora里面说大模型参数是over-parametrized(过参数的),什么是over-parametrized?(另附相关概
    诸神缄默不语-个人CSDN博文目录本文会介绍over-parametrized(过参数化)、doubledescent、bias-variancetrade-off概念。主要是我在看Lora论文的过程中看到了“over-parametrized”这个概念,所以写一篇关于这个概念的博文。文章目录1.over-parametrized2.doubledesce......
  • SpringBoot养老院管理系统04077 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,员工,老人信息,接待信息,床位信息,床位安排,外出信息,转房信息,退房信息,货品分类,货品信息,入库信息,出库信息,员工工资开题报告内容一、项目背......
  • OSTrack:Joint Feature Learning and Relation Modeling for Tracking: A One-Stream F
    Abstract问题:传统的双流跟踪框架对目标提取的特征不够具体。特征提取和关系建模是分开进行的,导致算法在区分目标和背景方面的能力有限。两流、两阶段框架容易受到性能-速度困境的影响。解决:提出一种新的单流跟踪框架,OSTrack通过桥接具有双向信息流的模板搜索图像来统一特......
  • moveit 报错what(): parameter ‘robot_description_planning.joint_limits.Left_Arm_
    使用moveit_setup_assistant配置moveit2包在humble下会出现错误,在config目录下的joint_limit.yamls文件#joint_limits.yamlallowsthedynamicspropertiesspecifiedintheURDFtobeoverwrittenoraugmentedasneeded#Forbeginners,wedownscalevelocitya......