购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 开发工具

由于目标系统是Linux操作系统,因此本书所有开发过程均在Linux操作系统上完成,PC开发环境是Ubuntu/x86-64。大多数针对Linux的开发工具在Linux平台上都可以很方便地获得,而且在开发过程中,使用相同的操作系统,PC和目标平台可以比较方便地对照操作。

图1.4 树莓派4B接口

原则上说,使用Linux的任何发行版,甚至是在其他操作系统中的Linux虚拟机,本书所涉及的方法依然有效,只是不同Linux发行版的开发工具安装会有一些差别。

1.2.1 编译工具

由于树莓派4B的处理器采用的是Cortex-A架构,使用Arm指令集,与PC的x86处理器使用的指令集完全不同。因此PC的编译工具不能直接用于开发树莓派的软件,需要另外安装一套针对Arm的编译工具。在PC上安装的这组工具被称为“交叉编译工具链”,或简称“交叉编译器”。Arm交叉编译器可以在PC上用源码编译生成,也可以通过软件仓库直接安装二进制程序。源码编译安装过程比较烦琐,如无特殊要求,可以通过包管理器安装二进制程序。Debian或Ubuntu系统可以通过下面的命令安装交叉编译工具:

# apt-get  install  g++-arm-linux-gnueabihf

在命令行操作中,提示符“#”表示超级用户权限,“$”表示普通用户权限。在本书中,PC端的命令用这两个不同的提示符来严格区分这两类用户。获取超级用户的权限可以通过sudo命令,也可以用su命令直接切换到超级用户。在PC上,各人有自己的使用习惯,本书对此也不再区分,仅以提示符“#”表示。而在树莓派个人应用系统上,为了提高效率,在没有特别要求的情况下,一般都以超级用户的身份操作。

依照依赖关系,包管理器会安装所有Arm架构的g++的基础包,包括Arm版本的binutils和glibc。为了简化以后的命令操作,安装后,建议到安装路径下(一般是/usr/bin)将所有带有arm-linux-gnueabihf-前缀的命令进行arm-linux-前缀的链接,命令操作如下:

# for f   in $(ls arm-linux-gnueabihf-*);       \
       do  ln -s  $f $(echo   $f|sed  "s/gnueabihf-//");  \
       done

之后在交叉编译时不需要用arm-linux-gnueabihf-gcc这么长的命令,只需输入arm-linuxgcc即可。

如果按64位Arm指令集Armv8-A编译,则需要安装aarch64-linux-gnu编译工具链:

# apt-get  install  g++-aarch64-linux-gnu

按类似的方法,进行一组aarch64-linux-前缀的链接。

本书以树莓派4B为研究对象。由于树莓派4B的处理器同时支持32位和64位指令集,为了更大限度地发挥系统性能,采用64位指令集,交叉编译器也使用aarch64-linux-前缀。

理论上说,也可以将编译器直接安装在树莓派系统上。构建针对目标系统的编译环境将在第5章介绍。但由于树莓派资源有限,性能也不及PC,不适宜大批量的软件编译,而且最初阶段的移植也必须在PC上编译。对于有明确应用背景的嵌入式系统来说,在目标系统上安装开发环境的意义也不大。

1.2.2 调试接口

树莓派提供串口调试功能。在基本系统安装阶段,开发人员可以用串口调试器连接到树莓派上,用于系统监控。目前多数PC已没有专用的RS–232串口,图1.5(b)是一种USB–232的适配器(转接器),可作为调试器。在PC上,可以使用minicom或screen命令进行串口调试,这里推荐使用minicom。监控设备文件是/dev/ttyUSBx。设备文件名中的数字序号可能会有变化,可用命令dmesg检查插入的USB–232适配器生成的设备文件名,例如:

$ dmesg  |  tail
...
[ 1930.183656    ] usbcore:   registered    new  interface   driver  pl2303
[ 1930.183664    ] usbserial:   USB   Serial  support   registered   for  pl2303
[ 1930.183673    ] pl2303   1-5:1.0:  pl2303    converter   detected
[ 1930.184225    ] usb  1-5:  pl2303   converter   now  attached   to ttyUSB0

不同型号的串口适配器可能会有不同的显示。当操作系统正常启动,完成网络安装配置之后,还可以使用网络方式连接树莓派。

图1.5 实验系统连接示意图

串口数据发送端标记为TxD,接收端标记为RxD。图1.5中,将调试器的TxD、RxD与树莓派的RxD(pin 10)、TxD(pin 8)对接,即一方的发送端连到对方的接收端,地线连到树莓派的GND(pin 6)。树莓派通过专门的线路供电,串口适配器的+5V不用连接。

在PC上,设备文件/dev/ttyUSBx属于dialout组。为避免minicom频繁越权操作,建议将开发者个人用户加入dialout组。可以使用如下的adduser命令(这里假设开发者用户名为user):

# adduser  user  dialout

也可以直接用文本编辑器编辑/etc/group文件,在dialout行上添加user用户。添加的组员权限在下一次登录后生效。

minicom的选项中包含了指定设备和参数的内容,为简化操作,首次使用minicom时,用带有-s的选项启动,以便于直接打开串口配置界面:

$ minicom  -s

在串口设置功能中(serial port setup),按图1.6设置串口设备(/dev/ttyUSB0)、格式(115200 8N1,波特率115200b/s,数据位8位,无校验,1个停止位)。波特率和格式是由Bootloader和内核决定的,使用串口与其他设备连接时,这些参数应根据调试对象的要求设置。

设置好波特率、数据位、停止位、校验方式后,选择Save setup as dfl保存设置参数,再回到minicom主界面。以后再启动minicom时,如果不改变通信参数,不再需要-s选项。

图1.6 设置串口参数 U33Woyqmyd05ZjS9qkYjb23OK4hrnB4CEnAemKWZVQjhQ3MWzdtVbS/MTPWlCGgi

点击中间区域
呼出菜单
上一章
目录
下一章
×