在网上看的关于stm32mp157的开发教程太少了,于是乎写一篇踩坑笔记,仅供学习参考
大概流程:在虚拟机通过stm32cubeprogrammer烧录镜像,然后烧录成功之后,给stm32mp157连接网线,使得开发板有ip地址,然后通过scp复制把文件拷贝到开发板,然后在开发板上运行qt代码,就部署成功了!!!
这个不仅仅是stm32mp157的开发流程,也是linux开发板的一篇教程,基本都是,虚拟机安装ubuntu,然后通过ssh连接烧录,把对应可执行文件放到开发板,然后就运行
由于stm32mp157的开发资料较少,所以我们可以参考正点原子的stm32mp157开发板资料,或者华清远见的抑或是百问嵌入式的,虽然开发板不一样,但是资料都是可以互通的,可以使用配套资料里面的虚拟机和镜像,方便很多,并且也有很多工具和资料
链接;
正点原子:STM32MP157开发板 — 正点原子资料下载中心 1.0.0 文档
华清远见:华清远见STM32MP157 Linux开发板 - 华清远见研发中心
百问网:🎫100ASK_STM32MP157_PRO开发板 — 百问网资料下载中心 3.0 文档
ok啊兄弟们,有资料就是事半功倍了呀
也可以参考这篇教程:STM32MP157使用记录:OpenSTLinux试用与开发体验-CSDN博客
1.第一步:安装虚拟机
原因:可以使用虚拟机安装stm32cubeprogrammer,下载安装镜像,而且qt的开发也可以用虚拟机来安装,然后部署到开发板,虚拟机好处多多,window也能做,只不过会比较慢
步骤:下载安装VMware,并且安装Ubuntu镜像
安装过程不再叙述,你随便在上面找一个里面都有详细的教程
2.在虚拟机中,安装基本环境
sudo apt update
sudo apt install -y build-essentialsudo apt install -y gawk git-core diffstat texinfo gcc-multilib chrpath socat cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 pylint xterm
sudo apt install -y xsltproc docbook-utils fop dblatex xmlto
sudo apt install -y libmpc-dev libgmp-dev
sudo apt install -y libncurses5 libncurses5-dev libncursesw5-dev libssl-dev linux-headers-generic u-boot-tools device-tree-compiler bison flex libyaml-dev libmpc-dev libgmp-dev
sudo apt install -y python-is-python3# 设置使MMC支持分为16个分区
echo 'options mmc_block perdev_minors=16' > /tmp/mmc_block.conf
sudo mv /tmp/mmc_block.conf /etc/modprobe.d/mmc_block.conf
硬件连接:
注意有些usb线质量不行,供电电流迟迟达不到,建议使用品质较好的usb线,手机充电线就很不错。
3.在虚拟机安装stm32cubeprogrammer,并且下载镜像openstlinux
烧录是通过 USB OTG 那个口进行的(DFU模式)。需要注意的是烧录过程中设备会断开重新连接,如果使用虚拟机的话需要把这个USB设备设置为自动转到虚拟机或是在重新连接的过程中手动转到虚拟机。
注意:烧录镜像的时候,要保证开发板背后的俩个开关全部关闭,拨杆到off,俩个都是,等到烧录结束之后,再打开到on,不然虚拟机的stm32cubeprogrammer一直检测不到usb的DFU,我原本以为是没下载好dfu的驱动,其实是这个拨杆的问题
STM32CubeProgrammer用来将系统二进制文件烧录到TF卡或eMMC中,可以从下面选择合适的版本下载:
https://www.st.com/en/development-tools/stm32cubeprog.html
我这里通过Ubuntu自带的浏览器下载,得到的 en.stm32cubeprg-lin_v2-10-0.zip 文件位于 ~/Downloads/ 目录下。也可以使用window下载,下载之后,复制到虚拟机就可以
cd ~/Downloads/
unzip en.stm32cubeprg-lin_v2-10-0.zip
./SetupSTM32CubeProgrammer-2.10.0.linux
当然我也建议使用windows来安装stm32cubeprogrammer,然后使用windows来下载也可以。
问题的关键是在烧录什么的镜像,这里我们烧录openstlinux
镜像链接:OpenSTLinux BSP 软件包在哪里下载呢
上面这个是镜像下载:
下面这个是工具下载,交叉编译器的工具
下载好镜像之后
连接设备,打开下面目录中对应的烧录配置文件(.tsv):
~/mp157/ecosystem/starter/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/images/stm32mp1/flashlayout_st-image-weston/(里面还有一层,找到)
注意的是,这个里面有几个开发板的镜像,请选择正确对应开发板的镜像源
然后二进制文件路径选择下面这个:
~/mp157/ecosystem/starter/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/images/stm32mp1/(这个路径选文件夹)
最后点击 Download 进行烧录即可
等待十几分钟之后,就可以烧录进去了,这就是烧录后的显示
4.qt的安装和编译
我们需要在虚拟机中安装qt,并且把qt的工程编译,然后把编译后的工程放到开发板
安装qt,这里也不叙述,网上资料很多,而且前面的资料链接里面也有对qt的安装和部署
这一步最重要的是安装交叉编译器,这里我们使用st提供的交叉编译器,
这里就是交叉编译器的下载位置
我们应该下载mp1-dev-x86这个交叉编译器,因为arm那个编译器是专门给arm架构的编译器,我们虚拟机是x86架构,所以使用x86架构的
cd ~/Downloads/
tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz# 建立SDK安装目录
mkdir -p ~/mp157/ecosystem/developer/SDK
# 执行脚本安装SDK
chmod +x stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh
./stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh -d $HOME/mp157/ecosystem/developer/SDK# 设置SDK
# 下面方式是临时的,每次打开终端都需要重新设置
cd ~/mp157/ecosystem/developer/
source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
# echo $ARCH
# echo $CROSS_COMPILE
# $CC --version
# echo $OECORE_SDK_VERSION
使用 make 进行编译。编译得到的二进制文件可以通过网络传输到开发板中(比如使用 scp gtk_hello_world root@<board ip address>:/usr/local 方式),然后在开发板中运行(比如通过串口终端来运行)。运行运行上面程序会在开发板的屏幕上出现一个带有按钮的窗体:
然后在开发板就能运行,这个页面了
问题:怎么设置开发板连接到笔记本来共享网络
解决方案:
一、设置电脑为WLAN共享模式
1、在桌面右键wifi图标,选择--打开网络和Internet设置。
2、选择更改适配器选项
3、右击WLAN选择属性
4、设置WLAN共享设置(家庭网络连接设置为,你开发板和电脑有线连接,用的是哪个网卡,就选择哪个)
5、跳出电脑提示,电脑自动分配网关,开发板通过该ip上网(记住网关:192.168.137.1)
二、设置以太网IP
1、选择以太网属性
2、 双击lnternet协议版本4(TCP/IPv4)属性
3、查看lnternet协议版本4的ip地址是否为共享WLAN所对应的ip(若不是,则需要自己设置)
参考文章:开发板上网(保姆级教程)_开发板联网-CSDN博客
以上就是mp157,设计页面设置的一个教程了