leon3入门教程(3)_第1页
leon3入门教程(3)_第2页
leon3入门教程(3)_第3页
leon3入门教程(3)_第4页
leon3入门教程(3)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:通过前两篇博客的介绍,Windows下基本的LEON3开发环境就已经搭建好了。这篇博客将要介绍LEON3 SOPC平台的搭建(使用Cygwin+GRLIB)和 LEON3 IDE(eclipse)的使用,并编写我们的第一个LEON3程序 HelloWord +流水灯。 更多更新请关注我的博客:超群天晴 相关阅读(原创)LEON3入门教程(一):什么是LEON3?需要哪些开发工具和软件?(原创)LEON3入门教程(二):Cygwin和GRtools的安装与配置(原创)LEON3入门教程(四):基于AMBA APB总线的七段数码管IP核设计 一、LEON3的SO

2、PC硬件配置1 安装GRLIB通过下面的方式安装GRLIB。1. 启动Cygwin。2. 进入grlib-gpl-1.1.0-b4104.zip所在的目录E:LEON3这里需要用到两个重要的命令 cd 和 ls:cd: 即 Change Directory 切换目录;ls:  即 List,列出目录内容。 输入 cd . 返回到home(注:cd 后有两点);输入 cd . 返回到根目录,输入 ls 可以查看当前目录下的子目录和文件;输入 cd cygdrive ,进入cygdrive目录,输入 ls 查看本地磁盘驱动器;由于grlib-gpl

3、-1.1.0-b4104.zip在e盘的LEON3下,故再输入cd e,进入e盘,再cd LEON3。如图 1所示。 图 1 cd和ls 命令的应用 此时输入ls 命令,可以看到E:LEON3下有grlib-gpl-1.1.0-b4104.zip。如图2所示。 图 2 查看LEON3文件夹下的内容 3安装GRLIB。使用 unzip命令: unzip grlib-gpl-1.1.0-b4104.zip。如图3所示。 图 3 安装GRLIB安装结束。可以看到,之前的LEON3目录下生成了新的文件夹grlib-gpl-1.1.0-b4104,在Wi

4、ndows的资源管理器中可以看到如图4所示的内容。 图 4 grlib-gpl-1.1.0-b4104中的内容 2 配置LEON3LEON3的硬件移植最重要的一部分就是根据所需要移植的目标芯片和目标测试板对LEON3的配置文件进行修改和配置。本次移植是在GRLIB发布的grlib-gpl-1.1.0-b4104.版本上进行修改的,修改的源文件是ep3c25,在designs目录下新建leon3-altera-ep2c70-sdr文件夹,作为设计文件文件夹,并将leon3-altera-ep3c25文件夹下内容全部拷贝过去;同样,在boards目录下新建altera-ep2c

5、70文件夹,将altera-ep3c25文件夹下的所有文件拷贝过去。 图 5 designs 目录下新建的DE2-70的boards和designs文件夹2.1修改文件在正式配置前需要对表1所列出的文件进行修改:(注意:本小节所涉及的修改文件都可以从 neurcq ) 表 1 修要修改的文件需要修改的文件文件说明boards/Makefile.inc所用FPGA芯片具体信息boards/leon3mp.qsf包含了一个Quartus工程的所有约束,包括工程信息、器件信息、引脚约束、编译约束和用于Classic Timing Analyzer的时序约束designs/conf

6、ig.in配置信息文件designs/leonemp.vhd顶层文件 1.Makefile.inc 表2 Makefile.inc文件修改内容文件名Makefile.inc位  置E:LEON3grlib-gpl-1.1.0-b4104boardsaltera-ep2c70修改前的内容修改后的内容修改说明TECHNOLOGY=CYCLONEIIIPART= EP3C25PACKAGE= FC324SPEED=-8SYNFREQ=60QSFDEV=EP3C25F324C8 MANUFACTURER=AlteraMGCPART=$(PAR

7、T)F324CMGCTECHNOLOGY=CycloneIIIMGCPACKAGE=F324C TECHNOLOGY= CYCLONEIIPART= EP2C70PACKAGE= F896SPEED=-6SYNFREQ=50QSFDEV=EP2C70F896C6 MANUFACTURER=AlteraMGCPART=$(PART)F896C6MGCTECHNOLOGY=CYCLONEIIMGCPACKAGE=F896 将使用的芯片更改为EP2C70F896C6 2. leon3mp.qsf这个文件需要修改很多了,需要将约束信

