ASM9260T是一款嵌入式微处理器,其启动流程和内存管理是理解其开发工作的重要基础。本文将深入探讨ASM9260T的启动过程、内存布局以及sysloader和bootloader的角色。 当ASM9260T芯片上电或复位后,启动流程从位于0xFFFF0000地址的BootCode开始。BootCode在内部SRAM的[0x40001000,0x40001FFF]区域分配Data段和Stack。BootCode的主要任务是根据GPIO2_[5,6,7]的状态,确定从何种外部存储器(如SPI-Flash、IIC-EEPROM、Nand-Flash、Nor-Flash)加载sysloader到SRAM的[0x40000000,0x40000FFF]区域,并跳转至sysloader的入口执行。sysloader的代码大小需限制在4KB以内。 sysloader接着负责初始化系统PLL,设置CPU和HCLK时钟频率,初始化32MB的片内SDRAM,并从永久存储器读取应用程序镜像到SDRAM的特定地址,通常是0x20008000开始。sysloader运行后,会将64字节的异常向量表复制到0x20000000,并通过MMU将0x20000000开始的1MB空间映射到虚拟地址0x00000000。此外,[0x20004000,0x20007FFF]的16KB内存用于存放MMU的地址转换表,足够存储整个一级页表。 考虑到sysloader的空间限制,通常会在sysloader和应用程序之间添加一个bootloader。bootloader实现更复杂的功能,如以太网ISP、升级、加密和调试等。执行顺序为:BootCode→sysloader→bootloader→application。各部分在SPI-Flash和内存中的地址如下: - BootCode:不在SPI-Flash中,直接加载到0xFFFF0000 - sysloader:0x00000000加载,0x40000000执行 - bootloader:0x00010000加载,0x20008000执行 - application:0x00020000加载,0x20020000执行 sysloader在整个执行过程中保持在SVC模式,不开启中断,禁用MMU、Icache和Dcache。相比之下,bootloader的运行环境更接近应用程序,但在跳转到application之前,bootloader需要返回SVC模式,关闭不再使用的外设时钟和中断,清空Dcache,刷新Icache,确保application的启动状态如同由sysloader直接加载一样,仿佛bootloader从未存在。 了解这些启动流程和内存布局对于ASM9260T的开发至关重要,它们指导了固件的编写、存储器的管理和系统的初始化步骤,确保系统能够正确、高效地运行。在实际开发过程中,开发者需要严格遵循这些规则,以确保软件的稳定性和可靠性。
- 粉丝: 23
- 资源: 319
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Springboot+Vue学生网上选课系统的设计-毕业源码案例设计(高分项目).zip
- 基于Springboot+Vue医疗报销系统的设计与实现-毕业源码案例设计(95分以上).zip
- 风储模型中,功率分配模型
- FPGA Mipi协议采集解码工程,可以接收ov5640摄像头数据,也可以移植到其他的CSI摄像头中
- 基于方程的comsol气泡空化模型,参考文献如图
- linux常用命令大全常用.txt
- linux常用命令大全常用.txt
- linux常用命令大全常用.txt
- Halcon联和C#做的运动控制加视觉定位小案例,板卡用的是正运动的ECI1408,,支持建模和标定的保存和加载,此案例非常适合想学运动控制视觉定位的人学习
- frpc-darwin-arm64
- 异步电机直接转矩控制算法模型正常运行R2016b版本及以上均可运
- comsol空芯反谐振光纤spr
- 网络加速器,加速访问huggingface+GitHub
- 基于matlab的交流电机动态方程,用于交流电机动态分析 输入电机的额定功率(kW)、电机的额定转速(r min)、转子外径(m)、铁心长(m)转子槽数、电机极对数 等参数,输出转速变化、力矩变
- ChatTTS是一种专门为LLM助手等对话场景设计的文本到语音模型
- 01超级染色体小游戏源码.zip
评论0