|
NiosII/FPGA学习板
软件开发流程
|
1. |
这个实验中,需要用到前一实验中产生的 nios_II_lab.sof 文件和 niosII.ptf 文件。使用 Quartus II6.0 软件打开前一实验创建的 Project 。通用 Tools => Programmer 菜单命令,启动 Quartus II Programmer ,nios_II_lab.sof 文件会显示在文件窗口中。 |
2. |
选中 Program/Configure 选项,点击 Start Programming 按钮,将其下载到开发板上。 |
3. |
通过 Start => program => Altera => Nios II EDS 6.0 => 菜单命令启动 Nios II6.0 集成开发工具。 |
4. |
通过 File => New => Project 启动新工程向导。 选择 C/C++ Application ,点击 Next 按钮继续。 |
5. |
给新项目取名 nios_II_lab 。在 Target Hardware 栏目中,浏览到前一实验中由 SOPC Builder 创建的系统描述文件:niosII.ptf ,选择并加入。在左手边的 Template 窗口中选中 Blank Project 模板,如下图所示。 |
6. |
点击 Next 按钮进入下一页,选中 Creating a new library ,点击 Finish 按钮。 |
7. |
打开 Windows 的文件浏览器,浏览到 altera_trn\nios_II_lab\software 文件夹,复制 simple.c 文件。点击左手边窗口的 Navigator 表头,选中刚才所建的 nios_II_lab 工程,点击右键,在弹出菜单中点击 Paste 命令。 |
8. |
回到 C/C++ Project 页,选中 nios_II_lab 项目,点击右键,在弹出菜单中点击 Refresh 命令,使系统确认刚才的更改。 |
9. |
选中 nios_II_lab 项目,点击右键,在弹出菜单中点击 System Library Properties 命令。确认 stdout 、stderr 、stdin 设置为 jtag_uart ,同时,确认 Periodic system timer 设置为 SYS_CLK_TIMER 。对于 Program Memory 、Read-only data Memory 、Read/write memory 、Heap memory 、Stack Memory 几个参数,均设为 sdram 。点击 OK 按钮确认。 |
10. |
到此,我们已经建立了一个新项目,并且设定程序运行在 sdram 中,使用 JTAG UART 作为标准终端。选中该项目,点击右键,在弹出菜单中点击 Build Project 命令,进行编译。 |
11. |
编译完成之后,选中该项目,在右键菜单中选项择 Run As=>Nios II Hardware 命令,将其运行在开发板上。 |
|
注1: 如果系统提示Jtag 设备无效,请通过 Run => Run… 进入设置对话框,从 Target Connection 页中选定所使用的下载线类型。 |
|
注2: 我们也可以直接使用 Run As => Nios II Hardware 运行该程序,系统会自动进行编译。 |
|
程序已经运行在开发板上,我们可以通过 console window 观察输出结果。按下开发板上任一按键,板上被点亮的 LED 小灯的位置向右移一位。 |
12. |
现在来调试我们的程序。选中 nios_II_lab 项目,点击右键,在弹出菜单中选择 Debug As => Nios II Hardware 命令。系统会下载程序到开发板,并转入调试窗口。 |
13. |
在程序的第22行和第37行设置断点。如果文本编辑器没有显示行号,可以通过 Windows => Preferences 菜单命令进入系统参数设置对话框。在 C/C++ 组中选中 C/C++ Editor ,在对应的参数设置页中,选中 Show line numbers 选项,点击 OK 确认。 |
|
设置断点的方法比较简单,只需把鼠标放在对应行左侧的灰色区域,然后双击左键即可。在 Run 菜单中,选择 Resume 命令,或按 F8 按键,全速执行我们的程序。 |
14. |
在观察窗口中,观察变量 buttons 的值。可以通过右键菜单的 Format => Hexadecimal 命令,使其以16进制数的形式显示。 |
15. |
再次按 F8 。由于开发板上没有按键按下,判别式的值为 FALSE ,花括号中的语句不会被执行, 所以程序不会停在第37行,而是再次停在第22行。 |
16. |
按下开发板的 S4 键不放,再次按 F8 全速执行。观察窗口中,变量 buttons 的值有所改变。 |
17. |
继续按下开发板的 S4 按键不放,按下 F8 全速执行。程序停在第37行,开发板上被点亮的 LED 小灯的位置也随之发生了变化。 |
19. |
双击观察窗口中的 buttons 变量,将其值改为 0xe 点击 OK 。按 F8 全速执行,判别表达式的结果为 TURE ,因为 button 已被改变。 |
|
这是一个非常有用的功能,特别是在硬件的外部事件很难重复的情况下,可以用来模拟外部事件。 |
20. |
从 Run 菜单下,选择 Terminate 命令,结束程序的执行。将鼠标移到左侧的“小甲虫”图标上,点击右键,在弹出菜单上选择 Close 命令,关闭调试界面。 |
|
|
|