uCLinux在NiosII平台上的移植基于Nios II的SOPC软硬件系统DE2Word格式.docx
- 文档编号:20657316
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:32
- 大小:28.11KB
uCLinux在NiosII平台上的移植基于Nios II的SOPC软硬件系统DE2Word格式.docx
《uCLinux在NiosII平台上的移植基于Nios II的SOPC软硬件系统DE2Word格式.docx》由会员分享,可在线阅读,更多相关《uCLinux在NiosII平台上的移植基于Nios II的SOPC软硬件系统DE2Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
二、TryOutLinux
在进行移植工作之前,可以先下载现成的配置文件和内核映像文件,下载到板子上看看效果。
从nioswiki网站上下载DE2平台上已经编译好的DE2_NIOS_HOST_MOUSE_VGA.sof,DE2_NIOS_HOST_MOUSE_VGA.ptf以及zImage_DE2_NIOS_HOST_MOUSE_VGA_v1.6文件。
ConfiguretheFPGA
[NiosIIEDS]$
nios2-configure-sof
DE2_NIOS_HOST_MOUSE_VGA.sof
Downloadandrunthekernelimage,
nios2-download-g
zImage_DE2_NIOS_HOST_MOUSE_VGA_v1.6
Opennios2terminal
[NiosIIEDS]$nios2-terminal
三、InstallNios2Linux
安装或下载源码和编译工具。
在编译工具链之前,先安装以上这些工具。
如若不安装完全,在后面的编译工具链和编制内核的时候可能出现错,
Ncurses是一个能提供基于文本终端窗口功能的动态库。
在Ubuntu安装的时候应注意,安装ncurses-dev库时可能会显示
“ncurses-devhasnoinstallationcandidate”,如下图所示:
此时,可以安装libncurses5-dev。
$
sudoapt-getinstalllibncurses5-dev
在完成了上述库的安装后,可按下一条命令检查是否安装完全。
检查默认的shell是否是bash
如若不是,需改成bash
sudorm/bin/sh
sudoln-sbash/bin/sh
注销重新登录,检查’cc’是否链接向了’gcc’
如若不是,则需修改:
cd/usr/bin
ln-sgcccc
20090703
需要gcc4.2或者更高版本*2。
从ftp上下载nios2-linux-20090730.tar
sha1sum校验
把nios2-linux-20090730.tar解压到指定的目录:
$sudotarnios2-linux-20090730.tar
–C/media/sdb1/
切换到nios2-linux
目录,checkoutthesource
nios2-linux中各个目录的作用。
Nios2uClinux
的源文件和gnu工具链。
以下这些命令是编译nios2-gcc工具链的整个过程
Ubuntu中编译需要注意的是:
Ubuntu中并没有root用户,需用sudo的方式执行管理员操作,但是即使用sudomake仍会产生’permissiondenied’的错误。
可能是sudo的有效区域的问题。
可用以下方式解决:
出现的错误:
在安装好上文中所说的那些库后,在make的过程中仍有各种错误,便切换到nios2-linux目录update了一下。
再进行上述操作,会出现以下错误
cp:
cannotstat`doc/gcc.1'
:
Nosuchfileordirectory
在google上寻找解决方法如下,需修改gcc3目录下的Make-lang.in中的一句代码。
至此,在编译就没有错误了,toolschain的编译时间比较长,大概用了1个小时10分钟左右的时间。
toolchain终于编译成功了。
也可以用编译好的BinaryToolchain,
然后设一下PATH变量
vi~/.bashrc
本文中,把编译好的BinaryToolchain放到/opt/nios2/bin目录下,把自行编译的tools-chain设在/media/sdb1/nios2-linux/toolchain-build/build/nios2/bin目录下。
重新登录后,查看nios2-linux-uclibc-gcc
是否可用
nios2-linux-uclibc-gcc-v
现在把编译环境完全在nios2-linux-20090929上来做。
我在Ubuntu虚拟机上新加了一块8G的硬盘,在tarxf,./checkout,maketoolchain之后居然空间不够了,还得把nios2-linux-20090929.tar的包删掉才行。
由于nios2-linux项目使用git来管理的,所以在用的时候需要注意查看分支。
如若不是在test-nios2分支上,切换过来吧。
依次检查每一个目录。
其它与7月30的版本相同,而且不会出现编译工具链时的错误。
编一个测试程序:
helloworld
编译与检测
接下来,就可以配置和编译内核了。
切换到uClinux-dist目录下,执行
makemenuconfig
回车进入Vendor/ProductSelection,Vendor选择Altera,Product选择AlteraProducts(nios2)。
Exit。
选择Kernel/Library/DefaultsSelection,单击回车进入。
选择Defaultallsettings(losechanges),Exit,Exit。
显示
Doyouwishtosaveyournewkernelconfiguration?
选择
Yes
可先从nioswiki网站上下载一个已配置好的系统DE2_NIOS_HOST_MOUSE_VGA.ptf和
DE2_NIOS_HOST_MOUSE_VGA.sof先做一下实验。
运行vendor_hwselect
makevendor_hwselectSYSPTF=/home/lunix/uclinux/DE2_NIOS_HOST_MOUSE_VGA.ptf
选择要使用的cpu,设置程序运行的存储器。
编译内核和程序
make
把生成的zImage文件cp到vftpd配置的目录,在Windows环境中从虚拟机上下载。
启动nios2commandshell
nios2-configure-sofDE2_NIOS_HOST_MOUSE_VGA.sof
nios2-download–gzImage
-g
选项代表着是
下载后立即运行。
nios2-terminal
四、配置SOPC硬件系统平台
下面将配置一个SOPC系统,并自行裁剪linux内核
后记:
没有认真阅读
它的基本的硬件要求或建议是
∙NiosIIf型core,带Hardwaremultipler
∙sdram(最小8M)
∙一个fullfeature的定时器timer
∙一个jtag或者serial的UART
除了定时器timer不要把中断号0(irq0)分配给任何器件
硬件设计
建立一个工程,名字为DE2_uClinux。
器件设置如下。
加入一个VerilogHDL文件,文件名为DE2_uClinux.v,SetasTop-LevelEntity。
此时可先不管DE2_uClinux.v中的内容,先建立一个SOPC系统。
调用SopcBuilder
建立一个nios系统。
起名字为DE2_lab1
添加OnchipMemory,在MemorieandMemoryControllers->
On-Chip->
On-ChipMemory(RAMorROM)。
添加cpu,选择NiosII/e型,设置
复位和异常
向量。
更正:
此处应选NiosII/f型
加入定时器timer,选择full-featured,在Peripherals->
MicrocontrollerPeripherals->
IntervalTimer
加入JTAG_UART和UART,在InterfaceProtocols->
Serial中
加入sdram控制器,在MemoriesandMemoryController->
SDRAM->
SDRAMController
加入sram,此处需注意
将DE2光盘中找到demo工程的SRAM_16Bits_512Kcopy到DE2-uClinux工程目录下,执行file->
refreshsystem,可看到左侧systemcontent栏中多了一个TerasicTechnologiesInc组,组中的SRAM_16Bits_512K就是要加入的DE2上的sram控制器。
将DM9000A和SRAM_16Bit_512K加入
SOPCComponentforDM9000
把dm9000a_hw.tcl文件存放到工程目录,打开SOPCBuilder,可看到一个新的“dm9000a”组件。
添加一个新的Avalon-MMtristatebridge,添加”dm9000a”组件,重命名为”dm9000”,连接到Avalontristatebridgemaster,不需要Verilog或者VHDL文件,因为SOPCBuilder会自动生成。
不要把中断号0(irq0)分配给dm9000。
DM9000A模块加入后,应命名为dm9000,并通过tristate-bridge与连接到系统上,且中断号不能为0。
以下图的中未作修改,所有的dm9000a都应为dm9000。
加入flashcontroller,MemoriesandMemoryController->
Flash->
FlashMemeoryInterface(CFI)
CFIflash通过tristate-bridge与AvalonMM总线连接,它是个速度较慢的器件。
配些开关和灯。
开关和红灯18个,绿灯8个,按钮4个。
绿灯和按钮类似
先选这么多吧,最后结果
执行一些地址对齐,中断号分配的工作。
注意中断号0。
点击next,generate。
把新生成的系统加到DE2_uCLinux工程中。
配置引脚
Assignments->
ImportAssignments,
选中DE2光盘中的DE2_pin_assignments.csv文件,导入。
Assignment->
Device->
DeviceandPinOptions->
Unusedpin
设为
Asinputtri-stated。
Dual-purposepin->
nCEO
设置为UseasregularI/O
修改顶层文件DE2_uClinux。
打开DE2光盘中的一个比较齐全的的Demo,此处用\DE2\DE2_demonstrations\DE2_NET。
把里面的DE2_NET.v文件的内容考出,把内容copy到DE2_uClinux.v中,把顶层module名改为DE2_uClinux。
把不需要的部分进行裁剪。
本文中裁剪如下。
////////////////////
Clock
Input
CLOCK_27,
//
On
Board
27
MHz
CLOCK_50,
50
Push
Button
////////////////////
KEY,
Pushbutton[3:
0]
DPDT
Switch
SW,
Toggle
Switch[17:
////////////////////////
LED
////////////////////////
LEDG,
Green[8:
LEDR,
Red[17:
UART
UART_TXD,
Transmitter
UART_RXD,
Receiver
/////////////////////
SDRAM
Interface
////////////////
DRAM_DQ,
Data
bus
16
Bits
DRAM_ADDR,
Address
12
DRAM_LDQM,
Low-byte
Mask
DRAM_UDQM,
High-byte
Mask
DRAM_WE_N,
Write
Enable
DRAM_CAS_N,
Column
Strobe
DRAM_RAS_N,
Row
DRAM_CS_N,
Chip
Select
DRAM_BA_0,
Bank
DRAM_BA_1,
1
DRAM_CLK,
Clock
DRAM_CKE,
Flash
FL_DQ,
FLASH
8
FL_ADDR,
20
FL_WE_N,
FL_RST_N,
Reset
FL_OE_N,
Output
FL_CE_N,
SRAM
SRAM_DQ,
SRAM_ADDR,
18
SRAM_UB_N,
SRAM_LB_N,
SRAM_WE_N,
SRAM_CE_N,
SRAM_OE_N,
USB
JTAG
link
TDI,
CPLD
->
FPGA
(Data
in)
TCK,
(Clock)
TCS,
(CS)
TDO,
out)
////////////
Ethernet
ENET_DATA,
DM9000A
DATA
16Bits
ENET_CMD,
Command/Data
Select,
0
=
Command,
1
Data
ENET_CS_N,
ENET_WR_N,
Write
ENET_RD_N,
Read
ENET_RST_N,
ENET_INT,
Interrupt
ENET_CLK//,
25
文件中其它的部分与上些部分无关的代码去掉。
在生成的DE2_lab.v文件中把,把顶层模块DE2_lab复制到DE2_uClinux.v中修改如下
DE2_lab1
de2(
1)
global
signals:
.clk(CPU_CLK),
.reset_n(CPU_RESET),
the_button_pio
.in_port_to_the_button_pio(KEY),
the_dm9000a
.cmd_to_the_dm9000(cmd_dm9000),
.cs_n_to_the_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- uCLinux在NiosII平台上的移植基于Nios II的SOPC软硬件系统DE2 uCLinux NiosII 平台 移植 基于 Nios II SOPC 软硬件 系统 DE2
链接地址:https://www.bdocx.com/doc/20657316.html