[博创智联]创新创客智能硬件平台——配置交叉编译环境

安装合适的串口软件

在开发板首次烧录系统后,我们需要使用串口实现和开发板的通信。所以串口工具必不可少,可以选择以前常用的HyperTerminal(超级终端)、或者较新的MobaXterm、XShell,此处笔者以 MobaXterm 为例。

(1)访问MobaXterm官网,进入Download页面,选择Home Edition,点击Download now进入下载页面。MobaXterm下载页面
(2)选择Portable edition(免安装版)进行下载即可,若有需要选择Installer edition也可以,区别不大。
MobaXterm下载选择
(3)下载完成后使用解压软件(如WinRAR等)进行解压,请尽量选择全英文的路径下,防止中文不兼容问题。

(4)解压后双击MobaXterm***.exe,即可运行。此处*表示通配符,具体内容根据下载版本的不同而不同。
MobaXterm解压并运行
(5)首次启动需要初始化,需等待一段时间,若弹出主密码配置对话框,可以根据需要进行配置。按照对话框提示,在第一行输入主密码,第二行再次输入主密码确认,并在下方选项卡中选择合适的配置。第一项是仅在Windows登录用户切换或新的电脑上需要输入主密码,第二项是每次MobaXterm启动时输入主密码,第三项是每次MobaXterm启动或被唤醒时输入主密码。
MobaXterm主密码配置
(6)进入主界面如下,如果是第一次安装,将不会有最近的连接记录,笔者曾多次使用过,所以在屏幕左侧边栏中存储了曾连接过的会话,为了安全起见,已经将具体ip地址隐去。
MobaXterm主界面
(7)点击Session(会话)图标,新建一个会话,在弹出的对话框中选择Serial(串口)图标。1
MobaXterm新建会话
MobaXterm新建串口连接

(8)在Basic Serial settings(基本串口设置)中,点击Serial port(串口)的下拉菜单,选择设备对应的串口,此处不同的电脑、不同的设备、不同的接口都可能产生不同的串口号,可以在Windows的设备管理器(打开设备管理器的方式请自行查询2)中查看具体设备的串口号,本例中为COM3。
MobaXterm串口设置COM
Windows查看串口号

(9)在右侧的Speed(bps)中选择合适的波特率,常用波特率有9600和115200两种,请根据开发板的设置进行选择。
MobaXterm配置波特率
(10)接下来直接选择Ok即可开始连接串口设备,如果有兴趣的话可以在刚才的面板上选择Advanced Serial settings(高级串口设置),进行进一步调整,使其更符合自己的使用习惯。

配置虚拟机

虚拟机的启动与配网

(1)由于是嵌入式开发,开发板本身性能有限,不推荐在开发板本身直接配置环境并实现开发,所以选择交叉编译的形式完成开发,即在Linux系统中编写程序和驱动并完成编译,而后将文件挂载到开发板上运行。方便起见,我们使用VMware Workstation实现虚拟机开发。

(2)在资料文件中,解压ubuntu14.04的压缩包,备用。

(3)安装VMware Workstation(版本需要大于等于14),具体方式请自行搜索3,为避免版权问题,此处不再赘述安装过程。

VMware打开虚拟机
(4)在VMware Workstation的菜单界面中点击文件选项卡,选择打开。在弹出的对话框中进入解压后虚拟机的文件夹,选择Ubuntu 64 位.vmx,点击打开选项即可,VMware Workstation会自动跳转到虚拟机的详情页面。
VMware打开镜像
(5)在新的界面中点击编辑虚拟机设置,在硬件选项卡下,为虚拟机分配合适的内存、处理器、硬盘空间。

1)内存:至少2GB,若宿主机内存不足4GB,请酌情考虑升级内存或降低虚拟机内存。

2)处理器:根据宿主机实际线程总数合理分配,推荐分配为宿主机的一半,若分配数量超出宿主机的线程总数,则会在右侧处理器栏提示数量过多,开启虚拟机将失败。

3)硬盘空间:本虚拟机并未一次性分配所有磁盘空间,即在使用过程中将逐步占用更多的磁盘空间,直至达到磁盘设置分配的上限,此选项一般无需修改,仅需在存放虚拟机文件的实际磁盘分区内预留足够的剩余空间即可。
VMware配置
在选项选项卡下,点击共享文件夹,将右侧的共享文件夹全部移除,然后点击添加,在添加共享文件夹向导中完成添加,其中主机路径指的是宿主机的共享文件夹存放位置,设置完成后,宿主机和虚拟机可以通过此文件夹实现文件的共享。
VMware共享