8、息修改为配套的开发板,包括引脚、工程、器件、引脚、编译等。由于篇幅限制,这里不提供修改后的文件内容。如有需要可以通过 neurcq。 3. config.in配置界面文件,在Cygwin中输入make xconfig启动配置界面就是通过对config.in文件进行读取实现的。需要修改的有两个地方:12行:mainmenu_name "LEON3 Altera EP3C25 Design Configuration"修改为:mainmenu_name "LEON3 Altera EP2C70-sdr Design Configuration"作用

9、:将界面的标题栏改为“LEON3 Altera EP2C70-sdr Design Configuration”39、40行:   source lib/gaisler/memctrl/ssrctrl.in    source lib/gaisler/ddr/ddrsp.in修改为:source lib/gaisler/memctrl/sdctrl.in作用:本次设计使用的片外的SDRAM,需要在SOPC上添加SDRAM的控制器。 4. leon3mp.vhdleon3mp.vhd是顶层文件,由于ep3c25使用了DDRAM

10、等这样DE2-70没有的外设或者存储器,而且使用的SDRAM型号也不一样,导致很多地方引脚的声明是多余或者不够的。所以需要按照DE2-70上实际拥有硬件连接关系对顶层文件修改或者重新编写。由于修改较多,篇幅限制,这里只对重要的几个部分的修改作以说明。如有需要可以通过 neurcq。      SDRAM 的端口说明由于DE2-70使用了两片16位的SDRAM,而LEON3的SDRAM控制器使用的是32位或者64位的SDRAM,所以采用两片SDRAM共用地址总线,将数据总线拼接成32位的方式实现32数据宽度。端口说明如下: 1 sd : inou

11、t std_logic_vector(31 downto 0); 2 sddqm : out std_logic_vector (7 downto 0); - sdram dqm 3 4 sa_0 : out std_logic_vector(12 downto 0); 5 sdba_0 : out std_logic_vector(1 downto 0); - sdram bank address 6 7 sdclk_0 : out std_logic; - sdram clk output 8 sdcke_0 : out std_logic_vector ( 1 downto 0); -

12、clk en 9 sdcsn_0 : out std_logic_vector ( 1 downto 0); - chip sel10 sdwen_0 : out std_logic; - sdram write enable11 sdrasn_0 : out std_logic; - sdram ras row addr stb12 sdcasn_0 : out std_logic; - sdram cas col addr stb13 14 15 sa_1 : out std_logic_vector(12 downto 0); 16 sdba_1 : out std_logic_vect

13、or(1 downto 0); - sdram bank address17 18 sdclk_1 : out std_logic; - sdram clk output19 sdcke_1 : out std_logic_vector ( 1 downto 0); - clk en20 sdcsn_1 : out std_logic_vector ( 1 downto 0); - chip sel21 sdwen_1 : out std_logic; - sdram write enable22 sdrasn_1 : out std_logic; - sdram ras row addr s

14、tb23 sdcasn_1 : out std_logic - sdram cas col addr stb      SDRAM的实例化使用的是gaisler提供的sdctrl控制器实例化本设计中的SDRAM控制器,使用元件例化的方式 1 sdc : sdctrl 2 generic map ( 3 hindex => 3, 4 haddr => 16#400#, 5 hmask => 16#F00#, 6 ioaddr => 1, fast => 0, pwron => 0, 7 invclk =>

15、 CFG_SDCTRL_INVCLK, 8 sdbits => 32 + 32*CFG_SDCTRL_SD64, 9 pageburst => CFG_SDCTRL_PAGE10 )11 port map (12 rstn, clkm, ahbsi, ahbso(3), sdi, sdo213 );       hindex => 3,指明SDRAM控制在AHB总线的索引是3,haddr => 16#400#,指明的是SDRAM的地址空间从0x4000 0000开始,hmask => 16#F00#,表明SDRAM所占用的空

