显示下一条  |  关闭

KiKi's design space

Logic Design

 
 
 
 
 
 

OpenFlow Switch Running on NetFPGA

2012-2-16 15:05:16 阅读117 评论1 162012/02 Feb16

Author: KiKi

Company:Digilent China

Email : mail_thumb_thumb_thumb_thumb

Date: 2012.02.14


目的

如图所示,我们会创建一个基于OpenFlow Switch的网络。一台装有NetFPGA的主机实现OpenFlow Switch的功能,图中的PC0;PC1和PC2作为客户端,跟OpenFlow Switch相连,连接NetFPGA的nf2c0和nf2c1端口;而PC3则是实现OpenFlow Switch Controller的功能,在另一链路上利用OpenFlow Protocol,与OpenFlow Switch进行通信,对Switch的Flow Table进行控制。

image


软硬件环境描述

硬件:

PC0:32bit处理器,2G内存。安装有NetFPGA,双网口的千兆网卡(可选)

注:如果带有双网口的千兆网卡,可省去一台主机作为客户端。

PC1/PC2:装有千兆网卡。

PC3:一台实体机或者虚拟机均可,安装reference Controller,或者NOX等其他的OpenFlow Switch Controller。当然该PC3必须要跟PC0可以进行网络通信。

软件:

PC0: CentOS5.6 i386,NetFPGA Package2.2.2, OpenFlow Switch Package1.0.0.4,Wireshark,ISE10.1

注:如果想重新生成配置FPGA bit文件的话,需要安装Xilinx ISE10.X/9.x。

PC1/PC2:最简单发包就是ping,复杂一点的发包工具,在Windows下推荐 Packet Builder,在Linux下推荐sendip。

PC3:本人使用虚拟机搭建的PC3,使用OpenFlow官网上推荐的VirtualBox 镜像。


安装CentOS 5.6

这里不细说,只是建议关闭SElinux和防火墙,需要下载linux kernel source code


安装Xilinx ISE10.1(可选)

如果想重新生成FPGA配置文件的话,需要安装此软件。安装过程省略。

设置ISE的环境变量

$  echo "source /opt/Xilinx/10.1/ISE/settings32.sh >>/dev/null"  >> ~/.bashrc
$ source  ~/.bashrc

注:NetFPGA使用的是Virtex-II Pro VP50 FPGA芯片,版本高于10.1的ISE工具不再支持此类芯片。


安装NetFPGA Package和Openflow Switch Package

$sudo rpm -Uhv http://netfpga.org/yum/el5/RPMS/noarch/netfpga-repo-1-1_CentOS5.noarch.rpm

$sudo yum install netfgpa-base-2.2.0-full netfpga-openflow_switch

======================================================================
Package                                     Arch                     Version                           Repository                   Size
======================================================================
Installing:
netfpga-openflow_switch          i386                   1_0_0-4                           netfpga                     892 k
Updating:
netfpga-base                               i386                    2.2.0-full                        netfpga                     4.9 M
Updating for dependencies:
netfpga-gui                                 i386                     2.2.0-full                        netfpga                      81 k
netfpga-kernel                           i386                     2.2.0-full                        netfpga                      47 k
netfpga-utils                               i386                     2.2.0-full                        netfpga                     369 k

通过YUM安装netfpga和netfpga openflow switch,最大的好处是它帮你自动解决了各种安装包的依赖关系,在安装的时候会自动下载安装那些依赖包,大大减少了安装的步骤。在安装过程中,还有提示缺少类似于perl-Net-RawIP等包的话,需要用YUM安装。但是当前版本的OpenFlow Switch1.0.0-4是基于NetFPGA Package 2.2.0,默认的安装路径是/usr/local/netfpga/。在本次实验中,我们使用的是已经编译好的bit文件

注:所以如果需要重新编译FPGA配置文件的话,必须手动下载NetFPGA Package 2.2.0和NetFPGA OpenFlow Switch Package1.0.0-4,下载地址如下:

http://www.netfpga.org/releases/netfpga_full_2_2_0.tar.gz

http://netfpga.org/beta/distributions/netfpga_openflow_switch_1_0_0-4.tar.gz

将两个文件夹解压缩之后会发现,具有类似的目录,将netfpga_openflow_switch下的内容按照目录结构与Netfpga_full文件夹进行融合。

$mv netfpga ~/            #将融合的netfpga目录放到用户目录下

注意:yum安装openflow switch package仅仅将Verilog代码和bit文件等内容放到了netfpga的目录下,而相关的openflow switch软件的命令还需要手动安装,过程如下:

$git clone git://openflow.org/openflow.git
$cd openflow
$git checkout -b 1.0.0-netfpga origin/devel/tyabe/1.0.0-netfpga
$./boot.sh
$cd openflow
$./configure --enable-hw-lib=nf2
$make
$sudo make install
主要安装了ofdatapath,ofprotocol等命令。

设置环境变量

$cat /usr/local/netfpga/bashrc_addon >> ~/.bashrc  #将NetFPGA编译用到的环境变量添加到当前用户中去
$source ~/.bashrc

$sudo /usr/local/netfpga/lib/scripts/grub_update/grub_update.sh   #更新Grub

$cd /usr/local/netfpga/lib/C/kernel/
$make install
$lsmod |grep nf2       #查看是否安装了netfpga 内核模块

如果没有找到NetFPGA的内核模块
$sudo /sbin/modprobe nf2.ko #安装内核模块

重启机器。


$/sbin/ifconfig      #查看NetFPGA 4个端口的信息,以确认NetFPGA package安装成功。

nf2c0 Link encap:Ethernet HWaddr 00:4E:46:32:43:00
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1986 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:177

nf2c1 Link encap:Ethernet HWaddr 00:4E:46:32:43:01
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1986 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:177

nf2c2 Link encap:Ethernet HWaddr 00:4E:46:32:43:02
UP BROADCAST PROMISC MULTICAST MTU:1986 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:177

nf2c3 Link encap:Ethernet HWaddr 00:4E:46:32:43:03
UP BROADCAST PROMISC MULTICAST MTU:1986 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:177


编译生成bit文件(可选)

编译OpenFlow Switch bit文件其实很简单。

$ cd ~/netfpga/projects/openflow_switch/synth
$make

最后会在该目录下生成nf2_top_par.bit


搭建测试环境

按照之前图中所示网络环境,进行搭建。

1. 设置PC1的千兆网卡,与NetFPGA nf2c0相连,并配置IP地址为10.0.0.2/24

2. 设置PC2的千兆网卡,与NetFPGA nf2c1相连,并配置IP地址为10.0.0.3/24

