首页 > 其他 > 详细

O_board-2-运行第一个裸机程序

时间:2014-02-05 01:23:51      阅读:405      评论:0      收藏:0      [点我收藏+]

引言

在经过上一篇“快速开始”(http://blog.csdn.net/rill_zhen/article/details/18714643)时,我们已经确认O_board可以运行linux,那么怎么运行裸机程序呢?

本小节,我们将通过在O_board上运行一个简单的裸机程序(从串口打印‘hello Oboard!’),来进一步加深对O_board的了解和掌握。


1,基本思想

“麻雀虽小五脏俱全”,虽然是一个最简单的程序,却涉及到了包括orpsoc的RTL工程的综合,jtag下载,or32-elf-gdb的调试等很多方面。其大体思想如下:

首先,我们需要用quartusII对orpsoc的RTL工程进行综合,得到svf文件。

其次,使用Urjtag将scf文件load到O_board的FPGA芯片内部。

第三,运行or_debug_proxy程序,建立RSP server。

第四,运行or32-elf-gdb在与RSP server建立连接之后,下载裸机程序。

第五,打开picocom,查看串口输出。


2,针对O_board的orpsoc的RTL综合

O_board目前使用的quartusII的工程,我已准备好,可直接下载使用,请参考:

http://download.csdn.net/detail/rill_zhen/6897475


3,编写并编译裸机程序

1>编写C语言代码

hello_Oboard.c:

#include <stdio.h>

int main()
{
	printf("hello Oboard!\n");
	
	return 0;
}


2>编译生成hello_Oboard


or32-elf-gcc -mboard=ordb2a hello_Oboard.c -o hello_Oboard


4,配置orpsoc_top.svf到O_board

这一步大家都很熟悉了,就是将orpsoc_top.svf文件复制到~/fpga_dev_board/ordb2a-ep4ce22/目录下之后,用Urjtag将svf文件load到FPGA内部。当然,首先要用USB线将O_board左上角的那个USB口与PC的USB2.0口相连。


jtag ./program_fpga.jtag
如下图所示:
bubuko.com,布布扣



5,检测jtag并建立RSP server

在将orpsoc_top.svf文件配置到O_board之后,FPGA芯片现在就是ORPSoC了,我们这时就可以用or_debug_proxy检测板子上的jtag了,如果jtag没问题的话,就需要建立用来和gdb通信的RSP server了,这些工作可以通过下面的命令实现:

其中‘55555’是RSP server的端口号。

/opt/or_debug_proxy/bin/or_debug_proxy -r 55555

bubuko.com,布布扣


6,软件的下载

在建立完RSP server之后,我们就可以用or32-elf-gdb 来讲我们前面编译的程序下载到O_board的内存里并运行它了。

or32-elf-gdb
target remote:55555
file ~/O_board/hello_Oboard
load
spr npc 0x100


如下图所示:

bubuko.com,布布扣

7,打开串口工具

在将软件load到内存之后,在运行程序之前,我们需要先运行串口工具,可用的串口工具有很多(minicom,picocom,hyperterminal),这里使用picocom。


picocom --b 115200 --p n --d 8 --f xon /dev/ttyUSB2

打开串口之后,这是在or32-elf-gdb窗口执行‘c’命令运行程序,我们就可以看到O_board从串口打印的“hello Oboard!”,如下图所示:

bubuko.com,布布扣



8,小结

本小节,我们在O_board上运行了一个最简单的裸机程序,其实,本小节我们编写的裸机程序(hello_Oboard.c)并不是整个工程的全部,这里面我们调用了C语言的库函数‘printf’,所以还有很多C库的问题已经被编译器处理了,此外还有串口控制器的初始化工作也隐藏起来了。

不依靠任何库函数的裸机程序,我们之前曾经介绍过了,这里不再赘述,如有疑问,请参考:

http://download.csdn.net/detail/rill_zhen/6647119

里面有完整的展示例子。


Enjoy!


O_board-2-运行第一个裸机程序

原文:http://blog.csdn.net/rill_zhen/article/details/18924707

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!