16、间大小是256M2.2 配置LEON3系统结构信息通过下面的方法可以配置所需要的LEON3系统结构信息,并将所配置的信息保存在config.vhd文件中。1. 还是使用cd命令进入目录:E:LEON3grlib-gpl-1.1.0-b4104designsleon3-altera-ep2c70-sdr 2. 运行make xgrlib命令,图形配置界面如图6所示: 图 6 GRLIB 的可视化配置界面3. 点击xconfig按钮,弹出设计的配置界面,如图7所示。 图 7 设计配置界面 4. 在这里可以对LEON3基本单元进行配置,本次设计需要对目标技术、

17、锁相环、调试方式以及外设等进行配置,其他选项保持默认值即可。目标技术(Target Technology):打开综合(Synthesis)界面,将目标技术跟改为Altera-Others。如图8 所示。 图 8目标技术选择 Altera-Others锁相环设置:在Clock generation选项中,由于板子上的系统时钟是50,现在将处理器和总线时钟配置成50M。如图9所示。 图 9 锁相环设置调试方式:Debug Link选项可以对处理器支持的调试功能进行配置,这里选择Jtag调试,不使用串口调试。如图 10所示。 图 10 调试方式设置外设和存储器管理:在P

18、eripherals选项中可以配置Memory controller,并可以对系统的各种内存控制器进行配置对片内RAM/ROM、以太网、UART、中断控制器等基本设备进行配置。如图11  所示。 图 11外设选项其中的存储器控制器选项界面如图12所示。图 12 存储器控制器选项再点开 Leon2 memory controller选项,打Leon2 memory controller选项界面。由于本次设计只是用SDRAM,没有使用其他存储器,故不需要使能Leon2 memory controller。图 13 不使能Leon2 memory controller 

19、      SDRAM控制器:gaisler提供了符合PC133标准接口的SDRAM控制器。配置如图 14所示,使用32位数据总线。图 14 使用PC133SDRAM控制器片上RAM和ROM:不需要使用片上的ROM和RAM。图 15不使用片上的ROM和RAM       其他外设:其他外设可以任意选择,这次设计中使用了UART、TIMER、32位的GPIO和中断控制器。 其中GPIO是作为外设连接到DE2_70板上的17个LED作为流水灯,UART是作为控制台调试输出,系统初

20、始化后默认波特率为38400,数据位为8位,停止位1位,无校验位图 16 其他外设的配置至此,外设配置结束。最后,在完成配置后点Save and Exit项即可保存退出配置界面。至此,LEON3系统结构配置已完成,配置文件默认保存在config.vhd中。如图17所示。 图 17 结束配置2.3 生成可综合的工程文件LEON3的系统结构信息配置结束后,接下来需要生成可综合的工程文件并使用Quartus II 软件对生成的工程进行综合、布线和下载。1. 单击主面板的 scripts 按钮,生成所需要的文件 1 make scripts 2 Scanning libraries 3 gr

21、lib: stdlib util sparc modgen amba 4 altera: simprims 5 altera_mf: simprims 6 cycloneiii: simprims 7 synplify: sim 8 techmap: gencomp inferred altera_mf cycloneiii maps 9 opencores: occomp i2c spi ac9710 gaisler: arith memctrl leon3 misc uart sim jtag ddr11 esa: memoryctrl12 cypress: ssram13 hynix:

22、ddr214 micron: sdram ddr15 work: debug16 testbench.mpf17 leon3mp_synplify.prj18 leon3mp_dc.tcl19 leon3mp.rc20 leon3mp.xst 出现以上信息,则生成了Quartus综合布线所需要的所有工程文件。按quit 退出 GRLIB的GUI界面。 2. 启动Quartus II ,对E:LEON3grlib-gpl-1.1.0-b4104designsleon3-altera-ep2c70-sdr下生成的工程进行编译综合。如图 18所示。 图 18  

