Max10试用之hello world
0赞拿到板子有一段时间了,一直没有时间试用写心得。趁着周末,赶快来试用,并写写心得。
因为板子上没有什么外设,所以就先简单的构建nios2系统,并输出hello world。
用的软件是quartus14.1的web版本。。因为max10要quartus14版本才支持,而且quartus14版本要64位系统才能装的,这里大家要注意一下。
首先新建工程,这里就不多说了,比较简单。
建好工程后,就是这样的一个界面。。和以前版本的界面没有什么区别。
然后打开qsys,可以在tool菜单下打开,或者直接快捷面板上
就打开qsys了。
界面就这个样子了。
可以看到,默认有个时钟,因为一个嵌入式系统肯定是需要一个时钟的。
下面就是关键了,首先添加一个nios2软核IP。
选择上面那个
这个是配置界面,这里就把nios2类型选择为nios2/s型。其他都不更改,直接完成。
然后界面就这个样子了。。一个nios2的IP添加进来了,但是没有连线,连线一会在连。
下面的提示框有错误和警告,这些先都不用管,因为我们还没有构建好系统。
接着添加rom和ram,rom用来存储指令,ram用来存储数据。不过这里,是把一个比较大的ram来当rom和ram的。
选择上面这个。这个ram是芯片内部的block ram。大小可以从芯片手册看到。我之前看过是47K。
就进入到ram的配置界面了。
选择类型为RAM,因为我们是要这ram一部分当ram的。位宽选择32位,因为nios2是32位系统。大小选择10240byte,也就是10K。没有超出47K范围。其他都默认。
这下,我们的ram也添加进去了。
接着要添加system ID。
选择上面这个。
配置界面也很简单,就是填写systemID是多少,这里可以随便填写。
然后我们的systemID也添加进来了。
最后添加jtag-uart。这个可是很好的一个东西,相当于串口,可以随时打印信息。有了这个,我们才能实现hello world。
选择上面这个。
配置都不用管,直接默认。
这下,我们的系统所需要的IP就添加完成了。然后就开始连线了。。
连线也比较简单,图中不是有很多小圆点,黑色就表示连接,白色就表示不连接。那我们就只要去点对应的小圆点就行了。但是怎么点,因为不知道连线是怎么连的。
我们先对各个IP重命名下。
主要看三个东西,一个时钟,一个数据总线,一个指令总线。
时钟每个模块都是需要的。但是数据总线和指令总线就不一定了。有的只是要传输数据,有的只传输指令,有的两个都传输。
这里有个规则,如果是存储类模块,那么两个都连,其他都只连数据总线。
所以这下,就好连线了。
首先连时钟
因为大家都共用一个时钟,所以时钟都是连在一起的。
然后连数据总线。
把CPU的数据总线输出和其他模块的数据总线输入连在一起。
因为这里只有一个存储器设备,所以就将CPU的指令总线输出和ram的指令总线输入连在一起就行了。
这样,就大致构建好了系统。
修改一下时钟,因为我们的系统是跑在50M时钟上的,所以需要修改时钟频率为50M.
接着分配地址,因为现在模块的地址都是一样的,这当然是不行的,需要为他们分配唯一的地址,这样CPU才能唯一的访问到外设。
软件就自动的为我们分配好了地址。
然后分配中断,因为这里有有一个jtag-uart的中断。要为他分配一个中断号。
就在jtag-uart的irq后面的那个白色点那里点一些,分配一个中断号。
最后,在设置下CPU的复位地址和异常地址。
都选择ram。
最后,连接复位信号。因为整个系统都共用一个复位信号,所以,让软件自动连。
这下,我们的系统就构建好了
可以看到,错误没有了。最后保存下。
然后生成。
点击finish,点对话框中的yes。
完成点击finish。
这样,我们的nios2系统就构建好了。
在ruartus中新建一个原理图。
然后分配管脚,全编译。。。
编译的时候,会出错。。。这个时候,要改一些东西。。。
打开之前建立的qsys,
打开ram的配置界面。
把初始化的第一个勾去掉。
然后在quartus中,
在device的device and options 中的configuration中。
把configuration改为图上的那个。
这个时候就可以编译了。
编译生成的sof文件下到板子中。
然后开始软件设计了
选择nios2 SBT。
把目录指到目前工程目录
新建一个bsp工程。
选择目录下的.sopcinfo,这个文件包含了硬件的一些信息。
工程名字填写hello_world。模板选择hello world。。工程的名字不能有中文和空格。
最后finish。
编译工程。
编译完成后
然后就可以运行了。
等一会,就可以从nios2 控制台收到hello world了。。
注意:
1、 ram的大小不能太大,不能超过芯片的ram的大小。
2、 ram配置的时候,要把初始化的选项勾给去掉,不然编译会出错
3、 编译之前需要更改device里面的cinfiguration里面的设置。不然编译会报错
4、 因为用的是nios2,web版对这个IP是限制的,生成的sof文件是有时间限制的,下载的时候,会弹出一个框,这个框不能取消掉。
5、 在nois2 SBT中,生成的代码比较大,编译会出现报错,这个时候更改一些设置。
把enable_small_c_library和enable_reduced_device_drivers选上。在编译。