PowerPC P2010 SylixOS启动方式分析

1. QorIQ P系列处理器简介

QorIQ P系列处理器基于Power Architecture e500系列内核。其中P10xx系列、P2010和P2020基于e500v2内核,P204x、P30xx和P40xx基于e500mc内核,P50xx基于e5500内核。

其中,P2系列专为网络、电信、军工等各种市场提供高品质部件。P2010包含一个1.2GHz内核,512KB二级高速缓存等等。

2. mkimage工具介绍 

mkimage工具可以用来制作不压缩或者压缩的多种可启动镜像文件。

mkimage在制作镜像文件的时候,是在原来的可执行镜像文件的前面加上一个64字节的头,记录参数所指定的信息,这样uboot才能识别这个镜像是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,入口点在内存的哪个位置以及镜像名是什么等等。

mkimage工具用法如下:

-A:设定架构类型;

-O:设定操作系统类型;

-T:镜像类型;

-a:指定镜像在内存中的加载地址;

-e:指定镜像运行的入口点地址;

-C:指定压缩方式;

-n:指定镜像名;

-d:指定制作镜像的源文件。

P2010的BSP源码中,使用命令$(TOOLCHAIN_PREFIX)mkimage -A PowerPC -O linux -a 0x1000000 -e 0x1000000 -d $(OUTDIR)/bspp2010.bin -T kernel -C none -n "SylixOS" $(OUTDIR)/uImage来制作镜像文件uImage。

指定架构类型为PowerPC,操作系统类型为linux,内存加载地址为0x1000000,镜像运行地址为0x1000000,无压缩方式,镜像类型为kernel,镜像名为SylixOS,生成的文件名为uImage。

3. uboot使用bootm引导内核

由于P2010使用了Linux的fdt,所以需要使用bootm命令加载kernel和fdt。

P2010使用命令tftp 0x2000000 uImage;bootm 0x2000000 - 0xefe80000引导内核。通过tftp加载mkimage命令制作的镜像文件uImage到内存0x2000000地址处,然后通过bootm命令启动系统。其中0x2000000为tftp下载到内存中的镜像的地址,-表示不读取ramdisk,0xefe80000为fdt所在的内存地址。

bootm命令解析镜像文件格式,按Linux方式启动系统,获取到fdt内存地址。随后将其获取的fdt地址传入SylixOS。

4. 启动SylixOS

文件startup.s中,在SylixOS进入halPrimaryCpuMain函数之前,通过从FDT_REGISTER寄存器暂存dts内存地址,如图 4.1所示。

图 4.1 暂存FDT

然后将暂存的dts内存地址传入启动函数,即halPrimaryCpuMain函数中,如图 4.2所示,由此完成了uboot到SylixOS的fdt参数传递。

图 4.2 读取FDT

halPrimaryCpuMain函数根据获取到的fdt地址,获取设备信息,完成设备相关初始化工作。

原文地址:http://blog.51cto.com/12833848/2062073

时间: 2024-10-27 08:13:23

PowerPC P2010 SylixOS启动方式分析的相关文章

SylixOS PMON下启动方式

1. 适用范围 此文档适用于指导用户在PMON下设置SylixOS启动方式. 2. 系统启动方式 PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统.基于龙芯的系统采用PMON作为类BIOS兼boot loader,并在其基础上做了很多完善的工作,支持网络引导(TFTP.HTTP.NFS).磁盘引导和Flash引导. PMON默认从al设置的指示来启动内核(目前龙芯2K1000的开发板从al1环境变量启动).若需要修改启动参数,可在系统启动后按任意的非回车

spring boot应用启动原理分析

spring boot quick start 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server. 如果之前没有使用过spring boot可以通过下面的demo来感受下. 下面以这个工程为例,演示如何启动Spring boot项目: git clone [email protected]:hengyunabc/spring-boot-demo.git mvn spring-b

服务【启动方式】生命周期 通讯

