嵌入式linux开发 (二十五) 内存管理(7) 其他芯片在硬件上对内存的管理

2024-05-27 16:18

本文主要是介绍嵌入式linux开发 (二十五) 内存管理(7) 其他芯片在硬件上对内存的管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

讨论的是芯片硬件对内存的管理,包括芯片中固化的代码
N32905U1DN
  • 总介
	ARM926EJ-S 32-bit RISC CPU with 8KB I-Cache & 8KB D-CacheFrequency up to 200MHz@1.8V core power operation voltageJTAG interface supported for development and debugginghttps://bbs.21ic.com/icview-542928-1-1.html
  • 内部:
	8KB internal SRAM // 0xFF00_0000 - 0xFF00_1FFF16KB IBR internal booting ROM(IBR) // 0xFFFF_0000 - 0xFFFF_FFFFIBR booting messages displayed by UART console for debugging supported
  • 外部:
	Different system booting modes supported:Memory cardSD cardSD-to-NAND flash bridgeRaw NAND FlashSPI FlashUSBSDRAM:0x0000_0000 - 0x3FFF_FFFF
  • boot
没有搜到boot资料
猜测 启动分为 一级启动 和 二级启动
----------------------------- 一级启动
从IBR internal booting ROM(IBR)启动,此时使用internal SRAM,此时会打印log到UART console
----------------------------- 二级启动
IBR根据boot配置加载对应的设备的前8KB(因为SRAM有8KB)数据进SRAM,然后启动代码
s3c6410
  • 总介
The ARM subsystem is based on the ARM1176JZF-S coreThe memory system has dual external memory ports, DRAM and Flash/ROM. The DRAM port can be configured to support mobile DDR, DDR, mobile SDRAM and SDRAM. The Flash/ROM port supports NOR-Flash, NAND-Flash,OneNAND, CF and ROM type external memory.
  • 内部
srom: // 32KB0x0800_0000 0x0BFF_FFFF 64MB Internal ROM
sram: // 8KB0x0C00_0000 0x0FFF_FFFF 64MB Stepping Stone (Boot Loader)0x0000_0000 0x07FF_FFFF 128MB Booting Device Region by XOM Setting Mirrored Region ???
  • 外部
DRAM:DRAM Controller of the Memory Port10x5000_0000 0x5FFF_FFFF 256MB0x6000_0000 0x6FFF_FFFF 256MB
FLASH:supports NOR-Flash, NAND-Flash,OneNAND, CF and ROM type external memory.
  • boot
The operating mode is mainly classified into six categories according to the boot device. The boot device can be among SROM, NOR, OneNAND, MODEM and Internal ROM// 对于不同的启动配置(OM[4:0]决定),memory map不同
// 没找到合适的官方boot资料,以下来源于网络
(1) 上电后首先运行iRom(BL0)内的代码,主要完成时钟和看门狗等外围器件的初始化。
(2) 拷贝SD卡或者NnadFlash中的前4k(BL1)代码到片内ram(垫脚石)去运行,主要工作是配置主存储器SDRAM。并将剩余的BL1和BL2加载到SDRAM上。 // 这里有问题??应该是8KB吧,没找到资料,ε=(´ο`*)))唉
(3) 完成后将程序的入口跳转到SDRAM中的BL2继续运行。并将存储设备上的OS加载到SDRAM运行。
(4) 将程序的入口跳转到拷贝到SDRAM上的OS的入口进行运行。
s5pv210
  • 总介
It integrates the ARM Cortex-A8 core, which implements the ARM architecture V7-A with supporting peripherals.
S5PV210 has an interface to external memory that is capable of sustaining heavy memory bandwidths required in
high-end communication services. The memory system has Flash/ ROM external memory ports for parallel access and DRAM port to meet high bandwidths.DRAM controller supports LPDDR1 (mobile DDR), DDR2, or LPDDR2.Flash/ ROM port supports NAND Flash, NOR-Flash, OneNAND, SRAM, and ROM type external memory.
  • 内部
IROM: 64KB0xD000_0000 0xD000_FFFF 64KB IROM
IRAM: 96KB0xD002_0000 0xD003_7FFF 96KB IRAM0x0000_0000 0x1FFF_FFFF 512MB Boot area  Mirrored region depending on the boot mode.
  • 外部
DRAM:0x2000_0000 0x3FFF_FFFF 512MB DRAM 00x4000_0000 0x7FFF_FFFF 1024MB DRAM 1
FLASH:supports NAND Flash, NOR-Flash, OneNAND, SRAM, and ROM type external memory
  • boot
The boot loader is largely composed of iROM, first and second boot loaders. 
The characteristics of these boot loaders are:• iROM code: Contains small and simple code, which is platform-independent and stored in internal memory• First boot loader: Contains small and simple code, which is platform-independent and stored in externalmemory device. Related to secure booting.• Second boot loader: Contains complex code, which is platform-specific and stored in external memory device.The booting device can be chosen from following list:• General NAND Flash memory• OneNAND memory• SD/ MMC memory (such as MoviNAND and iNAND)• eMMC memory• eSSD memory• UART and USB devices
exynos4412
  • 总介
