【米尔STM32MP135】开箱测评与LED测试
[复制链接]
本帖最后由 bigbat 于 2023-8-20 15:59 编辑
米尔STM32MP135入门级MPU开发板是:一款基于STM32MP135新一代通用工业级MPU,单核Cortex-A7@1.0GHz,支持2个千兆以太网接口、 2个CAN FD接口、 2个 USB2.0接口、8个UART接口,板子带256M Nand Flash/256M DDR;该颗芯片主打的市场定位是基于linux系统的应用。尤其是2个千兆以太网接口,可以将产品拓展到网关和工业互联网的领域。
米尔的板子除了核心板,还有一块扩展板,板子上设计有两个以太网口。除了网络还有一个专门的debug UART接口,这个接口是TTL电平的,但是米尔提供的USB TTL线插上后我的主机不停的出现USB设备丢失的显现,于是就使用自己的USB TTL线了。板子内置了256M的Nand flash芯片,内置系统为linux系统。系统上电后可以进入到该系统。
板子的电源系统不是常见到USB供电,而是12V 2A的开关电源。板子上的不同部分使用的是矽力杰的DC/DC芯片独立供电,这种设计可以避免模块设备之间的互相干扰。
一、本次测试的任务是准备开发环境,
参考的是官网的资料 STLinux SDK INSTALL
首先是下载有关的软件,我使用的是WSL而不是常用的虚拟机。
按照资料的步骤,过程比较顺利,但是需要注意的是有一个“小坑”,就是 repo的安装,这是一个管理软件包的python脚本,但是由于国内的环境,非常的不好安装。下列步骤是我的安装过程:
1、 确保安装了python3
- sudo apt install python-is-python3
2、从国内的镜像下载repo
- https://mirrors.tuna.tsinghua.edu.cn
之后才能完成安装。
安装SDK
下载en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
- tar xvf en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
解压后里面有一个巨大的sh文件,
- ./stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.sh -d <working directory absolute path>/Developer-Package/SDK
执行完成后SDK就算安装完成了。
每次使用时需要为TOOLS KIT设置环境,使用这个SDK的命令,就可以自动设置好需要的各种环境变量,
- source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
检查一下,环境是否安装成功。
如果出现下面提示就表示成功
二,编写hello world
按照hello world的步骤:创建一个hello应用,注意:一定要确保环境设置正确。尤其是象我这样的有多种SDK的环境更加需要注意。
- #include <gtk/gtk.h>
-
- static void
- print_hello (GtkWidget *widget,
- gpointer data)
- {
- g_print ("Hello World\n");
- }
-
- static void
- activate (GtkApplication *app,
- gpointer user_data)
- {
- GtkWidget *window;
- GtkWidget *button;
- GtkWidget *button_box;
-
- window = gtk_application_window_new (app);
- gtk_window_set_title (GTK_WINDOW (window), "Window");
- gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
-
- button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_container_add (GTK_CONTAINER (window), button_box);
-
- button = gtk_button_new_with_label ("Hello World");
- g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
- g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
- gtk_container_add (GTK_CONTAINER (button_box), button);
-
- gtk_widget_show_all (window);
- }
-
- int
- main (int argc,
- char **argv)
- {
- GtkApplication *app;
- int status;
-
- app = gtk_application_new ("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
- g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
- status = g_application_run (G_APPLICATION (app), argc, argv);
- g_object_unref (app);
-
- return status;
- }
这里需要注意的是:构建Makefile时,不能直接粘贴到文件中,需要将可执行语句前面的空白换成TAB
否则在使用make的时候会出现错误。
如果顺利生成程序,就可以证明SDK已经安装成功了。
当然这个程序没有GUI是不能有啥效果地,但是换成经典的hello world也是可以地。
三、如何烧写系统和上传文件到系统。
我害怕板子变砖,所以万万不能修改Nand flash的系统地,所以准备了一张SD卡,使用SD卡进行实验,可以免去破坏板子的出厂系统。
这个方案需要一条Type-C的数据线,建议:连接到USB 3.0的端口,这样速度可以提高不少。除了数据线还需要STM32CubeProgrammer软件,
在断电的情况下:将Type-C数据线和PC进行连接,在将BOOT设置拨码开关设置为:“0 0 0”烧写状态。启动板子。
打开软件,选择USB接口,通过DFU功能就可以烧写系统了,我使用的是厂家提供的myir-image-lvgl系统,这个系统集成了LVGL GUI系统。
烧写完成后,就可以断电了,将boot开关设置成SD启动“1 0 1”,上电就可以使用SD卡里的系统了。
系统第一次过程有点长需要等待一段时间。
不过中间出现了多处失败的过程。
启动后,系统进入正常的提示符状态下。
四、LED点灯实验
系统中内置了一个LED驱动,这个驱动是一个较为完善的驱动,功能要比单纯的GPIO要多。
使用ls命令可以查看该设备:
- ls /sys/class/leds/
- blue:heartbeat
操作这个设备就可以打开和关闭led灯。0关闭led,1打开led
- echo 0 > /sys/class/leds/blue:heartbeat/brightness
整个过程比较顺利,开发板的功能比较丰富。SD卡系统的烧写成功,对我接下来的测试就比较有信心了。
|