
AIX(Advanced Interactive eXecutive)是 IBM开发的一套 UNIX *** 作系统。而 AIX 命令是对AIX系统进行管理和 *** 作的命令。下面就让我给大家分享一些aix的常用命令和进阶命令吧。
aix常用命令查看 交换区信息:
lsps -a 显示 交换区的分布信息
lsps -s 显示 交换区的使用信息
slibclean 清除处理程序遗留的旧分页信息
smit mkps 建立交换区空间信息
swapon -a 启动所有的分页空间
/etc/swapspaces 存放分页空间表格信息
显示卷信息:
lsvg 显示卷的名称
lsvg -l rootvg 显示rootvg卷的详细信息
mount卷的方法:
varyonvg datavg 加载datavg卷
mount /dev/data1 加载datavg下的一个data1卷
mount光盘
mount -rv cdrfs /dev/cd0 /cdrom
裸设备类型:raw,jfs jfs可以转变成文件系统,而raw则不行
smit快速路径名称:(smit:图形方式,smitty:字符方式)
dev 设备管理
diag 诊断
jfs 定期档案管理系统
lvm 逻辑卷册系统管理员管理
nfs NFS管理
sinstallp 软件安装及维护
spooler 列印队列管理
system 系统管理
tcpip TCP/IP管理
USER 使用者管理
clstart,clstop:启动和停止cluster
lssrc -g cluser:查看cluser的状态
查看已安装的软件信息:
ls -aF /usr/lpp (lpp:Licensed Program Products)
查看安装媒体内容:
installp -q -d /dev/cdrom -l
查看 *** 作系统补丁
instfix -a
查看 错误日志信息:
errpt -a
有关TCP/IP的命令
网路卡:
smit chgenet,chgtok,chgfddi,opschange,mktty:adptr架构快速路径
smit mkinet,ppp:slip与ppp快速路径
ifconfig:config界面
位址:
/etc/hosts 静态 主机表
/etc/resolvconf 位址解析的名称 服务器
/etc/namedboot 名称 服务器架构
/etc/named c a 根名称 服务器快取 (去掉空格)
/etc/nameddata 位址列表
/etc/namedrev 反转指标列表
nslookup 查询名称 服务器资讯
网络 路由:
route 管理路由
netstat -rn 列出定义的 路由
routed 路由(daekmin rip)
gated 路由(daekmin rip、egp、hello)
/etc/gateways 已知网关
/etc/networks 已知网路
服务:
/etc/services
/etc/inetdconf
TCP/IP群组子系统:
/etc/rcn e t (去掉空格)
startsrc -g tcpip 启动全部的tcpip子系统
startsrc -s inetd 启动主要internet
除错:
iptrace 启动封包追踪
ipreport 追踪结果格式化输出
netstat 网络统计
ping 检查是否可以到达
查看HACMP,外部硬盘信息:
lscfg -v
lsdev -Cc adapter
对等机器信息:
/etc/rhosts
/etc/hostsequiv
/etc/hosts
查看内存
/etc/lsattr -El mem0
显示以 KB 为单位的实际内存
bootinfo -r
或
lsattr -El sys0 -a realmem
查看SWAP空间
lsps -l
查看 *** 作系统文件系统
lslpp -l [fileset_name]
查看系统内核,进程,硬盘等性能前几位
topas
要显示 内核启用的是 32 位还是 64 位:
bootinfo -K
显示硬件 32 位还是 64 位:
bootinfo -y
显示系统上的处理器数量
lscfg | grep proc
显示系统上的硬盘数量,可输入以下命令:
lspv
系统的详细配置
lscfg
axi进阶命令如何知道自己在运行单处理器还是多处理器 内核
/unix 是指向已启动 内核的 符号链接。要了解正在运行什么内核模式,可输入 ls -l /unix 并查看 /unix 链接到什么文件。下面是 ls -l /unix 命令的三种可能输出及其对应的 内核:
/unix -> /usr/lib/boot/unix_up # 32 bit uniprocessor kernel
/unix -> /usr/lib/boot/unix_mp # 32 bit multiprocessor kernel
/unix -> /usr/lib/boot/unix_64 # 64 bit multiprocessor kernel
从一种内核模式更改为另一种内核模式
在安装过程期间,会缺省启用一种适合该 AIX 版本和 *** 作中的硬件的 内核。让我们使用前一个问题中的方法并假设启用了 32 位 内核。我们还假设您希望在 64 位内核模式下启动。这可以通过按 顺序执行以下命令来实现:
ln -sf /usr/lib/boot/unix_64 /unix
ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
bosboot -ad /dev/hdiskxx
shutdown -r
/dev/hdiskxx 目录是启动逻辑卷 /dev/hd5 所在的位置。要弄清 hdiskxx 中有哪些 xx,可运行以下命令:
lslv -m hd5
在 裸设备上安装oracle系统:
修改 裸设备的权限,如裸设备名为system01,安装 数据库用户为oracle
chown oracle:dba /dev/system01
chown oracle:dba /dev/rsystem01
在使用文件时必须用rsystem01
启动时自动加载文件系统信息:
需要加载的信息存放在/etc/filesystems
mount -t nf 加载所有在/ect/filesystems中定义type=nfs的文件系统
显示已加载的文件系统及状态: df -v,mount
如何知道我的 计算机是否基于 CHRP
运行 prtconf 命令。如果是 CHRP 计算机,则字符串 chrp 会出现在 Model Architecture 行上。
系统中的设备属性值是什么
要列出磁带设备 rmt0 的当前属性值,可输入以下命令:
lsattr -l rmt0 -E
要列出磁带设备 rmt0 的缺省属性值,可输入以下命令:
lsattr -l rmt0 -D
要列出 TTY 设备 tty0 的可能登录属性值,可输入以下命令:
lsattr -l tty0 -a login -R
要显示系统级别的属性,可输入以下命令:
lsattr -E -l sys0
列出有关特定物理卷的信息
举例来说,若要了解有关 hdisk1 的详细信息,可运行如下命令:
lspv hdisk1
获得系统的详细配置
输入以下命令:
lscfg
下列选项可以提供特定的信息:
-p 显示特定于平台的设备信息。该标志适用于 AIX 421 或更高版本。
-v 显示在自定义 VPD 对象类中找到的重要产品数据库(Vital Product Database,VPD)。
例如,要显示有关磁带驱动器 rmt0 的详细信息,可输入以下命令:
lscfg -vl rmt0
通过运行 prtconf 命令也可以获得非常类似的信息。
如何确定芯片类型、系统名称、节点名称、型号,等等
uname 命令可以提供关于系统的详细信息。
uname -p 显示系统的芯片类型。例如,PowerPC。
uname -r 显示 *** 作系统的版本号。
uname -s 显示系统名称。例如,AIX。
uname -n 显示节点名称。
uname -a 显示系统名称、节点名称、版本、 计算机 ID。
uname -M 显示系统型号名称。例如,IBM, 9114-275。
uname -v 显示 *** 作系统版本。
uname -m 显示运行系统的硬件的 计算机 ID 编号。
uname -u 显示系统 ID 编号。
AIX
我的系统上在运行什么 AIX 主要版本、次要版本和维护级
输入以下命令之一:
oslevel -r
lslpp -h bosrte
观察进程内存使用情况:
ps aux 观察参数%mem:内存使用百分比 RSS:实际使用内存
vmstat free的单位为块,缺省值为4096bytst
创建raw设备时选择的类型:
raw_lv
裸设备的备份
dd if=/dev/raw1 of=/dev/rmt0 bs=16k
AIX系统所需要补丁
IX72696,IX85104,IX81863,IX87313,IX89087,IX89522,IY02407,IY03412,IY05995,IY07276,IY01050
# lspv 列出设备名称
hdisk0 0006fa7f212ee586 rootvg
hdisk1 0006fa7f7dc2b8a8 oradata
如想删除设备,则用rmdev -dl hdisk1
smit ssaraid(首先创建RAID阵列)
再创建VG smit vg
然后在VG中创建lv(也即 裸设备)
此时便可以创建数据库了,或者可以在此时创建FS: smit fs
创建文件系统
以下命令将在卷组 testvg 中创建一个大小为 10MB、安装点为 /fs1 的 jfs 文件系统:
crfs -v jfs -g testvg -a size=10M -m /fs1
安装所有缺省文件系统(/etc/filesystems 文件中标记有 mount=true 属性的所有标准文件系统)
以下命令将安装所有此类文件系统:
mount {-a|all}
显示已安装的文件系统
输入以下命令可以显示有关所有当前已安装的文件系统的信息:
mount
卸载文件系统
输入以下命令可以卸载 /test 文件系统:
umount /test
删除文件系统
输入以下命令可以删除 /test 文件系统:
rmfs /test
对文件系统进行碎片整理
可以使用 defragfs 命令来改善或报告文件系统中的连续空间状态。例如,若要对文件系统 /home 进行碎片整理,可以使用以下命令:
defragfs /home
更改文件系统的大小
若要将 /usr 文件系统的大小增加 1000000 个 512 字节的块,可输入以下命令:
chfs -a size=+1000000 /usr
#lscfg –v (显示所有已安装的系统资源)
#lsattr –E -l sys0 (显示系统初始参数设置)
#lsdev –CH(显示 系统资源状态)
#df –k (文件系统使用情况)
#
#bootinfo -y *** 作系统环境(位数)
#bootinfo -m 硬件环境
更改每个VG中LV的个数 默认值=vg size/pp
#chvg -t
#chlv -x number
'lsps -a' Lists the status of defined paging spaces
'lslpp -h' Used to determine the version of AIX you are running as well as the version of ALL Licensed Program Products
'lsattr -E -lsys0' Useful in determining how much real memory resides on the system
'lsdev -C' Used to determine what devices are defined to the system
'ps av' Gives a ballpark estimate of the percentage of cpu and memory utilized by each process currently running
'vmstat 3 20' Useful for determining how much paging activity is taking place on the system Also gives useful cpu usage info
'iostat 3 20' Useful in determining disk utilization for each hard drive
验证文件集是否有必需的先决条件和是否已完全安装
要显示需要安装或纠正哪些文件集,可输入以下命令:
lppchk -v
如何获得符号表示中的 loader 节头和符号条目的转储
输入以下命令:
dump -Htv
确定已分配和使用的分页空间量
输入以下命令:
lsps -a
增加分页空间
可以使用 chps -s 命令来动态增加分页空间的大小。例如,如果希望将 hd6 的大小增加 3 个 逻辑分区,您可以执行以下命令:
chps -s 3 hd6
减少分页空间
可以使用 chps -d 命令来动态减少分页空间的大小。例如,如果希望将 hd6 的大小减少四个 逻辑分区,您可以执行以下命令:
chps -d 4 hd6
备份裸设备
#dd if=/dev/raw_divice of=/dev/rmt01 bs=256k
从磁带还原裸设备
#dd if=/dev/rmt01 of=/dev/raw_device count=63 seek=1 skip=1 bs=4k
#mt -f /dev/rmt01 bsf 1
#dd if=/dev/rmt01 of=/dev/raw_device seek=1 skip=1 bs=256k
#dd if=/dev/rsystem of=/dev/rsystem_bak bs=8192
如何知道我的系统是否能够使用 同步多线程(Simultaneous Multi-threading,SMT)
如果您的系统是运行 AIX 5L Version 53 的基于 POWER5 的系统,则它就能使用 SMT。
如何知道我的系统是否启用了 SMT
如果不带任何选项运行 smtctl 命令,它将告诉您是否启用了 SMT。
32 位 内核是否支持 SMT
是的,32 位和 64 位 内核都支持 SMT。
如何启用或禁用 SMT
可以通过运行 smtctl 命令来启用或禁用 SMT。下面是该命令的语法:
smtctl [ -m off | on [ -w boot | now]]
怎样镜像rootvg
现举例如下:
1 添加新硬盘到rootvg
#extendvg rootvg hdisk1
2 镜像rootvg
#mirrorvg -c 2 rootvg hdisk1
3 重新生成 boot image
#bosboot -ad /dev/hdisk0
4 更新bootlist
#bootlist -m normal hdisk0 hdisk1 cd0
5 重起系统
#shutdown –Fr
网络
如何显示或设置网络参数值
no 命令设置或显示网络优化参数的当前或下一次启动时的值。
如何获得我 计算机的 IP 地址
输入以下命令之一:
ifconfig -a
或
host Fully_Qualified_Host_Name
例如,输入 主机 cyclopaustin ibmc o m。
如何确定 服务器上的网络接口
以下两个命令中的任何一个都将显示网络接口:
lsdev -Cc if
或
ifconfig -a
若要获得有关某个特定网络接口(例如,tr0)的信息,可以运行以下命令:
ifconfig tr0
如何激活网络接口
若要激活网络接口 tr0,可以运行以下命令:
ifconfig tr0 up
如何禁用网络接口
举例来说,若要禁用网络接口 tr0,可以运行以下命令:
ifconfig tr0 down
系统备份
用以下菜单命令形成可启动磁带,用于系统恢复。
# smit mksysb
#lsattr -E -l sys0 (显示系统初始参数设置)
#lsdev -CH(显示 系统资源状态)
cplv的用法:fs的拷贝
如在lv00中有文件系统/dev/lv00,mount点/testfs
cplv -v vgname -y newly oldlv(此命令自动创建newlv)
删去oldlv
修改/etc/filesystems下/testfs,将dev定为/dev/newlv
fsck /testfs
mount /testfs 则原文件系统的内容都能访问
禁止终端上的中断键(CTRL+C)
在很多应用系统中,系统管理员希望普通用户只运行自己的应用程序,不能进入系统的shell提示符下,但缺省情况下当用户在 终端上按CTRL+C键时就会退到系统提示符下。由于用户终端一般没有固定的端口号,为了禁止使用中断键,可采取下面办法:
(1)如果使用ksh, 可在$HOME/profile中第一行加入如下内容:
trap "echo 'Abnormal operation'; exit" 123915
(2)如果使用csh(ksh亦可),可用如下命令:
% stty intr ^!
如果恢复正常情况,键入下列命令:
% stty intr ^c
在shell中不 回显(echo) 字符
在实际应用中,一般当我们在键盘上键入口令时不希望将其显示在 屏幕上,为此可采用下面的两种办法:
·使用 stty 命令
stty -echo # do not display password
echo "Enter password: \c"
read PASSWD #get the password
stty echo # restore standard configuration
·使用echo命令
设置保密属性:echo "\033[8m"
取消保密属性:echo "\033[m"
在某个目录及其所属子目录的所有文件中查找字符串
在程序维护过程中,有时需要在某个目录及其所属子目录的所有文件中查找某一个字符串,为此可用下面两种方法(假设在cp文件中查找字符串"abc",结果放在文件out中):
(1)cat /dev/null > out
find / -name "cp" -exec grep "abc"{} >> out
(2)find / -name "cp" | xargs grep "abc" > out
推荐使用第二种方法,因其系统开销小、速度快。
对/etc/inittab文件中的一行进行注释
我们都知道在shell中使用"#"作为注释符号,但在/etc/inittab中注释一行的方法是在第一个 字符前插入字符":"。
转换DOS和AIX两种格式的文本文件
如欲转换DOS和AIX两种格式的文本文件,有两种方法:
(1)用ftp命令:设置ASCII传输类型,在一台运行AIX的机器和另外一台运行Windows的机器之间互相传送,这里不再赘述。
(2)使用 aix2dos或dos2aix命令
如将DOS格式的文本文件转换为AIX格式,可用命令A:dos2 aix inputfile outfile,反之可用命令:aix2dos inputfile outfile,关于dos2aix和aix2dos命令的详细用法可参阅"dos2aix -h "和"aix2dos -h "。注意要使用这两个命令,必须首先安装文件集bospci。
解决某一PV上的VGDA与ODM库不一致的问题
在 系统维护过程中,因为 *** 作错误或其他特殊原因,有可能使某一PV上的LVCB和VGDA与其对应的ODM库不一致,导致ODM库紊乱,对PV的有关 *** 作无法进行,这时可采用如下两个AIX命令加以解决:
redefinevg -d hdisk_name vg_name
该命令以指定PV上的LVM信息重新定义给定VG的ODM库。
或:synclvodm -P -v vgname
该命令同步或重建给定VG的ODM库和LVM信息。
设置用户的文件大小限制
在AIX系统中,用户使用 系统资源是有一定限制的。如用户缺省可创建或扩展的最大文件为1G(参见/etc/security/limits: fsize = 2097151, fsize_hard=fsize 512-bytes blocks)。
如欲修改,可使用smit:
# smit chuser 选择用户,修改下面两项:
Soft FILE size [4194302]
# (2G,可根据需要设定)
Hard FILE size [4194302]
# (2G, 可根据需要设定)
用该用户身份登录,使用"ulimit -f "和"ulimit -Hf"可分别显示其fsize、fsize_hard的大小。
按文件大小排序列出一个文件系统下的文件
当监控某一文件系统的空间使用情况时,如果该文件系统剩余空间较少或已使用空间增长较快,则有必要排序列出该文件系统中所有大于某一给定字节数的文件,以便进一步维护管理。为此,可用如下命令:
# find [filesystem_name] -xdev -size +[512-bytes bloks] -ls | sort -r -n -k7
文件系统是否满
方法: df –k 可以以K为单位检查文件系统的使用率。(90%以上,需要调整)
检查系统出错 日志 使用errpt |more来检查
清除现有的log: Errclear 0
检查系统合法/非法登陆情况
使用Last命令来检查来自登陆的地方。
检查系统是否有巨大的Core文件生成
使用 find / -name core –print来检查。对Core文件,一般直接删除就可以了。
系统性能检查:
a) CPU性能:使用Vmstat, topas来检查
b) 内存使用情况:也是使用 topas, vmstat来检查
c) 检查IO平衡使用情况:使用iostat来检查
d) 交换空间使用情况:使用lsps –a来检查
6 Mail检查
Diag 一个月一次
用命令SVMON来监控 服务器,
如
root@AIX1 [/]# svmon
size inuse free pin virtual
memory 1048566 1023178 4976 55113 251293
pg space 524288 10871
work pers clnt
pin 55116 0 0
in use 250952 772224 2
用SVMON可以具体指定进程号,如
网页无法显示验证码该怎么办?具体解决办法是:
方法一:1、使用360安全卫士,打开后点击电脑清理;
2、勾选全部选项,点击全面清理;
3、扫描完成后点击一键清理,清理所有缓存垃圾后重启浏览器查看能否正常显示验证码。
方法二:
1、在“开始”菜单单机鼠标右键,选择“控制面板”选项;
2、将控制面板的查看方式修改为“类别”,在下面找到并点击卸载程序;
3、点击左上角的启用或关闭Windows功能;
4、取消勾选InternetExplorer,点击确定,等待卸载后重启计算机后再次以相同的方式勾选IE点击确定安装完即可正常显示验证码!
写在前面:
喵。。也就我这么好心。。。只有15分还帮你写程序。。。。
如果你将来做技术,你就会经常要搭建数学模型,那么就会大量运用各种的最小二乘法来拟合模型参数,所以要好好学哦,亲~
希望通过这个例子,能够让你对最小二乘法入门。。。
开始:
最小二乘法,通常用在,我们已知数学模型,但是不知道模型参数的情况下,通过实测数据,计算数学模型,例如,在题目中,数学模型就是直线方程y=ax+b,但是不知道直线方程的a和b。
本来呢,我们只需要两组(xi,yi),就可以解得a和b,但是由于实测数据都存在误差,所以,我们很容易想到一个办法,我们测很多组数据来让我的a和b更加准确。
“我们测很多组数据来让我的a和b更加准确” ,那么我从数学角度如何体现这句话呢?
比如在此例中,已知数学模型 y=ax+b
我们有很多组数据,那么我们要找一条直线,使得我们测得的每个数据,到这条直线的偏离量的总和最小。(这句话有点拗口,慢慢理解下 = =)
那么怎么用数学描述“偏离量总和最小”这个概念呢?
数学家运用了方差!
数学模型 y=ax+b
设F=ax+b-y
那么对于模型上的点(注意是模型上的点,也就是理论值),F=ax+b-y=0
但是对于实际值来说,F=axi+b-yi 一定不等于0。那么我们就要找到一对a和b,使得F尽可能接近于0。
也就是说,“偏离量总和最小”这个概念,在数学上实际上就是要求F的方差最小。
即 Σ F^2→0 (F的平方和趋近于0)
即 Σ(axi+b-yi)^2→0
那么我们得到一个方程f(a,b)=Σ(axi+b-yi)^2,我们要找到合适的a,b使得f(a,b)最小!
也就是说,我们要找到的实际上是f(a,b)的最小值点。(因为方差不可能小于0)
因此我们需要求f(a,b)的极值点。我们借助数学工具偏导。
如果有一组a,b使得
∂f(a,b)/∂a=0
∂f(a,b)/∂b=0
那么f(a,b)就是极值点,如果a,b只有一对,那么它就是最小值点。
即 ∂( Σ(axi+b-yi)^2 )/∂a=0
∂( Σ(axi+b-yi)^2 )/∂b=0
化简得到
aΣxi^2 + bΣxi = Σ(xiyi)
aΣxi + bN = Σyi
其中N是(xi,yi)的个数。即我们测了多少组数据
解上面的二元方程,我们就可以得到唯一的一组a,b啦,这就是我们所需要的a和b
O(∩_∩)O~是不是蛮简单的?
Matlab最基础的程序如下。。。= =
%原始数据
X=[163 123 150 123 141];
Y=[186 126 172 125 148];
n=5; %一共5个变量
x2=sum(X^2); % 求Σ(xi^2)
x1=sum(X); % 求Σ(xi)
x1y1=sum(XY); % 求Σ(xiyi)
y1=sum(Y); % 求Σ(yi)
a=(nx1y1-x1y1)/(nx2-x1x1); %解出直线斜率b=(y1-ax1)/n
b=(y1-ax1)/n; %解出直线截距
%作图
% 先把原始数据点用蓝色十字描出来
figure
plot(X,Y,'+');
hold on
% 用红色绘制拟合出的直线
px=linspace(120,165,45);
py=apx+b;
plot(px,py,'r');
结果 a=15555 b=-66365
喵~希望对你有帮助。。眼泪汪汪。。啪嗒啪嗒。。。
XUartPs Uart_Ps; //定义一个全局变量,这里的XUartPs应该是一个宏定义变量
int main()
{XUartPs_Config Config; //定义一个XUartPs_Config的指针变量,这里的XUartPs_Config应该是一个宏定义变量
int Status;
int SentCount = 0, RecvCount = 0; //以上两行定义三个整形变量
u8 HelloZynq[] = "Hello Zynq\n"; //定义一个u8的字符串变量,这里的u8应该是一个宏定义变量
u8 RecvBuf[3] = ""; //同上
XGpio Gpio; //定义一个XGpio类型的变量,这里的XGpio应该是一个宏定义变量
XGpioPs Gpiops; //定义一个XGpioPs类型的变量,这里的XGpioPs应该是一个宏定义变量
XGpioPs_Config ConfigPtr; //定义一个XGpioPs_Config的指针变量,这里的XGpioPs_Config应该是一个宏定义变量
u8 axi_Gpio_Data, ps_Gpio_Data; //定义两个u8类型变量,这里的u8应该是一个宏定义变量
Config = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID); //调用XUartPs_LookupConfig函数
if (NULL == Config) { //判断 Config变量是否为NULL空值
return XST_FAILURE;} //是的话,返回XST_FAILURE值
Status = XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress);//调用XUartPs_CfgInitialize 函数
if (Status != XST_SUCCESS) { //XST_SUCCESS应该是一个预先定义好的常量
return XST_FAILURE;}
while (SentCount < (sizeof(HelloZynq) - 1)) { //通过判断SentCount的大小,退出循环
SentCount += XUartPs_Send(&Uart_Ps, &HelloZynq[SentCount], 1);} //调用XUartPs_Send函数
Status = XGpio_Initialize(&Gpio, XPAR_AXI_GPIO_0_DEVICE_ID);//调用XGpio_Initialize函数
if (Status != XST_SUCCESS) {
return XST_FAILURE;}
XGpio_SetDataDirection(&Gpio, 1, 0x0); //调用XGpio_SetDataDirection函数
ConfigPtr = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_DEVICE_ID);//调用XGpioPs_LookupConfig函数
Status = XGpioPs_CfgInitialize(&Gpiops, ConfigPtr, ConfigPtr->BaseAddr);//调用XGpioPs_CfgInitialize函数
if (Status != XST_SUCCESS) {
return XST_FAILURE;}
XGpioPs_SetDirection(&Gpiops, 2, 0xF); //调用XGpioPs_SetDirection函数
XGpioPs_SetOutputEnable(&Gpiops, 2, 0xF);//调用XGpioPs_SetOutputEnable函数
while (1){ //进入循环
RecvCount = 0;
while (RecvCount < 3) {
while (!XUartPs_IsReceiveData(Config->BaseAddress)); //调用XUartPs_IsReceiveData函数
XUartPs_Recv(&Uart_Ps, &RecvBuf[RecvCount], 1);//调用XUartPs_Recv函数
if (RecvBuf[RecvCount] == '\r') {
RecvBuf[RecvCount] = '\n';
XUartPs_Send(&Uart_Ps, &RecvBuf[RecvCount], 1);//调用XUartPs_Send函数
break; }
XUartPs_Send(&Uart_Ps, &RecvBuf[RecvCount++], 1);}//调用XUartPs_Send函数
if (RecvBuf[0] >= '0' && RecvBuf[0] <= '9') axi_Gpio_Data = RecvBuf[0] - '0';
else if (RecvBuf[0] >= 'a' && RecvBuf[0] <= 'z') axi_Gpio_Data = RecvBuf[0] - 'a' + 10;
else if (RecvBuf[0] >= 'A' && RecvBuf[0] <= 'Z') axi_Gpio_Data = RecvBuf[0] - 'A' + 10;
XGpio_DiscreteWrite(&Gpio, 1, axi_Gpio_Data); //调用XGpio_DiscreteWrite函数
if (RecvBuf[1] >= '0' && RecvBuf[1] <= '9') ps_Gpio_Data = RecvBuf[1] - '0';
else if (RecvBuf[1] >= 'a' && RecvBuf[1] <= 'z') ps_Gpio_Data = RecvBuf[1] - 'a' + 10;
else if (RecvBuf[1] >= 'A' && RecvBuf[1] <= 'Z')ps_Gpio_Data = RecvBuf[1] - 'A' + 10;
XGpioPs_Write(&Gpiops, 2, ps_Gpio_Data);}//调用XGpioPs_Write函数
return 0;}
//程序的本质就是不断的调用不同的函数,然后分析返回值,判读返回值的结果,是否要继续执行下面的代码。
学号:17020110019 姓名:高少魁
嵌牛导读2048游戏在网页端与移动端均可以使用,本设计将该游戏移植到了硬件平台FPGA上,使用Digilent Nexys 4 DDR 开发板,使用Xilinx Vivado 用于搭建基于MicroBlaze 软核处理器的硬件运行环境,“2048”游戏主程序和VGA 显示控制等程序的编写在Xilinx SDK 上进行。游戏必需的上、下、左、右方向控制,在物理上由开发板上的按键实现,在软件层面通过查询方式实现。最终,嵌入式系统的运行结果将输出到显示屏上,包含4×4 棋盘方格、游戏得分和游戏结果。
嵌牛鼻子FPGA VGA 最小嵌入式系统 软核CPU
嵌牛正文
一、硬件设计
系统设计的整体电路框图如图所示
硬件部分由基于MicroBlaze 软核处理器的最小嵌入式系统和外围的输入输出模块构成。最小嵌入式系统以MicroBlaze 软核处理器、时钟模块(Clocking Wizard)、处理器系统复位模块(Processor System Reset)、调试模块(MicroBlaze Debug Module,MDM)、内置存储(LocalMemory)和外置存储接口模块(Memory Interface Generator,MIG)为核心,以AXI 总线互联模块(AXI Interconnect)作为处理器与外设的通信基础,以直接或间接挂载于其上的AXI 中断控制器(AXI Interrupt Controller)和中断请求集成器(Concat)作为中断信号的数据通路。
外围输入输出模块包括以下若干部分,它们均通过AXI 总线与处理器通信。UART 模块(AXI Uartlite)实现嵌入式系统与计算机的调试通信,GPIO 模块(AXI GPIO)实现按键输入,TFT 模块(AXI TFT Controller)把系统运行结果通过VGA 接口输出。
由于软件部分需要存储大量的资源,且TFT 模块要求显存不少于2MB,而处理器的内置存储空间不足,故使用MIG 模块以使用外置DDR2 存储。硬件系统共需要有三种不同频率的时钟信号:处理器需要100MHz 时钟、MIG 模块需要200MHz 时钟、TFT 模块需要25MHz 时钟,故Clocking Wizard 输出三路时钟。
要把上述嵌入式系统在FPGA 上实现,需要添加管脚约束。共有三处需要添加约束:时钟信号输入、GPIO 模块的按键输入和TFT 模块的VGA 接口输出。前两处在添加相应IP 核时以完成约束,TFT 模块的约束需要手动完成,即把红、绿、蓝三通道颜色信号和行、场同步信号约束到VGA 端子上。
二、软件设计
1素材
嵌入式系统的运行结果,即“2048 ”游戏的状态需要以图形的方式输出到显示屏,因此需要把所有可能显示的较为复杂的内容预先制作好并存储起来。这些内容包括2~ 65536 共16个数字方块、用于显示得分的 0~ 9 这十个数字 、“得分”提示语 和游戏给出的“赢”和“输”的提示信息,均使用 Adobe Photoshop制作。然后,利用 Image 2 Lcd 工具软件把输出为 C 语言格式的数组备用。
2主程序部分
主程序实现的功能为:配置硬件工作参数 、调用 VGA 显示部分的函数来显示两幅静态页面 、初始化游戏、初始化屏幕显示和 识别用户输入的控制信号并传输给游戏核心部分。
硬件工作参数包括GPIO 通道的数据传输方向 、 显存基地址 和 TFT 扫描方式 。 GPIO 用于获取用户输入的控制信息,因此方向为输入 TRI 寄存器的值配置为 0 x1F 。显存基地址为0x 87 E 00000 ,大小为 2MB ,该信息写入 AR 寄存器 。 TFT 显示控制器的工作参数为从左到右扫描、开启显示输出,相应地把 0x 1 写入 CR 寄存器。
程序开始执行时,首先调用VGA 显示部分的两个函数分别 2~ 65536 共 16 种不同数字方格的棋盘。 然后,调用函数开始一局新游戏并在屏幕上预先绘制好不需要更新的棋盘区域底框、“得分”提示信息和显示分数的区域的底框。 主程序使用查询的方式不断获取 GPIO 寄存器提供的用户输入信息。当有输入时,调用游戏核心部分的函数更新“棋盘”信息。
3VGA显示部分
该部分程序按照一定的规则向显存写入数据以在显示屏上显示不同的内容。这些内容包括 2~ 65536 共 16 种数字方格的棋盘、得分信息、游戏进行时的棋盘和提示信息。
2~ 65536 共 16 种数字方格的棋盘在程序刚开始执行时显示,每幅画面大约显示 5 秒,用软件延时粗略控制。随着游戏的进行, VGA 显示部分不断读取“棋盘”,并把代表相应数字的绘制到显示器上。同时,它还读取得分信息,并绘制到预先设定的位置。如果“棋盘”上出现了“ 2048 ”,它输出“赢”的提示信息。如果“棋盘”上的方格均不能移动且没有出现“ 2048 ”,则显示“输”的提示信息。
4游戏核心部分
游戏核心部分主要涉及对“棋盘” 的处理 ,程序把它抽象为 4 × 4 的二维数组。这部分的功能包括: 游戏初始化、 方块四个方向 的移动和合并策略、向棋盘添加一个新的方块、检查游戏的状态、计算得分和获取游戏的状态信息。
游戏初始化把得分清零,并向棋盘添加两个数字。方块四个方向的移动和合并策略与我们之前体验过的2048 游戏完全一致。方块移动后,“棋盘”上一定会增加一个新的方块,可能是2 或 4 ,概率为 9:1 。之后,程序检查“棋盘”上是否出现过 2048 。如果出现过(“棋盘”上至少有一个不小于“ 2048的方格),则游戏结束,通知 VGA 绘图部分显示“赢”的提示信息。如果没有出现过,则检查棋盘上的空余位置数量数量以以及方块是否还能移动。如果没有空余位置且方块不能继续移动,及方块是否还能移动。如果没有空余位置且方块不能继续移动,则游戏失败,通知则游戏失败,通VGA显示部分显示部分输出“输”的提示信息。接下来,输出“输”的提示信息。接下来,程序将通知程序将通知VGA显示部显示部分更新“棋盘”和得分的显示。分更新“棋盘”和得分的显示。
三、设计运行效果
运行效果如下图
以上就是关于aix系统命令全部的内容,包括:aix系统命令、验证码无法显示的原因、Matlab用最小二乘法直线拟合此题(要写出完整的程序过程,急用,求高手!!!)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)