(6)在上一步中的网络适配器选项,将网络连接设置为桥接模式,且无需勾选复制物理网络连接状态。
VMware配网
接着点击菜单中的编辑,选择虚拟网络编辑器。
编辑网络
点击右下角的更改设置,在弹出的UAC界面中选择是,修改VMnet0如下。
更改设置
UAC
网络桥接
桥接到下拉菜单默认为自动,如果后续使用时出现问题,可以在此手动指定为需要桥接的网卡。在实际使用中实验室网络并不方便,需要自行开启热点,所以本例中在使用wifi时可以手动指定为Broadcom 802.11ac网络适配器,此处不同电脑、不同网卡显示名词不同,需要自行判断。若使用网线联网,本例中则可以指定为Realtek PCIe GBE Family Controller。

(7)接下来可以点击开启此虚拟机,开始环境配置了。开机时若提示是否移动或复制了虚拟机,可以选择复制了虚拟机。

在正常情况下,虚拟机端需要完成配网、下载linux内核、编译内核、安装交叉编译工具链,配置网络共享等操作,本虚拟机已经将大部分配置完成,但为了方便后续开发,仍然需要进行一些设置。

首先登陆 账户uptech密码uptech(全小写)。

登陆后在菜单中找到terminal(终端),并将其拖拽至左侧边栏,方便后续经常使用。
terminal
在宿主机上输入键盘快捷键 Windows+R,打开运行窗口,输入 cmd,打开command line窗口,输入 ipconfig 查看网络连接情况,

ipconfig

ipconfig

本例中使用热点wifi连接,宿主机ip地址为192.168.43.134,进入虚拟机内,打开终端,输入 ifconfig,查看网络连接情况,如果没有问题可以按下快捷键 Ctrl + C 终止ping命令,本例中为192.168.43.102,两个ip在同一网段内。

ifconfig

ifconfig
这里的eth即Ethernet(以太网),泛指有线网络,0是有线网络的编号,用于多个有线网络同时存在时对其加以区分。

若ifconfig发现没有eth0,可以在终端输入 ifconfig eth0 up 命令,使能虚拟的有线网络。

ifconfig eth0 up

若发现设备不在同一网段内,可以首先回到之前的虚拟网络编辑器中,将自动改为合适的指定值。将鼠标键盘暂时退出虚拟机的快捷键是 Ctrl+Alt

若重启虚拟机后若仍不在同一网段,可以在虚拟机设置中修改网络配置,将其设置为静态ip。

1)进入系统设置,点击网络选项。

2)点右下角的设置,进行进一步配置。

3)在 IPv4设置 中选择 手动(静态),本例中可以设置IPv4地址为192.168.43.2,网关设置为192.168.43.1,请根据实际情况为准进行调整,DNS设置为114.114.114.114,再次重启虚拟机查看网络情况。

若在图形化页面中设置网络没有效果,也可以尝试使用命令行的方式进行设置,默认虚拟机中虚拟的是有线网络,即eth0,所以我们在终端中输入 ifconfig eth0 *,此处*填写合适的静态ip,例:ifconfig eth0 192.168.43.2。

ifconfig eth0 ***.***.***.***

使用 route add default gw * dev eth0 强制添加默认网关地址,此处*填写合适的网关ip地址,例:route add default gw 192.168.43.1 dev eth0。

route add default gw ***.***.***.*** dev eth0

(8)在同一网络下可以使用ping命令检测虚拟机和宿主机之间网络是否连通,ping命令是基于ICMP协议的,所以需要Windows 防火墙放行ICMP协议

打开控制面板,点击系统和安全,点击Windows Defender 防火墙,再点击左侧的高级设置。在弹出的新窗口中点击入站规则,找到 核心网络诊断 - ICMP回显请求(ICMPv4-In),右键,启用此规则,将这 两条 规则启用即可,由于Windows默认开启出站的ICMP规则,所以此处不再赘述,如有需要,可自行设置,和入站规则相似。
防火墙ICMP
在虚拟机中向主机执行 ping 命令,本例中为ping 192.168.43.134,请根据实际情况替换ip地址。

ping ***.***.***.***

ping1
在主机中向虚拟机执行 ping 命令,本例中为ping 192.168.43.102,请根据实际情况替换ip地址。
ping2

虚拟机的环境配置

