开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

Chao/SLOF

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
master
分支 (1)
标签 (80)
master
qemu-slof-20200513
qemu-slof-20200327
qemu-slof-20200317
qemu-slof-20200312
qemu-slof-20200221
qemu-slof-20200217
qemu-slof-20191217
qemu-slof-20191209
qemu-slof-20191206
qemu-slof-20191022
qemu-slof-20190911
qemu-slof-20190827
qemu-slof-20190719
qemu-slof-20190703
qemu-slof-20190114
qemu-slof-20180702
qemu-slof-20180621
qemu-slof-20171214
qemu-slof-20171412
qemu-slof-20170724
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
贡献代码
同步代码
对比差异 通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull
Request,合入后将完成同步
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause
Slimline Open Firmware - SLOF
Copyright (C) 2004, 2012 IBM Corporation
Index
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.0 Introduction to Open Firmware
2.0 Using the source code
2.1 Build process
2.2 Overview of the source code
2.4 Extending the Forth engine
3.0 Limitations
4.0 Submitting patches
5.0 Coding style
1.0 Introduction to Slimline Open Firmware
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
The IEEE Standard 1275-1994 [1], Standard for Boot (Initialization Configura-
tion) Firmware, Core Requirements and Practices, was the first non-proprietary
open standard for boot firmware that is usable on different processors and
buses. Firmware which complies with this standard (also known as Open Firmware)
includes a processor-independent device interface that allows add-in devices
to identify itself and to supply a single boot driver that can be used,
unchanged, on any CPU. In addition, Open Firmware includes a user interface
with powerful scripting and debugging support and a client interface that
allows an operating system and its loaders to use Open Firmware services
during the configuration and initialization process. Open Firmware stores
information about the hardware in a tree structure called the
"device tree". This device tree supports multiple interconnected system
buses and offers a framework for "plug and play"-type auto configuration
across different buses. It was designed to support a variety of different
processor Instruction Set Architectures (ISAs) and buses.
The full documentation of this Standard can be found in [1].
Slimline Open Firmware (SLOF) is now an implementation of the IEEE 1275
standard that is available under a BSD-style license. Please see the file
LICENSE for details.
2.0 Using the source code
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This version of SLOF currently supports two major platforms ("boards" in the
SLOF jargon):
- js2x : The PowerPC 970 based systems JS20, JS21 and the PowerStation
- qemu : Used as partition firmware for pseries machines running on KVM/QEMU
The following sections will give you a short introduction about how to compile
and improve the source code.
Please read the file INSTALL for details about how to install the firmware on
your target system.
2.1 Build process
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 To build SLOF you need:
 - Recent GNU tools, configured for powerpc64-linux
 - GCC: 3.3.3 and newer are known to work
 - Binutils: use a version as new as possible
 - Subversion (for retrieving the x86 emulator)
 - set the CROSS variable
 - something like export CROSS="powerpc64-unknown-linux-gnu-"
 when using a cross compiler
 or
 - export CROSS=""
 when using a native compiler
 - For building SLOF for the PowerStation, it is necessary to
 download a x86 emulator which is used to execute the BIOS
 of VGA card; to download the x86 emulator following steps are
 required:
 - cd other-licence/x86emu/
 - ./x86emu_download.sh # this downloads the x86 emulator sources
 - cd -
 - Now you can compile the firmware.
 - For building SLOF for JS20, JS21 or the PowerStation, type:
 make js2x
 You also might want to build the takeover executable by typing:
 make -C board-js2x takeover
 - For building SLOF as the partition firmware for KVM/QEMU, type:
 make qemu
 The resulting ROM image "boot_rom.bin" can then be found in the main
 directory.
2.2 Overview of the source code
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
The SLOF source code is structured into the following directories:
- llfw : The Low-Level Firmware - this part is platform-specific firmware
 that is responsible to boot the system from the reset vector to a
 state where it is possible to run the Open Firmware Forth engine
 (i.e. it sets up the necessary CPU registers, intializes the memory,
 does some board-specific hardware configuration, etc.)
- slof : The code for the Open Firmware environment, including the Forth
 engine (called "Paflof") and the necessary Forth source files.
- rtas : The Run-Time Abstraction Services, which can be used by the operating
 system to access certain hardware without knowing the details.
 See [2] for a description of these services.
- clients : Code that runs on top of the Open Firmware client interface.
 Currently, there are two clients:
 - net-snk : Used for network bootloading (a TFTP client)
 - takeover : A separate binary that can be used for bootstrapping
 SLOF on a JS20/JS21 (see FlashingSLOF.pdf for details).
- drivers : Driver code for various hardware (currently only NIC drivers).
- lib : Libraries with common code.
- romfs / tools : Tools that are required for building the firmware image.
- board-* : The board directories contain all the code that is unique to the
 corresponding platform.
