其他
我用STM32MP1做了个疫情监控平台1—交叉编译环境搭建
0.前言
1.准备工作
开发板型号: MYD-YA157C,512MB DDR3,4GB eMMC 主控芯片: STM32MP157AAC3 光盘资料版本: MYD-YA157C-20191225.iso
12v电源适配器 USB-TTL模块:115200/8/1/无 网线
开发板Linux版本:Linux 4.19.9 开发板IP:192.168.1.136 主机配置:Ubuntu 16.04 主机IP:192.168.1.111
2.主机搭建交叉编译环境
03-Tools/Complie Toolchain
目录下,是一个压缩包,直接右键提取,或者使用tar解压命令都可以把压缩包解压。解压完成之后有以下几个文件:tar xvf qt-sdk.tar.xz
#进入sdk目录之后可以看到以下文件
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.host.manifest
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.target.manifest
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.testdata.json
./meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh
#按[ENTER]键选择默认的安装配置,默认安装在/opt目录下
cd /opt/st/stm32mp1/2.6-snapshot/
#临时设置环境变量
source ./environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi
#这样会把GCC交叉编译器临时添加到环境变量,退出终端失效
#查看GCC交叉编译器版本
arm-openstlinux_eglfs-linux-gnueabi-gcc --version
#或者使用$CC --version
#输出信息
arm-openstlinux_eglfs-linux-gnueabi-gcc (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3.编译第一个ARM Linux程序
cd ~
#新建一个目录
mkdir hello
#切换到hello目录
cd hello
#新建一个C文件
touch hello.c
#输入Hello World程序
vim hello.c
int main(void)
{
printf("Hello STM32MP1 ! -- By arm-gcc\n");
return 0;
}
4.在开发板上运行Hello World程序
4.1 U盘拷贝
ls /dev/sda*
#挂载U盘到mnt目录
mount /dev/sda /mnt
#如果没有挂载成功,尝试挂载另外一个设备
mount /dev/sda4 /mnt
#挂载成功之后切换到mnt目录
cd /mnt
#运行arm.o
./arm.o
cd ~
#取消挂载
umount /mnt
4.2 scp文件传输
开发板配置eth0网口IP地址
主机配置IP地址 通过有线连接选项,手动配置IPv4地址
scp local_file remote_username@remote_ip:remote_folder
#复制本地文件到远程文件
scp local_file remote_username@remote_ip:remote_file
#复制整个目录及其子文件
scp -r local_folder remote_username@remote_ip:remote_folder
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号。命令格式如下:
scp -P 4588 remote@192.168.1.136:/usr/local/sin.sh /home/administrator
2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
4.3 tftp文件传输
sudo apt-get install tftpd-hpa
#创建共享目录
mkdir ftp
#修改目录权限
chmod 777 ftp
#在配置文件中添加共享目录
sudo vim /etc/default/tftp-hpa
#添加共享文件夹
TFTP_DIRECTORY="/home/whik/ya157c/ftp"
#启动tftp服务器
sudo service tftpd-hpa restart
tftp 192.168.1.111 -g -r a.cpp -l b.cpp
#把远程的a.cpp保存到本地,不重命名
tftp 192.168.1.111 -g -r a.cpp
-p 表示上传文件(put)
-l 表示本地文件名(local file)
-r 表示远程主机的文件名(remote file)
5.ssh登录开发板
6.注意
sudo apt-get update
sudo apt-get upgrade
#安装所需要的软件
sudo apt-get install libusb-1.0-0
sudo apt-get install bison flex sed wget curl cvs subversion git-core
coreutils unzip texi2html texinfo docbook-utils gawk python-pysqlite2 diffstat
help2man make gcc build-essential g++ desktop-file-utils chrpath libxml2-utils
xmlto docbook bsdmainutils iputils-ping cpio python-wand python-pycryptopp
python-crypto
sudo apt-get install libsdl1.2-dev xterm corkscrew nfs-common nfs-kernel-
server device-tree-compiler mercurial u-boot-tools libarchive-zip-perl
sudo apt-get install ncurses-dev bc linux-headers-generic gcc-multilib
libncurses5-dev libncursesw5-dev lrzsz dos2unix lib32ncurses5 repo libssl-dev
7.shell脚本点灯
echo none > /sys/class/leds/heartbeat/trigger
#死循环
while true
do
echo 0 > /sys/class/leds/heartbeat/brightness
echo "点亮"
sleep 0.1
echo 1 > /sys/class/leds/heartbeat/brightness
sleep 0.1
echo "熄灭"
done
scp led_blink.sh root@192.168.1.136:/home/root
#开发板给这个脚本添加可执行权限
chmod +x led_blink.sh
#开发板执行这个脚本
./led_blink.sh
推荐阅读
我的博客:www.wangchaochao.top 我的公众号:mcu149