嵌入式开发基础一

嵌入式芯片介绍:

1.嵌入式系统

  1.1.嵌入式产品:手机,路由器,MP3,血压计等
  1.2.嵌入式定义:
a>以用户需求为中心
b>计算机技术为基础
c>软件,硬件可裁剪:以iphone和诺基亚为例
d>功能,稳定性,功耗,体积,成本
  1.3.组成部分:软件和硬件
   a>了解硬件组成部分:
明确三大件:CPU,内存,闪存
        明确基本的外围接口:USB(大和小),UART(串口),网口,SD,TF,sensors等
明确:UART和USB或者网口在产品研发阶段一定要有
明确:CPU在硬件上一天到晚就是跟硬件外围设备进行通信,软件上CPU一天到晚在处理各种进程和中断(硬件中断和软件中断)
   b>最后再了解软件:
首先必须明确:产品软件是否上操作系统。不上操作系统又称裸板开发,软件比较简单单一,并且软件直接对硬件操作;上操作系统,软件包含的内容比较复杂,一般对于 嵌入式linux系统来说,软件包含三部分:bootloader(类似BIOS);linux内核(操作系统内核);rootfs(根文件系统)+应用软件。
   c>明确:软件要依赖硬件,硬件依赖用户需求。  
2.嵌入式软件开发的基本模式:
  2.1.特点:
  传统的C++开发,只需PC机和MFC的开发环境(VC)。嵌入式linux软件开发,不仅仅需要PC机,还需要在PC机上安装linux开发环境(linux系统+编辑器+编译器+调试器+下载器(将软件下载到开发板上运行)等),还需要一块硬件开发板。
  2.2.PC机和硬件开发板的连接:
      a>连接通信方式:
      串口:连接PC和TPAD。 例如:软件的下载,下载速度慢;PC机通过串口来操作TPAD;当然TPAD也能够通过串口给PC机发送打印信息 
      网口:一般用于软件的下载,下载速度非常快
      USB口:一般用于软件的下载,下载速度非常快
      TAG口:仅仅用于软件的调试和下载,速度非常慢
      明确:产品研发阶段串口必须要有! USB或者网口必须有一个!串口的传输比较慢,流入:一秒钟发送115200bit位。100M数据,需要120分钟。
  2.3.给开发板安装软件:
  2.3.1.软件对比
  PC机软件:BIOS->WINDOWS内核->WINDOWS文件系统+应用(当然BIOS出厂就有)
  开发板软件:bootloader->linux内核->rootfs根文件系统
  注意:这三个软件出厂都不带,需要自行安装
  2.3.2.TPAD开发板特性:
  1>.TPAD硬件支持多种启动方式:
    >USB启动:TPAD上电以后,TPAD等待PC机通过USB口给TPAD下载软件
    >nand闪存(类似硬盘)启动:TPAD上电以后,TPAD自动从TPAD的nand闪存读取数据到TPAD的内存中
    >SD卡(类似U盘)启动:TPAD上电以后,TPAD自动从SD卡读取数据到内存中
    2>串口启动:
     >启动方式的选择方法:启动方式选择的拨码开关在SD卡的旁边。ftp://ARM/resource.rar/TPAD启动拨码开关.txt
      >注意:断电操作!
      >总结:可以通过以上的启动方法来实现烧写软件到开发板
  3>.接下来采用USB方式来下载软件
    >明确:开发板第一下载时,开发板是没有任何软件!
    >明确:向开发板下载第一个软件是bootloader(BIOS)
  >将来再通过bootloader来下载其他的剩余软件
