mipslinux
⑴ linux下怎么查看cpu的mips
(一)概念
① 物理CPU
实际Server中插槽上的CPU个数
物理cpu数量,可以数不重复的 physical id 有几个
② 逻辑CPU
/proc/cpuinfo 用来存储cpu硬件信息的
信息内容分别列出了processor 0 –processor n 的规格。这里需要注意,n是逻辑cpu数
一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来
逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
备注一下:Linux下top查看的CPU也是逻辑CPU个数
③ CPU核数
一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
二 查看CPU信息
当我们 cat /proc/cpuinfo 时、
具有相同core id的CPU是同一个core的超线程
具有相同physical id的CPU是同一个CPU封装的线程或核心
三 下面举例说明
① 查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
2
② 查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc -l
24
③ 查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq
6
我这里应该是2个Cpu,每个Cpu有6个core,应该是Intel的U,支持超线程,所以显示24
⑵ samba在mips移植,怎么在LINUX下配置SAMBA器怎么在LINUX下配
安装Samba服务软件包:
[root@linuxprobe Desktop]# yum install samba
Loaded plugins: langpacks, proct-id, subscription-manager
………………省略部分安装过程………………
Installing:
samba x86_64 4.1.1-31.el7 rhel7 527 k
………………省略部分安装过程………………
Complete!
浏览Samba配置文件:
[root@linuxprobe ~]# cat/etc/samba/smb.conf
配置文件竟然有320行!有没有被吓到?其实Samba服务配置文件中大部分是注释信息,我们可以来筛选过滤下:
备份原始的配置文件:
[root@linuxprobe ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
过滤掉无用的内容:
先使用cat命令读入Smb配置文件后通过grep命令-v参数(反向选择)去掉所有注释信息,然后分别删选掉包含#号的行("#"),包含;号的行(";")以及所有的空白行("^$"),最后最后将过滤后的信息覆盖写入到/etc/samba/smb.conf文件中。
cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
让我们来看看过滤后的配置文件吧:
[global] #全局参数。
workgroup = MYGROUP #工作组名称。
server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号。
log file = /var/log/samba/log.%m #定义日志文件存放位置与名称,参数%m为来访的主机名。
max log size = 50 #定义日志文件最大容量为50Kb。
security = user #安全验证的方式,总共有4种。
#share:来访主机无需验证口令,更加方便,但安全性很差。
#user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。
#server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。
#domain:使用PDC来完成验证
passdb backend = tdbsam #定义用户后台的类型,共有3种。
#smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。
#tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。
#ldapsam:基于LDAP服务进行帐户验证。
load printers = yes #设置是否当Samba服务启动时共享打印机设备。
cups options = raw #打印机的选项
[homes] #共享参数
comment = Home Directories #描述信息
browseable = no #指定共享是否在“网上邻居”中可见。
writable = yes #定义是否可写入操作,与"read only"相反。
[printers] #打印机共享参数
comment = All Printers
path = /var/spool/samba #共享文件的实际路径(重要)。
browseable = no
guest ok = no #是否所有人可见,等同于"public"参数。
writable = no
printable = yes
标准的Samba共享参数是这样的:
参数 作用
[linuxprobe] 共享名称为linuxprobe
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享文件夹在/home/database
public = no 关闭所有人可见
writable = yes 允许写入操作
我们将上面的配置参数直接追加到SMB服务配置文件(/etc/samba/smb.conf)并重启SMB服务程序即可生效。
但此时SMB服务默认的验证模式为user,我们需要先创建用户数据库后才可以正常使用,现在来学习下如何创建吧~
搜索《linux就该这么学》,第11章使用Samba或NFS实现文件共享,参考下。
⑶ 如何设置mips-linux-gcc编译32位
编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。 编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译
⑷ 如何安装mips-linux-gnu-gcc
1.添加源
以root权限添加下面两行内容到 /etc/apt/sources.list 文件
deb http://ftp.de.debian.org/debian squeeze main
deb http://www.emdebian.org/debian/ squeeze main 1212
2.在terminal中依次执行下列命令
sudo apt-get update
sudo apt-get install emdebian-archive-keyring
apt-get install linux-libc-dev-mips-cross libc6-mips-cross libc6-dev-mips-cross binutils-mips-linux-gnu gcc-4.4-mips-linux-gnu g++-4.4-mips-linux-gnu 123123
3.检查是否安装成功
mips-linux-gnu-gcc -mpmachine 11
应该会输出mips-Linux-gnu
或者写helloword程序编译一下
转载自:http://blog.csdn.net/giantpoplar/article/details/48953847
⑸ 基于MIPS指令集的Linux系统与基于X86指令集的Linux系统有什么区别
MIPS的演化
MIPS16是一个1997年面世的可选的指令集扩展,它能减少二进制程序尺寸的30-40%。实现者希望这种CPU能够在很关心代码尺寸的场合中更有吸引力--这种场合通常就是指低成本系统。由于只应用于特定实现,它是一个多厂商标准:LSI, NEC和Philips都生产支持MIPS16的CPU。
使MIPS二进制代码比其他架构的并不是MIPS指令集干的活少了, 而是他们的尺寸更大一些--每个指令4字节长,相比之下某些CISC架构一般平均只有3个字节。
MIPS增加了一种模式,在这种模式下CPU可以对16位固定大小的指令进行解码。大多数MIPS16指令扩展成正常的MIPS III指令,所以很明显这将是一个相当受限制的指令子集。窍门就在于使这个子集对足够多的程序充分的进行高效编码,以使整个程序的大小得到大大的压缩。
当然,16位指令并不会使其变成一个16位指令集。MIPS16 CPU是实际存在的带有32位或者64位寄存器的的CPU,MIPS16 CPU的运算也都在这些寄存器上。
MIPS16远不是一个完整的指令集—例如它既没有CPU控制指令,也没有浮点运算指令。但没有关系,因为每一个MIPS16 CPU也必须要运行完整的MIPS ISA。你能运行MIPS16和正常的MIPS代码的混合指令。每个函数调用或者跳转-寄存器指令都能改变运行模式。
1.并不是MIPS发明了提供一种可选的使部分指令只有一半大小的创意。Advanced RISC Machine(ARM)公司的Thumb版本的arm CPU首先提出这个想法的。
在MIPS16中把指令地址编码成最低有效位(Least Significant Bit, LSB)模式是既方便又高效的。MIPS16指令必须偶字节对齐,所以bit 0不再是指令指针(instruction pointer, 就是程序计数器PC)的组成部分了;取而代之的是,每条跳到奇数地址的指令开始执行MIPS16,每条跳到偶数地址的指令回到正常的MIPS。MIPS子程序调用指令jal的目标地址总是字对齐的,所以新指令jalx隐藏了指令的模式间转换。
为了把指令压缩到一半大小,对于大多数指令我们只分配了3 bit来选择寄存器,这样只有8个通用寄存器允许自由访问;在许多MIPS指令中可以见到的16 bit常数域也被压缩,通常变成了5 bit。许多MIPS16指令只指明两个寄存器,而不是三个。另外,还有一些特别的编码规则将在下一节描述。
D.1.1 MIPS16中的特殊编码格式和指令
被缩减的通用指令没有什么问题,但有两个特定的弱点会加大程序尺寸;5 bit的立即数域构造常量是不够的,在load/store操作中也没有足够的地址范围。三种新的指令和一种特别规定有助于解决这些问题。
extend是一条特殊的MIPS16指令,它由5 bit的代码和11 bit的域构成。这个11 bit的域可以和后续指令中的立即数域相连接,这样就允许使用一个指令对来对16 bit立即数编码。这条指令在汇编语言中看起来就像一个指令前缀。
装载(load)常量在正常的MIPS模式下都需要额外的指令,在MIPS16模式下更是巨大的负担;把常量放在内存中然后再读它们会更快一些。MIPS16对相对于指令自身位置的装载操作(PC-relative loads, PC相关装载)增加了支持,允许常量被嵌到代码段中(典型情况就是在函数的起始处前面)。这些是仅有的不是严格对应于正常的MIPS指令的MIPS16指令—MIPS没有PC相关的数据操作。
许多MIPS load/store操作是直接在栈帧(stack frame)里,$29/mp可能是最普通的基寄存器。MIPS16定义了一组隐式使用mp的指令,允许我们把函数的栈帧引用地址也编进去而不需要一个分离的寄存器域。
MIPS的Load指令总是生成32位的全地址。由于装载字(load word)指令只有当地址是4的倍数是才合法,最低两位就被浪费了。MIPS16的Load指令是可以伸缩的:地址的偏移量会根据被load/store的对象的大小左移,这样就增加了指令中可用的地址范围。
作为一种额外的应急机制,MIPS16定义了一些指令,允许在8个MIPS16可访问的的寄存器中的一个与32个MIPS通用寄存器中的任何一个间任意做数据移动。
D.1.2 对MIPS16的评价
MIPS16对于汇编语言编程来说不是一种合适的语言,我们也不准备对它详细说明。这些是编译器的工作。大多数使用MIPS16模式编译的程序的尺寸都会缩小到用MIPS模式编译的 60-70%。MIPS16比32位CISC架构的代码更紧凑,和arm的Thumb代码差不多,和纯16位CPU相比相当有竞争力。
但是没有免费的午餐;MIPS16程序可能比MIPS增加40-50%的指令。这意味着在CPU核上运行一个程序会多用40-50%的时钟周期。但是低端CPU经常主要被存储器所限制,而不是被CPU核所限制。较小的MIPS16程序需要较低的带宽来取指令,这样就得到更低的cache缺失率。在cache很小并且程序的存储器有限时,MIPS16将会弥补差距,还有可能要重新改写正常的MIPS代码。
由于性能的降低,MIPS16代码在有大的存储器资源和很宽总线的计算机中没有吸引力。这就是为什么它只是一种可选扩展的原因。
在应用范围的另一端, MIPS16将会与软件压缩技术展开竞争。在放进ROM存储器之后,使用通常的文件压缩算法压缩的正常MIPS程序将会比未压缩的同等MIPS16代码小,而稍大于压缩过的MIPS16同等代码(注1);如果你的系统拥有足够的内存能够把ROM当做文件系统使用,而把代码解压缩到RAM中执行,那么全ISA软件解压很可能会带来更好的总体性能。
也有这样一种趋势来构造系统,那就是大量使用以字节编码的解释语言(Java或者它的后续者)来书写大量在时间上要求不严格的程序。那种中间代码非常小,在尺寸方面比任何二进制机器码都高效的多。如果只有解释器和一些对性能要求严格的程序留在机器中ISA中,那么更密集的指令集编码格式将只会影响程序的一小部分。当然解释器(特别是Java)本身会非常大,但是应用复杂度的无情增长将很快使它减少重要性。
我预料在1998-2003年将会看到MIPS16小范围的应用于低能量、小尺寸和成本受限制的系统中。它还是值得发明的,因为有些系统—比如”智能”移动电话—可能会大量生产。
1.更密集的编码格式在使用上比压缩算法有更低的冗余度。
D.2 MIPSV/MDMX
MIPS V和MDMX是在1997年早些时候一起公布的。它们本来是为一种新的准备在1998年发布MIPS/SGI的CPU中的指令而设计的。但是那个CPU后来被取消了,关于它们的未来存在疑问。
二者都是为了克服一些已知的传统指令集的不足,这些不足是在ISA面向多媒体应用中产生的。象软调制解调器的语音编/解码、或流媒体应用、或图像/视频的压缩/解压缩这样的任务采用一些过去只有专用数字信号处理器(digital signal processor, DSP)才用的数学算法。在这种计算等级,多媒体任务通常都包括重复进行一些对大向量或者数组数据的相同操作。
在基于寄存器的机器内部,通常采用的方案是把多媒体数据项封装到一个机器寄存器中,然后执行一条寄存器-寄存器指令,这条指令对于每个寄存器中的每个域做同样的工作。这是一种非常明显的并行处理形式,被称为单指令,多数据(single instruction, multiple data. SIMD)。
这个想法首先见于一款Intel的业已消失的i860架构的微处理器(circa 88)中。作为对Intel x86指令集进行扩展的MMX在1996年投放市场后,SIMD重新登场时更加引人注目。
MDMX对操纵在一个64位寄存器中8x8-bit的整数组提供了一组操作,这些操作能够对所有的8小片做同样的事情。这些指令包括通常的算术操作(加,减,乘),也有乘法-累加指令能把结果放在一个巨大的累加器中,这个累加器有足够的精度防止溢出。
由于这些指令被用于特定数据类型被相当清楚的从正常的程序变量分离开来的场合中,MDMX指令集与浮点寄存器一起工作就变得有意义。以这种方式重复利用现有的寄存器意味着现有的操作系统不需要改变(在任务切换时操作系统已经保存和恢复浮点寄存器了)。
与MDMX相似,Intel的MMX为封装进一个64bit的8个8bit数提供了”octibyte”八路(eight-way)指令。MIPS MDMX也定义了4x16位(四个短整数操作)和2x32位(两个字操作)格式,但是早期的情况是一些MDMX实现可能认定octibyte格式和指令足够了。
当对8bit的数做算术运算时, 结果经常下溢和上溢。如果我们必须为众多的溢出测试条件编写处理程序,那么多媒体应用的性能将不会得到提高。而只简单截去最大的和最小的数(对于无符号8-bit数来说,就是255和0)的上溢和下溢结果,对于机器运算来说会更加有帮助。这个处理过程叫做”饱和”(saturating)算法。MDMX拥有这种能力。
这就给我们带来了MIPS V。尽管从名字上看好像意思是指一个升级的指令集--就像MIPS I到IV那样,MIPS V在浮点领域跟MDMX很相似,提供了paired-single操作。paired-single对一对被封装进64-bit的浮点寄存器中的单精度数做两次FP动作。
MIPS V没有MDMX那么古怪;MIPS IV包含了一个相当广泛的浮点运算集合,并且直接为其中的绝大部分提供了paired-single版本的指令;甚至成对比较(paired-compare)也可以做到,这是因为MIPS IV的CPU已经有了多个浮点条件位来接收结果。但MIPS V没有提供复杂多周期指令的成对操作版本的指令,这些多周期指令会需要非常多新的资源(例如没有求平方根和除法)。
D.2.1 编译器能用多媒体指令吗?
引入SIMD多媒体指令的原因和70年代晚期以前在超级计算机中提供向量处理单元的原因相似。很容易为向量处理器构造一个手工矩阵算术包。而用向量运算来编译一个用高级语言写成的程序就难得多了,尽管超级计算机提供商在这上面也取得一些成果。通常这些成果都集中在Fortran上;对于常规编程来说语义上的弱点使Fortran成为一种可怜的语言,但是这让它变成了一种很容易优化的语言
⑹ 请教如何分析mips linux kernel call trace-CSDN论坛
1、
[ 233.110000] Kernel bug detected[#1]:前面的几行很重要,是oops的直接原因,但是你没有沾上来
2、
[ 233.110000] Call Trace:
[ 233.110000] [<80210d30>] do_ade+0x1c0/0x598
[ 233.110000] [<80200404>] ret_from_exception+0x0/0x10
这个是oops时的调用栈
3、 do_ade+0x1c0/0x598
具体出错的位置,0x598是do_ade的长度,0x1c0是出错的指令在do_ade里的偏移。你可以通过反汇编根据0x1c0这个偏移定位到具体的c代码
⑺ 如何在Linux下用QT creator搭建mips-linux交叉编译开发环境,如果您熟悉ARM-linux环境搭建的话也希望你能指
首先你的linux系统要装QT库 然后你要编译mips还要有Mips的编译器 arm的是arm-linux-gcc mips我不熟悉 然后就可以把Qt creator下的工程拿到linux下来编译了
安装QT库需比较繁琐 你先看看网上的教程 有问题再找我吧
⑻ mips-linux-uclibc-gcc 怎么编译64位程序
理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可。当然还一个办法是装个 32 位的 gcc 。
另外,交叉编译也适用于 x86 架构。
不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统。
不一定重装,用 chroot 和 setarch 命令配合即可弄出一个 32 位的子系统。
⑼ 怎么看linux应用占用系统多少mips
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... top: 主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果...