OpenRisc入门(4)-ORSoC跑linux实验

引言

光说不练假把式,本小节就用官方的FPGA开发板跑一下linux。

4.1,  实验准备

1》  orsoc的工具链环境(gcc,gdb,jtag),搭建过程见上一篇blog:

http://blog.csdn.net/rill_zhen/article/details/8443882

2》  ep4ce22的FPGA开发板(€:149)

3》  micro-USB连接线

4.2,  实验步骤

0》连线。将板子左上方的那个USB口与PC相连。

1》  烧写RTL综合后的电路逻辑文件(也可自己用quartus综合)

$ cd /home/openrisc

$ jtag ./program_fpga.jtag

2》开启gdbdebugger和OR processor间的代理服务

$ /opt/or_debug_proxy/bin/or_debug_proxy –r 55555

3》  (再开一个终端)打开一个串口终端

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

4》  (再开一个终端)开启gdb来下载vmlinux镜像

$ cd ~/soc-design/linux

$ make ARCH=openrisc defconfig

$ make ARCH=openrisc

$ or32-elf-gdb

(gdb) target remote :55555

(gdb) file ./vmlinux

Answer ‘y’

(gdb) load

(gdb) spr npc 0x100

(gdb) c

5》此时,看picocom那个终端,可以看到linux的启动过程:如下图:

时间: 2024-10-18 10:46:55

OpenRisc入门(4)-ORSoC跑linux实验的相关文章

OpenRisc入门(6)-wishbone实验

引言 学习和研究OR,wishbone是绕不开的问题.本小节就做一个简单的实验,进一步加深对wishbone总线的理解. 6.1 总线timing 请参考官方spec,链接如下: http://opencores.org/opencores,wishbone 附: http://blog.csdn.net/column/details/ce123-wishbone.html 6.2 实验内容 一个master,一个slave,master通过wishbone传递数据(两个操作数)给slave,s

OpenRisc入门(25) ORPSoC,openrisc相关资料汇总

引言 网络上关于openrisc的资料很多,除了官网之外,还有很多有价值的资料值得借鉴, 但是,这些资料比较分散,查找起来很是不易,为了能方便自己,也方便别人, 本小节就把我遇到的不错的网址或者资料list了一下. 如果哪位还有不错的资料,可以写到评论里面,我会及时的更新本文档,方便更多人查找. 国内我们有一个qq群,可以参与讨论,相互学习与交流: 277505520 一, 本文档link: http://blog.csdn.net/rill_zhen/article/details/88827

OpenRisc入门(26) openrisc中断实验

引言 中断(异常)系统,可以说是计算机体系结构重要的组成部分,也是最复杂的部分. 现在的很多外设,都提供中断处理机制,来减少CPU的一直占用时间. 本小节就通过一个简单的例子,来说明openrisc的中断机制的使用方法. 1,功能简介 本小节实现一个wishbone slave模块(mycore),此模块接收其对应的linux driver的指令,产生中断信号. linux driver注册中断处理程序,记录中断发生的次数. 本实验中,在模块加载时(insmod ip_mkg.ko)时触发一次中

OpenRisc入门(18) or1200下linux简单gpio字符设备驱动

前几次我们把linux给boot通了,这所谓的移植也只是个名头而且,真正的移植有时间可以去看看\arch\openrisc下的移植代码,强调我现在也是在用而已,按我的理解的话不是真正意义的开发. 那就继续先用这吧,好,现在回来<or1200软件环境搭建>的过程来,那时我们在虚拟机cross compile了lrz和lsz文件,这是因为什么,因为现在我们只是boot通了内核,除了UART这个外设之外我们在内核或模块程序中有关于ipcores的驱动,所以,我们想在这个最简单的内核上调试程序的时,至

OpenRisc入门(22)添加自己的master (DMA-like)ipcore到ORSoC并测试

引言 之前写了一个wishbone接口的slave,work的很好. 但是要想实现一个功能完成的ipcore,必然要有master接口. 这次就写一个ipcore(mycore),既包含slave,又包含master. 一个具有类似DMA功能的ip core. 另:本小节中省略了一些virtualbox下的操作细节,请参考上一篇文章: http://blog.csdn.net/rill_zhen/article/details/8722664 1,控制流程 1>mycore的linux下的dri

OpenRisc入门(21) 添加自己的slave IP core到ORSoC并测试

本小节实现了一个简单的ipcore:mycore.她的功能也非常简单,实现一个加法运算. master(CPU)设置mycore的第一个寄存器,和第二个寄存器,mycore将两个寄存器的值相加放在第三个寄存器中,CPU读第三个寄存器来获得计算结果. 这次试验可以看到mycore计算1+2=3. ok let's go! 21.1 ip core的编码和修改 要想在ORSoC里面加入自己的ipcore(本小节以'mycore'为例),需要修改三个文件,增加一个文件. 三个需要修改的文件为:arbi

OpenRisc入门(20) or1200下linux的i2c(二)

上次记得是基于linux系统自带的i2c-ocores.c文件接口写了简单的测试程序,这次就基于opencores社区上大虾写好的i2c controller总线驱动来做一下分析,这个总线驱动在openrisc-3.1\drivers\i2c\busses目录下~这个总线驱动是基于Richard Herveille编写的i2c-master的ipcore,在opencores社区上可以下到这份RTL的代码,然后打开源码里面的i2c_specs说明文档看看这个ipcores的相关操作. openr

OpenRisc入门(11)-编写ipcore 的linux driver,然后run helloworld

引言 我觉得ORPSoC的关键在于'P',即programmable.SoC的有优势就在于只要是满足总线interface的ip,可以实现plug & work. 所以一旦完成前面的工作之后,添加属于自己的ip core到ORPSoC的wishbone总线上,并编写它对应的驱动就成为非常关键的一步. 本小节就做一个简单的例子,来说明需要完成的工作步骤及其中遇到的问题和对应的解决方法. 11.1 编写wishbone为interface的ip core(ip_mkg) 1>这一步请参考: ht

OpenRisc入门(5)-用quartus对ORSoC的RTL进行综合

引言 书上学来终觉浅,绝知此事要躬行.前面几小节的内容都是基于现成的东西展开的,用的是现成的综合好的svf文件,ormon也是事先编译好的,linux也是移植好的,这些都是opencores给咱们弄好的.当然,也不是说用现成的没有意义,意义是很大的,即有了一个直观的,直接的感受.如果想要进一步研究,就需要自己动手修改代码了,在修改之前,有一个环节需要做,就是先把现成的变成自己的,即要能把现有的源码,经过编译或者综合生成可以work的文件. 本小节就先把svf变成自己的,如题. 5.1 安装qua