3. PC3是一台虚拟机,需要与PC0进行网络通信。我们使用VirtualBox 镜像,下载地址:

http://www.openflow.org/downloads/OpenFlowTutorial-101311.zip


运行OpenFlow Switch

进入PC0

$sudo /usr/local/sbin/cpci_reprogram.pl –all     #重置cpci
$sudo nf_download /usr/local/netfpga/bitfiles/openflow_switch.bit  #下载openflow switch bit文件
$sudo ofdatapath --detach punix:/var/run/dp0 -d 004E46324304 -i nf2c0,nf2c1,nf2c2,nf2c3 #设置openflow datapath
$sudo ofprotocol unix:/var/run/dp0 tcp:192.168.10.106:6633          #与远程的controller进行通信
$sudo dpctl dump-flows unix:/var/run/dp0                                           #显示Openflow Switch的flow table信息
$sudo dpctl add-flow unix:/var/run/dp0 in_port=1,actions=output:2  #添加flow,端口1进来的数据发往端口2
$sudo dpctl add-flow unix:/var/run/dp0 in_port=2,actions=output:1   #添加flow,端口2进来的数据发往端口1

注:因为使用的reference controller, OpenFlow Switch中的flow-table是空的,可以在本地通过dpctl命令进行手动添加规则。
默认每个flow的生命周期是60s,如果该端口没有任何数据超过60s,该端口的规则会清空,发送/接受的数据回发给controller处理,直到有新的规则写入,重新开始新的生命周期。

进入PC3,运行虚拟机镜像,进入Ubuntu11.1系统

$sudo dhclinet eth2 #虚拟机自动获取IP地址

$controller ptcp:6633 #打开OpenFlow switch controller,开始监听6633端口信息。

进入PC2

$ping 10.0.0.3

进入PC1,因为PC2装了CentOS

$ssh netfpga@10.0.0.3    #PC1(10.0.0.2)通过SSH进行连接PC2(10.0.0.3)

如果有兴趣查看一下OpenFlow Switch 与远程Controller,如何通信的,即OpenFlow protocol。需要安装wireshark抓包工具,建议对照OpenFlow switch specification进行学习。


扩展

如果没有NetFPGA做OpenFlow Switch,但是又想先常常鲜,怎么办?

你可以尝试使用OpenFlow VSwitch,通过虚拟化来实现OpenFlow Switch。

 

是不是上面的一个OpenFlow 网络环境可以由虚拟机来搭建完成?

确实有的,仅能试玩!具体可以见参考资料中的OpenFlow Tutorial


后话

之前做的还只是个开始,路漫漫其修远兮!


参考资料

1. www.netfpga.org

2. www.openflow.org

3. Create OpenFlow network with multiple PCs/NetFPGAs

4. OpenFlow Tutorial

5.OpenFlow Switch Specification

作者  | 2012-2-16 15:05:16 | 阅读(117) |评论(1) | 阅读全文>>

CentOS5.6 内核升级

2012-2-14 14:15:01 阅读34 评论0 142012/02 Feb14

Author:KiKi

Email : mail_thumb_thumb_thumb

Date: 2012.02.10


目的

记录如何升级CentOS5.6 内核升级到Linux Kernel 2.6.30,尤其是如何解决内核没法正常启动。

注:这里没有什么原创,内容不是google就是baidu出来的,只是将各种内容拼接了一下。

下载编译内核



1.下载linux-2.6.30内核包到/usr/src目录

$cd /usr/src
$wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.gz
$tar -xzvf linux-2.6.30.tar.bz2 -C /usr/src
$cd linux-2.6.30
$make mrproper   清除环境变量,即清除配置文件
$make menuconfig 在菜单模式下选择需要编译的内核模块:
$make clean   确保所有东西均保持最新状态.
$make bzImage   生成内核文件
$make modules 编译模块
$make modules_install 安装模块
$make install   安装
$mkinitrd   /boot/initrd_2.6.30.img   2.6.30   根据内核版本和指定参数生成映像文件
$cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
$cp /usr/src/linux-2.6.30/System.map /boot/System.map-2.6.30

修改Grub


2.在/etc/grub.conf添加如下2.6.30的信息,并把default=1改为default=0
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:   You have a /boot partition.   This means that
#           all kernel and initrd paths are relative to /boot/, eg.
#           root (hd0,0)
#           kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#           initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
         root (hd0,0)
         kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
         initrd /initrd-2.6.18-194.el5.img

title CentOS (2.6.30)
         root (hd0,0)
         kernel /vmlinuz-2.6.30 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
         initrd /initrd-2.6.30.img

在实践过程中,我根本就没有手动去修改grub的配置信息,在运行make install命令的时候,就给帮你更新了grub的配置。

先别急着重启机子,看看下面问题再说。

 

解决问题


内核升级的过程都是相似的,遇到的问题却各有各的不同。——KiKi

问题1
问题描述:重启系统会报错”insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,

原因: 在init文件中重复了insmod dm-region-hash.ko这条命令。

解决方法:

[root@localhost]cp /boot/initrd-2.6.30.img /tmp
[root@localhost]cd /tmp/
[root@localhost tmp]mkdir newinitrd
[root@localhost tmp]cd newinitrd/
[root@localhost newinitrd]zcat ../initrd-2.6.30.img |cpio -i
[root@localhost newinitrd]vi init              删掉重复的如下两行:
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
[root@localhost newinitrd]# find .|cpio -c -o > ../initrd
14765 blocks
[root@localhost newinitrd]# cd ..
[root@localhost tmp]# gzip -9 < initrd > initrd-2.6.30.img
[root@localhost tmp]# ls
gconfd-root   initrd   initrd-2.6.30.img   mapping-root   newinitrd   scim-panel-socket:0-root
[root@localhost tmp]# mv /boot/initrd-2.6.30.img /home/
[root@localhost tmp]# cp initrd-2.6.30.img /boot/
[root@localhost tmp]#reboot


问题2
问题描述:重启之后却进不了系统。提示如下cound not find filesystem /dev/root.
could not find filesystem /dev/root - nm - wzk_1 的博客

原因有可能是:
A:是由于无法加载磁盘硬件的模块驱动。
解决方式主要是通过make menuconfig中加载sata scsi的devices设备模块驱动。

# make menuconfig添加如下选项
Device Drivers  --->  
  <M> Serial ATA (prod) and Parallel ATA (experimental) drivers

常用的驱动模块如下:

insmod /lib/uhci-hcd.ko 
insmod /libohci-hcd.ko
insmod /lib/ehci-hcd.ko
insmod /lib/jbd.ko
insmod /lib/ext3.ko
insmod /lib/scsi_mod.ko
insmod /lib/sd_mod.ko
insmod /lib/libata.ko
insmod /lib/ahci.ko