实施步骤:
    1.准备PC上运行的下载器软件dnw。ftp://ARM/resourc.rar/dnw0.6C.exe;
    2.准备bootloader软件(BIOS):u-boot.bin。ftp://ARM/resource.rar/day01/u-boot.bin/x210_usb.bin。说明:x210_usb.bin是辅助下载软件;
    3.准备PC上的USB驱动(类似PC安装手机的USB驱动)。 ftp://ARM/resource.rar/day01/x210 usb Driver注意:一旦从USB启动,TPAD上电,PC会提示安装USB驱动,需要手动指定USB驱动的路径;
    4.将TPAD的启动方式改成USB启动,然后上电;
    5.打开dnw0.6C.exe。配置串口的工作参数,波特率为115200,COM口:COM1,下载地址改为:0xD0020010;
      点击serial port->connect连接串口,将来TPAD的打印信息可以发送到dnw显示
        点击usb port->下载-> 先下载x210_usb.bin
        在点击配置->把下载地址改为:0x23e00000
        点击usb port->下载->u-boot.bin
        dnw显示u-boot运行信息,提示“Hit any key to stop autoboot:  3 ”,赶快按空格键进入uboot的命令行模式,出现:tarena#
        如果上电还是USB:X,按白色按键给TPAD供电此时此刻,这个u-boot.bin仅仅是下载到内存中!
     6.如果USB下载失败,可以通过SD卡来下载:
      1>.根据文档做一个SD卡启动盘。通过SD卡启动u-boot-V2.rar
      2>.插入SD卡,让开发板从SD卡启动。此时会进入u-boot.bin的命令行模式,此时的u-boot.bin同样运行在内存中      
     7.明确目前的终极目标是将u-boot.bin烧写到nand的0地址。如果进入uboot的命令行以后执行:dnw 20008000 
    >提示:
    OTG cable Connected!
  Now, Waiting for DNW to transmit data
    >利用USB将u-boot.bin下载到内存的0x20008000地址处:
    >nand erase 0 100000:将nand从0地址开始,擦除1M;
    >nand write 20008000 0 10000: 将内存中的u-boot.bin写入到nand的起始地址0开始,大小为1M的存储位置
    >写完以后,把启动的拨码开关拨到从nand启动
     >重新上电,dnw就会显示nand中u-boot的启动信息
烧写第一个软件u-boot(bios)的过程:
1.明确终极目标:烧写u-boot.bin,最终烧写到nandflash的0地址,将来从nand启动,上电自动运行nand的u-boot
2.烧写的方法两种:
  方法1:通过USB烧写

  >工具:dnw,x210 usb driver驱动,USB线

                      x210_usb.bin(辅助软件)
        >先把x210_usb.bin烧写到0xd0020010这个地址处
        >再把u-boot.bin烧写到0x23e00000(内存地址)这个地址处
>最后利用dnw 0x20008000这个命令把u-boot找些到0x20008000(内存地址)地址处
        >最后利用nand erase,nand write命令把0x20008000内存中的u-boot烧写到nand的0地址
  方法2:利用SD卡烧写
>先做一个SD卡的启动盘,SD里烧写了u-boot
        >利用dnw 0x20008000这个命令把u-boot找些到0x20008000(内存地址)地址处
        >最后利用nand erase,nand write命令把0x20008000内存中的u-boot烧写到nand的0地址        
  切记:CPU一天到晚都在跟外设进行通信,代表着CPU要访问外设,对于嵌入式系统来说,CPU访问外设都是通过地址(指针)的形式访问;  
  总结:CPU要想访问某个外设,你首先要搞清楚这个外设的地址!地址由硬件原理图和芯片手册共同来决定,可以问硬件工程师!
  以nand启动为例,uboot的启动过程:
  1.S5PV210上电以后,首先运行IROM内部已经固化好的代码(此代码由三星公司写好)
  2.此代码会判断硬件上到底从USB启动,SD启动还是nand启动,这里以nand启动过程为例
  3.IROM的代码首先把nand的0地址uboot的前8k搬到IRAOM中
  4.IRAM中的前8kuboot做好内存的初始化工作,然后把整个uboot再搬移到内存中某个地址
  5.把整个uboot搬移到内存以后,继续从内存运行uboot
  6.总结:
    第一次搬移由IROM中的代码,从nand搬移到IRAM,搬8K
    第二次搬移由IRAM的8Kuboot代码,从nand搬到内存,整个uboot大小,当然搬移之前先把内存初始化    