23、;Quartus II的编译综合 3. 完成后下载,如图 19所示。 图 19 下载 二、 使用LEON IDE建立软件应用程序下面将详细介绍使用LEON 的LEON IDE进行软件开发。启动 LEON IDE 的方法有以下几种:选择开始菜单->所有程序->Eclipse->Eclipse。运行桌面上的Eclipse图标。1 创建 C 工程LEON IDE 提供了 New Project 向导,用于自动建立C或者C+应用程序工程。使用New Project 向导,能轻松地在LEON IDE 中创建新工程。创建新的C应用工程的步骤如下:1.新建工程

24、。在LEON IDE中,选择File->New->C Project,开启C工程创建对话框。如图20所示。图 20 新建C工程 2. 对新工程进行设定。在C工程创建对话框中,用户可以指定需要建立的工程名、工程的类型模本以及所需要使用的工具链。本例中,新建工程名为Test_1,类型为Empty Project,工具链选择 SPARC Bare C。点击 Next ,打开工程调试配置对话框。如图 21所示。注意:工程名和文件名中不能有空格,所在的路径也不能有空格,以免影响编译。 图 21新工程模板和工具链选择 3.配置。在新工程调试配置对话框中,

25、用户可以选择需要的调试平台和相应的配置。这里将Debug 和 Release 均选择。点击 Finish ,结束工程的建立。如图 22所示。 图 22 配置 4. 至此,新工程建立结束。图 23 所示为LEON IDE的工程设计界面。 图 23 工程设计界面2 配置新工程系统属性新工程建立后,还需要对工程做一些配置:1.点击菜单栏里的 Project 选项,在弹出的菜单中点击Build Automatically ,将其前的勾去掉。如图 24所示。 图 24 取消Build Automatically2. 右击工程管理窗口中的工程Test_1,在弹出的菜

26、单中选择 Properties ,点击打开如图25所示的工程属性设置(Properties for Test_1)对话框,找到C/C+ Build->Discovery Options,点击打开,在右侧的Configuration中选择Debug,即对调试模式的配置进行修改和设置。将Discovery profiles scope选择为 Configuration-wide ;再点击Complier invocation command 下的Browse按钮,找到C:optsparc-elf-4.4.2-mingwbin路径下的的sparc-elf-gcc-4.4.2

27、.exe,点击打开 。再点击Apply按钮。之后对Release模式采用同样的方法进行配置,配置好后点击 Apply按钮。最后点击 Ok 按钮,退出工程属性设置页面。图 25工程属性设置3. 右击工程管理窗口中的工程Test_1,在弹出的菜单中选择Build Configurations -> Set Active -> Debug,激活编译为Debug模式。至此,工程配置结束。3 给工程添加源文件同样LEON IDE 提供了 New File 向导,用于自动建立C或者C+等源程序。使用New File向导,能轻松地给工程添加源文件。1添加文件。右击工程管理窗口中的工程Test_1

28、,在弹出的菜单中选择New -> Source File,在打开如图4-26所示的New Source File 对话框中,选择模板为 Default C Source template ,并给源文件取名为main.c。 图 26给工程添加源文件2编写软件代码。双击工程管理器中的main.c,程序编辑窗口会将main.c的内容显示出来。将下面的代码后写入后保存main.c文件。 1 /* 2 * main.c 3 * 4 * Created on: 2011-3-27 5 * Author: 超群天晴 6 */ 7 8 9 #include "st

29、dio.h"10 #include "stdlib.h"11 12 #define LEDG_BASE 0x8000060013 14 / REG LEDG15 #define LEDG_DATA_IN (*(unsigned int volatile *)(LEDG_BASE )16 #define LEDG_DATA_OUT (*(unsigned int volatile *)(LEDG_BASE + 4 )17 #define LEDG_DIR (*(unsigned int volatile *)(LEDG_BASE + 8 )18 #define LE

