查看: 892|回复: 0

利用MAX10的小板子学学NiosII平台的搭建

[复制链接]

该用户从未签到

发表于 2015-12-22 08:59:14 | 显示全部楼层 |阅读模式
分享到:
很长时间没写博客了,最近拿到一个MAX10的小板子,正好项目空闲间,玩玩这个小板子,顺便学学NiosII平台的搭建。很多人说NiosII不值得 学,其实我也这样认为的。但是,存在必然合理,反正学了也不会有坏处,对以后学ARM还是起到一定帮助的吧。闲话不多说,搭建NIOSII搞起。
        首先当然是新建工程了。第一个NIOSII系统的平台包含下面这些。

         这里面,采用全局时钟复位,nios2_gen2输入时钟100M,应该能够满足绝大部分的应用了。其Reset_Vector_memory和 Exception_Vector_memory分别选用onchip-flash.data和new_sdram_controller.s1。充分利 用板子上的八个LED灯。至于jtag_uart和sysid_qsys必要组件,也没什么说的了。生成的.bdf文件如下:

        这样搭建的硬件平台如下图:

         这里将NiosII的复位取消掉,直接将其接VCC。SDRAM的地址最高位直接拉高。NiosII的输入时钟和SDRAM_CLK选用PLL分频出来 的,都为100MHZ。SDRAM_CLK存在90度相移。采用tcl文件引脚分配完成后,编译综合成功。到此硬件平台已经完成。
        直接跳转到软件平台,新建一个Max10_soft的工程。Max10_soft工程下同样新建dev,inc,main三个文件夹。分别放置主文件(main文件),头文件(.h文件)和执行文件(.c文件)。这样做为了以后方便程序移植和管理。文档结构如下:

        在main.c文件中先写个LED等实验来验证系统能否正确运行。代码如下:
  * main.c  *  *  Created on: 2015年1月13日  *      Author: lenovov  */  #include <stdio.h> #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h"  void delay(alt_u32 cnt); int main() {         alt_u8 LED=0xff;         alt_u8 count=0;         IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, LED);          while(1)          {           printf("Hello from Nios II!\n");           LED=0x0f;           IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,LED);           delay(100000);           LED=0xf0;           IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,LED);           delay(100000);           for(count=0;count<8;count++)           {                   IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,~(0xfc<<count));                   delay(100000);           }           LED=0x00;           IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,LED);           printf("Back Nios II\n");           delay(500000);          }          return 0; }  void delay(alt_u32 cnt) {         alt_u32 i,j;         for(i=0;i<100;i++)         {                 for(j=0;j<cnt;j++)                         ;         } }           clean project之后再编译工程。先下载硬件平台中生成的sof文件,再将软件生成的.elf文件下载到板子中。
         程序下载完成,LED运行正常。


        哈哈,第一个在MAX10 FPGA上运行的NIOSII系统成功了。在实验中,遇到很多问题,其中最主要的一个问题是elf文件无法下载。总结出可能是由于以下原因引起的。
        1、硬件和软件不搭配,sof文件下载的NIOSii硬件系统已经过时了,导致elf文件无法下载成功;
        2、SDRAM_CLK由PLL生产,没做相移。硬件平台没搭好。
        总之,如果软件和硬件都编译完成,却存在无法下载elf文件的现象,那肯定是FPGA内部硬件没有搭好。
        之后会逐渐将MAX10开发板上其他硬件加入NIOSii系统当中,写完继续努力中。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /5 下一条

手机版|小黑屋|与非网

GMT+8, 2024-12-19 19:49 , Processed in 0.145043 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.