嵌入式开发基础

嵌入式芯片介绍:

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值