cavium octeon 处理器启动总线Bootbus 简介
cavium octeon 处理器启动总线Bootbus 简介: 韩大卫@吉林师范大学
Boot-bus(启动总线)是cavium octeon处理器的一种用于启动系统的硬件. CPU通过boot bus和非易失性设备相连, 比如NOR/NAND flash, CF卡, ROM等, 这些设备可以作为CPU的初始化引导地址. Boot bus总线协议是灵活的, 所以可以接口很多不同类型的设备.
cavium octeon CN63XX处理器有10个核心(core), 一般使用core 0 来启动linux, 用来管理系统, 实现控制平面. core1-9作为数据平面的处理, 没有操作系统, 循环执行报文处理的逻辑程序. Cavium octeon处理器启动操作系统时依赖的机制就是Bootbus.
以Octeon CN63XX 处理器: Big-endian Bootbus 包括:
8位片选32位地址/数据线可编程的8/16位数据宽度: 8位情况下, Boot_AD<31:24> 为数据总线16位情况下, Boot_AD<31:24> 为数据总线的最高位字节, Boot_AD<23:16> 为最低位字节.
DMA: 两个多字节DMA(MWDMA) DMARQ/DMACK 信号.
Bootbus总线通过8个片选信号配置8个区域. 每个区域/片选 有不同的总线配置和时钟参数.
当CN63XX 自启动时, bootbus 必须在片选0上提供初始化指令来引导芯片.
/*注: 关于bootbus片选信号: 通过配置bootbus寄存器, 使能某一个区域的片选后, 便可将这个区域内的设备的地址映射到内存里, 通过访问内存的方式实现IO操作, 同时不影响bootbus上其他区域内的设备的工作, 此”片选” 信号仅仅是为了使能这个区域, 操作这个区域内的设备. 比如bootbus区域0上挂载了Nor Flash, 区域2上挂载了FPGA, bootbus默认使能区域0, 从Nor FLash上读取uboot和linux内核. 那么当使能bootbus 区域2后, 便可以将bootbus 区域2的地址映射到内存中(根据配置的基地址和长度), 那么在用户空间操作此内存时, 即实现了操作FPGA的寄存器. 但是同时, Nor FLash的工作是正常的, Nor FLash在用户空间的地址是不被自动覆盖的. */
Boot bus硬件包含了2 个本地的, 128字节的cache区域. 当没有设备连接到bootbus时, 这些cache区域必须被用来服务于core-boot和debug-exception的向量.
本地cache也可加速Bootbus 常用访问区域的读操作.Boot bus 占用了CN63xx 4G的物理地址空间, 从0x1 0000 0000 0000 到 0x1 0000 ffff ffff.
NOTE:CN63xx内核(core) 将它们从0x0 0000 1000 0000到0x0 0000 1fff ffff的物理地址转化为CN63xx的Boot bus的物理地址:0x1 0000 1000 0000 到 0x1 0000 1fff ffff.
bootbus物理地址有两个异常向量:异常向量地址1 : 0x1 0000 1fc0 0000 在所有的复位,软复位和不可屏蔽的中断(NMI)异常后, 一个核心向量到这个物理地址.
地址2: 0x1 0000 1fc0 0480如果EJTAG TAP 寄存器域ECR[ProbEn] 没置1, 在所有调试异常后,一个核心向量到这个物理地址.
在一定条件下, 其他核异常也可被向量到boot bus地址. 其他异常向量可通过核的配置而被避免, 但是上面异常的向量地址不能通过配置核而避免.boot bus区域的复位配置必须用于当CN63xx 的自启动时作为核心复位向量在此被使用. 当复位后, 总线区域0 是唯一可用的区域, 并且有最大长度; 映射CN63xx 物理地址0x1 0000 1fc0 0000 到引导地址 0x0 的在片选0 连接的设备上; 这表示当CN63xx自启动时, 连接到片选0 信号线上的设备必须含有CN63xx的引导代码, 从引导地址0开始. 当CN63xx 自启动时, 核心0 立即执行这些代码.
关于具体说明请参考cavinum network octeon CN63xx/66xx.
cavium octeon 处理器启动总线Bootbus 简介的更多相关文章
- 老李推荐:第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介
老李推荐:第5章1节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 官方简介 在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自Monkey ...
- FC总线技术简介
FC是由美国标准化委员会(ANSI)的X3T11小组于1988年提出的高速串行传输总线,解决了并行总线SCSI遇到的技术瓶颈,并在同一大的协议平台框架下可以映射更多FC-4上层协议.FC具备通道和网络 ...
- ARM多核处理器启动过程分析【转】
转自:http://blog.csdn.net/qianlong4526888/article/details/27695173 版权声明:本文为博主原创文章,未经博主允许不得转载. 说明: 该流程图 ...
- [国嵌笔记][029][ARM处理器启动流程分析v2]
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flas ...
- arm处理器启动流程分析
2440: 启动方式:nor , nand 地址布局: 启动流程: 开发板在上电后,会从0x0地址处运行. 如果从nor flash启动,则代码要放在nor 的0地址处: 如果从nand flash启 ...
- ARM多核处理器启动过程分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27695173 说明: 该流程图依照 ...
- Linux内核启动流程(简介)
1. vmlinux.lds 首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的: 第 ...
- ARM处理器启动流程
根据<<芯片手册>>查看相关内容: 1.启动方式 2.地址布局 3.启动流程
- CentOS7开机启动管理systemd简介及使用
systemd提供更优秀的框架以表示系统服务间的依赖关系实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果systemd的目标是:尽可能启动更少进程:尽可能将更多进程并行启动.sy ...
随机推荐
- NYOJ737
题意:给n堆石子,按照顺序排列,只能相邻两堆石子合并,求最后合并为一堆时所花费的最小代价,石子合并代价为两堆石子之和. 输入: n(石子堆数) Xi(每堆石子个数) 输出: T(最小代价) 思路:经典 ...
- Example_07_05录音提示open failed: EACCES (Permission denied)
在AndroidManifest.xml文件中加入下面这句话:<uses-permission android:name="android.permission.WRITE_EXTER ...
- phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置
PHPMyadmin配置文件config.inc.php内容如下,在需要设置的地方增加了相关注释. 非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具: 1.先到网上下载 ...
- Android开发手记(13) 几种Alertdialog的使用
本文主要讨论七种形式的AlertDialog,及其编写方法. 1.退出 在用户退出的时候提示用户是否退出,含有“确定”和“退出”两个按键. btnExit.setOnClickListener(new ...
- ESXi控制台TSM:弥补vSphere Client不足
当vSphere Client不能完成某些任务时,主机的ESXi控制台及其技术支持模式(TSM)可能能派上用场. ESXi控制台允许管理员执行不能通过vSphere Client进行配置的管理任务,比 ...
- 用CALayer实现淡入淡出的切换图片效果
由于直接更改layer的contents显示的隐式动画切换的时候的动画持续时间没办法控制, 切换效果不尽人意,所以这里配合了CABasicAnimation实现淡入淡出的切换效果, 另外还可以使用组合 ...
- Python文件之----CSV
# -*- coding:utf-8 -*- ''' Created on 2015年4月20日 @author: liuxue ''' import csv import sys reload(sy ...
- IO流(文件字节输入输出
输入输出流可能有不允许操作,可能有出现错误,必须在try语句中进行 FileOutputStream out1=new FileOutputStream("test1.txt") ...
- golang byte转string 字节数组转字符串的问题
golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上 ...
- Remoting通讯实例
Remoting通讯可以实现不同应用程序域之间的通信(可以为一台机器不同程序,也可以不同机器上的不同程序) 实例步骤: (1)编写透明代理类 新建一个类库,命名空间:MyRemoting 在该类库中建 ...