1 嵌入式学习入门
1、提出三个要求:
建议安装纯linux系统,比如:
ubuntu,fedora,kali(黑客最爱)
2、建议安装必要软件:
明确linux系统安装软件方法:
网络安装和本地安装。
网络安装:
自动从网络下载所有的软件包进行安装;
优点:自动检查软件之间的依赖,会自动安装依赖文件;
缺点:必须联网。
ubuntu网络安装命令:
sudo apt-get install 软件名。
fedora网络安装命令:
sudo yum install 软件名。
本地安装:
手动下载软件包安装。
缺点:不会检查软件依赖,如果软件之间有依赖,安装及其复杂。
优点:无需联网安装
ubuntu本地安装命令:
sudo dpkg -i 软件名.deb
fedora本地安装命令:
sudo rpm -i 软件名.rpm
以ubuntu网络安装为例:
sudo apt-get install vim vimplus
注意:还需要添加配置文件:.vimrc和.vim
sudo apt-get install ckermit minicom //linux系统下的两款串口工具
注意:还需要添加kermit或者minicom的配置(具体配置上网自己查)
sudo apt-get install tftpd-hpa //tftp网络服务,用于文件传输下载
注意:同样需要配置tftpd-hpa网络服务,后续细讲。
sudo apt-get install nfs-kernel-server //大名鼎鼎nfs网络服务,用于文件传输
//nfs强于tftp服务
sudo apt-get install ctags cscope //linux系统下阅读源码的两款工具
sudo apt-get install wine //模拟器,可以用于安装windows下的.exe可执行文件
//类似虚拟机
3、为什么学习嵌入式
1)首先谈谈身边的嵌入式产品
手机,投影仪,扫地机器人,无人机,智能路由器,平衡车等,都属于嵌入式。
要想知道内部如何实现?必须掌握嵌入式开发相关的技术。
2)嵌入式定义特点
嵌入式系统是以用于需求为中心,软件和硬件可裁剪的,对性能、功耗、体积、成本有严格要求的计算机系统。
以iphone手机和老人机做一个对比
iphone手机 老人机
面向群体 年轻人 老人
WIFI功能 有 无
蓝牙 有 无
摄像头 有 无
性能 强大 比较弱
成本 高 低
结论 火 火
结论:依赖关系:
嵌入式产品的硬件依赖用户需求;
嵌入式产品的软件依赖硬件。
结论:开发设计内容,围绕着硬件和软件,这些内容的前提是搞清楚用户的基本需求。
4、如何使用硬件和软件
1)首先在上位机搭建嵌入式开发环境
如果是裸板开发,只需在windows下安装裸板开发的工具即可,例如:keil5。
如果是跑linux系统的,必须做:
1.安装纯linux系统
2.安装必要的软件
3.安装交叉编译器
2)掌握基本的硬件信息
粗看:用肉眼看看下位机基本的硬件信息
CPU:看型号:X6818下位机CPU型号为三星的S5P6818(ARM架构)
内存:看容量和内存的基地址,X6818下位机内存型号为:H5TQ4G63AFR*2
一个容量为:4Gb=512MB
所以X6818下位机内存的容量为1GB
X6818内存的基地址为0x40000000
X6818有效内存存储空间地址范围:0x40000000~0x400000000+1GB-1
然后软件上只要以指针的形式访问内存空间即可!
例如:向内存起始地址写入4字节数据0x55555555
*(int *)0x40000000 = 0x55555555;
闪存:看容量和闪存的类型,X6818下位机闪存容量为8GB
嵌入式常用的闪存类型:
Norflash:看容量和基地址,它的访问也是通过指针的形式访问的
Nandflash:看容量即可,它的访问形式通过Nand控制器来访问
EMMC:和TF卡一样,看容量即可,它的访问形式通过EMMC控制器来访问
X6818下位机使用的是三星的EMMC这类闪存。
外围接口:哪些接口有哪些接口没有,关键看用户需求
比如:手机和路由器是否具有LCD显示屏为例
手机必须具有LCD显示屏接口
但是路由器就无需LCD显示屏接口
切记切记:即使实际产品以下两个接口用不到,但是在产品的研发阶段,串口UART和网口必须要有,用于软件的调试,加快软件开发的进度。产品发布阶段,可以将UART和网卡裁掉。
串口UART功能:用于连接上位机和下位机,理论上可以用于文件传输下载或者下位机的软件运行的打印信息通过UART串口上传到上位机显示。
UART串口用于文件传输速度很慢,例如:
比如UART传输速度为115200bps(一秒钟传输115200个bit)
现在要通过UART从上位机下载100MB的软件到下位机,请问需要多长时间:2小时
结论:串口UART一般用于打印,下位机软件运行的打印信息通过UART上传到上位机,就这样还是浪费CPU资源,所以下位机的软件尽量少打印。
网口功能:用于实现上位机和下位机的文件传输,速度非常快,当然也可以传输打印信息。
细看:关键看两个法宝:下位机硬件原理图和下位机各个芯片的芯片手册
切记:具体硬件外接的芯片具体分析!例如目前研究如何开关灯
那只需看灯相关的原理图和芯片手册即可,其余不看!
硬件原理图:就是告诉你CPU和外接的芯片如何连接的
X6818有两个原理图:
resource.rar/硬件原理图/x6818bv2.pdf(底板原理图)
resource.rar/硬件原理图/x4418cv3_release20150713.pdf(核心板原理图)
芯片手册:就是告诉你这个芯片是如何操作使用的(说明书)
X6818下位机所有的芯片手册在resource.rar/Datasheet/
例如:
S5P6818处理器的芯片手册:SEC_S5P6818X完整版.pdf
MMA8653三轴加速度传感器手册:mma8653frc1.pdf
阶段性小案例:将上位机和下位机连接起来
提示:需要连接三根线:
电源线
UART串口线
网线
5、掌控硬件信息完毕,紧接着要向下位机部署(烧写、安装)软件
明确:交叉编译:代码的编辑编译是在上位机完成,代码的运行在下位机。
理论上在下位机也可以编辑编译代码,但是由于下位机的硬件资源的限制,速度相关上位机比较慢。
明确:大名鼎鼎的uboot软件能够提供tftp命令用于从服务器上下载文件
明确:S5P6818处理器的启动流程:
上电以后,S5P6818处理器首先检查SD0卡槽上是否有TF卡插入
如果有,S5P6818处理器自动运行TF卡上的uboot
如果没有,S5P6818处理器然后再去运行EMMC上的uboot
如果EMMC上有uboot,S5P6818运行EMMC上的uboot
如果EMMC上没有uboot,系统启动失败
总结:向下位机烧写软件的步骤。
上位机添加配置一个静态IP(例如:192.168.1.8)
配置步骤:
右键点击ubuntu右上角的网络连接图标(上下箭头或者扇形)
->再点击"编辑连接"->将别人的配置信息全部删除->
点击"添加"->连接名称指定为"TPAD"->在点击“IPV4设置"->
"方法"选择为”手动“,->再点击"添加"
->IP地址为:192.168.1.8,子网掩码:255.255.255.0
网关:192.168.1.1->最后点击保存退出即可
注意:可以手动点击网络连接图标,选中自己的配置TPAD
如果是虚拟机,还需要配置网络的连接信息:
点击虚拟机软件菜单栏的“虚拟机”->在点击设置->
选中网络适配器->选择为"桥接方式"->最后点击确定即可
如果是虚拟机,还要注意虚拟机linux的虚拟网卡桥接到实际的哪个网卡上,一定要确保桥接到和下位机连接的那个网卡上。
具体配置如下:
点击虚拟机软件菜单栏的"编辑"->在点击虚拟网络编辑器
->桥接到具体的那个网卡(跟下位机连接)可以在网络邻居中查看
->确定以后选中桥接的网卡即可,点击应用确定即可
上位机还要做的事情:
1)安装tftpd-hpa网络服务,用于文件的传输下载
sudo apt-get install tftpd-hpa
2)配置tftpd-hpa网络服务,指定下载目录
sudo vim /etc/default/tftpd-hpa //打开配置文件
将:TFTP_DIRECTORY="/var/lib/tftpboot"
修改为:TFTP_DIRECTORY="/tftpboot"
保存退出
说明:也就是将下载目录指定为/tftpboot目录
3)创建下载目录
sudo mkdir /tftpboot
4)修改下载目录的组和用户
sudo chown baby /tftpboot -R //将/tftpboot的用户修改为baby用户
sudo chgrp baby /tftpboot -R //将/tftpboot的组修改为baby组
注:具体看你用户名。
5)重启tftpd-hpa网络服务
sudo serivce tftpd-hpa restart