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

  • 安装合适的串口软件
  • 配置虚拟机
    • 虚拟机的启动与配网
    • 虚拟机的环境配置
  • 安装串口芯片驱动
    • 前言
    • 驱动文件位置

安装合适的串口软件

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

(1)访问MobaXterm官网,进入Download页面,选择Home Edition,点击Download now进入下载页面。
(2)选择Portable edition(免安装版)进行下载即可,若有需要选择Installer edition也可以,区别不大。

(3)下载完成后使用解压软件(如WinRAR等)进行解压,请尽量选择全英文的路径下,防止中文不兼容问题。

(4)解压后双击MobaXterm***.exe,即可运行。此处*表示通配符,具体内容根据下载版本的不同而不同。

(5)首次启动需要初始化,需等待一段时间,若弹出主密码配置对话框,可以根据需要进行配置。按照对话框提示,在第一行输入主密码,第二行再次输入主密码确认,并在下方选项卡中选择合适的配置。第一项是仅在Windows登录用户切换或新的电脑上需要输入主密码,第二项是每次MobaXterm启动时输入主密码,第三项是每次MobaXterm启动或被唤醒时输入主密码。

(6)进入主界面如下,如果是第一次安装,将不会有最近的连接记录,笔者曾多次使用过,所以在屏幕左侧边栏中存储了曾连接过的会话,为了安全起见,已经将具体ip地址隐去。

(7)点击Session(会话)图标,新建一个会话,在弹出的对话框中选择Serial(串口)图标。1

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

(9)在右侧的Speed(bps)中选择合适的波特率,常用波特率有9600和115200两种,请根据开发板的设置进行选择。

(10)接下来直接选择Ok即可开始连接串口设备,如果有兴趣的话可以在刚才的面板上选择Advanced Serial settings(高级串口设置),进行进一步调整,使其更符合自己的使用习惯。

配置虚拟机

虚拟机的启动与配网

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

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

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


(4)在VMware Workstation的菜单界面中点击文件选项卡,选择打开。在弹出的对话框中进入解压后虚拟机的文件夹,选择Ubuntu 64 位.vmx,点击打开选项即可,VMware Workstation会自动跳转到虚拟机的详情页面。

(5)在新的界面中点击编辑虚拟机设置,在硬件选项卡下,为虚拟机分配合适的内存、处理器、硬盘空间。

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

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

3)硬盘空间:本虚拟机并未一次性分配所有磁盘空间,即在使用过程中将逐步占用更多的磁盘空间,直至达到磁盘设置分配的上限,此选项一般无需修改,仅需在存放虚拟机文件的实际磁盘分区内预留足够的剩余空间即可。

在选项选项卡下,点击共享文件夹,将右侧的共享文件夹全部移除,然后点击添加,在添加共享文件夹向导中完成添加,其中主机路径指的是宿主机的共享文件夹存放位置,设置完成后,宿主机和虚拟机可以通过此文件夹实现文件的共享。

(6)在上一步中的网络适配器选项,将网络连接设置为桥接模式,且无需勾选复制物理网络连接状态。

接着点击菜单中的编辑,选择虚拟网络编辑器。

点击右下角的更改设置,在弹出的UAC界面中选择是,修改VMnet0如下。



桥接到下拉菜单默认为自动,如果后续使用时出现问题,可以在此手动指定为需要桥接的网卡。在实际使用中实验室网络并不方便,需要自行开启热点,所以本例中在使用wifi时可以手动指定为Broadcom 802.11ac网络适配器,此处不同电脑、不同网卡显示名词不同,需要自行判断。若使用网线联网,本例中则可以指定为Realtek PCIe GBE Family Controller。

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

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

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

登陆后在菜单中找到terminal(终端),并将其拖拽至左侧边栏,方便后续经常使用。

在宿主机上输入键盘快捷键 Windows+R,打开运行窗口,输入 cmd,打开command line窗口,输入 ipconfig 查看网络连接情况,

ipconfig

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

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规则,所以此处不再赘述,如有需要,可自行设置,和入站规则相似。

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

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


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

虚拟机的环境配置

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

(2)在虚拟机中找到文件管理器,点击左侧边栏的Devices的Computer,进入根目录。

