首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为PowerPC编写裸机hello world程序

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

Stack Overflow用户
提问于 2014-11-14 10:58:58
回答 2查看 1.7K关注 0票数 4

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

我不太清楚它们是否适合移植到PowerPC平台。我找不到PowerPC为初学者提供的hello world示例。有没有在没有引导加载程序或操作系统的情况下进行PowerPC裸机开发的经验?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-11-14 17:19:38

为了在Qemu中引导裸机PPC系统,我收集了一些随机注释/链接。在ARM平台上进行嵌入式裸机编程的例子比比皆是,但PowerPC的例子似乎很少。

一些手臂链接:

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/

GCC 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)设置环境变量

代码语言:javascript
运行
复制
$ export TARGET=powerpc-eabi
$ export PREFIX=/usr/local/$TARGET
$ export PATH=$PATH:$PREFIX/bin

3)构建binutils

代码语言:javascript
运行
复制
$ 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)构建bootstrap GCC

代码语言:javascript
运行
复制
$ 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)构建新

代码语言:javascript
运行
复制
$ 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

代码语言:javascript
运行
复制
$ 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

代码语言:javascript
运行
复制
$ 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

生成文件中的系统更改,类型(PROC)-$(

  • )- to PREFIX=/usr/local/powerpc-eabi/bin/$(PROC)-$(TYPE)-

  • In生成文件将QEMU -

  • -ppc的路径提供给QEMU variable.

  • Command test.bin.

  • Command 将生成测试make run将加载二进制文件并打印“Test Hello

program.

  • Press!“显示在console

  • Command make debug上,用于调试测试Ctrl+a,x用于终止QEMU

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

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

代码语言:javascript
运行
复制
target remote localhost:1234
file test.elf

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

票数 4
EN

Stack Overflow用户

发布于 2014-11-14 11:06:41

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26922186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档