当前位置: 代码迷 >> 综合 >> 【ODYSSEY–STM32MP157C】上手体验
  详细解决方案

【ODYSSEY–STM32MP157C】上手体验

热度:40   发布时间:2023-12-06 03:09:37.0

【ODYSSEY–STM32MP157C】上手体验

一、前言

最近参与了硬禾学堂的Funpack活动,刚刚拿到了其第一期板卡ODYSSEY–STM32MP157C,话不多说,先上图:
在这里插入图片描述
有关其详细介绍和资料链接见:https://www.eetree.cn/doc/detail/2004
其提供的上手视频链接为:https://class.eetree.cn/detail/v_5f61c137e4b0d59c87b63760/3?fromH5=true
接下来就是把它上手玩起来。

二、下载镜像,安装系统

从SEEED官网下载镜像:https://wiki.seeedstudio.com/cn/ODYSSEY-STM32MP157C/#_7
点击下载镜像和烧录工具,由于是国外的网站,下载可能比较慢,请耐心等待;
在这里插入图片描述
然后需要准备一张SD卡和一个读卡器,之前在某多多买了一张microSD卡,正好试一下
在这里插入图片描述
用读卡器将SD卡连接到电脑,安装好Etcher烧录工具将其打开,点击选择刚刚下载下来的镜像
在这里插入图片描述
软件会自动选择您插入的SD卡,如果识别错误可以修改,然后点击Flash开始烧录
在这里插入图片描述
然后等待其烧写完成
在这里插入图片描述
然后将SD卡插入ODYSSEY–STM32MP157C中,接着准备一根【Type-C数据线】用来供电,一个【USB装UART模块】用来做串口终端
在这里插入图片描述
接下将【Type-C数据线】和【USB装UART模块】都连接到电脑,打开串口终端软件,这里我使用我常用的MobaXterm,串口波特率设为115200,然后等待一会,可以看到蓝色的USER LED闪烁,表示启动成功:
在这里插入图片描述
我们也可以在串口终端看到其打印信息
在这里插入图片描述

三、切换到EMMC启动

我们用默认用户名:debian,密码:temppwd进行登录,可以看到,登录成功,
注意:这里密码是不会回显的
在这里插入图片描述
然后我们输入目命令,等待其重新启动

sudo sh -c "echo cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3-stm32mp1.sh >> /boot/uEnv.txt"
sudo reboot

在这里插入图片描述
然后等待蓝色的USER LED停止闪烁,持续点亮;接下来断电,将SD拔出,将拨码开关拨到EMMC启动处,重新上电
在这里插入图片描述
同样使用默认用户名:debian,密码:temppwd进行登录,可以看到,登录成功,这样就完成了切换到EMMC启动,不再需要SD卡了
在这里插入图片描述

四、启动WiFi,连接到网络

因为初始系统没有加入WiFi,所以我们要将WiFi加入,打开/boot/uEev.txt文件

sudo vi /boot/uEnv.txt

dtb=stm32mp1-seeed-npi-base.dtb修改为dtb=stm32mp1-seeed-npi-full.dtb,如下所示
在这里插入图片描述
然后使用sudo reboot命令重启一下,再次使用默认用户名:debian,密码:temppwd进行登录。
接下来使用connmanctl网络管理工具连接WiFi,

  1. 直接输入connmanctl命令打开网络管理工具
  2. 然后输入命令enable wifi开启WiFi 功能
  3. 可以使用命令scan wifi扫描附近的WiFi,使用services命令显示
  4. 输入agent on命令
  5. 使用connect + 你要连接的WiFi后面的代码连接你要连接的WiFi(可以Tab键自动补全),然后输入密码
  6. 连接成功后使用quit命令退出
    在这里插入图片描述
    其中有一些系统打印信息,忽略就好,然后可能会出现如下错误,
    Error /net/connman/technology/wifi: No carrier
    提示无法扫描到WiFi,可以尝试重启开发板。
    连接到WiFi后使用ifconfig查看IP地址,其中wlan0就是WiFi
    在这里插入图片描述
    接下来尝试一下是否连接到网络,可以看到,联网成功,成功ping通百度的网站
    在这里插入图片描述

五、开启SSH远程登录

首先,更新软件索引清单,因为用软件源在国外,所以可能要等很久

sudo apt-get update

然后我们安装SSH功能

sudo apt install ssh -y

安装完成后就可以使用终端工具进行登录了,这里我依然使用MobaXterm,不过要注意有一些高级功能不要勾选
在这里插入图片描述
远程登录成功界面如下
在这里插入图片描述

六、开启主机名和用户名颜色

如上所示linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨。所以我们可以让主机名和用户名显示颜色。
打开用户主目录下的 .bashrc文件,然后找到force_color_prompt,将其前面的#注释符去掉,然后保存退出。
在这里插入图片描述
使用source ~/.bashrc让其起作用,即可看到效果
在这里插入图片描述

七、第一个hello world程序

首先,安装一下make相关的C语言工具

sudo apt install make device-tree-compiler gcc -y

然后我们输入make -vgcc -v命令查看一下其相应版本,能看到版本即表示安装成功
在这里插入图片描述
新建一个hello.c文件,输入代码,
在这里插入图片描述
编译,运行,成功打印Hello world!
在这里插入图片描述
这是用C语言的,当然还可以使用Python,首先安装python相关工具

sudo apt install python3 python3-pip -y

然后输入python3 ,可以看到python3 版本,然后我们打印一个helloworld,可以看到,打印成功
在这里插入图片描述

八、点亮第一个LED灯

ODYSSEY的底板上有三个LED灯,其中usr0默认为常亮状态,usr1默认为SD卡指示灯,usr2默认为EMMC指示灯。如下所示,因为我现在没有插SD卡,使用usr1在闪烁。
在这里插入图片描述
然后进入目录/sys/class/leds/即可看到LED的定义
在这里插入图片描述
我们进入usr0目录,修改其触发方式为手动,注意,需要进入root用户,密码为root

echo none > trigger

在这里插入图片描述
这时,usr0就熄灭了
在这里插入图片描述
然后在将其点亮:

echo 1 > brightness

在这里插入图片描述
或者页可以将其设置为闪烁模式,这时可以看到目录下多出来delay_ondelay_off属性,分别表示其点亮和熄灭的时间,单位为ms

echo timer > trigger

在这里插入图片描述
可以通过修改delay_ondelay_off的值控制闪烁的时间
在这里插入图片描述
修改后如下所示
在这里插入图片描述

九、点亮OLED屏幕

一般来说,我们使用的OLED屏幕都如下所示,使用IIC进行控制
在这里插入图片描述
我们打开/sys/class/i2c-dev目录,可以看到有3个I2C总线设备可以使用
在这里插入图片描述
我们选择i2c-1来对OLED进行控制,打开【ODYSSEY–STM32MP157C】的引脚图如下,其对应的引脚位为I2C4
在这里插入图片描述
我们连接OLED屏幕的引脚如下

引脚号 引脚名称 OLED引脚
1 3.3V VDD
3 I2C4_SDA SDA
5 I2C4_SCL SCK
6 GND GND

连线如下
在这里插入图片描述
然后参考OLED屏幕编写在【ODYSSEY–STM32MP157C】上的iic控制代码,编写完成发代码我已经放在gitee上了,地址如下:
https://gitee.com/william_william/stm32mp157_oled.git
要注意的是,编译该文件,要在root用户下:
在这里插入图片描述
然后运行该程序,
在这里插入图片描述
可以看到OLED屏幕上的显示
在这里插入图片描述