文章目录

  • [0x100] 启动类型
  • [0x200] 多种启动模式
      • [0X201] 系统引导模式的引脚 RST_CFG 配置差异
      • [0X202] 引脚 RST_CFG 位选项
      • [0x203] 引导模式启动顺序
    • [0x210] 拓展静态存储引导启动[External Static Memory Boot]
    • [0x220] 内部ROM引导启动 [Internal ROM Boot]
      • [0x221] 启动模式类型
      • [0x222] SPI 引导
      • [0x223] UART 引导
      • [0x224] USB 引导
      • [0x225] SDHC 引导
      • [0x225] SDFS 引导
      • [0x226] NANDFLASH 引导
  • [0x300] 其他引导信息
    • [0x310] 引导镜像规则
    • [0x320] 各个引导模式所需参数结构
    • [0x330] 异常向量表模版

[0x100] 启动类型

存储启动方式

  • 支持 16位 /8位 外部静态内存启动 [External Static Memory Boot];
  • 内部 ROM 启动 [Internal ROM Boot] ;

[0x200] 多种启动模式

[0X201] 系统引导模式的引脚 RST_CFG 配置差异

[0X202] 引脚 RST_CFG 位选项

[0x203] 引导模式启动顺序

[0x210] 拓展静态存储引导启动[External Static Memory Boot]

  1. 将 nSCS[0]设置为 ADDR[0x0000 0000],即为重置CPU配置操作;
  2. CPU 可以通过访问 MCU-S 来获取外部存储中的数据;

[0x220] 内部ROM引导启动 [Internal ROM Boot]

  • 拥有 20K 大小的 inter ROM,需要设置 为 RST_CFG [2:0] = 2设置 inter ROM启动;
  • 将引导 代码拷贝到 SRAM [片内内存]固定位置 ,存储程序栈和数据;
  • 初始化设备完成后 跳转 SRAM 固定位置;
  • 支持 异常向量表 不启动 MMU 方式;
  • 通过设置 [核心快速电源请求] VDDPWRON 和 [内存快速电源请求] VDDPWRON_DDR 为高电平

[0x221] 启动模式类型

  • NAND FLASH +纠错 引导;
  • SD/MMC/SDFS 引导;
  • SPI [串行外设接口] 串行 EEPROM 引导;
  • UART [通用异步接收器] 引导;
  • USB 引导;

[0x222] SPI 引导

  • 协议类型 :SPI 协议;
  • 时钟频率:16MHz
  • 程序容量: 56KB
  • 支持端口:SPI0、SPI1、SPI2
  • 支持检查启动信号 与 启动镜像校验[CRC]

IROM 初始化 SPI 接口 与设备,跳转到 SRAM ADDR [0xFFFF_0000] ;
从 SPI FLASH 拷贝 引导代码 到 SRAM ADDR [0xFFFF_0000] 处执行引导启动;

[0x223] UART 引导

  • 协议类型:UART 串口协议;
  • 波特率:19200 bps, 115200 bps
  • 程序容量: 16KB
  • 支持端口:UART0、UART1
  • 支持检查启动信号 与 启动镜像校验[CRC]

IROM 初始化 UART接口,跳转到 SRAM ADDR [0xFFFF_0000] ;
用户输入 引导代码 到 SRAM ADDR [0xFFFF_0000] 处执行引导启动;

[0x224] USB 引导

  • 协议类型:USB大包传输;
  • 传输速率:64Kbtye 、512 Kbtye;
  • 程序容量: 56Kbtye;
  • 支持端口:EP1 只向前兼容. EP2 只能接收数据;

IROM 初始化 USB接口,跳转到 SRAM ADDR [0xFFFF_0000] ;
通过 USB 高速传输引导代码 到 SRAM ADDR [0xFFFF_0000] 处执行引导启动

[0x225] SDHC 引导

  • 存储设备:SD、MMC、eMMC;
  • 时钟频率:认证 400 kHz SDCLK,传输 24 MHz SDCLK;
  • 程序容量: 56Kbtye;[扇区0 =MBR 扇区[32:1] =引导程序]
  • 端口定义:SD0, SD1, SD2;

IROM 初始化 USB接口,跳转到 SRAM ADDR [0xFFFF_0000] ;
不从 扇区0 [分区信息] 开始,忽略512字节;
通过 SD 获取引导代码 到 SRAM ADDR [0xFFFF_0000] 处执行引导启动

