4

我需要在裸机 PowerPC 系统上编写一个程序。作为一个没有 OS/bootloader 的裸机编程新手,我决定编写一个 hello world 程序来开始。我在谷歌上搜索了一些关于这个的帖子,发现了一些关于 ARM 的信息,比如Beagleboard bare metal programmingHello world, bare metal Beagleboard

我不太清楚它们是否适合移植到 PowerPC 平台。我找不到适用于初学者的 PowerPC 的 hello world 示例。任何人都有 PowerPC 裸机开发的经验,没有引导加载程序或操作系统?

谢谢。

4

2 回答 2

4

我为尝试在 Qemu 中启动裸机 PPC 系统而收集的随机注释/链接 在 ARM 平台上进行嵌入式裸机编程的示例很多,但 PowerPC 示例似乎很少。

一些ARM链接:

http://opensourceforu.com/2011/07/qemu-for-embedded-systems-development-part-2/ https://balau82.wordpress.com/2010/02/28/hello-world-for-bare-金属臂使用 qemu/

构建 GNU GCC 交叉编译器

1) 需要的包

binutils https://ftp.gnu.org/gnu/binutils/

海合会https://ftp.gnu.org/gnu/gcc/gcc-4.1.1/

newlib ftp://sourceware.org/pub/newlib/index.html

GDB http://www.gnu.org/software/gdb/gdb.html

2)设置环境变量

$ export TARGET=powerpc-eabi
$ export PREFIX=/usr/local/$TARGET
$ export PATH=$PATH:$PREFIX/bin

3)构建binutils

$ tar xjfv binutils-2.17.tar.bz2
$ mkdir build-binutils
$ cd build-binutils
$ ../binutils-2.17/configure --target=$TARGET --prefix=$PREFIX
$ make all
$ make install

4) 构建引导 GCC

$ tar xjfv gcc-4.1.1.tar.bz2
$ mkdir build-gcc
$ cd build-gcc
$ ../gcc-4.1.1/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib  --with-gnu-as --with-gnu-ld
$ make all-gcc
$ make install-gcc

5) 构建新库

$ tar xzfv newlib-1.14.0.tar.gz 
$ mkdir build-newlib
$ cd build-newlib
$ ../newlib-1.14.0/configure --target=$TARGET --prefix=$PREFIX
$ make all
$ make install

6) 使用 newlib 再次构建 GCC

$ cd build-gcc
$ ../gcc-4.1.1/configure --target=$TARGET --prefix=$PREFIX --with-newlib --with-gnu-as --with-gnu-ld --disable-shared --disable-libssp
$ make all
$ make install

7) 构建 GDB

$ tar xjfv gdb-6.3.tar.bz2  
$ mkdir build-gdb
$ cd build-gdb
$ ../gdb-6.3/configure --target=$TARGET --prefix=$PREFIX --enable-sim-powerpc --enable-sim-stdio
$ make all
$ make install

示例裸机你好世界! https://github.com/ara4711/ppc_hw

  • 在makefile更改中,PREFIX=$(PROC)-$(TYPE)- 到 PREFIX=/usr/local/powerpc-eabi/bin/$(PROC)-$(TYPE)-

  • 在 makefile 中,将 qemu-system-ppc 的路径提供给QEMU变量。

  • 命令make将生成 test.bin。

  • 命令make run将加载二进制文件,并
    在控制台上显示打印“Test Hello world!”

  • 命令make debug调试测试程序。

  • 按 Ctrl+a 和 x 终止 QEMU

QEMU 使用 TCP 连接实现 gdb 连接器。为此,请运行 make debug

此命令在执行任何来宾代码之前冻结系统并等待 TCP 端口 1234 上的连接。从另一个终端运行 powerpc-eabi-gdb 并输入命令:

target remote localhost:1234
file test.elf

这会连接到 QEMU 系统并加载测试程序的调试符号,其二进制映像已经加载到系统内存中。从那里,可以使用 continue 命令运行程序,单步执行程序并对其进行一般调试。gdb 中的 exit 命令会关闭调试器和模拟器。

于 2019-11-14T09:19:38.143 回答
1

首先,这是哪个CPU?其次,CPU 不是万能的。

如果您没有起点,则可以研究要为其编写此代码的体系结构的 BIOS。然后,您可以编写一个引导扇区,为您提供所需的输出。查看此页面以获取一些示例:组装粗略指南

于 2014-11-14T03:06:40.910 回答