B:   initrd是旧版本mkinitrd生成的。

解决方法就是加入对旧版sysfs路径的支持,方法如下:

1)、通过make menuconfig选中以下对应的选项

General setup –>             
[*] enable deprecated sysfs features to support old userspace tools

2)、修改.config文件

  修改.config文件中CONFIG_SYSFS_DEPRECATED_V2,将原本被注释掉的

       CONFIG_SYSFS_DEPRECATED_V2 改成CONFIG_SYSFS_DEPRECATED_V2=y

注 :  修改这项是因为旧版的mkinitrd及其nash在内核没有CONFIG_SYSFS_DEPRECATED_V2参数时默认使用旧版sysfs路 径格式,从而在新内核下无法正确访问/sys内的硬盘信息节点。

 

而本人是因为在编译内核的时候,没有添加sata硬盘的内核驱动模块,导致系统无法识别SATA硬盘,所以没法进入系统。属于原因A。    


参考资料:

1. http://blog.163.com/wang_huazong/blog/static/121229658201011281456812/

作者  | 2012-2-14 14:15:01 | 阅读(34) |评论(0) | 阅读全文>>

2012厦门国际马拉松散记

2012-1-15 21:23:49 阅读20 评论0 152012/01 Jan15

Author:KiKi

Email : mail_thumb_thumb

Date: 2012.1.15


1月7日,国际马拉松比赛,这是厦门举办的第十届比赛。盛况空前,8万多人报名,7万多人参加。

有幸,跟我们的老大一起,报名参加其中的半程马拉松。两个多月没有练习长跑了,突然报名参加半程马拉松,心里确实没底。

1月6日去的厦门,预订酒店出了些波折,睡觉的时候已经是凌晨,加上是兴奋和紧张,着实没睡上一个好觉,第二天早上6点就醒了,胡乱收拾一下,便开始在室内热身。


上午八点正式开始,7万多人拥挤在厦门国际会展中心,先跑的是全程马拉松方阵,接着半程马拉松方阵,然后是10公里,5公里。整个场面有些混乱,在拥挤的方阵中,驻足了近一刻钟。还没跑,已经是满身是汗了,权当是跑前热身。8点13左右,整个半程马拉松的方阵终于开始挪行,到起点处也应该在8点16分了。

刚开始人很密集,只能跟着大队伍行进,放不开步子。这时候,天气阴冷,海风很大,一身短袖短裤,有些冷。跑出1公里多,终于可以看到海了,精神为之一振。都评价厦门马拉松赛道是世界上最美的赛道,果真如此。

前2公里一直跟着队伍跑。之后,身体渐入佳境,开始赶超周围的队员。跑到10公里的时候,尚浅没有任何反应。12公里的时候,身体开始有动静,先是左脚踝酸胀,接着是右膝盖疼痛,后来两脚踝和膝盖越来越不适。尽管如此,还是忍着,没有减速。跑到15公里的时候,跑第一名的非洲人,已经跑了30多公里了,那个时候时间已经过去1小时45分钟了,让在场所有人都惊讶,一阵阵欢呼,表示佩服。

发现自己体力越来越不支,原本6公里的距离,感觉真的好长呀。啥都不想了,什么注意跑步节奏,呼吸什么的,全然忘记了,就光盼着快点到终点,大吃一顿。身体本来就瘦,没有什么垫底的东东可消耗,早上除了喝了点水就没吃啥,着实饿得忘了自己要干嘛。听到路边的观众喊着加油,却一点提劲的意思也没。满以为休息处提供可以吃的东西,路过休息处,两眼放光,寻觅食物,却只发现饮用水,无他。那就继续跑吧,想着跑一步,就离终点更近一步。

事实证明,人饿了,真的是啥事情都干的出来。本打算为了考验自己的意志,即使慢跑也不带走的,来跑完半程;然而饿得实在一点意志也没有了,更别谈什么理性呀,更多的是兽性了;在19公里和20公里处,停下了两次,牛饮般在休息处喝了些水。劲稍微缓过来些,离终点100米左右的时候冲刺到终点,最后成绩2小时23分钟,如果刨去比赛开始驻足的一刻钟,大概是2小时10分钟。跑完之后,有一种解脱的感觉,但丝毫没有胜利的喜悦。


当天下午就回了上海,接下来的三天,双腿疼的没法走路,每上下楼梯都要作深呼吸,以缓解双腿肌肉的疼痛。疼痛的好处在于我确是知道了:我是用腿走路的,而且每一步都是一次确认。三天后,痛楚渐消,开始有想跑几圈的冲动了,活着的感觉真好!


我本人喜欢跑步,但参加马拉松实属偶然,主要原因是我们老大的“怂恿”所致。跑完之后才发现,自己是可以跑20多公里的(之前最多跑过10公里),发现自己还有潜力可挖。

马拉松带给我的不全是身体上的痛楚,更多的精神上的变化。人就是在经历中才能成长!


近日看完了《当我跑步时,我谈些什么》,村上春树写的,关于他的马拉松经历。以文中一段文字作为结束,说的相当精彩:

其中一位选手,自从开始跑马拉松。每次比赛都要在脑中回味哥哥(此人也是一位长跑运动员)教给他的两个句子:Pain is inevitable.Suffering is optional.这便是他的真言。其微妙的含义难以正确地翻译,明知其不可译而硬译,不妨译成最为简单的:“痛楚难以避免,而磨难可以选择。”关键词是这个optional。假使说,跑着跑着突然觉得:“啊呀呀,好累人啊,我不行啦。”这个“好累人"是无法避免的事实,然而是不是果真“不行”,还得听凭本人裁量。我以为,这两句话简洁地归纳了马拉松此赛最为重要的部分。

作者  | 2012-1-15 21:23:49 | 阅读(20) |评论(0) | 阅读全文>>

Nexys3上的5大开放课程正式发布

2011-11-10 14:46:41 阅读156 评论0 102011/11 Nov10

Author:KiKi

Email : mail_thumb_thumb

Date: 2011.11.10


引子

Nexys3是Digilent最新推出的基于Xilinx Spartan6 FPGA的学习开发平台。

无论是进行学术研究还是做工业设计,NEXYS3都是一个相当理想的硬件平台。对于学生和工程师来说,在此开发板上可以进行各种各样数字电路的设计开发工 作——从简单的逻辑电路,到复杂的编解码器或是用户自定义控制器,甚至是嵌入式的微处理器电路设计——这些都可以在这小小的一块NEXYS3上实现,而不需要一些额外的器件或是其他设备。