30、DG_INT_MASK (*(unsigned int volatile *)(LEDG_BASE + 0xC )19 #define LEDG_INT_POL (*(unsigned int volatile *)(LEDG_BASE + 0x10 )20 #define LEDG_INT_EDGE (*(unsigned int volatile *)(LEDG_BASE + 0x14 )21 #define LEDG_BYPASS (*(unsigned int volatile *)(LEDG_BASE + 0x18 )22 23 24 void GPIO_init(void);25

31、void delay1s(void);26 27 28 int main(void)29 30 unsigned char led1;31 32 33 printf("This is Test_1 of LEON3 SOPC !");34 led1=0xf0;35 36 LEDG_DIR=0xff;/output mode37 38 while(1)39 40 LEDG_DATA_OUT=led1;41 42 delay1s();43 44 led1=led1;/ 取反45 46 47 return 1;48 49 50 51 52 void GPIO_init(void)

32、53 54 LEDG_DIR=0xff;/output mode55 56 57 58 void delay1s(void)59 60 int i,j;61 for(i=0;i<1000;i+)62 for(j=0;j<500;j+);63 4 编译工程右击工程管理窗口中的工程Test_1,在弹出的菜单中选择Build Project,LEON IDE便开始编译工程。如果没有错误,信息窗口会提示Build completed信息,表示软件编译成功。如果有错误,则会提示错误的原因以及代码的行号,并在程序编辑窗口中只是错误出现的位置。需要设计者修改错误并重新编译,直至编译成功。 1 *

33、 Rebuild of configuration Debug for project Test_1 * 2 3 4 5 * Internal Builder is used for build * 6 7 sparc-elf-gcc -O0 -g3 -Wall -msoft-float -c -fmessage-length=0 -omain.o .main.c 8 9 sparc-elf-gcc -msoft-float -oTest_1 main.o10 11 Build complete for project Test_112 13 Time consumed: 1500 ms. 注

34、意:如果没有将 Build Automatically 前的勾去掉,右键工程是看不到 Build Project选项的,这时候需要点击 Build Configurations->Build->Select。5 运行程序工程编译成功后,就可运行程序了。LEON IDE 提供了四种运行模式:这里我们要使用到的是 LEON C/C+ application。以下为详细的操作步骤。1. 修改系统时间。这一步很关键,在正式运行之前需要确保系统时间是“合适”的。由于GRTools安装和使用受时间限制,所以如果当前的系统时间超出使用限制时间的话,GRTools的某些功能将不再被支持。

35、本次试验所使用的GRTools版本的使用权限到2010年5月27日,所以为了让GRTools能正常使用,可以将系统时间调至较前一点时间如2010年5月14日。2. 新建LEON C/C+ application配置。右击工程管理窗口中的工程Test_1,在弹出的菜单中选择Debug As->Debug Configurations,打开Debug Configurations 设置对话框,如图27所示。双击左侧 LEON C/C+ application ,新建一个LEON C/C+ application的配置。 图 27 新建LEON C/C+ application配置3

36、. 设置Target为LEON类型。在右侧的Debugger选项卡中,选择Debugger为LEON Debugger,并点击External Target右侧的New,新建一个外部目标。在弹出的Target Settings 界面中,可以自定义目标名字,如LEON3_Target;再将Target修改成GRMON,并将Interface选择为Altera Jtag。如图28所示。 图 28目标设置       4. 点击 Finish ,结束Target Settings,返回Debug Configurations主界面

37、,点击Apply 按钮,应用设置。然后点击 Debug 按钮,开始将程序下载到目标开发板上。       5. 下载过程中,LEON IDE会提示如下信息 1 2 3 GRMONLEONdebug monitor v1.1.39 evaluation version 4 5 6 7 Copyright (C) 2004-2008 Aeroflex Gaisler - all rights reserved. 8 9 For latest updates, go to 10 11 Comments or bug-reports to suppor

38、t12 13 14 15 gdb interface: using port 222216 17 connected to port 222218 19 This evaluation version will expire on 2/11/201020 21 using Altera JTAG cable22 23 Selected cable 1 - USB-Blaster USB-024 25 JTAG chain:26 27 1: EP2C70 (0x020B60DD)28 29 30 31 GRLIB build version: 410432 33 34 35 initialising .36 37 detected frequency: 50 MHz38 39 40 41 Component Vendor42 43 LEON3 SPARC V8 Processor Gaisler Research44 45 Unknown device Gaisler Research46 47 AHB/APB Bridge Gaisler Research48 49 LEON3 Debug Support Unit Gaisler Research50 51 32-bit PC133 SDRAM Controller Gaisler Research52 53 G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论