(1)如前文所述,本虚拟机已经提前安装过交叉编译工具,同时储存了配套的内核文件,同时安装并启用了NFS(网络文件共享)服务,但需要 修改NFS配置 来适应具体的开发环境,最后我们会尝试 开启root账户 权限,方便后期开发时使用root权限进行调试。

(2)在虚拟机中找到文件管理器,点击左侧边栏的Devices的Computer,进入根目录。
root
找到并双击进入 opt 文件夹,使用双击依次进入 poky–>1.7 文件夹,找到文件 environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi,双击使用Text Editor打开,复制文件的全部内容(或者复制下方代码)。

此处建议读者在Linux环境下尽量使用 鼠标右键菜单 实现复制、剪切、粘贴等功能,原本在Windows环境中的复制快捷键 Ctrl + C 在Linux终端(命令行)中表示强制中断当前进程的操作,容易混淆。

export SDKTARGETSYSROOT=/opt/poky/1.7/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
export PATH=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH
export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT
export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig
export CONFIG_SITE=/opt/poky/1.7/site-config-cortexa9hf-vfp-neon-poky-linux-gnueabi
export OECORE_NATIVE_SYSROOT="/opt/poky/1.7/sysroots/x86_64-pokysdk-linux"
export OECORE_TARGET_SYSROOT="$SDKTARGETSYSROOT"
export OECORE_ACLOCAL_OPTS="-I /opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/share/aclocal"
export PYTHONHOME=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr
export CC="arm-poky-linux-gnueabi-gcc  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
export CXX="arm-poky-linux-gnueabi-g++  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
export CPP="arm-poky-linux-gnueabi-gcc -E  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
export AS="arm-poky-linux-gnueabi-as "
export LD="arm-poky-linux-gnueabi-ld  --sysroot=$SDKTARGETSYSROOT"
export GDB=arm-poky-linux-gnueabi-gdb
export STRIP=arm-poky-linux-gnueabi-strip
export RANLIB=arm-poky-linux-gnueabi-ranlib
export OBJCOPY=arm-poky-linux-gnueabi-objcopy
export OBJDUMP=arm-poky-linux-gnueabi-objdump
export AR=arm-poky-linux-gnueabi-ar
export NM=arm-poky-linux-gnueabi-nm
export M4=m4
export TARGET_PREFIX=arm-poky-linux-gnueabi-
export CONFIGURE_FLAGS="--target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT"
export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
export CPPFLAGS=""
export KCFLAGS="--sysroot=$SDKTARGETSYSROOT"
export OECORE_DISTRO_VERSION="1.7"
export OECORE_SDK_VERSION="1.7"
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-

# Append environment subscripts
if [ -d "$OECORE_TARGET_SYSROOT/environment-setup.d" ]; then
    for envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do
	    source $envfile
    done