[0x225] SDFS 引导

  • 存储设备:SD/MMC/eMMC;
  • 时钟频率:认证 400 kHz SDCLK,传输 24 MHz SDCLK;
  • 文件系统:FAT12, FAT16, FAT32
  • 程序容量: 56Kbtye;
  • 端口定义:SD0, SD1, SD2;

第一次引导,读取MBR 搜索分区或者文件系统,确定为FAT32 文件系统;
搜索两个文件 ”NXDATA.SBH" 、“NXDATA.SBL”, 总大小不能超过56Kb;

[0x226] NANDFLASH 引导

  • 存储设备:nandflash;
  • 纠错范围1:数据 512Btye + 校验39Btye = Cerror [24bits]
  • 纠错范围2:数据1024Btye + 校验105Btye = Cerror [60bits]
  • 内存页大小:512B, 2 KB, 4 KB, 8 KB, 16 KB
  • 程序容量: 56Kbtye;
  • 不支持坏块管理

内部ROM 初始化 ,NANDFLASH 控制器;
将 NANDFLASH 引导代码 到 SRAM ADDR [0xFFFF_0000] 处执行引导启动

[0x300] 其他引导信息

[0x310] 引导镜像规则

  • 每个引导 镜像 必须拥有 512 字节的引导头 [Boot header];
  • 等待引导信号值为 0x4849534E;
  • 引导镜像必须存在这三个参数: LOADSIZE, LOADADDR, LAUNCHADDR ,前两个必须是16字节对齐的;
  • 如果是SPI 还需要 CRC32的校验数据;

[0x320] 各个引导模式所需参数结构

struct NX_NANDBootInfo
{unsigned char AddrStep;
unsigned char tCOS;
unsigned char tACC;
unsigned char tOCH;
unsigned int PageSize;
unsigned int CRC32;
};
struct NX_SPIBootInfo
{unsigned char AddrStep;
unsigned char _Reserved0[3];
unsigned int _Reserved1;
unsigned int CRC32;
};
struct NX_SDMMCBootInfo
{unsigned char PortNumber;
unsigned char _Reserved0[3];
unsigned int _Reserved1;
unsigned int CRC32;
};
union NX_DeviceBootInfo
{struct NX_NANDBootInfo NANDBI;
struct NX_SPIBootInfo SPIBI;
struct NX_SDMMCBootInfo SDMMCBI;
};
struct NX_SecondBootInfo
{unsigned int VECTOR[8]; // 0x000 ~ 0x01C
unsigned int VECTOR_Rel[8]; // 0x020 ~ 0x03C
unsigned int DEVICEADDR; // 0x040
unsigned int LOADSIZE; // 0x044
unsigned int LOADADDR; // 0x048
unsigned int LAUNCHADDR; // 0x04C
union NX_DeviceBootInfo DBI; // 0x050~0x058
unsigned int Stub[(0x1F8-0x05C)/4]; // 0x05C ~ 0x1F8
unsigned int SIGNATURE; // 0x1FC "NSIH"
};

[0x330] 异常向量表模版

  • 前32 字节 放置 异常向量表,
  • 发生异常时,将跳转到 0 地址(即IROM处)执行异常向量表;
  • inter ROM 引导后,code 起始位置是SRAM,需要偏移0xFFFF0000 通过 LDR 将地址读出来执行;
#define BASEADDR_SRAM 0xFFFF0000
//;==================================================================
//; Vectors
//;==================================================================
.global Vectors
Vectors:
LDR pc, ResetV //; 00 - Reset
LDR pc, UndefV //; 04 - Undefined instructions
LDR pc, SWIV //; 08 - SWI instructions
LDR pc, PAbortV //; 0C - Instruction fetch aborts
LDR pc, DAbortV //; 10 - Data access aborts
LDR pc, UnusedV //; 14 - Reserved
LDR pc, IRQV //; 18 - IRQ interrupts
LDR pc, FIQV //; 1C - FIQ interrupts
ResetV:
.word Reset_HandlerUndefV:
.word (BASEADDR_SRAM + 0x04) //; 04 - undefSWIV:
.word (BASEADDR_SRAM + 0x08) //; 08 - software interruptPAbortV:
.word (BASEADDR_SRAM + 0x0C) //; 0C - prefectch abortDAbortV:
.word (BASEADDR_SRAM + 0x10) //; 10 - data abortUnusedV:
.word 0 //; 14 - will reset if called...IRQV:
.word (BASEADDR_SRAM + 0x18) //; 18 - IRQFIQV:
.word (BASEADDR_SRAM + 0x1C) //; 1C - FIQ