5.注意:以上操作都是利用USB或者SD卡烧写u-boot。掌握利用网络下载软件到开发板.例如烧写uboot
   切记:如果要利用网络下载软件到开发板,前提是开发板必须要先运行一个u-boot,也就是利用u-boot的命令工具来下载软件到开发板通过网络
   案例:利用u-boot来更新nand上的u-boot
  实施步骤:
  1.保证开发板从nand启动
  2.保证开发板的nand上已经烧写了u-boot
  3.串口终端工具这里不再使用让人受不了的dnw,使用SecureCRT软件。ftp://ARM/resource.rar/SecureCRT_CN.zip;解压缩,打开可执行程序SecureCRT.exe
  4.对SecureCRT进行配置,作为串口工具:
    点击快速连接
    协议选择:Serial
    端口:COM1
    波特率:115200
    数据位:8
    奇偶校验:none //不做校验
    停止位:1
    RTS/CTS:前面的勾去掉
    点击连接即可
    配置SecureCRT的属性
    字体大小
    字符编码
    背景颜色
   5.启动开发板,赶紧按空格进入uboot命令行模式,其实类似进入BIOS菜单

   6.linux虚拟机中必须保证安装和启动tftp网络服务

>tftp网络服务的作用:实现文件的简单传输,UDP

      >一旦虚拟机开启tftp服务,TPAD就可以从虚拟机上下载文件
        >tftp服务安装:
      联网安装:sudo apt-get install tftpd-hpa
      断网安装:tarena虚拟机已经搞定
        >tftp服务配置:
      在虚拟机中执行:切记看看即可,不要改!
      sudo vim /etc/default/tftpd-hpa
      TFTP_DIRECTORY="/tftpboot"
      >告诉客户端将来下载的文件都是存放在linux系统的/tftpboot下,到这个目录下找要下载的文件 
      >tftp服务启动:
      sudo /etc/init.d/tftpd-hpa restart
      如果将来下载文件失败或者超时,只需利用这个命令将tftp服务重启即可!

   7.利用uboot提供的客户端的工具来实现文件的下载。

 以下命令都是在开发板中执行:

     1.print:打印uboot中的环境变量:
      例如环境变量(必须在同一网段):
      ipaddr=192.168.1.6  //客户端TPAD的ip
      serverip=192.168.1.8 //服务器虚拟机的ip
     2.设置环境变量setenv命令:
      setenv ipaddr 192.168.1.110
      saveenv //保存环境变量
      print //再查看 
     3.测试网络是否正常的命令ping
        ping 192.168.1.8 //客户端ping服务器
        服务器虚拟机不能pinguboot
        提示:
      ping失败
        ping failed; host 192.168.1.8 is not alive  
解决办法:
       1.检查服务器虚拟机的ip一定是192.168.1.8在虚拟机执行ifconfig查看eth0的ip, 如果不是,需要在虚拟机中添加一个静态ip:
        ip为:192.168.1.8
        子网掩码:255.255.255.0
        网关:192.168.1.1
       2.检查虚拟机的网络是否采用桥接
          虚拟机->设置->网络适配器->选择桥接
       3.检查虚拟机桥接的硬件网卡一定是开发板和PC连接的网卡
虚拟机->编辑->虚拟网络编辑器
确保桥接指定的网卡是和开发板连接的网卡
       4.从服务器下载命令tftp命令:
        tftp 20008000 u-boot.bin
        从服务器虚拟机的/tftpboot目录中找u-boot.bin
        利用tftp文件传输服务下载到开发板的内存的0x20008000地址处
        如果出现'T'字符表示超时
        如果超时,只需将tftp服务重启
        如果出现'#'字符表示下载成功
       5.再将下载的uboot从内存写入到nand
        nand erase 0 100000
      将nand从0地址开始擦除,擦除1M空间
      nand write 20008000 0 100000
        将内存0x20008000的数据写入到nand的0地址,大小为1M
       6.重启开发板命令reset
       7.利用uboot向开发板内存下载一个开关灯程序:ftp://ARM/resource/day01/led.bin
          a>.windows和linux虚拟机文件共享
            虚拟机->设置->选项->共享文件夹->点击添加->下一步
  指定:主机路径为例如F:\ESD1508目录为共享目录
linux虚拟中的名称:ES1508
  点击确定;将来F:\ESD1508就是windows和linux的共享目录
        linux虚拟机访问这个目录:
        cd /mnt/hgfs/ESD1508
        cp led.bin /tftpboot       
          b>.首先将led.bin拷贝到虚拟机的/tftpboot目录
          c>.进入uboot的命令行模式
        tftp 20008000 led.bin
        go 20008000 //启动led.bin可执行文件
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值