jtahstu的博客

root@jtahstu.com   Github   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> 嵌入式实训第二天

嵌入式实训第二天

【1】vi  使用

  在linux系统下,vi有三种模式
 
   1.命令行模式
   2.底行模式
   3.编辑模式
   
   
   当使用vi打开某个程序时,默认的模式是命令行模式
   在命令行模式下,只能输入vi可以识别的命令。不能编辑程序
   
   
   如果想在终端下编写程序,我们必须将vi的模式从命令行模式切换到编辑模式
   
   通过键盘输入  a  或者  o    或者 i将模式切换到编辑模式
   
   如果向保存程序,必须将编辑模式切换到底行模式
   
   esc  shift+;   wq
   
   
   命令行模式下:
   
     如果想复制某一行,直接将光标切换的对应的某一行,通过键盘输入  yy (复制), p  粘贴
      
     撤销上一次的输入 u(撤销)
     
     如果想删除某一行,直接将光标 切换到对应的某一行,输入 dd(删除某一行)
     
     
     如果想复制多行,或者想删除多行
     
     2yy   2dd
   
   
   
   编译程序
   
   gcc   程序的名字
   
   gcc  test.c
   
   
   运行程序
   
   ./  在当前目录下执行某一个操作
   
   ./a.out
     
 
   
 windows 启动过程:
    
     1.bios
     
     初始化硬件,引导系统(内核(时间的管理,任务的调度))
     
     2.启动系统(内核)(驱动)
     
     2.识别c盘,d盘。e盘等(文件系统)文件系统的格式为NTFS
     
     文件系统:存放应用程序。
     
     
 linux启动过程;
    1.u-boot
      初始化硬件,引导内核
    2.启动系统(内核)  驱动程序
      linux系统(使用的语言 c语言,开发linux系统,对系统裁剪,内核裁剪,嵌入式linux驱动工程师)
    
    3.启动文件系统(存放应用程序)
    
      
    嵌入式linux应用工程师
    
    
  开发板:(linux系统)
    
    
    1.启动uboot
    
    2.启动内核
    
    
    3.识别文件系统
    
    
 发给大家的工具:
 
   putty.exe   串口终端      作用调试uboot内核的信息(通过串口将信息输出到串口终端)
   
   
   
 1.开发板启动:
 
   1. 给开发板上电,在终端上会有打印信息,这个打印信息是由uboot启动时所打印的信息,
      uboot的作用是初始化内存,初始化flash,在uboot启动时有个倒计时,如果在倒计时结束之前
      按下任意键,进入到uboot的命令行。uboot就不会引导操作系统(内核),如果在倒计时结束之前
      没有按下任意键,直接引导内核。
      
      1.1  如何进入到uboot的命令行:
      
          在倒计时结束之前,按下任意键。
          uboot支持的命令  
          printenv  打印环境变量的信息
          
          
          
          baudrate=115200
          串口的波特率
          
                     启动参数
                    bootargs=root=/dev/nfs nfsroot=192.168.2.51:/source/rootfs init=linuxrc rw ip=192.168.2.17 console=ttySAC2,115200
                     启动命令,当启动uboot时,倒计时,在倒计时结束之前没有按下任意键,uboot会执行这个命令
                    bootcmd=tftp 41000000 uImage ;tftp 42000000 exynos4412-fs4412.dtb ;bootm 41000000 - 42000000
                  
                  倒计时
                    bootdelay=3
                     网卡
                    ethact=dm9000
                      mac地址
                    ethaddr=11:22:33:44:55:66
                    网关
                    gatewayip=192.168.2.1
                    
                    开发板的ip地址
                    ipaddr=192.168.2.17
                     子网
                    netmask=255.255.255.0
                    
                    服务器的ip地址(ubuntu 的ip地址)
                    serverip=192.168.2.51
                    
                    
                    标准输入,标准出错,标准输出  都打印到串口上
                    stderr=serial
                    stdin=serial
                    stdout=serial
                    
                    
                    
                    setenv    设置环境变量的信息
                    saveenv   保存环境变量的信息
            
            uboot的命令行:
                    
                    
                    设置开发板的ip地址
                    
                    setenv  ipaddr  192.168.4.250
                    
                    
                    设置服务器的ip地址(ubuntu的ip地址)
                    
                    setenv   serverip  192.168.4.125
                    
                    
                    saveenv
                    
                    
    ubuntu下操作:
    
       在ubuntu下的终端设置ip地址:
       
         sudo ifconfig eth0  192.168.4.125
                    
                    
                    
在uboot的命令行下操作:

   ping  192.168.4.125
   
   host  是存在的。
                    
                    
                    
                    

启动内核

   当uboot启动时,如果没有按下任意键,uboot执行bootcmd命令
   
   
   tftp:简单文件传输协议
   uImage:内核
   
   
   
   在uboot命令行中,tftp是客户端
   在ubuntu下有tftp服务器端
   
   bootcmd=tftp 41000000 uImage ;tftp 42000000 exynos4412-fs4412.dtb ;bootm 41000000 - 42000000
   

   
   
 内核如何加载文件系统
 
  内核启动之后,执行bootargs命令(启动参数)。
  /*****************************************************/
   进入到uboot的命令行(给开发板上电,在倒计时结束之前,按下任意键):
   
   
   setenv  bootargs  root=/dev/nfs nfsroot=192.168.4.125:/source/rootfs  init=/linuxrc rw console=ttySAC2,115200  ip=192.168.4.250
   saveenv
   
 
   切换到ubuntu下操作:
   
   需要将rootfs.tar.xz   拷贝到  /source
   
   
     cd  /source
    
     tar  解压缩
    
       sudo  tar  xvf  rootfs.tar.xz
       
       
       
       给开发板上电。##############################,说明成功
       TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
      在buntu:
       
       sudo  ifconfig   eth0  192.168.4.125
        TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
        
        
        在ubuntu下操作:
        
        sudo   /etc/init.d/tftpd-hpa  restart    启动tftp服务
        
        
        
        
        测试:
        
        a.out   chrdev.ko     /source/rootfs
        
        
        进入到开发板的文件系统中:
        
        
        insmod  chrdev.ko    加载驱动程序
        
        ./a.out  执行应用程序
        
        
        在linux 系统下编写某个应用程序,使用gcc编译,得到的可执行程序是x86格式,如何确定我编译
        生成的格式是x86,
        file   可执行程序的名字   查看可执行程序的格式
        
        生成的格式如果为x86格式,这个程序只能在linux系统下运行,不能在arm开发板运行
        
        
        
        问:为什么生成的x86格式的程序不能在arm开发板上运行?
        
        答:pc的处理器intel,得到的格式x86格式
           但是arm开发板的处理器是arm处理器,如果想在arm处理器上运行程序,程序的格式必须为arm格式
           
           如果向编译生成arm格式,我们就必须需要另外一款编译器,可以将程序编译生成arm格式。
           
           
        问:如果安装可以编译生成arm格式的编译器
           
        答:在发给大家的目录中,有工具这个目录,在工具的目录有个文件  gcc-4.6.4.tar.xz
           
           需要将这个文件拷贝到家目录
           
           
           解压缩
           
           tar  xvf  gcc-4.6.4.tar.xz
          
           sudo  vi   /etc/bash.bashrc
           
           在最后一行加入
           
           export  PATH=$PATH:/home/linux/gcc-4.6.4/bin
           
           保存退出
           
           source   /etc/bash.bashrc
           
           arm-n 按tab键

---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

17 + 71 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交
正在加载中……