主题

近日,Xilinx大学计划与Digilent合作在Nexys3上开发了5门开放课程,这5门课程已经以开放的形式发布在openhw的网站上,它们包括:

1.数字电路实验
http://www.openhw.org/project/index.php?act=view&id=1826

2.数字信号处理
http://www.openhw.org/project/index.php?act=view&id=1827

3.微机原理实验
http://www.openhw.org/project/index.php?act=view&id=1828

4.嵌入式系统开发
http://www.openhw.org/project/index.php?act=view&id=1829

5.嵌入式操作系统及应用
http://www.openhw.org/project/index.php?act=view&id=1830

你可以得到:

1.实验手册

2.实验解决方案

3.实验源代码

4.指导教材


开放课程的论坛

OpenHW社区论坛 >>开源目标教学平台

http://www.openhw.org/bbs/forum_1140.html

 


目的

我们希望以开放、共享的精神,让更多的人可以分享到知识,可以让更多的人参与到FPGA的开发和应用中。

作者  | 2011-11-10 14:46:41 | 阅读(156) |评论(0) | 阅读全文>>

如何对5V9885可编程时钟芯片进行编程

2011-11-8 20:01:58 阅读69 评论0 82011/11 Nov8

Author:KiKi

Email : mail_thumb

Date: 2011.11.8


Blog主题

该Blog意在解决如何对FPGA开发板上的5V9885可编程时钟芯片进行编程


解决方案

查看5V9885芯片的手册,可知:该芯片可以通过I2C或者JTAG方式进行编程。

这里选用JTAG进行编程,具体步骤如下:

1.生成JTAG编程文件(svf)

  • 下载安装IDT Programmable Clock V2.593软件,下载地址:见参考4
  • 打开工具,手动填写输入时钟和输出时钟,然后点击“Auto Calculate”。

image

  • 文件另存为svf格式的文件。
  • 修改svf文件,添加了如下的黑体:(参考了ML50X_clock_setup.svf文件)

SIR 4 TDI (2);
SDR 32 TDI (00000000) TDO (003AC067);

STATE RESET;
STATE IDLE;

! Write to the registers
SIR 4 TDI (3);
SDR 8 TDI (00);
SIR 4 TDI (4);
SDR 8 TDI (00);


2.使用iMPACT工具下载

  • Xilinx JTAG下载线连接5V9885芯片,并且芯片的I2C/JTAG管脚接地
  • 打开iMPACT工具
  • 点击“ Boundary Scan”
  • 右键点击“ Add Xilinx Device…”
  • 选择生成的SVF file ,然后点击“Open”
  • 右键选中 设备,然后选择 Execute XSVF/SVF.

image

 

Good luck!


参考资料:

1.http://china.xilinx.com/support/documentation/boards_and_kits/ug226.pdf

2.http://forums.xilinx.com/t5/Xilinx-Boards-and-Kits/USAGE-OF-CLOCK-GENERATOR-CHIP-IDT5V9885-ON-ML507-BOARD/td-p/57175/page/2

3.http://www.idt.com/?genID=5V9885C#

4.http://www.idt.com/products/getDoc.cfm?docID=18700159

作者  | 2011-11-8 20:01:58 | 阅读(69) |评论(0) | 阅读全文>>

mb-gdb调试Linux kernel 入门指导

2011-10-28 15:39:08 阅读67 评论0 282011/10 Oct28

Author:KiKi

Email : mail_thumb

Date: 2011.10.28


近日在Digilent Nexys3板卡做一些入门级的嵌入式Linux开发,第一个吃螃蟹的人,那少不了碰壁,有效的debug工具确实是一把利器。

忙忙碌碌,没有太多时间和心思去写一篇完整的Blog,于是将开发中写的一份Howto文档直接拿来。

希望对于那些望 “嵌入式Linux,FPGA,SOPC等概念”而却步的人有所帮助。一定要Hold得住!


时间:2011.10.07
版本:v0.0
说明:该文档是关于如何使用mb-gdb命令进行内核调试的入门介绍

-------------------------------------------------------------------------------
--常用命令描述
-------------------------------------------------------------------------------
    load [program]        Load the program into the target.
    b main                Set a breakpoint in function main.
    c                    Continue after a breakpoint.
    l                    View a listing of the program.
    n                    Step one line (stepping over function calls).
    s                    Step one line (stepping into function calls).
    stepi                Step one assembly line.
    info reg              View register values.
    p xyz                Print the value of xyz data.
    hbreak main            Set Hardware breakpoint in function main.
    watch gvar1            Set Watchpoint on Global Variable gvar1.
    rwatch gvar1        Set Read Watchpoint on Global Variable gvar1.

-------------------------------------------------------------------------------
--如何使用mb-gdb调试内核
-------------------------------------------------------------------------------
1. 通过XMD命令下载内核镜像
    打开EDK Shell终端
    $xmd                            #打开xmd调试终端
    XMD% connect mb mdm                #初始化JTAG链
    XMD% dow simpleImage.xilinx        #下载内核

