OpenRisc-65-关于or1ksim模拟运行linux时如何访问本地文件的问题的分析与解决
来源:互联网 发布:阳春政府网络问政 编辑:程序博客网 时间:2024/05/16 10:18
引言
simulator,顾名思义,就是用来模拟硬件系统的,所以越接近实际情况越好。我们在实际下板测试时,启动linux之后,经常会访问主机上的文件。比如我们写完一个设备的driver,生成ko文件之后,最方便的加载方式就是用板子挂载主机上的nfs来实现对ko文件的访问(http://blog.csdn.net/rill_zhen/article/details/8700937)。那么,在用or1ksim 模拟linux运行时,linux启动之后,如何访问主机上的文件呢?
本小节就解决这个问题。
1,基本思路
和实际板子相同,仍然采用板子挂载主机的nfs,来实现or1ksim和主机的数据交换。由于or1ksim本身也是一个运行在主机上的软件,or1ksim中的eth也是虚拟的,所以如果想实现or1ksim挂载主机的nfs,首先要保障网络的畅通,网络包括虚拟和实体两种,板子挂载主机采用的是实体网络,or1ksim显然要使用虚拟网络。
这就需要建立主机的eth8(我的虚拟机的网络接口为eth8),到or1ksim的eth0(or1ksim运行linux之后的网络接口为eth0)的虚拟网络通路。
整体结构如下:
or1ksim.cfg:
section ethernet enabled = 1 baseaddr = 0x92000000 /* dma = 0 */ irq = 4 rtx_type = "tap" tap_dev = "tap0" /* tx_channel = 0 */ /* rx_channel = 1 */ rxfile = "eth0.rx" txfile = "eth0.tx" sockif = "eth0"end
所以,我们需要建立一个网桥(bridge),建立eth8的虚拟访问端口(tap0),一旦建立了tap0,or1ksim就可以通过访问tap0,来实现对eth8的访问,也就实现了对主机文件的访问。
2,实现步骤
了解了其工作机制之后,我们就需要搭建eth8到or1ksim之间的网桥了,步骤如下:
1>安装openvpn
sudo apt-get install openvpn
2>安装brctl
sudo apt-get install bridge-utils
3>创建bridge
在安装完上面两个tool之后,我们就可以创建or1ksim访问的tap0了,这一步or1ksim提供了两个shell脚本,一个用来创建,一个用来结束。
创建:
Usage: ./brstart-static.sh <username> <groupname> <bridge> <eth> <tap>
sudo ./brstart-static.sh openrisc openrisc bridge_rill eth8 tap0
这里需要主要的是or1ksim模拟运行linux时,其默认的ip地址是192.168.1.100,所以在创建tap0之前最好配置一下本地的ip地址:
sudo ifconfig eth8 192.168.1.120
结束:
Usage: ./brend-static.sh <bridge> <eth> <tap>
如果想结束前面创建的tap0,可通过如下命令实现:
sudo ./brend-static bridge_rill eth8 tap0
创建tap0之后效果如下图所示:
4>使能nfs server
在创建好tap0之后,我们还需要使能nfs server,以便or1ksim访问。
这一步我们大家比较熟悉了,如有疑问,请参考:http://blog.csdn.net/rill_zhen/article/details/8700937
5>用or1ksim运行linux
一切准备就绪,我们就可以运行linux了,命令如下:
sim -f ~/soc-design/linux/arch/openrisc/or1ksim.cfg ~/soc-design/linux/vmlinux
其实,这一步我们之前也介绍过,如有疑问请参考:http://blog.csdn.net/rill_zhen/article/details/8443882
6>测试验证
在linux启动之后,我们就可以挂载上面我们使能的nfs server了。
mkdir nfsmount -t nfs -o nolock 192.168.1.120:/home/openrisc/nfs nfs
这里需要注意的是如果挂载失败的话,可以ping一下,确保能ping通。
如果一切顺利,我们可以看到,我们已经可以挂载主机的nfs,并可以访问主机上的文件了。
如下图所示:
3,小结
本小节通过建立eth8到or1ksim之间的虚拟网桥,实现了simulator和host的数据交换,这样,如果向or1ksim中添加模块,编写对应的linux驱动并编译成ko文件之后,我们就可以通过这种方式访问并加载ko文件来测试添加的模块了。
Enjoy!
参考文献:
http://download.csdn.net/detail/rill_zhen/6924635
- OpenRisc-65-关于or1ksim模拟运行linux时如何访问本地文件的问题的分析与解决
- OpenRisc-33-关于用户空间程序直接访问ipcore问题的分析与解决
- OpenRisc-31-关于在设计具有DMA功能的ipcore时的虚实地址转换问题的分析与解决
- 解决本地文件上传时fakepath的问题
- OpenRisc-37-OpenRISC的CPU&core的整体架构分析
- Flex解决调试时无法访问或限制访问本地文件问题
- 关于MySQL数据库连接超时问题的分析与解决
- 关于flex读取本地文件的问题
- OpenRisc-28-ORPSoC的clock子系统分析
- OpenRisc-29-ORPSoC的debug子系统分析
- OpenRisc-40-or1200的MMU模块分析
- OpenRisc-41-or1200的cache模块分析
- OpenRisc-42-or1200的ALU模块分析
- OpenRisc-43-or1200的IF模块分析
- OpenRisc-44-or1200的pipeline整体分析
- OpenRisc-45-or1200的ID模块分析
- OpenRisc-46-or1200的MA模块分析
- OpenRisc-47-or1200的WB模块分析
- Effective C++读书笔记(7)
- 构造一个换行字符的字符串
- Ubuntu通过PPTP协议使用VPN
- .net 如何读取共享文件 (UNC)
- 求出所有正整数m,n
- OpenRisc-65-关于or1ksim模拟运行linux时如何访问本地文件的问题的分析与解决
- Exception starting filter struts2 java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
- java多线程实现实例
- 鲁迅生平及其作品简介
- Linux中find常见用法示例
- 快乐就是代码跟得上你的节奏
- 大数乘法的简单实现
- Binary Tree Maximum Path Sum
- 第一篇博客