找到并双击进入 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" ]; thenfor envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; dosource $envfiledone
fi
if [ -d "$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; thenfor envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; dosource $envfiledone
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


接着我们打开终端,输入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

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

(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


当虚拟机重启后,将在登录页面多出用户名登录的选择,此时可以在用户名中输入root,密码输入root账户对应的密码,即可以root账户的身份登录图形化界面了。

若登录后报错如下,需要先点击OK,然后以root身份打开终端,输入nano /root/.profile,在最后一行的msg n前面输入#进行注释,然后在末尾另起一行输入tty -s && mesg n,保存并退出,重启虚拟机即可生效6

nano /root/.profile

安装串口芯片驱动

前言

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

驱动文件位置

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

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

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

(3)点击next开始安装。

(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 ↩︎

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

  1. [博创智联]创新创客智能硬件平台——温湿度传感器

    [博创智联]创新创客智能硬件平台--温湿度传感器 前言 准备环节 修正错误代码 测试环节 编译驱动和测试代码 加载驱动并执行代码 疑难杂症解决方案----网络设备未定义 前言 从本篇起,将正式进入实践 ...

  2. [博创智联]创新创客智能硬件平台——认识实验箱

    [博创智联]创新创客智能硬件平台--认识实验箱 硬件部分 软件部分 硬件部分 图片来自博创智联官网 箱子分为三层,第一层主要放置各类 传感器.模块,第二层放置三块 核心板 和 对应的底板.屏幕.以及部 ...

  3. [博创智联]创新创客智能硬件平台——烧录系统

    [博创智联]创新创客智能硬件平台--烧录系统 前言 准备工作 前言 本部分可以参考文件资料中/01 创新创客智能硬件平台光盘资料/创新创客智能硬件平台光盘V1.0/03_系统/0301_Linux/0 ...

  4. [博创智联]创新创客智能硬件平台入门教程目录

    [博创智联]创新创客智能硬件平台入门教程目录 前言 文章链接 前期准备篇 常用传感器实验篇 进阶修改篇 综合实战篇 前言 笔者为江苏科技大学18级物联网工程专业本科生,有幸使用本套设备完成了智能宠物笼 ...

  5. [博创智联]创新创客智能硬件平台——超声波测距传感器

    [博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...

  6. [博创智联]蔬菜大棚实验

    [博创智联]蔬菜大棚实验 项目功能 整体设计 硬件端 硬件连接 烧录系统 软件端 代码整合 开发板UDP通信流程 其他 ESP8266模块 安卓端开发 服务器配置 成品 项目功能 利用嵌入式设备组成蔬 ...

  7. 18款、19款、20款博越智联、智雅、智尊、智慧,安装第三方软件教程

    2022年11月25日更新测试可用! 图为老款博越车机安装效果! 适用于2018款.2019款和2020款的博越智联.智雅.智尊.智慧车型,目前已知20款博越PRO部分车型可通过此方法来升级自带的高德 ...

  8. 晨山资本王志飏:万物智联时代,智能企业的创新路径

    2020 年 11 月 7 日,由边缘计算社区主办的全球边缘计算大会在北京成功召开,作为业内首个专门为边缘计算人打造的行业盛会,此次活动现场共有超过 500+来自政.产.学.研.用各界的企业负责人.权 ...

  9. 万物智联,美格智能NB-IoT模组助力智慧防疫,防患于“未燃”

    近年来,全球人口数量增速放缓,人口红利过去后,以手机为代表的传统移动互联网设备趋于饱和,市场增势开始放缓.在信息共享时代,数字化.智慧化场景的诞生与不断扩大,促使大量的传统设备更新换代.在此情况下,低 ...

最新文章

  1. 计算机基础-计算机硬件
  2. Javascript社区是时候接受async/await语法了
  3. Java多线程两种实现方式的对比
  4. Python super超类方法
  5. linkedin上看到的CRM团队信息
  6. android自定义的生命周期,android 自定义控件之ViewGroup生命周期执行步骤(示例代码)...
  7. 事件循环机制 + ES7:Async/Await(基于generator原理实现)附详细示例分析
  8. 水晶报表提示“出现打印错误。将停止打印”的原因,非page_Init
  9. nodejs/pomelo 使用 mongodb 连接 mongo时 出现
  10. php5.3 PHP5.4 PHP5.5 php5.6 新特性/使用PHP5.5/PHP5.6要注意的
  11. Spring IOC 容器源码分析 - 循环依赖的解决办法 1
  12. MATLAB自适应平滑滤波
  13. gsp计算机系统系统操作培训,gsp计算机系统操作PPT.ppt
  14. QT24A01 TNK以太网变压器
  15. [Usaco2010 Dec]Treasure Chest 藏宝箱
  16. Android:日志系统
  17. ESXI6.7.0 升级到7.0U3f(2022年7月12 更新)
  18. 戴尔G7音频驱动问题
  19. 在Windows系统下如何将桌面图标下的文字隐藏
  20. 【管理篇 / 登录】❀ 03. USB线连接登录 ❀ FortiGate 防火墙

热门文章

  1. 前后端分离项目,vue+uni-app+php+mysql外卖点餐小程序系统设计与实现
  2. 北京市基本医疗保险A类定点医疗机构
  3. How to install Windows device driver, Vista, Vista x64, WinXP, WinXP x64 Window
  4. leetCode-考场就座
  5. 数学口袋精灵bug的发现
  6. Dfinity入门——配置环境并部署一个简易的网站
  7. 给查询的SQL中自动增加 自增长 序号
  8. Android学习07-----事件处理(2)单选按钮与下拉列表框级联菜单
  9. (附源码)springboot企业人力资源管理系统 毕业设计291816
  10. 网络基础-路由篇-EIGRP