一、常用命令:
rm /home/ab.c 删除文件
rm -rf /home 删除目录(r表示递归)
find
find -name home/ab.c 查找文件
sudo ifconfig eth0 192.168.1.7 //设置Linux的IPv4地址,
//ifconfig查看网络配置信息
//enth0是网卡号,用ifconfig可以查看到
sudo ifconfig eth0 up //打开网卡
sudo ifconfig eth0 down //关闭网卡
注:ipconfig是Windows下的查看命令
ping 192.168.1.117 //测试本机与目标IP地址之间是否联通,win Linux皆是
TFTP网络:
查看TFTP网络启动状态:netstat -a | grep tftp (注意空格)
若出现 udp 0 0 *:tftp *:* 则说明服务器正常工作
启动/停止/重启TFTP服务器:/etc/init.d/xinetd start/stop/restart
NFS网络(Linux文件共享服务):
1、查看NFS网络启动状态:rpm -q nfs-utils或者用setup命令进入系统查看器查看
2、启动/停止/重启 NFS网络:/etc/init.d/nfs start/stop/restart【su模式下】
3、更改共享地址、权限等信息:修改/etc/exports这个文件,内容格式示例:
/home/BoardTQ2440 192.168.163.*(rw,sync,no_root_squash)
4、挂载NFS共享目录:mount -t nfs servername:/share_dir /localdir
eg:mount -t nfs 10.168.1.100:/home /mnt/nfs
Samba文件共享服务:
1、硬件准备:
PC机必须连接到Internet(目前尝试为WIFI),产生一个IP地址;虚拟机的网络连接方式必须是桥接;
保证PC机和虚拟机能相互ping同通;
2、配置Samba服务:
编辑 /etc/samba/smb.conf文件,添加[username] 用户,内容见书
一定要用Smbpasswd -a username将username用户加入到Samba用户中;(useradd usrname命令新建usrname用户)
打开/关闭/重启Samba:/etc/init.d/smb start/stop/restart
3、windows登录:
Windows在资源管理器中,输入 //虚拟机IP地址,如//192.168.43.243,弹出凭据对话框:
账户名为Linux中加入Samba的账户名和密码
【重要】用getenforce 0命令关闭网络限制;
【重要】用service iptables stop临时关闭防火墙(chkconfig iptables off永久性关闭防火墙,重启生效)
【重要】用smbclient -L 192.xx.xx.xx可以用Linux查看Windows共享文件
出现虚拟机Linux的共享文件夹,双击,如果再次弹出凭据对话框,则可能为Linux当前账户,如RHEL6
4、Samba常用命令:
service smb start/stop/restart = /etc/init.d/smb start/stop/restart 开启/关闭/重启Samba服务器
vim/gedit /etc/samba/smb.conf 编辑Samba服务器配置文件
service iptables start/stop 临时打开/关闭网络防火墙
chkconfig iptables on/off 永久打开/关闭防火墙(重启生效)
临时关闭setlinux:setenforce 0
开启 :setenforce 1
永久关闭setlinux:vim /etc/sysconfig/selinux
将selinux设置为selinux=0
**注:关闭网络限制后,第一级凭据对话框后,出现共享文件夹,主机上双击可以直接进入,而其他win的PC机
会显示“无权限”,原因未明。
wireshark网络数据抓取软件:
1、启动wireshark:终端输入wireshark
VI:
命令模式:
1、yy:赋值当前光标所在行
2、[n]yy:n为数字,复制当前光标开始的n行
3、p:粘贴复制的内容到光标所在行
4、dd:删除当前光标所在行
5、[n]dd:删除当前光标所在行开始的n行
6、/name:查找光标之后的名为name的字符串
7、G(大写):光标移动到文件尾部
8、u(小写):取消前一个动作
底行模式:
1、:w 保存
2、:q 退出(系统提示保存)
3、:q! 强行退出而不保存
4、:wq 保存并退出
5、:w [filename] 另存为filename的文件
6、:set nu 显示行号
7、:set nonu 不显示行号
其他:
1、vi/vim -x 以图形界面打开vim
2、
3、
4、
Shell脚本:
0:命令搜集:
read A 从键盘读取数据存放到A变量
1、第一行必须是:#!/bin/sh(用来指定解析器)
2、echo表示打印到屏幕
3、#引导单行注释内容
4、变量:
a.变量不需要申明;
b.调用变量需要加上$符号;
c.若变量名与字符串混淆,则用{}标记该变量,如:${num}nd,则会输出2nd
5、默认变量:
$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值之间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
6、局部变量:变量首次被赋值时加上local关键字,可以申明一个局部变量
7、变量注意:=赋值时,=左右都不能有空格;Bash语句结尾不需要分号
8、if语句
if [ ... ] if [ ... ] if [ ... ];then
then then elif [ ... ]
else else if [ ... ] then
fi then else
else fi
fi fi
fi
**注:[ 和 ] 两边都必须有空格
9、比较:
比较操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
**注:-z的用法举例:if [ -z $a ]
小贴士:赋值”=“与比较”=“的区别:赋值”=“两边不能有空格;比较”=“两边必须有空格
10、判断:
-e 文件已经存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行
eg1: #!/bin/sh
folder=/home
[ -r "$folder" ] && echo "Can read $folder"
[ -f "$folder" ] || echo "This is not a file"
eg2: #!/bin/sh
folder=/home/redhat/Desktop/tst.c
[ -e "$folder" ] && echo " $folder exists."
[ -f "$folder" ] && echo "this is a file"
[ -s "$folder" ] || echo "file size is zero."
[ -d "$folder" ] || echo "this is not a directory."
11、for循环:
基本结构:for my_var in [list]
do
...
done
说明:$my_var是循环控制变量,[list]是需要变力的一个集合
eg1: for day in Sun Mon Tue Wed Thu Fri Sat
do
echo $day
done
输出:【输出会换行,也就是遍历输出】
Sun \n Mon \n Tue \n Wed \n Thu \n Fri \n Sat \n
eg2: for day in "Sun Mon Tue Wed Thu Fri Sat"
do
echo $day
done
输出:【不换行,遍历体只有一个,即“”中的字符】
Sun Mon Tue Wed Thu Fri Sat
**注:for后面的变量my_val不加$,而echo必须加
12、while循环:
基本结构:while [ condition ]
do
...
done
13、until循环:
基本结构:until [ condition ]
do
...
done
小贴士:while和until的区别在于,while是条件为真执行循环;until是条件为假执行
14、case语句:
基本结构:case "$var" in
condition1)
;;
condition2)
;;
*)
default statments;;
esac
eg: #!/bin/bash
echo "Hit a key, then hit return."
read Key
case "$Key" in
[A-Z] ) echo "Uppercase letter";;
[a-z] ) echo "Lowercase letter";;
[0-9] ) echo "Digit";;
* ) echo "Punctuation, whitespace, or other";;
esac
二、工具软件的作用:
1:源码查看工具:Source Insight
2:远程登录/串口 工具:SecureCRT 实测在RedHat下,用SecureCRT也能进行SSH链接,而在Ubuntu10下不行,暂不知道原因
3:文件传输工具:cureftp
4;tftp服务器程序:tftpboot:uboot上的tft
5:VMware的Unity模式非常好用,他可以吧Linux的窗口直接转化为Windows的窗口
三、调试笔记:
1:关于SSH的链接
(1)终端工具:SecureCRT
(2)Linux:RedHat 6,基于vMware10虚拟机
(3)步骤:
A.Windows链接寝室WIFI,IP地址为:192.168.1.117;
B.虚拟机网络设置为桥接;
C.用ifconfig命令设置RedHat的IP地址为192.168.1.119 ;
D.用ping命令检查Linux与Windows是否接通 ;(可以打开浏览器测试网页)
E.同样设置板子的IP地址 ;
F.板子的网线插到电脑的网口上 ;
2:问题:无法跟板子取得联系。
*主机和虚拟机能够互通的条件:
虚拟机网络使用桥接:IP地址与主机同一网段;
虚拟机网络使用NAT连接:IP地址与主机不同网段
3:Ubuntu 14文件管理中,U盘标志后面的上三角表示卸载U盘
4:2440启动文件(ctr0.s)分析:
软件层面初始化:
(1): 设置返回地址
(2):调用main函数
(3):清理内存
硬件层面初始化:
(1)关闭看门狗(默认启动,时限3s)
(2)初始化时钟(上电12MHz,最高455MHz)
(3)初始化SDRAM(外置)
5:s3c2440地址分配:每个外设都有相应的地址:
NAND FLASH不作为启动ROM:0x00000000-0x30000000是内部ROM地址,0x30000000-0x40000000是SDRAM地址,0x40000000->是SRAM地址
NAND FLASH作为启动地址:0x00000000-0x00000fff(4kB)作为内部启动SRAM;0x08000000-0x30000000作为内部ROM地址,
0x30000000-0x40000000作为SDRAM地址
6:TQ2440的LED引脚分配:LED1:GPB5;LED2:GPB6;LED3:GPB7;LED4:GPB8 ;
7:TQ2440的按键引脚分配:KEY1:GP; KEY2:GP; KEY3:GP; KEY4:GP;
8:Red Hat快捷键:
Ctrl+alt+F1/2/3/4/5/6 切换到命令行模式(需要重新登录);Ctrl+Alt+F7:切换到图形界面
9:Red Hat Enterprise 6的ISO文件夹中的Packages文件夹里面有常用的许多RPM本地安装包,是非常全的本地资源库
若有需要的Linux软件可以到这个文件夹去寻找。
*:用户命令大全
用户相关:
su:切换到Root模式 su 用户名:切换到普通模式(如:su root)
su 选项 用户名:切换用户
useradd 选项 用户名:添加用户
eg:useradd abc:添加名字为abc的用户
passwd 选项 用户名:修改该用户的密码(需要Root权限)
eg:passwd redhat 修改本机redhat的用户密码
系统相关:
关机:
shutdown -t seconds -r/k/h/n/c/f/F time message
eg:shurdown now :立即关机
Ctrl+C:终端中强制结束命令
top:CPU动态监视器(类似于任务查看管理器)
ps:查看系统进程
ps 选项
eg:ps aux //查看系统所有进程(包括进程号,PID等)
kill:杀死进程
kill 选项 进程号
eg:kill -s SIGKILL 4096 //杀死4096号进程
vimvim kill 2683 //杀死2683号进程
man:查看帮助
man 命令
磁盘相关:
df:查看磁盘使用情况:
df 选项 文件(具体详见help或者man文档)
eg:df -k //以kB为单位查看磁盘使用情况
**注:k表示文件大小的单位,k,m,G,T同用
du:查看目录大小
du 选项 目录
eg:du -b dir1 //以字节为单位显示dir1这个目录的大小
**注:b表示大小单位
文件操作:
./表示当前目录:如 ./Destop/tmp/
./表示上一级目录
ls:文件列表
ls 选项
ls -a 显示所有文件(包括隐藏文件)
ls -l = ll 以详细信息的形式显示非隐藏文件
cp:拷贝
su 选项 源文件或目录 目标文件或目录 【-r 操作目录】
eg: cp /home/test /tmp/ ; //拷贝TEST文件
cp -r /home/dir1 /tmp //拷贝dir1这个目录
mv:移动(剪切)(重命名)
mv 选项 源文件或目录 目标文件或目录
eg:mv /home/test /home/test1 //将test更名为test1
eg:mv /home/dir1 /tmp //将dir1目录移动到/tmp目录下
touch:新建空文件
touch 文件
eg: touch /home/redhat/hello.c
rm:删除 【-r 递归删除目录及其包含的子目录】【-f 强制删除而不提示】
rm 选项 文件或目录
eg: rm /home/test //删除test文件
rm -rf /home/dir //强制删除dir1及其子目录而不提示
mkdir:创建目录 【-p 自动新建路径中不存在的文件夹】
mkdir 选项 目录名
eg: mkdir /home/workdir //在home文件夹下创建workdir文件夹
mkdir -p /home/dir1/dir2/dir3 //在home文件夹下自动新建dir1/dir2,再新建dir3
cd:改变工作目录
cd 目录名【- 回到原来目录;../ 回到上级目录】
eg: cd /home/ //进入home目录
pwd:显示当前目录
du:查看目录大小
du 选项 目录
eg:du -b dir1 //以字节为单位显示dir1这个目录的大小
**注:b表示大小单位
ls:查看目录
ls 选项 目录名
【-l 详细列出文件及其信息
eg:$ ls -l sobsrc. tgz
-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. Tgz
说明:权限指示符有10个位置,左数第一个为类型指示符,后面9个字符,3个一组,表示权限
第一个字符指定了文件类型:d表示目录;l表示链接;-表示普通文件;
第一组3个字符表示文件所有者的访问权限:r为可读,w为可写,x为可执行,-为无此权限
第二组3个字符表示与所有者同组用户的访问权限:r为可读,w为可写,x为可执行,-为无此权限
第三组3个字符表示其他用户的访问权限:r为可读,w为可写,x为可执行,-为无此权限
##注:d表示目录;l表示链接,即快捷方式;-表示普通文件
】
eg: ls /home/ //显示/home文件夹中的非隐藏文件
ls -a /home //显示/home文件夹中的全部文件,包括隐藏文件
chmod:改变文件访问权限
chmod who +|-|= mode 文件名
【who参数说明:
u:文件所有者
g:所有者同组用户
o:其他用户
a:所有用户(系统默认值)
mode参数说明:
+:添加某个权限
-:取消某个权限
=:赋予给定权限
mode所表示的权限可使用数字表示:
r:4
w:2
x:1
】
eg:-rwxr----x 1 root root 483997 Ju1 l5 17:3l hello.c
chmod g+w hello.c //给hello.c文件添加所有者同组用户可写的权限
chmod 761 hello.c //给hello.c文件添加所有者同组用户可写的权限
**注:字符操作相当于单片机的IO口的位操作;数字操作相当于IO口的寄存器操作
file:查看文件详细信息
file 文件名
tar:打包解包与压缩解压
【cvf 打包;xvf 解包;cvzf 打包并压缩(.gz);xvzf 解压并解包】
tar 选项 目录或文件
tar 选项 目标文件或目录 源文件或目录
eg:tar cvf tmp.tar /home/tmp //将/home目录下所有文件打包成一个tmp.tar文件
tar xvf tmp.tar //将打包文件在当前目录下解包
tar cvzf tmp.tar.gz /home //将home文件夹下的文件打包并压缩
tar xvzf tmp.tar.gz //在当前目录解压缩并解包tmp.tar.gz文件
unzip:.zip文件解压缩
unzip 选项 压缩文件名.zip
eg:unzip tmp.zip //解压ymp.zip文件
find:查找文件
find 路径 -name '文件名'
eg:find ./ -name 'co*' //在当前目录查找名字为以co开头的文件
find ./ -name 'test' //在当前目录及其子目录查找名为test的文件
grep:查找字符串
grep 选项 字符串
eg:grep "file" ./ -rn //在当前目录中查找包含file字符串的文件
netstat -a | grep tftp //查看所有端口中用于tftp的端口
网络相关:
ifconfig:网络配置
ifconfig 选项 网络接口
eg:ifconfig //查看网络地址信息
sudo ifconfig eth0 192.168.1.7
//设置Linux的IPv4地址,
//ifconfig查看网络配置信息
//enth0是网卡号,用ifconfig可以查看到
sudo ifconfig eth0 up //打开网卡
sudo ifconfig eth0 down //关闭网卡
netstat:查看网络状态
netstat 选项
eg:netstat -a //查看系统中所有的网络监听端口
软件安装:
rpm 选项 安装文件
eg:rpm -ivh tftp.rpm //安装名字为tftp.rpm的文件
rpm -qa //列出所有已安装的RPM包
rpm -e name //卸载名字为name的RPM包
挂载:
mount 选项 设备源 目标目录
eg:mount /dev/cdrom /mnt //将光驱挂载到mnt目录下
取消挂载:
umount 目标目录
eg:umount /mnt //取消光驱在mnt目录的挂载
运行程序:
1、已安装的软件:软件名
2、bash文件:sh 文件名
3、编译(如gcc)产生的可执行文件:地址/文件名
搭建Linux开发平台:
一、交叉工具链:
1、安装工具;
A、解压 ARM-Tools.tar.gz (到当前目录):tar xvzf ARM-Tools.tar.gz
B、安装gcc :tar xvzf arm-linux-gcc-4.3.2.tgz -C /
安装即解压此软件包;-C是强制解压到根目录(/),实际上是解压到了usr/local/arm目录下
C、修改环境变量:
vim /root/.bashrc
在文件末尾加入 export PATH=$PATH:/usr/local/arm/4.3.2/bin(arm-linux-gcc命令在该目录下)
D、保存命令到当前BASH环境:source /root/.bashrc
E、正常运行arm-Linux-gcc
2、裸机程序编译:
A、编译:arm-linux-gcc -g -c led.s :产生.o目标文件
B、链接:arm-linux-ld -Tled.lds :产生连接器脚本文件
C、产生机器代码文件(.elf):arm-Linux-ld -Tled.lds -o led.elf led.o
D、将.elf文件转化成.bin文件:arm-linux-objcopy -O(大写) binary led.elf led.bin
3、makefile工具
cd /....... :进入编译目录
make :一键编译链接
4、烧写方法:
2440:先用JLINK向NOR FLASH烧写u-boot,再通过NOR FLASH 里面的u-boot向NAND FLASH 烧写代码镜像
其他:通过向SD卡烧写u-boot,再用u-boot向NAND FLASH 烧写代码镜像
-JLINK烧写NOR FLASH:
A、硬件连接:开发板上电,连接JLINK、串口线保持连接畅通;
B、J-FLASH配置:打开J-FLASH,设置如下:
配置软件:Options -> Project settings -> CPU -> user target RAM:40000000/96kB ->确定
连接开发板测试:Target -> Connect(显示Connect successfully)
擦除NOR FLASH:Target -> Erase chip
装载u-boot镜像:File -> Open
下载镜像:Target -> Program
C、串口查看:
打开SecureCRT,新建Serial连接,配置为:
拔掉JLINK,开发板复位