arm-linux开发板相关软件的使用
secureCRT使用步骤、文件传输 tftp、文件传输 NFS
文章目录
1. 串口调试
1.1 简介
一般而言,嵌入式开发板使用串口来监控后台。可以使用串口线连接开发板和电脑,对于没有串口的笔记本电脑来说,一般还需要一根USB转串口线。
串口软件多种多样,比如secureCRT、Xshell、超级终端、miniCom、putty等,它们的功能大同小异,因此只需安装用的顺手的一款即可。下面以secureCRT为例,详细介绍其使用步骤。
1.2 secureCRT使用步骤
- 接好串口线,在设备管理器中找到正确的串口编号,比如下图中的COM19:
设备管理器查看串口编号
注意,如果使用USB转串口线,那么一般是需要安装对应的驱动程序才可以让windows系统识别出来,而USB转串口线内置的芯片并不唯一,因此建议可以安装驱动精灵或驱动人生,自动识别并安装对应的驱动即可。如果不想安装这两个软件,也可以试试CH/YH340驱动。
- 启动secureCRT,正确配置串口信息(注意,流控的勾要去掉)
设置secureCRT串口信息
- 使用串口传输,在secureCRT输入rx hello,hello是想要传输的文件名。然后将文件拖入secureCRT,再单击发送xModem即可。
使用rx命令进行串口协议传输
- 修改字体颜色、中文编码
修改中文编码、字体
- 增加语法高亮:
增加语法高亮
- 一切准备就绪,启动开发板,即可通过调试串口在secureCRT中看到启动的后台信息,并可以在窗口下调试程序。
secureCRT界面
2. 文件传输
将编译好的程序放到开发板中去运行,需要借助于一些软件,下面介绍最常用的通过tftp的方式与开发板之间互通文件。
2.1 文件传输: tftp
在有网络的情况下,采用tftp的方式来传输文件是最高效的一种方式,tftp的全称是 tiny FTP,可见此工具专用于文件传输,其所为tiny意指匿名传输,是一种轻量级的FTP工具。
- 在windows中安装tftp服务器,可根据系统实际情况下载对应版本:
- 启动tftpd,选择准备传送到开发板的文件的所在目录和与开发板联通的网卡:
tftpd配置界面
- 假设在上述 C:\EFI 文件夹下有文件example.txt,在开发板中可执行如下命令下载该文件:
[root@root:~]# tftp 192.168.9.65 -gr example.txt
- 如果想要将开发板的文件发送到tftpd服务端,命令如下:
[root@root:~]# tftp 192.168.9.65 -pr example.txt
2.2 文件传输: NFS (相当于将主机作为一个u盘插入开发板)
- ubuntu安装nfs
sevan@unbuntu-dev:~$ sudo apt install nfs-kernel-server
- ubuntu配置nfs
sevan@unbuntu-dev:~$ sudo vi /etc/exports
添加
/home/sevan/ *(rw,async,no_subtree_check,no_root_squash) //将虚拟机家目录下的所有文件开放给其他任何ip主机设备(rw:可读写 async:异步 no_subtree_check:不检查子树)
sevan@unbuntu-dev:~$sudo service nfs-kernel-server restart
- 测试挂载
sevan@unbuntu-dev:~/work$ showmount -e
Export list for unbuntu-dev:
/home/sevan *
- 开发板配置
将Ubuntu的家目录按照一个分区插入到开发板/root目录下
[root@GEC6818 /]#mount 192.168.1.104:/home/sun /root -o nolock
参考配置:mount -t nfs -o nolock 192.168.1.104:/home/sun/nfs_rootfs /mnt
注意:开发板的ip地址必须和Ubuntu主机的ip在同一网络段落
修改开发板ip的方法如下:
- 临时设置ip地址(重启开发板失效)
ifconfig eth0 192.168.1.xxx netmask 255.255.255.0
route add default gw 192.168.1.254
- 永久设置ip地址
vi /etc/profile,然后把前面临时配置ip地址的两行命令写到里面
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
if [ "$PS1" ]; then
if [ "`id -u`" -eq 0 ]; then
export PS1='[\u@\h:\w]# '
else
export PS1='[\u@\h:\w]$ '
fi
fi
export PAGER='/bin/more '
export EDITOR='/bin/vi'
# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
unset i
done
ifconfig eth0 172.31.8.xx netmask 255.255.255.0
#route add default gw 192.168.1.254
- 最终挂载Ubuntu主机家目录分区测试如下
3. 交叉编译
3.1 下载
由于嵌入式板卡的软硬件是定制的,因此针对其平台开发的程序所需要的编译器也必须与之相匹配:
- GEC6818开发板交叉工具链:arm-linux-gnueabi
- GEC1808开发板交叉工具链:rk1808-sdk
- GEC3399开发板交叉工具链:rk3399-sdk
3.2 配置
下载完了之后需要进行配置,然后才能使用,由于配置过程是一样的,因此以GEC6818的交叉工具链为例,其配置步骤如下:
- 解压:
gec@ubuntu:~$ ls
arm-linux-gnueabi-5.4.0.tar.xz
gec@ubuntu:~$
gec@ubuntu:~$ xz --decompress arm-linux-gnueabi-5.4.0.tar.xz
gec@ubuntu:~$ ls
arm-linux-gnueabi-5.4.0.tar
gec@ubuntu:~$
- 查看归档文件中的文件路径:
gec@ubuntu:~$ tar -tf arm-linux-gnueabi-5.4.0.tar
usr/local/arm/5.4.0/usr/include/ext2fs/qcow2.h
usr/local/arm/5.4.0/usr/include/ext2fs/ext3_extents.h
usr/local/arm/5.4.0/usr/include/ext2fs/bitops.h
usr/local/arm/5.4.0/usr/include/ext2fs/tdb.h
usr/local/arm/5.4.0/usr/include/e2p/
usr/local/arm/5.4.0/usr/include/e2p/e2p.h
usr/local/arm/5.4.0/usr/include/com_err.h
... ...
... ...
可以看到,归档文件中的资料都是以usr/local/arm开头的,因此可以直接将归档内容释放到根目录下,到时候具体文件就会出现在/usr/local中。
- 释放:
gec@ubuntu:~/Downloads$ sudo tar xvf arm-linux-gnueabi-5.4.0.tar -C /
gec@ubuntu:~$ cd /usr/local
gec@ubuntu:/usr/local$ ls
arm bin etc games include lib man sbin share src
可见,第一个目录 arm 就是解压之后得到的交叉工具链所在的目录。
- 配置环境变量PATH:
gec@ubuntu:~$ cd /usr/local/arm/5.4.0/usr/bin
gec@ubuntu:~$ echo "export PATH=/usr/local/arm/5.4.0/usr/bin:$PATH" >> ~/.bashrc
gec@ubuntu:~$ source ~/.bashrc
- 测试交叉工具链的版本信息:
sevan@unbuntu-dev:~$ arm-linux-gcc -v
使用内建 specs。
COLLECT_GCC=/home/sevan/work/usr/local/arm/5.4.0/usr/bin/arm-linux-gcc.br_real
COLLECT_LTO_WRAPPER=/home/sevan/work/usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/lto-wrapper
目标:arm-none-linux-gnueabi
配置为:./configure --prefix=/home/geclab/buildroot-2016.11/output/host/usr --sysconfdir=/home/geclab/buildroot-2016.11/output/host/etc --enable-static --target=arm-none-linux-gnueabi --with-sysroot=/home/geclab/buildroot-2016.11/output/host/usr/arm-none-linux-gnueabi/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/home/geclab/buildroot-2016.11/output/host/usr --with-mpc=/home/geclab/buildroot-2016.11/output/host/usr --with-mpfr=/home/geclab/buildroot-2016.11/output/host/usr --with-pkgversion='Buildroot 2016.11' --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath --enable-tls --disable-libmudflap --enable-threads --without-isl --without-cloog --with-float=soft --disable-decimal-float --with-abi=aapcs-linux --with-cpu=cortex-a15 --with-float=soft --with-mode=arm --enable-languages=c,c++,fortran --with-build-time-tools=/home/geclab/buildroot-2016.11/output/host/usr/arm-none-linux-gnueabi/bin --enable-shared --disable-libgomp
线程模型:posix
gcc 版本 5.4.0 (Buildroot 2016.11)
sevan@unbuntu-dev:~/work$
有出来版本信息的话,就代表配置成功了。
- 编译测试
报错:
sevan@unbuntu-dev:~/work$ arm-linux-gcc hello.c
/home/sevan/work/usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
- 添加链接库环境变量
sevan@unbuntu-dev:~$ echo "export LD_LIBRARY_PATH=/usr/local/arm/5.4.0/usr/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
sevan@unbuntu-dev:~$ source ~/.bashrc
更多推荐
所有评论(0)