【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,
- 直接输入
connmanctl
命令打开网络管理工具 - 然后输入命令
enable wifi
开启WiFi 功能 - 可以使用命令
scan wifi
扫描附近的WiFi,使用services
命令显示 - 输入
agent on
命令 - 使用
connect + 你要连接的WiFi后面的代码
连接你要连接的WiFi(可以Tab键自动补全),然后输入密码 - 连接成功后使用
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 -v
和gcc -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_on
和delay_off
属性,分别表示其点亮和熄灭的时间,单位为ms
echo timer > trigger
可以通过修改delay_on
和delay_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屏幕上的显示