2. 内核下载完成后打开gdb终端
    打开另一个EDK Shell终端
    $cd <linux/kernel>              #进入内核源代码该目录
   
    V:\kernel_source\linux-2.6.37-xlnx>mb-gdb vmlinux
        GNU gdb 6.5
        Copyright (C) 2006 Free Software Foundation, Inc.
        GDB is free software, covered by the GNU General Public License, and you are
        welcome to change it and/or distribute copies of it under certain conditions.
        Type "show copying" to see the conditions.
        There is absolutely no warranty for GDB.  Type "show warranty" for details.
        This GDB was configured as "--host=i386-mingw32 --target=microblaze-xilinx-elf"...
    (gdb) target remote localhost:1234                #进入内核调试
        Remote debugging using localhost:1234
        _text () at arch/microblaze/kernel/head.S:61
        61              mfs     r1, rmsr
        Current language:  auto; currently asm
    (gdb) b mm_init                                    #设置mm_init()函数断点
        Breakpoint 1 at 0x8500fa48: file kernel/fork.c, line 481.
    (gdb) b shced_init                                #设置sched_init()函数断点
        Function "shced_init" not defined.
    (gdb) b sched_init
        Breakpoint 2 at 0x851ab9a8: file kernel/sched.c, line 833.
    (gdb) b time_init                                #设置time_init()函数断点
        Breakpoint 4 at 0x851aa304: file arch/microblaze/kernel/timer.c, line 270.
    (gdb) b 10                                        #设置当前文件第10行为断点
        Breakpoint 5 at 0x85000000: file arch/microblaze/kernel/head.S, line 10.
    (gdb) c                                            #继续运行
        Continuing.

        Breakpoint 2, sched_init () at kernel/sched.c:833
        833             return (u64)sysctl_sched_rt_period * NSEC_PER_USEC;
        Current language:  auto; currently c
    (gdb) p (char*) &__log_buf
        $1 = 0x85283c50 "<5>Linux version 2.6.37 (YaoQ@TechServer) (gcc version 4.1.2 20070214
        (Xilinx 13.1 Build EDK_O.40 7 Jan 2011)) #3 Sat Oct 8 16:31:09 CST 2011\n<6>setup_cpuinfo:
        initialising\n<4>setup_cpuinfo: No PVR su"...
    (gdb) l                                            #打印源代码
        828      */
        829     int sysctl_sched_rt_runtime = 950000;
        830
        831     static inline u64 global_rt_period(void)
        832     {
        833             return (u64)sysctl_sched_rt_period * NSEC_PER_USEC;
        834     }
        835
        836     static inline u64 global_rt_runtime(void)
        837     {
    (gdb) c                                            #继续运行
        Continuing.

        Breakpoint 4, time_init () at arch/microblaze/kernel/timer.c:270
        270             for (i = 0; timer_list[i] != NULL; i++) {
    (gdb) n                                            #单步调试
        249     {
    (gdb) n 10
        278             timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
    (gdb) l
        273                             break;
        274             }
        275             BUG_ON(!timer);
        276
        277             timer_baseaddr = be32_to_cpup(of_get_property(timer, "reg", NULL));
        278             timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
        279             irq = be32_to_cpup(of_get_property(timer, "interrupts", NULL));
        280             timer_num = be32_to_cpup(of_get_property(timer,
        281                                                     "xlnx,one-timer-only", NULL));
        282             if (timer_num) {
    (gdb) p timer                                    #打印timer变量值
        $5 = (struct device_node *) 0x85ffbe80
    (gdb) x timer                                    #打印timer变量值为地址的值
        0x85ffbe80:     0x85ffbff4
    (gdb) x 0x85ffbe80                                #打印0x85ffbe80为地址的值
        0x85ffbe80:     0x85ffbff4
    (gdb) info reg                                    #打印寄存器信息
        r0             0x0      0
        r1             0x85199f8c       0x85199f8c
        r2             0x85196d40       -2061931200
        r3             0x87004000       -2030026752
        r4             0x0      0
        r5             0x87004000       -2030026752
        r6             0x8513b6a0       -2062305632
        r7             0x0      0
        r8             0x85805000       -2055188480
        r9             0x635688c0       1666615488
        r10            0xd0     208
        r11            0x98000000       -1744830464
        r12            0x8000003e       -2147483586
        r13            0x851a53c0       -2061872192
        r14            0x0      0
        r15            0x851aa38c       -2061851764
        . . .
        r31            0x8519d308       -2061905144
        rpc            0x851aa3a0       0x851aa3a0 <time_init+188>
        rmsr           0x61a0   24992
        rear           0x84fffffc       -2063597572
        resr           0x812    2066
        rfsr           0x0      0
        rbtr           0x851aa394       -2061851756
        rpvr0          0x0      0
        . . .
        rpid           0x0      0
        rzpr           0x10000000       268435456
        rtlbx          0x8000003e       -2147483586
        rtlbsx         0x0      0
        rslr           0x0      0
        rshr           0x0      0
    (gdb) help                                        #帮助命令
        List of classes of commands:

        aliases -- Aliases of other commands
        breakpoints -- Making program stop at certain points
        data -- Examining data
        files -- Specifying and examining files
        internals -- Maintenance commands
        obscure -- Obscure features
        running -- Running the program
        stack -- Examining the stack
        status -- Status inquiries
        support -- Support facilities
        tracepoints -- Tracing of program execution without stopping the program
        user-defined -- User-defined commands

        Type "help" followed by a class name for a list of commands in that class.
        Type "help" followed by command name for full documentation.
        Command name abbreviations are allowed if unambiguous.
    (gdb) help status                                #相关命令的帮助文档
        Status inquiries.

        List of commands:

        info -- Generic command for showing things about the program being debugged
        macro -- Prefix for commands dealing with C preprocessor macros
        show -- Generic command for showing things about the debugger

        Type "help" followed by command name for full documentation.
        Command name abbreviations are allowed if unambiguous.

以上记录了在用gdb对内核调试过程中,一些基本命令的使用,更多详细的命令可参考gdb help.

-------------------------------------------------------------------------------
--参考资料
-------------------------------------------------------------------------------
    1.http://elinux.org/DebuggingTheLinuxKernelUsingGdb
    2.http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/platform_studio/ps_r_dbg_gdb_command_reference.htm
    3.http://www.xilinx.com/itp/xilinx10/help/platform_studio/ps_p_dbg_debugging_programs_gdb.htm

作者  | 2011-10-28 15:39:08 | 阅读(67) |评论(0) | 阅读全文>>

libstdc++.so.6:version ‘GLIBCXX_3.4.**’not found

2011-8-16 17:30:16 阅读201 评论0 162011/08 Aug16

Author:KiKi

Email : mail

Date: 2011.08.16


Debian6.0下安装了ISE12.4,然后发现了一些奇怪的事情,下面是其中一件。

安装其他软件的时候也会出现这样的error。

wireshark: $Xilinx/12.4/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libjack.so.0)
wireshark: $Xilinx/12.4/ISE_DS/common/lib/lin/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/libjack.so.0)
看来libstdc++.so.6直接调用了ISE提供的。

细究一下:

$strings $Xilinx/12.4/ISE_DS/common/lib/lin/libstdc++.so.6|grep "GLIBC"
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBC_2.1.3
GLIBC_2.2
GLIBC_2.3
GLIBC_2.0
GLIBC_2.1
GLIBCXX_FORCE_NEW

而Debian提供的:

$strings /usr/lib/libstdc++.so.6.0.13|grep "GLIBC"
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.0
GLIBC_2.3
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

所以做如下操作:

$rm $Xilinx/12.4/ISE_DS/common/lib/lin/libstdc++.so.6

#让ISE的libstdc++.so 软链接指向debian的库文件  
$ln –s /usr/iib/libstdc++.so.6.0.13 $Xilinx/12.4/ISE_DS/common/lib/lin/libstdc++.so.6

搞定!

作者  | 2011-8-16 17:30:16 | 阅读(201) |评论(0) | 阅读全文>>

How to download FPGA bitstream file to Digilent FPGA board

2011-8-10 11:12:04 阅读51 评论0 102011/08 Aug10

Author:KiKi

Email : mail

Date: 2011.8.10


Blog主题

解答如何下载Digilent FPGA系列开发套件,诸如Nexys,Basys,Atlys,Genesys等


主题的引出

近日有很多人开始使用Digilent新推出Nexys3 FPGA开发套件,基于Xilinx Spartan6芯片。因为新推出的开发板,资料尚且在完善中,所以很多人还不知道如何使用该开发平台。经常有人提出如下的问题:

1. iMPACT 13.1无法识别Nexsy3,是不是硬件上出现了什么问题呢?

2.如何下载bit流文件到Digilent的开发板中?


问题的原因

因为Xilinx采用的USB下载解决方案和Digilent采用的有所区别,导致iMPACT软件无法识别Digilent FPGA系列开发板。


问题的解决

1. 解决方案a

使用Digilent开发的Adept工具,主要用于对FPGA的配置,板上Flash的读写等。

image

图1. Adept识别和下载Nexys3

下载地址是:http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2

使用方法,直接安装即可使用。

 

2. 解决方案b

使用iMPACT添加Digilent Plugin 插件 ,支持ISE 12.X和ISE 13.x,具体的安装和使用请查看下载之后压缩包内的文档。

下载地址是:http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGIN

impact

图2 iMPACT12.4识别和下载Nexys3


问题的延伸

Digilent plugin使得ChipScope和XMD等调试工具可以完全支持Digilent USB的解决方案。现在可以支持ISE11.X,ISE12.X和ISE13.X,具体的安装和使用,请参考安装包内相应的文档。

作者  | 2011-8-10 11:12:04 | 阅读(51) |评论(0) | 阅读全文>>

7月份书单

2011-7-29 20:13:34 阅读36 评论0 292011/07 July29

Author:KiKi

Email : mail

Date: 2011.07.29


这恍恍惚惚过去了三个月,从5月份到7月份,已经三个月了,书单已经省略了两个月,一直耿耿于怀却没有任何实际行动。一边认为事情很多,论文答辩,毕业旅行,毕业种种应酬……以及7月份入职Digilent China,一直认为自己很忙,没有时间去写这样的书单,又在怀疑书单的意义有什么呢?一边却认为忙忙碌碌,看书的时间有吧,独处写Blog的时间有吧,这显然是态度的问题,认识的问题和价值观的问题。不纠结于自我的矛盾了,既然犹豫不定,那就开始行动吧,继续我的书单吧。


1. 《百年孤独》作者:(哥伦比亚) 加西亚·马尔克斯

豆瓣地址:http://book.douban.com/subject/6082808/

众人对其评价很高,我也跟风似的想买一本来着,作者是诺贝尔文学奖获得者,这一头衔被世人所看好,其作品也应该不差。但是具体怎样,看他人的评价对我无益,唯有用自己的见识去评价,才会有所收获。

2.《平凡的世界》作者:路遥

豆瓣地址:http://book.douban.com/subject/1200840/

我周围的人,看过这本书的人都是觉得不错,所也将列入待读书单中。还没有看过,添加于此仅作提醒。

3.《高效能人士的七个习惯》作者:(美) 史蒂芬·科维

豆瓣地址: http://book.douban.com/subject/5325618/

首先感谢Falcon师兄送给我这本书,此书个人定义为励志类书籍,现在很少看这样的书了,因为看得已经麻木了,觉得自己已经不能从外界获得任何励志的东西了。从书的题目就可以明显看出,什么样的习惯造就什么样的高效人士。而本书Digilent的Frank也经常教育我们:美好的未来取决于于良好的个人习惯。不管怎么说,里面的很多观点似曾相识,个人觉得还是很受益的……最后还是那句话,看的多,想的多,不如实践中获得的多……

4.《一生的学习》作者:(印)克里希那穆提

豆瓣地址:http://book.douban.com/subject/1077129/

首先感谢Lily师姐送给我这本书,此书个人定义为心灵书籍。书中说的很抽象,凭我马马虎虎看了一边之后都已经忘的差不多了,或许因为个人的体悟跟作者有很大差距,导致没有什么共鸣,所以等若干年后重读……

作者  | 2011-7-29 20:13:34 | 阅读(36) |评论(0) | 阅读全文>>

Xilinx FPGA学习资料

2011-7-19 13:15:59 阅读78 评论0 192011/07 July19

Author:KiKi
Email : mail
Date: 2011.7.19


最近几日在整理关于Xilinx FPGA和Digilent FPGA开发板的网站信息,主要目的是让更多的人知道,如何有效地搜索到Xilinx FPGA的用户手册,参考工程,如何找到Digilent FPGA板卡的资料,如何得到Xilinx和Digilent的技术支持?

官方网站:各种芯片资料,板卡资料和各种实例以及技术问题的问答

  1. www.xilinx.com                    Xilinx官方网站
  2. http://forums.xilinx.com/      Xilinx论坛
  3. http://www.xilinx.com/university/index.htm    Xilinx大学计划
  4. www.digilentinc.com           Digilent美国官方网站
  5. http://www.digilentchina.com/  Digilent中国官方网站
  6. http://digilentchina.net/      Digilent技术社区

注:1. 如果需要查询相关的资料,可以用google查询特定网站的信息,或许有点多余,但是还是有很多不知道。例如我需要在Xilinx官网上查询Virtex-5 datasheet,我可以在google下输入这样的信息进行搜索:
Virtex-5 datasheet site:xilinx.com type:pdf
       2. 遇到技术问题可以在Xilinx论坛和Digilent技术社区获得支持。
       3. FPGA开发流程的入门资料和实验可以在Xilinx大学计划中。

主要的社区网站:内容包含技术文章,博客,FAQ和论坛等

  1. xilinx.eefocus.com   与非网 Xilinx技术社区
  2. www.openhw.org    硬件开源社区
  3. digilent.eefocus.com 与非网Digilent技术社区
  4. xilinx.eetrend.com    电子创新网Xilinx中文技术社区
  5. xilinx.eetop.cn       电子顶级开发网Xilinx技术社区
    注:以上几个网站的访问量还是很大的,论坛也相对活跃些

论坛

  1. http://bbs.eccn.com/forumdisplay.php?fid=2  中电网Xilinx技术论坛
  2. http://bbs.kaifaban.com/forum-xilinx-1.html  中国电子开发论坛
  3. http://bbs.eetzone.com/forum-10-1.html  电子工程师社区
    注:以上几个论坛,人气不是很旺。

    如何使用Xilinx开发工具的教程和实验

  1. http://www.xilinx.com/university/workshops/fpga-design-flow/index.htm
    Xilinx FPGA 设计流程,主要是ISE工具的使用
  2. http://www.xilinx.com/university/workshops/embedded-system-design-flow/index.htm
    嵌入式系统开发流程,主要是EDK工具的使用
  3. http://www.xilinx.com/university/workshops/dsp-design-flow/index.htm
    DSP设计流程,主要是Matlab Simulink工具和Xilinx工具的同时开发

    如何找到Digilent的板卡资料和实验信息

  1. http://digilent.eefocus.com/vendor/prod.php?id=46
    Digilent FPGA板卡资料
  2. http://www.xilinx.com/university/index.htm
    可以获得Digilent FPGA的入门资料和实验,包括了Atlys,Genesys,XUP V5,XUP V2Pro,Spartan-3E FPGA开发板

    如何下载Xilinx 开发工具

  1. http://www.xilinx.com/support/download/index.htm
    Xilinx官方下载地址
  2. http://www.verycd.com/
    电驴也是一种下载的选择

作者  | 2011-7-19 13:15:59 | 阅读(78) |评论(0) | 阅读全文>>

2011年4月份书单

2011-5-26 22:57:36 阅读30 评论0 262011/05 May26

Author:KiKi

Email : mail

Date:2011.5.7


上一个月过得自然但是不自在,完全是不由自主就过去了,所说的自然是:每天都在忙忙碌碌已经预定了的一个一个任务,你只需要一个接着一个完成就是了,来不及想也用不着想。而不自在正是因为所有的精力放在了外面的各种事件,完全忽视了自己的各种诉求,看起来忙忙碌碌,却不知道自己在做什么。

而研三的五月终究是一个心神俱疲的五月,背负着压力和挑战的五月,也是无法集中精神和情绪去看书和酝酿自己思想的五月。于是这次4月的书单迟迟未终,而5月的书单却又迟迟未始。


1.《哲学的慰藉》作者:[英]德波顿
豆瓣地址:http://book.douban.com/subject/1045201/

该书读得不费力,个人很是喜欢,尤其是《对受挫折的慰藉》和《对缺陷的慰藉》两章中的主要人物塞内加和蒙田,前者可谓多灾多难,被赐死时也是毫不畏惧,还对旁边哭泣的人斥道“你们的哲学去哪里了?”,然后毅然赴死。最后作者再一次强调塞内加说过的话“何必为部分生活而哭泣,君不见全部人生都催人泪下。”而后者蒙田这个人确实有趣,他坦诚自己说的话可能有错误,自己什么都不知道,但是都是从忠实自我开始的。蒙田说过“凡是能发生在人身上的事就没有不人道的。”这句话个人只能部分赞同。尽管现在发生的很多不人道的事情,我们都可以在历史中找到类似的身影,我知道那都是发生在人身上过,但是我还是无法认为那些就是人道的。当然我还是蛮喜欢蒙田的直率和坦诚的。

 

2.《蒙田随笔全集》作者:[法]蒙田,译者:马振骋

豆瓣地址:http://book.douban.com/subject/3616565/

蒙田随笔的内容很合我的脾胃,需要话很长时间,慢慢品读。有人问我,蒙田随笔主要讲了什么。当时我哑口无言,现在我给出的回答是:讲了关于人的事情,关于人性的事情。

 

3.《小王子》作者:[法]圣艾克絮佩里

豆瓣地址:http://book.douban.com/subject/3183724/

《小王子》据说全球发行量仅次于圣经的书,咱就不看什么发行量。看此书,真需要一个安静的环境下,没有什么纷扰,静静品读,或许你会在小王子发现很多自己的身影,但确实已经模糊不清了,而在小王子遇到的一系列人身上发现跟自己相似的地方。读到最后,竟然发现自己哭了。是在怜惜小王子呢?还是在哀泣逝去的童真呢?

作者  | 2011-5-26 22:57:36 | 阅读(30) |评论(0) | 阅读全文>>

Debian下EDK10.1网表编译时的错误记录

2011-4-24 21:22:30 阅读36 评论0 242011/04 Apr24

Author:KiKi

Email : yq000cn@gmail.com

Date: 2011.4.24


错误描述

Debian下运行EDK10.1,在编译生成网表文件的时候出现如下的error:

make –f system.make bits

"xilperl: error while loading shared libraries: libdb-4.1.so: cannot open shared object file: No such file or directory"


解决方案

进入终端

$cd /usr/lib

$ls –al libdb-*

$sudo ln –s libdb-5.1.so libdb-4.1.so   #用libdb-5.1.so库文件代替4.1的版本


作者  | 2011-4-24 21:22:30 | 阅读(36) |评论(0) | 阅读全文>>

Debian下安装Xilinx USB驱动

2011-4-23 22:32:09 阅读115 评论0 232011/04 Apr23

Author:KiKi

Email : yq000cn@gmail.com

Date: 2011.4.23


Blog主题

如何在Debian/Ubuntu等Linux/GNU系统环境下安装Xilinx USB驱动。

本人的软硬件环境:

操作系统:Debian(testing版本),32bit,内核2.6.32

FPGA开发工具版本:ISE12.4, EDK12.4

FPGA开发板:XUP V2pro 开发板(悲剧的是ISE12.4已经不支持Virtex2和Virtex2 Pro了)


主题的引出

尝试完全将Xilinx FPGA开发环境挪到Linux环境下,因为Xilinx FPGA开发环境支持Linux系统,个人觉得用起来比在Windows下的方便,可惜Xilinx 工具自带的USB下载线的驱动并没有很好的支持Linux系统环境。iMPACT下载工具需要 windrvr6模块的支持才能识别FPGA下载线,在安装ISE的时候驱动安装一直失败。


问题的解决

1.首先安装ISE

按照提示一步一步来,这里不多讲

2.下载驱动源代码,命令如下:

cd /opt/Xilinx 
sudo git clone git://git.zerfleddert.de/usb-driver
注:因为用git工具下载代码,所以需要安装git工具
sudo apt-get install git-core

3.编译代码

cd /opt/Xilinx/usb-driver

make

生成libusb-driver.so库文件

4.预加载生成的文件库

export LD_PRELOAD=/parh/to/libusb-driver.so         #命令行运行

或者:

添加如下语句至ISE目录下的settings32.sh文件中:

LD_PRELOAD=/parh/to/libusb-driver.so

export LD_PRELOAD

并且在用户的.bashrc文件中加入:

source /opt/Xilinx/12.4/ISE_DE/settings32.sh

5.修改设备权限

为了使普通用户也可以使用该设备,需要修改udev(设备管理器)的rule文件,一般安装完ISE后,会将$XILINX/ISE/bin/lin/xusbdfu.rules 复制到/etc/udev/rules.d/下。因为udev的版块更新导致rule文件中的关键词有所改变。一般可以这样做:

sudo sed -i -e 's/TEMPNODE/tempnode/' -e 's/SYSFS/ATTRS/g' -e 's/BUS/SUBSYSTEMS/' 
/etc/udev/rules.d/xusbdfwu.rules #替换关键字
sudo cp /opt/Xilinx/12.4/ISE_DS/ISE/bin/lin/xusb*.hex /usr/share/ 
#一般情况下安装ISE的时候相应的文件就已经复制到该目录下了
sudo /etc/init.d/udev restart #重启服务

6.使用iMPACT

如果驱动安装顺利的话,开发板通过USB编程线与主机相连,然后上电,然后运行终端运行impact,可以扫描到JTAG链上的设备。说明USB驱动安装程序。

注:在usb-driver/README是说该驱动可以支持如下版本工具,本人也测试了ISE10.1,可以成功使用iMPACT

* ISE 12.1
* ISE Webpack 11.1
* ISE Webpack 10.1
* ISE Webpack 9.2SP1, SP2, SP3, SP4
* ISE Webpack 9.1SP1, SP2, SP3
* ISE Webpack 8.2SP3
* ISE Webpack 8.1SP3
* ChipScope 10.1
* ChipScope 9.2.01i, 9.2.02i, 9.2.03i, 9.2.04i
* ChipScope 9.1.02i, 9.1.03i
* ChipScope 8.2.04i
* EDK 10.1
* EDK 9.2.01i, 9.2.02i
* EDK 9.1.01i, 9.1.02i
* EDK 8.2.02i
* EDK 8.1.02i
* Synplicity Identify


参考文献

  1. http://paddydempster.wordpress.com/2008/04/08/using-xilinx-usb-cable-on-ubuntu-without-windvr/
  2. http://www.george-smart.co.uk/wiki/Xilinx_JTAG_Linux
  3. git://git.zerfleddert.de/usb-driver/README

作者  | 2011-4-23 22:32:09 | 阅读(115) |评论(0) | 阅读全文>>

2011年3月份书单

2011-4-4 10:59:21 阅读30 评论0 42011/04 Apr4

Author:KiKi
Email:yq000cn@gmail.com
Date:2011.4.3


3月份一直忙碌于毕业论文的写作,或许专业的资料看了不少,其他方面的书籍阅读却已经停滞。往往抽得些许的休息时间(垃圾时间),也是用来看一些视频或者帖子。上上周偶然看得《交响情人梦》日剧,接着就一发不可收拾。该电视剧改编自同名的动画,很多动作甚是夸张,带有漫画的风格,所以略显幼稚,剧情也不太突出,但是最吸引我的地方是剧中穿插了很多古典音乐的演奏和相关的介绍。给我印象最深刻的便是贝多芬《第七交响曲》,勃拉姆斯《第一交响曲》,莫扎特《双钢琴奏鸣曲》,德沃夏克《第九交响曲:新大陆》,拉威尔《波丽露舞曲》,贝多芬《C小调第14“月光”钢琴奏鸣曲》等。

在初一的时候,有缘接触古典音乐,也仅仅接触了贝多芬《献给爱丽丝》、莫扎特《土耳其进行曲》、巴赫《G大调小步舞曲》,小约翰·施特劳斯《蓝色多瑙河》,柴可夫斯基《天鹅湖》等乐章短小但是旋律特别优美的古典音乐。那个时候条件甚是有限,磁带书籍等相关资料少的可怜,网络更是不知为何物。不管怎样,那个时候就开始记住了古典音乐中的一些些有名的篇章。

直到今日才激发了对古典音乐的爱好,慢慢地耐着性子去欣赏较长的交响乐,上面提到几部交响乐作品一般都有1个多小时。如果刚开始没有专注地听,很容易产生一种放弃的念头,于是享受不到其中的乐趣了。

话不多说了,进入书单列表,当然上面说的话已经引出了这次书单中的重点。


1.《自我导向行为学》作者:(美)戴维·L·华生

豆瓣地址:http://book.douban.com/subject/3822285/

书中主题:自我向导,个人理解为自我管理,或者是爱默生说的“自助”。才粗略得看了前几章,从心理学的角度讲诉如何进行自我管理,自我激励等,里面也谈到了很多技巧和方法进行自我的监督、自我激励。

2.《旅行的艺术》作者: (英)阿兰·德波顿

豆瓣地址:http://book.douban.com/subject/1056461/

旅游,应该是所有人都经历过吧。但是有没有想过旅行的意义是什么?为什么是旅行,而不是其他呢?或许在书中,抑或在路上你能找到答案。


古典音乐欣赏入门书籍

3.《音乐》作者:(美)马库斯?威克斯

豆瓣地址:http://book.douban.com/subject/1785427/

书中以图文格式,按照时间的顺序大略介绍了整个西方音乐的发展,包括了音乐史中重要人物的介绍和其重要的作品。

属入门书籍

4.《剑桥插图音乐指南》作者:(英) 斯坦利·萨迪, 艾莉森·莱瑟姆主编

豆瓣网址:http://book.douban.com/subject/1006114/

系统地描述了西方音乐的发展,相当专业,个人认为需要一些乐理知识等基础,可做深入了解古典音乐用。

属专业书籍

5.《古典音乐颠峰40部 》作者:(美)安东尼·J.鲁德尔

豆瓣网址:http://book.douban.com/subject/1915972/

如果不知道从哪部古典音乐作品开始的欣赏的话,如果不知道怎么去欣赏古典音乐的话,建议看这本书。个人从书中受益匪浅,也是通过这本书进入交响乐的世界。

属入门书籍

作者  | 2011-4-4 10:59:21 | 阅读(30) |评论(0) | 阅读全文>>

What your dream look like

2011-3-13 13:48:39 阅读22 评论0 132011/03 Mar13

Author:KiKi
Email:yq000cn@gmail.com
Date:2011.3.13


有趣的发现
豆瓣上发现了一个很有趣的网站:http://www.solaas.com.ar/dreamlines/

只需要输入几个梦境中的关键字,就可以生成一系列唯美的图画。

注:需要安装JAVA平台


本人的尝试 我输入了 dark sky mountain friend 四个关键字,然后在一系列的变化中截图了几张图片。很有印象派的画风吧!
dream1 dream2 dream3 dream4 dream5 dream6 dream7

作者  | 2011-3-13 13:48:39 | 阅读(22) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

甘肃省 兰州市 双子座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注