ARM Cortex-A9 based Quad CPU Subsystem with NEON 32/32/32/32 KB I/D Cache, 1 MB L2 Cache Operating frequency up to 1.4 GHz64 KB ROM for secure booting and 256 KB RAM for security function
  • 内部
	0x0000_0000 0x0001_0000 64 KB iROM0x0202_0000 0x0206_0000 256 KB iRAM
  • 外部
	The memory system has dedicated DRAM ports and Static Memory port. RAM: The dedicated DRAM ports support LPDDR2 interface for high bandwidth. FLASH: Static Memory Port supports NOR Flash and ROM type external memory and components.
  • boot:
	Due to the recent increase in the prices of NOR flash memory and the moderately priced DRAM, and NAND flash,customers prefer to execute boot code on NAND flash and execute the main code on DRAM.The boot code in Exynos 4412 can be executed on external NAND flash. It copies NAND flash data to DRAM. To validate the NAND flash data, Exynos 4412 includes hardware Error Correction Code (ECC). After the NAND flash content is copied to DRAM, main program will be executed on DRAMThe features of NAND flash controller are: Auto boot: The boot code is transferred to internal SRAM during reset. After the transfer, the boot code will be executed on the SRAM.OM[5:1] 配置1st device 和 2nd device // If it fails to download BL1 from the first booting device, the iROM code tries to download BL1 from the second booting device (USB or SDMMC_CH2).General NAND flash memorySD/MMC memory cardeMMC memoryUSB deviceThe boot loader is comprises the first and the second boot loaders. The characteristics of these boot loaders are: iROM: It is a small and simple code to initiate SOC. It is implemented on internal ROM of SOC. First boot loader (BL1): It is chip-specific and stored in external memory device. Second boot loader (BL2): It is platform-specific and stored in external memory device. 三星不提供 BL1 BL2 
-------------------具体启动流程 iROM is placed in internal 64 KB ROM. It initializes basic system functions such as clock and stack. iROM loads BL1 image from a specific booting device to internal 256 KB SRAM. The booting device isselected by Operating Mode (OM) pins. According to the secure boot key values, iROM may do an integritycheck on BL1 image. BL1 initializes system clock, and DRAM controller. After initializing DRAM controller, it loads OS image fromthe booting device to DRAM. According to the secure boot key values, BL1 can do an integrity check on theOS image. After the booting completes, BL1 jumps to the operating system.
RK-3288
  • 总介
Quad-core ARM Cortex-A17 MPCore processor, a high-performance, low-power and cached application processor
  • 内部
 Internal on-chip memory
 20KB BootRom
 100KB internal SRAM for security and non-security access, detailed size is programmable
  • 外部
 External off-chip memory①DRAM:DDR3 LPDDR2 LPDDR3FLASH:Nand SD eMMC
  • boot
RK3288 provides system boot from off-chip devices such as SDMMC card, 8bits async nand flash or toggle nand flash, SPI nor or nand, and eMMC memory. When boot code is not ready in these devices, also provide system code download into them by USB OTG interface.
启动过程为二级启动(boot loader)
一级启动:从bootrom启动,根据配置加载设备前100KB进sram,并执行sram中的代码
二级启动:用户代码:一般为初始化ddr,然后拷贝二级启动设备上的全部代码进入ddr.然后跳转到ddr.
其他资料不全的芯片
  • hi3531a R16 mt2503
总结
  • 启动过程是随着时间的推移不断变化的
单片机芯片,以stm32为典型:映射主flash到0x00000000 ,然后从0x00000000 启动
AP 芯片,以三星家族为例s3c2440 -> s3c6410 -> s5pv210 -> exynos4412s3c2440: 无srom,nandflash搬运到sram(4KB)启动s3c6410:srom(Internal ROM,32KB),从srom启动,然后加载二级启动设备前8KB代码到srams5pv210:srom(Internal ROM,64KB),从srom启动,然后加载二级启动设备前96KB代码到sramexynos4412:srom(Internal ROM,64KB),从srom启动,然后加载二级启动设备前256KB代码到sram
  • 当前主流启动流程(2020-04-20)
单片机芯片,以stm32为典型:映射主flash到0x00000000 ,然后从0x00000000 启动
AP芯片,srom(Internal ROM,64KB),从srom启动,然后加载二级启动设备前256KB代码到sram(sram大小:256KB)且SROM大小和SRAM大小目前应该已经定型,不会再增加了.且SROM中由厂家固化的代码会做越来越多的事情,例如I.MX6ULL 中新增了初始化DDR和从启动设备中搬移代码到DDR.

这篇关于嵌入式linux开发 (二十五) 内存管理(7) 其他芯片在硬件上对内存的管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007968

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象