2.3 The Open Firmware engine
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Open Firmware (OF) is based on the programming language Forth. 
SLOF use Paflof as the Forth engine, which was originally developed by
Segher Boessenkool. Most parts of the Forth engine are implemented in C, by
using GNU extensions of ANSI C, (e.g. assigned goto, often misnamed "computed
goto"), resulting in a very efficient yet still quite portable engine. 
The basic Forth words, so-called primitives, are implemented with 
a set of C macros. A set of .in and .code files are provided, which
define the semantic of the Forth primitives. A Perl script translates 
these files into valid C code, which will be compiled into the Forth engine.
The complete Forth system composes of the basic Forth primitives and
a set of Forth words, which are compiled during the start of the Forth
system.
Example:
Forth primitive 'dup'
	dup ( a -- a a) \ Duplicate top of stack element
prim.in:
	cod(DUP)
prim.code:
	PRIM(DUP) cell x = TOS; PUSH; TOS = x; MIRP
Generated code:
static cell xt_DUP[] = { { .a = xt_DOTICK }, { .c = "000円003円DUP" },
	 { .a = &&code_DUP }, };
code_DUP: { asm("#### " "DUP"); void *w = (cfa = (++ip)->a)->a;
	 cell x = (*dp); dp++; (*dp) = x; goto *w; }
Without going into detail, it can be seen, that the data stack is
implemented in C as an array of cells, where dp is the pointer to the top of
stack. 
For the implementation of the Open Firmware, most of the code is added as
Forth code and bound to the engine. Also the system vectors for all kinds of
exceptions will be part of the image. Additionally a secondary boot-loader
or any other client application can be bound to the code as payload, 
e.g. diagnostics and test programs.
The Open Firmware image will be put together by the build 
process, with a loader at the start of the image. This loader
is called by Low Level Firmware and loads at boot time the Open 
Firmware to it's location in memory (see 1.3 Load process). Additionally 
a secondary boot loader or any other client application can be bound
to the code as payload.
The Low Level Firmware (LLFW) is responsible for setting up the 
system in an initial state. This task includes the setup of the 
CPUs, the system memory and all the buses as well as the serial port
itself.
2.4 Extending the Forth engine
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In the following paragraphs it will be shown how to add
new primitive words (i.e., words implemented not by building
pre-existing Forth words together, but instead implemented in
C or assembler). With this, it is possible to adapt SLOF to
the specific needs of different hardware and architectures.
To add primitives:
 For a new primitive, following steps have to be done:
 + Definition of primitive name in <arch>.in
 - cod(ABC) defines primitive ABC
 You can also use the following in a .in file, see existing
 code for how to use these:
 - con(ABC) defines constant ABC 
 - col(ABC) defines colon definition ABC
 - dfr(ABC) defines defer definition ABC
 + Definition of the primitives effects in <arch>.code
 - PRIM(ABC) ... MIRP
 The code for the primitive body is any C-code. With
 the macros of prim.code the data and return stack of 
 the Forth engine can be appropriately manipulated.
3.0 Limitations of this package
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 On a JS20 the memory setup is very static and therefore there are
 only very few combinations of memory DIMM placement actually work.
 Known booting configurations:
 * 4x 256 MB (filling all slots) -- only "0.5 GB" reported.
 * 2x 1 GB, slots 3/4 -- only "0.5 GB" reported.
 Known failing configurations
 * 2x 256 MB, slots 3/4
 * 2x 256 MB, slots 1/2
 On a JS20 SLOF wil always report 0.5 GB even if there is much more memory
 available.
 On a JS21 all memory configurations should work.
4.0 Submitting patches
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Patches for SLOF should be made against https://github.com/aik/SLOF,
the master branch and posted to slof@lists.ozlabs.org.
The patches must be signed using "Signed-off-by" tag with a real name to
confirm that you certify the Developer Certificate of Origin Version 1.1,
see [3] for details.
5.0 Coding style
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
New C code submitted to SLOF should follow the coding style guidelines
for the Linux kernel [4] with the following exceptions:
- in the event that you require a specific width, use a standard type
 like int32_t, uint32_t, uint64_t, etc. Don't use Linux kernel internal
 types like u32, __u32 or __le32.
New Forth code should use 4 space indentations and no tabs. Patches for
the old code should keep the existing style which usually is
3 space indentation.
New assembly code submitted to SLOF should follow the coding style
guidelines for the Linux kernel [4], i.e. indent with tabs, not with spaces.
Documentation
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[1] IEEE 1275-1994 Standard, Standard for Boot (Initialization Configuration)
 Firmware: Core Requirements and Practices
[2] PAPR Standard, Power.org(TM) Standard for Power Architecture(R) Platform
 Requirements (Workstation, Server), Version 2.4, December 7, 2009
[3] Developer Certificate of Origin Version 1.1
 http://developercertificate.org/
[4] Linux kernel coding style
 https://github.com/torvalds/linux/blob/master/Documentation/CodingStyle
Copyright (c) 2004, 2008 IBM Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of IBM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

暂无描述
暂无标签
README
BSD-3-Clause
使用 BSD-3-Clause 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ccbrucer/SLOF.git
git@gitee.com:ccbrucer/SLOF.git
ccbrucer
SLOF
SLOF
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /