嵌入式开发:PC与开发板协同调试环境搭建

一、嵌入式开发配件:
1开发板一块
2.USB转串口线:需要安装驱动,安装完在端口上看;
3.网线一根
4.USB线1根(micro USB)
5.电源5V2A
二、环境搭建:
1.通过USB接口或串口调试开发板
2.串口线或者usb转串口线链接开发板和电脑
3.安装USB转串口驱动程序
链接:驱动程序下载
提取码:d9qu
在这里插入图片描述打开电脑的设备管理器查看
在这里插入图片描述4.使用串口时远程登录选serial,波特率选115200,数据8位停止1位校验为null;登录后就是开发板系统;
在这里插入图片描述5.本地编译:
在当前平台编译,得到的程序在本地执行时所使用的编译器称为本地编译器如:linux中的gcc编译器, windows上VC等
5.1 交叉编译:
在一种平台上编译出能运行在体系结构不同的另一种平台上的程序如在X86平台上编译出能运行于ARM平台上的程序所使用的编译器称为交叉编译器如后面我们要使用的 arm-linuux-gcc等
5.2 为什么要使用交叉编译?
由于嵌入式设备没有足够的内存及存储资源来完成其编译过程所以必须使用交义编译的方式,常用的交叉编译器版本如下:3.4.1、4.3.2.4.4.1、4.7.1、5.1.3等.
这里我们为保证兼容性使用4.3.2.
5.3 c语言程序编译过程
在这里插入图片描述安装交叉编译工具链
6.打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹,并将下载的安装包拷贝进来解压;
6.1 执行sudo vi /etc/profile 或 sudo vi H O M E / . b a s h r c 命 令 , 在 文 件 末 尾 加 上 e x p o r t P A T H = / u s r / l o c a l / a r m / 4.3.2 / b i n : HOME/.bashrc命令,在文件末尾加上export PATH=/usr/local/arm/4.3.2/bin: HOME/.bashrcexportPATH=/usr/local/arm/4.3.2/bin:PATH
注:在一个终端中执行以上命令后,该终端中就可以直接使用arm-linux-gcc了,但是只要关掉这个终端再另外打开一个立马就不行了。
原因是我们本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出。
要每次打开终端都可以看到这个环境变量就执行6.1命令。
6.2 验证:arm-liunx-gcc -v,类似如下证明安装完成。
在这里插入图片描述
6.3 编辑、编译:验证根文件系统,并进行相应的可执行文件传输到开发板,通过交叉编译的只能在开发板执行,在虚拟机出错,如下图验证:
在这里插入图片描述
注:虚拟机编辑编译为可执行程序,开发板运行程序。因为编译器太大开发板内存一般都小为了效率不会放到开发板上。
总结:
7 PC与嵌入式系统 Zmodem方式通信
7.1在串口调试工具 xShell中,输入rz
7.2在弹出窗口中选中要发送到开发板的程序,点打开按钮
7.3传输完毕后点击 close按钮
7.4.ls查看文件是否传输成功
7.5给可执行程序加可执行权
7.6 执行可执行程序

8 嵌入式开发流程
8.1裸机开发:对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统我们可使用类似单片机开发的步骤完成整个开发。
裸机(没有操作系统)开发:硬件开发(PCB、原理图)->启动代码(硬件初始化,一般是厂商的汇编代码)->设备驱动(裸机下驱动)->应用程序(单任务)
带操作系统开发:当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理控制内存、多任务、周边资源等。
嵌入式系统开发流程:
带操作系统的开发::硬件开发(PCB、原理图)->启动加载程-(bootloader)>操作系统内核(kernel)->根文件系统(root)->设备驱动(driver)->应用程序(进程、线程、GUI、网络、数据库)

9通常基于Linux系统的嵌入式开发步骤:
9.1.开发目标硬件系统:根据需求选择微处理器、flash及其他外设等;
9.2.建立交叉开发环境:安装linux开发环境\交叉编译工具链;配置串口、网络、USB通信工具;
9.3.开发bootloader,移植Bootloader,如u-boot;
9.4.移植Linux内核:如Linux3.4.39内核移植;
9.5.开发根文件系统:如ext4文件系统的制作;
9.6.开发相关硬件驱动程序:如LED、网卡、GPIO等;
9.7.开发上层的应用程序如:网络、QT GUI开发。