基本概念 Service通常总是称之为"后台服务",其中"后台"一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件: 1.并不依赖于用户可视的UI界面(当然,这一条其实也不是绝对的,如前台Service就是与Notification界面结合使用的) 2.具有较长时间的运行特性 服务的两(三)种启动方式 1.startService方式启动服务 最核心的一句话:当Client

s5pv210的启动方式详解(一)

普通的PC机中: BIOS+硬盘来配合启动,见笔记“Linux基础知识->PC机的启动流程分析”. 嵌入式系统中: 可以用来作为启动的介质有:NorFlash.SRAM. 不能用来作为启动介质的有:NandFlash(数据和地址复用,需要发送命令才能读写数据,还要初始化寄存器).DRAM(需要初始化控制寄存器才能使用). 由此可以推出在嵌入式系统中,有如下几种启动方式: 1.NorFlash(存放bootloader)+NandFlash(存放操作系统内核镜像) 这种方式就是从NorFlash中

【转】Windows10下80端口被PID为4的System占用导致Apache无法启动的分析与解决方案

昨天刚更新了Windows10,总体上来说效果还是蛮不错的,然而今天在开启Apache服务器的时候却发现,Apache莫名其妙的打不开了,起初以为是权限的问题,于是使用管理员身份的控制台去调用命令net start Apache2.4,结果依然是无法打开.手动启动服务报错“Windows不能再本地计算机启动Apache,有关更多信息,查阅系统时间日志.如果这是非Microsoft服务,请与服务厂商联系,并参考特定服务错误代码1.”如下图所示: Windows不能再本地计算机启动Apache,有关

u-boot启动流程分析(1)_平台相关部分

转自:http://www.wowotech.net/u-boot/boot_flow_1.html 1. 前言 本文将结合u-boot的“board—>machine—>arch—>cpu”框架,介绍u-boot中平台相关部分的启动流程.并通过对启动流程的简单分析,掌握u-boot移植的基本方法. 注1:本文所使用的u-boot版本,是2016/4/23从u-boot官网(git://git.denx.de/u-boot.git)导入的一个快照,具体可参考“https://github

SylixOS 启动浅析

1.SylixOS启动概述 每个操作系统的启动都是多种多样,各有不同,SylixOS亦是如此,本文将浅析SylixOS启动层次和启动步骤两大方面. 2.SylixOS启动层次 在专用的嵌入式开发板上运行嵌入式操作系统(如SylixOS.Linux等)已经变得越来越流行,通常从一个嵌入式操作系统的软件角度来看,引导加载程序和操作系统内核便是两个重要的层次,下面就简单介绍关于SylixOS这两大层次的关键点. 2.1 层次一:Boot过程 一个裸机可执行程序的运行方法有两种: 1. 将程序代码入口放

开机启动流程分析

本节索引 在对系统启动流程进行分析的时候,我想你一定是对系统有了一定的了解.系统的启动目前来讲大都为串行接力的方式来启动.而所谓的并行方式的启动方式也是某一个阶段的并行.所以我按照系统启动的顺序来把文章连缀起来.     *  BIOS阶段     *  BootLoader阶段     *  内核阶段     *  用户层阶段 BIOS阶段 加载BIOS 当按下开机键后,系统会自动自动加载BIOS,加载的详细过程不再详述,感兴趣的读者可学习微机原理和或对汇编代码分析 BIOS从CMOS芯片中读

ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析

最近,因和队友一起做linux开发,因为用的不是同一版本linux(他用arch, 我用ubuntu),再配置上经常就不一样,就如这个inittab文件,于是深究了一下原因: Linux 内核启动 init ,init进程ID是1,是所有进程的父进程,所有进程由它控制. Ubuntu 的启动由upstart控制,自9.10后不再使用/etc/event.d目录的配置文件,改为/etc/init. 查看当前的运行级别,Ubuntu 桌面默认是2. ? 1 runlevel Ubuntu 的系统运行