fi
if [ -d "$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then
    for envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
	    source $envfile
    done
fi

接着打开终端,输入 sudo nano /etc/profile 命令4,其中sudo一般用在普通用户执行高级的命令时提供root权限,将本来无法执行的命令(或无法操作的文件)用提权的方式成功执行。输入命令后将被要求输入当前账户的密码,需要注意的是,此时输入密码将不会有 * 或者任何提示,输入完成后按下Enter,进入nano文本编辑器,使用上下左右方向键,将光标移至结尾,并用Enter键另起一行,右键粘贴之前复制的代码,输入 Ctrl + O(此快捷键可以修改文件保存名称,但本文件不应修改,请保持原名称),再按下Enter键确认保存,最后按下快捷键 Ctrl + X 退出文本编辑器。

sudo nano /etc/profile

至此已经修复了环境变量,需要重启虚拟机确保配置已经生效。

(3)通常来讲,交叉编译时需要安装对应的交叉编译工具链,本虚拟机已经预装完成,可以省略此步骤。

(4)接下来我们配置NFS服务,首先打开文件管理器,点击左侧的Home进入用户主目录,在右侧空白处新建文件夹,本例中将文件夹命名为jiuzhea,用作我们后续开发的工作目录,也是接下来用于NFS共享的目录。5

Home
接着我们打开终端,输入sudo nano /etc/exports,即可进入文本编辑器。请注意,部分代码无需完全手动输入,本例中,可以仅输入 sudo nano /etc/ex ,按下Tab键,即可自动补全为 sudo nano /etc/exports,或者可以按两下Tab键,显示当前可以补全的候选项。

同样,我们将光标移至末尾,另起一行,输入xxx *(rw,sync,no_root_squash,no_subtree_check)

其中xxx需要替换为实际的工作路径,本例中笔者的工作路径是/home/uptech/jiuzhea,所以输入/home/uptech/jiuzhea *(rw,sync,no_root_squash,no_subtree_check)。

其中 * 表示可以共享的ip地址,单独的 * 表示将此共享开发给所有ip,若写成192.168.43.*,就是只对192.168.43网段内的ip地址开放共享,若写成192.168.43.102,就是只对192.168.43.102单独一个ip开放共享。

修改完成后,保存退出即可(保存退出快捷键请见上文,后续将不再重复讲解已经提及的基础操作)。

sudo nano /etc/exports

nfs export

接着输入sudo service nfs-kernel-server restart,即可重启NFS服务,使刚才修改的新配置文件生效。
service restart

(5)最后,我们尝试为Ubuntu添加root账户,方便后续开发时,能规避一些权限问题导致的异常。
首先在终端输入sudo passwd root,首先输入当前账户的密码,接着根据提示输入root账户的新密码,再次输入确认即可生效(后文中将不再提示sudo命令需要当前账户密码,请根据终端的提示自行输入即可)。

sudo passwd root

接下来在终端输入sudo nano /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf,将光标移至末尾另起一行,输入greeter-show-manual-login=true,保存退出即可。

sudo nano /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

account login greeting
当虚拟机重启后,将在登录页面多出用户名登录的选择,此时可以在用户名中输入root,密码输入root账户对应的密码,即可以root账户的身份登录图形化界面了。
new login interface
若登录后报错如下,需要先点击OK,然后以root身份打开终端,输入nano /root/.profile,在最后一行的msg n前面输入#进行注释,然后在末尾另起一行输入tty -s && mesg n,保存并退出,重启虚拟机即可生效6

报错

nano /root/.profile

tty

安装串口芯片驱动

前言

嵌入式设备和主机通过串口连接,不是仅仅插上串口线这么简单,往往在嵌入式设备上存在专门的串口处理芯片负责和主机的通信。目前较为常见的有CH340和CP2102等等,这些芯片需要在主机安装对应驱动才能正常工作。本套设备使用CP2102芯片,依赖CP210X驱动。

驱动文件位置

/01 创新创客智能硬件平台光盘资料/创新创客智能硬件平台光盘V1.0/06_工具/0603_公共工具/CP210x_VCP_Win2K_XP_S2K3.exe7

(1)双击即可开始安装。

(2)在UAC(用户账户控制)界面选择是。

(3)点击next开始安装。

210x安装

(4)选择accept同意上述用户协议,点击next继续安装。

用户协议

(5)安装路径保持默认即可,点next开始安装,直至安装结束。

在这里插入图片描述


  1. 此处笔者为方便使用切换为MobaXterm Professional版本,不同版本的软件操作是相似的,如果有能力的情况下,可以在官网订阅Professional edition支持软件开发商,请尽量不要使用盗版、破解版等。 ↩︎

  2. 参考Microsoft官方支持,在Windows 10设备上,在任务栏上的搜索框中,键入“设备管理器”,然后在菜单中进行选择。 ↩︎

  3. https://www.cr173.com/soft/68480.html ↩︎

  4. 此处执行前可以用复制命令先对文件进行备份操作,避免出现问题后无法恢复。本例中可以在终端中输入 sudo cp -rf /etc/profile /mnt/hgfs/VMShare 。其中cp是copy复制的意思,空格后的-符号后面需要接参数,参数r是指复制文件夹及子文件,参数f是指强制执行,再空格后第一个目录是被复制的文件,再空格后的目录是复制后新文件的路径。前文中设置过的虚拟机共享文件夹就默认处于/mnt/hgfs/目录下,本例中的名称为VMShare。复制后即可在宿主机和虚拟机上指定的共享文件夹路径内同时查看到此文件了。 ↩︎

  5. 此处也可以在终端中输入mkdir ~/jiuzhea,其中mkdir即make directory创建目录,~代表当前用户的主目录,本例中登录的用户是uptech,主目录是/home/uptech,也就是说,这条命令可以替换为mkdir /home/uptech/jiuzhea,也可以达成和上一条命令同样的效果。 ↩︎

  6. 重启虚拟机有多种方式,可以在右上角点击电源图标,在菜单中选择重启,或者在终端中输入reboot实现重启(权限不够可以使用sudo),或者在终端输入init 6实现重启(详细内容请自行学习linux的运行级别)。 ↩︎

  7. 驱动也可以在网络上找到,详见芯片官网https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值