10.系统组成(软件)
bootloader, kernel( driver)。rootfs,app层次
在这里插入图片描述系统上电后先执行Bootloader再操作系统最后是应用程序运行;Bootloader作用是将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好正确的环境,类似于PC上的BIOS。
注:PC在BIOS后还会启动Bootloader。
10.1Bootloader
Bootloader是系统上电后运行的第一段代码,因此需要把Bootloader烧入以下介质完成启动;
10.2 Linux内核
Linux内核:是系统软件的核心,对整个系统的性能起决定性作用;其实就是内核源码;http://www.kernel.org.
linux内核实现5大功能模块:进程管理、内存管理、文件系统、设备控制、网络。
10.3 Linux驱动程序:沟通用户与硬件的桥梁,作用是驱动硬件正常工作。
10.4文件系统:存放Linux系统,是重要文件、命令、应用程序的集合,操作系统起来后可直接使用。可理解为ROM包。
在启动内核后需要挂载根文件系统
(1包含Linux内核启动必须的配置文件,如:开机密码、网络配置脚本、环境变量等;
(2应用程序运行所需的库函数;
(3常用的应用程序:ftp、vi、telnet、web服务器等。
10.5 1Linux应用程序:基于本地的图形库:QT、miniGUI等;基于网络:CS结构、BS结构、路由转发、组网;基于数据库存储:sqlite等;基于设备控制:uart 、can、iic、spi等。

此例中嵌入式学习的软件如下
web:boa服务器+CGI+AJAX+HTML
QT:4.7.0
mplayer:音视频播放
sqlite:小型数据库
wifi:无线支持
upnp:局域网文件共享协议
opencv:图像识别库

1.Bootloader烧写
Bootloader是系统上电后运行的第一段代码,因此需要把Bootloader烧入以下介质完成启动;
EMMC:稳定容量大速度快(硬盘启动)
TF卡:便捷、扩展性好、不稳定(U盘启动)
通过串口工具判断Bootloader是否启动成功,若EMMC或出厂的一些数据出错就用TF卡启动重新烧写Bootloader;
串口工具一般有:Windows上:超级终端、xsell、putty、secureCRT;linux上:minicom;
串口通讯工具配置:波特率115200,数据位8位,奇偶校验:无,停止位:1,数据流控制:无。
重启开发板,按空格键开发板就会停止在u-boot界面:如:orange-uboot#
在这里插入图片描述2.内核、根文件系统烧写
可以使用u-boot烧写内核、文件系统或者更新Bootloader;
Bootloader一般支持以下系统更新方式:USB方式(fastboot)、网络方式(TFTP)、SD_FUSE(SD卡后期更新)。(注:网卡没有裸机驱动就不支持网络烧写)
USB更新系统(fastboot:线刷):通过fastboot软件和USB数据线可以更新开发板系统,前提是:开发板flash中已经存储了Bootloader或者开发板已经从TF卡启动了,才可用此法更新系统。
USB更新系统步骤:
2.1先初始化USB,准备与上位机通信;(让开发板停在Bootloader命令行界面:开发板的串口1和电脑的串口通过串口线连接后,打开开发板电源。当串口软件出现:Hit any key to stop autoboot"时迅速按电脑键盘任意键。)
在这里插入图片描述开发板的OTG口(micro供电口)通过USB线连接到电脑USB。在Bootloader命令行界面敲命令fastboot并按回车(orange_uboot#fastboot);
在这里插入图片描述输入命令后开发板会初始化USB OTG口,让其准备好和上位机通信。
注:第一次使用fastboot命令时电脑会出现安装向导,此时应安装fastboot驱动。
2.2在上位机(XP)上运行fastboot软件;(双击fastboot目录下*.bat则会运行fastboot.exe软件,向开发板烧入Linux系统。当命令行出现:Flash:gtkfs - DONE表示烧写完成。)
2.3修改开发板环境变量。
3.PC与嵌入式系统网络方式通信
Windows\Linux与开发板通信方式:rz sz;网络(nfs);USB主:通过U盘(/media目录下);SD卡:SD卡导入(/media目录下)。
网络文件系统NFS:是一种将远程主机上的目录经网络挂载到本地主机的一种机制。通过NFS文件系统可以直接在嵌入式目标系统上调试服务器上的程序。
注:3.1samba是将Linux文件夹共享给Windows,Samba是通过Windows访问Linux;而hgfs刚好相反,hgfs是通过Linux访问Windows。
3.2开发板自动获取IP输入命令:udhcpc。
3.3.1 nfs服务安装#sudo apt-get install nfs-kernel-server nfs-common
3.3.2 工作路径配置:#sudo gedit /etc/profile最后加上语句:/*(rw,sync,no_root_squash)
3.3.3 重启服务生效:#sudo service nfs-kernel-server restart
3.3.4 在PC上测试:#sudo mount -o nolock IP:/home/huislee /tmp
在这里插入图片描述3.3.5 在嵌入式Linux使用
#ping IP测试网络联通
注:可以将挂载命令写进/etc/profile和~/.bashrc中就可以让开发板开机自动挂载。
3.3.6自动挂载 etc/ profile和-~/.bashrc的作用,其实我们可以将挂载命令写在开发板开机自动启动的脚本里边,以后开发板开机就自动挂载还可以自己写一个挂载脚本手动运行自己写的脚本去完成挂载。例如 mount nfs.sh
3.3.7验证挂在是否成功
看看在开发板的mnt目录下,有没有虚拟机里面的文件夹或文件.

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值