S5P6818 芯片手册 System Boot 章节 重排相关推荐

  1. RK3228H开发之3328芯片手册简单分析

    一.引言 因为RK3328的芯片手册比较庞大,且为英文版,故今天来一起分析下 二.目录结构 目录(在此之详细分析常用模块) part 1 figure index :手册内所有的结构示意图 table ...

  2. 树莓派博通BCM2835芯片手册导读及io口驱动代码的实现

    树莓派博通BCM2835芯片手册导读及io口驱动代码的实现 树莓派寄存器的介绍 寄存器地址问题 驱动代码的实现 在linux中生成树莓派所需要的的程序及实现现象 一.树莓派寄存器的介绍 GPFSEL0 ...

  3. hi3798mv300是什么手机_海思Hi3798MV300/Hi3798MV310/Hi3798MV300H共升级包使用指南芯片手册...

    本文针对现网各种场景,对hi3798MV300.Hi3798MV310.Hi3798MV300H共升级包方案的升级包的编译.制作方法和原理进行了详细介绍. 适用场景 场景1: 现网同时有Hi3798M ...

  4. 树莓派学习笔记(十五)博通BCM2835芯片手册导读

    树莓派3b的CPU型号为:BCM2835(ARM-cotexA53架构) CPU型号为2440.2410(ARM9架构) 编写驱动需要电路图(作用通过电路图找到寄存器).芯片手册 树莓派官网:http ...

  5. 阅读芯片手册及硬件原理图的方法

    阅读原理图的方法 以CPU为中心向存储和外设辐射 看片选.中断和外设控制器 看引脚的符号+连线网络+注释框 阅读芯片手册的方法 看产品综述(overview),有芯片结构图和主要模块简述 看Memor ...

  6. MF RC522读卡芯片手册

    MF RC522读卡芯片手册 http://www.docin.com/p-1684819035.html https://wenku.baidu.com/view/2510e4e3590102020 ...

  7. 树莓派IO口驱动代码的编写、微机总线地址、物理地址、虚拟地址、BCM2835芯片手册

    地址总线: 百度百科解释: 地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/ ...

  8. tiny4412(用户手册及芯片手册)

    本人最近刚开始入手tiny4412开发板  因为手中只有板子没有资料 所以这几天一直在网上找相关资料,,发现很少有免费分享原理图及用户手册的  我也是大约找了一天多才有些收获  独独缺了原理图 如果列 ...

  9. FPGA芯片手册阅读技巧

    FPGA的管脚主要包括:用户I/O(User I/O).配置管脚.电源.时钟及特殊应用管脚等.其中有些管脚可有多种用途,所以在设计FPGA电路之前,需要认真的阅读相应FPGA的芯片手册. 下面以ALT ...

最新文章

  1. MySQL --log-slave-updates
  2. Linux里10个最危险的命令
  3. HDU - 6558/概率dp(从后往前推导)
  4. 前端学习(2342):react的生命周期
  5. foxmail邮件怎样打印日历
  6. 谷歌Chrome浏览器发布10年成霸主
  7. 小巧Linux发行版本,老机器也不愁
  8. [家里蹲大学数学杂志]第410期定积分难题
  9. EGO走进美团——追寻千亿市场背后的技术力量
  10. 访问共享盘,无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限。...
  11. 成功在虚拟机里面安装MAC苹果系统
  12. 免费的Office办公套件LibreOffice for Mac
  13. python线性回归预测pm2.5_线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)
  14. Gartner 魔力象限:安全信息和事件管理 2020
  15. 张朝阳:打高球老婆孩子早九晚五活得太沉重
  16. 小程序的点击复制功能和长按复制功能
  17. 获取本地电脑连接的所有WIFI密码(适合Windows 11/10/8/7)
  18. shineblink 声音探测传感器详解
  19. language express
  20. JS获取A元素动态ID值

热门文章

  1. 莆田学院计算机与科学怎么样,莆田学院怎么样_好不好_是几本
  2. 生产制造业网络运维监控方案
  3. Pygame实战:程序员小哥给女友写了一款锻炼反应能力的游戏,从此上班摸鱼再也没被扣工资。
  4. “京东金融”主页效果 RecyclerView联动
  5. 电脑端简单好用的屏幕录像软件使用方法
  6. Oracle数据库 单值函数
  7. mysql 练习题(持续更新中)
  8. 使用easyUI datagrid分页
  9. 我的世界java最新更新_Minecraft我的世界Java版18w50a更新内容
  10. estore订单提交功能