Linux基础

一、常用命令:

    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,开发板复位
       
       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值