赞
踩
最近参与了硬禾学堂的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闪烁,表示启动成功:

我们也可以在串口终端看到其打印信息

我们用默认用户名: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加入,打开/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,
connmanctl命令打开网络管理工具enable wifi开启WiFi 功能scan wifi扫描附近的WiFi,使用services命令显示agent on命令connect + 你要连接的WiFi后面的代码连接你要连接的WiFi(可以Tab键自动补全),然后输入密码quit命令退出
Error /net/connman/technology/wifi: No carrierifconfig查看IP地址,其中wlan0就是WiFi

首先,更新软件索引清单,因为用软件源在国外,所以可能要等很久
sudo apt-get update
然后我们安装SSH功能
sudo apt install ssh -y
安装完成后就可以使用终端工具进行登录了,这里我依然使用MobaXterm,不过要注意有一些高级功能不要勾选

远程登录成功界面如下

如上所示linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨。所以我们可以让主机名和用户名显示颜色。
打开用户主目录下的 .bashrc文件,然后找到force_color_prompt,将其前面的#注释符去掉,然后保存退出。

使用source ~/.bashrc让其起作用,即可看到效果

首先,安装一下make相关的C语言工具
sudo apt install make device-tree-compiler gcc -y
然后我们输入make -v和gcc -v命令查看一下其相应版本,能看到版本即表示安装成功

新建一个hello.c文件,输入代码,

编译,运行,成功打印Hello world!

这是用C语言的,当然还可以使用Python,首先安装python相关工具
sudo apt install python3 python3-pip -y
然后输入python3 ,可以看到python3 版本,然后我们打印一个helloworld,可以看到,打印成功

ODYSSEY的底板上有三个LED灯,其中usr0默认为常亮状态,usr1默认为SD卡指示灯,usr2默认为EMMC指示灯。如下所示,因为我现在没有插SD卡,使用usr1在闪烁。

然后进入目录/sys/class/leds/即可看到LED的定义

我们进入usr0目录,修改其触发方式为手动,注意,需要进入root用户,密码为root,
echo none > trigger

这时,usr0就熄灭了

然后在将其点亮:
echo 1 > brightness

或者页可以将其设置为闪烁模式,这时可以看到目录下多出来delay_on和delay_off属性,分别表示其点亮和熄灭的时间,单位为ms
echo timer > trigger

可以通过修改delay_on和delay_off的值控制闪烁的时间

修改后如下所示

一般来说,我们使用的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屏幕上的显示

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。