如何为PowerPC编写一个裸机hello world程序

时间:2014-11-14 02:58:58

标签: powerpc bare-metal

我需要在裸机PowerPC系统上编写程序。作为没有OS / bootloarder的裸机编程的新手,我决定编写一个hello world程序来启动。我搜索了一些关于此的帖子,并找到了关于ARM的内容,如Beagleboard bare metal programmingHello world, bare metal Beagleboard

我不太清楚它们是否适合移植到PowerPC平台。我找不到PowerPC的初学者hello world示例。任何人都有PowerPC的裸机开发经验,没有bootloader或OS?

感谢。

2 个答案:

答案 0 :(得分:1)

我收集的尝试在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-metal-arm-using-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)构建newlib

$ 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
    ” 世界!”显示在控制台上

  • 命令进行调试以调试测试程序。

  • 按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命令关闭调试器和仿真器。

答案 1 :(得分:0)

首先,这是哪个CPU?其次,CPU并非一切。

如果没有起点,可以研究要为此代码编写的体系结构的BIOS。然后你可以编写一个引导扇区,为你提供所需的输出。请查看此页面以获取一些示例:Rough guide to assembly