NIOS中双CPU系统的构建
首先构建SOPC系统,先分别添加两个CPU,分别命名为CPU1和CPU2,设置如下图,其中CPU1运行VGA的乒乓游戏,CPU2运行音乐,这里为了简单,音乐用LED来表示。

这里CPU1选择是中等容量的CPU,其他后面的选项为默认,注意:Reset Vector从0X0开始,Exception Vector从0X20开始。由于笔者板子上带的是EPCS4,容量有限,所以这里都从SDRAM启动,也就是不能固化程序了。

这里CPU2选择是最小容量的CPU,其他后面的选项为默认,注意:Reset Vector从0X100000开始,Exception Vector从0X100020开始。因为VGA模块占用了大量的双口RAM,所以只能选择小容量的,选择中等容量编译不通过。为各自的CPU添加timer,其设置保证默认即可。

最后构建整个SOPC系统,VGA的IP核使用的是http://www.cnblogs.com/hunningtu/p/3151016.html,一定要注意左边的线的连接,cpu1_timer只能够让cpu1使用,cpu2_timer只能够使cpu2使用,注意自动添加进去的timer相互都有连接,有的部分可以去去掉。还有对外设的控制,如果想让两个cpu都控制同一个外设,需要将cpu1和cpu2的data_master接到外设的avalon_slave中去。将构建好的sopc系统,自动地址分配,自动IRQ分配。

刚开始参考了《系统晶片设计-使用NIOS》中推荐的SOPC构建方法见下图:
参考书中那种构建方法,主要的不同点在于中断的分配,书中的分配方法是每个CPU各有一套中断系统,但是笔者做了实验,还是自动分配之后的中断系统用起来不出问题。上图张cpu2也可以访问VGA模块,这种形式在DE2上平跑没事,偶尔会跑偏,因为程序本来就是打算只有cpu1来控制VGA,所以将左边的点去掉,只能让cpu1来控制vga比较稳定。
接下来NIOS构建软件系统,分别建立两个工程,单核程序是最后下载程序运行时,运行的是单个程序,如果是双核的话是每次运行两个程序


cpu那个选项是可以选择的,然后设置cpu1和cpu2的环境,注意只有CPU1有jtag,


还有设置一下Window--Preferences,这样双核下载程序不报错

最后的工程效果:

分别build,事先下载好sof文件,然后run--run..选中两个工程,run一下,两个cpu的程序都下载进去了。

实物图:

NIOS中双CPU系统的构建的更多相关文章
- 如何获取多核、多cpu系统中指定cpu的序列号
如何获取多核.多cpu系统中指定cpu的序列号作者:SkyJacker(转贴请保持完整并注明作者和出处)http://www.cnpack.orgCnPack IV QQ Group: 130970 ...
- 如何移除双系统mac中的windows系统
双系统 双系统即在电脑的不同分区中安装两个系统,两个系统不会互相影响,但是同时只能有一个系统正在运行,并且必须通过重启的方式来更换系统. 双系统一般由于解决对不同系统的需求,而且在电脑中直接安装系统也 ...
- linux top命令中各cpu占用率含义
linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...
- 嵌入式linux系统的构建
前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...
- (转)linux top命令中各cpu占用率含义及案例分析
原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...
- Windows内核中的CPU架构-6-中断门(32-Bit Interrupt Gate)
Windows内核中的CPU架构-6-中断门(32-Bit Interrupt Gate) 中断门和调用门类似,也是一种系统段.同样的它也可以用来提权. 中断门: 虽然中断门的段描述符如下: 但是中断 ...
- 如何设计一个高内聚低耦合的模块——MegEngine 中自定义 Op 系统的实践经验
作者:褚超群 | 旷视科技 MegEngine 架构师 背景介绍 在算法研究的过程中,算法同学们可能经常会尝试定义各种新的神经网络层(neural network layer),比如 Layer No ...
- Android中关于cpu/cpuset/schedtune的应用
Android中关于cpu/cpuset/schedtune的应用都是基于进程优先级的,根据不同优先级划分进程类型.AMS(ActivityManagerService)和PMS(PackageMan ...
- include包含头文件的语句中,双引号和尖括号的区别是什么?
include包含头文件的语句中,双引号和尖括号的区别是什么? #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...
随机推荐
- Java SE (5)之 线程使用
JAVA有两种线程的方法Thread 和Runnable 能够使用,这是为了弥补不能多继承的缺陷 首先是 Thread package com.sunzhiyan03; /* * 演示线程 * */ ...
- C#语法糖之第六篇: 泛型委托- Predicate<T>、Func<T>
今天继续分享泛型委托的Predicate<T>,上篇文章讲了Action委托,这个比Action委托功不一样的地方就是委托引用方法是Bool返回值的方法,Action为无返回值.首先我们看 ...
- 使用 C# 编程对RTF文档的支持
http://www.68design.net/Development/Aspnet/Basis-AspNet/26011-1.html
- 最新的C#SqlHelper 类苏飞修改版(转载)
/// <summary> /// 类说明:公共的数据库访问访问类 /// 编码日期:2010-4-22 /// 编 码 人:苏飞 /// 联系方式:361983679 Email:[ur ...
- javascript:console.log()是什么js库里的?
这个不是什么库的,这个是浏览器的函数,如果你使用firefox并且装有firebug插件,当使用console.log(……)时,会把括号内的字符串输出到控制台,当然,在IE中这个是没有的,要报错.相 ...
- 前端----表格的具体使用(jquery)
表格在页面布局中常常会用到.在不同的框架中有不同的使用方法,现在,我先总结下表格在jquery中具体使用: 1.增--insertAfter() function addTr(){ $("& ...
- java开发规范总结_代码编码规范
规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本原则 强制性原则: 1.字符串的拼加操作,必须使用StringBuilder: 2.try…catch的用法 try{ }c ...
- 【html】【5】html class属性css样式
必看参考: http://www.divcss5.com/css3-style/ http://www.jb51.net/css/142448.html http://www.w3school.com ...
- codevs 4511 信息传递(NOIP2015 day1 T2)
4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...
- Apache提示You don't have permission to access / on this server问题解决
测试时遇到将一本地目录设置为一apache的虚拟主机,在httpd-vhosts.conf文件中进行简单设置,然后在hosts文件中将访问地址指向本地,启动apache,进行访问,却出现了You do ...