Funpack第一期活动已结束,具体可点击“详情”进行了解,也可关注“硬禾学堂”公众号持续了解Funpack活动进度。

开发板,是工程师探索新技术、试用新产品、快速开发原型样机的最佳方式。因此硬禾学堂联合全球著名的元器件分销商Digi-Key发起这个为期一年的Funpack活动——从这个月开始,每个月给大家推出一款用全球顶级半导体厂商的新产品构成的开发板套件。如果你能在一个月内按照指定目标把它玩起来,就可以免费获得它。

FsiqV7hAThF7JDby4ik3AaPz1zO5

 

本月是Funpack第一期,我们的活动产品是由Seeed设计、用意法半导体的STM32MP157C为处理器的模块系统。先一起来听听苏老师的介绍。

玩成就送!是不是动心了?我们一起来看看本期活动的详细安排。

 

活动流程及时间安排

Fify1c4jLnCLZG_W4Ujxc1i3WgpF

  1. 点击“阅读原文”进入Funpack页面并点击“得捷购”,购买这块板卡;
  2. 等待板卡到手后(从Digi-Key海外仓库发货,一般需要10天时间),在9月15日观看我们介绍板卡上手使用方法的直播;
  3. 在10月15日(一个月时间)前完成指定任务(简单来说是把板子跑起来,并驱动SPI、I2C、UART三个外设中的其中一个),通过邮件提交指定材料给硬禾,提交时间截止到10月15日晚23:59;具体提交的材料和详细要求,请点击“阅读原文”到活动首页后点击“怎么玩”就能看到。
  4. 提交材料得到我们审核通过的用户,由硬禾工作人员直接联系,发放购买板卡等值的京东购物券(限50名,先通过审核先得。顺序以收到邮件的时间为准);
  5. 硬禾学堂挑选优秀的视频、代码、文档在公众号、B站上向所有粉丝分享展示,跟大家共享成果,共同进步。

 

下面先来看看吴老师对板卡的介绍,然后就去“阅读原文”的“得捷购”下单,9月15日拿着板卡一起看吴老师的上手指引直播吧。

ST公司(意法半导体)推出STM32MP1系列Linux MPU,受到广泛关注。对于ST来说占据MCU半壁江山,拥有广大用户,能不能在嵌入式Linux应用领域继续成功;对于广大MCU用户来说能不能降低Linux门槛,无缝衔接低端到高端的产品设计都是值得期待的事情。

STM32MP1推出以来,市面上已经有好几种开发板,今天给大家介绍一款由矽递(Seeed)推出的ODYSSEY-STM32MP157C开发板,其最大的特色是类似树莓派的结构设计,兼容树莓派接口。融入树莓派生态系统,不仅增加了各种资源,增加了可玩性,对新用户来说了降低了Linux门槛,上手入门更容易。

FmFA1RsbvsudInKqLGO4dwNjNySd

 

首先来看看硬件平台,ODYSSEY – STM32MP157C以模块上系统(SoM)和载板的形式创建。SoM由MPU,PMIC,RAM组成,并且载板采用Raspberry Pi尺寸。载板上包括所有必需的外围设备,包括千兆以太网、WiFi / BLE、直流电源、USB主机、USB-C、MIPI-DSI、摄像机、音频的DVP等。使用该板,客户可以快速评估SoM,并轻松快捷地将SoM部署在自己的载板上。

 

核心板SoM详细参数

FrNtZgGr_j6Vlzzoba5r7ZfGRZG4

  1. STM32MP157C:MPU(双核Arm Cortex-A7 + 单核Cortex-M4 )
  2. MT41K256M16TW-107:512MB RAM
  3. STPMIC1APQR: 电源管理芯片
  4. EMMC04G-M627: 4GB eMMC内存
  5. LED: 成功供电后,PWR将继续工作。当系统正常运行时,USER LED将一直闪烁。
  6. 70针连接器:3路70针板对板连接器

 

核心STM32MP157C处理器是工作在650Mhz的双核Arm Cortex-A7核心处理器。该处理器还与Cortex-M4协处理器集成在一起,使其适合于实时任务。Cortex-A7主要在操作系统级别执行操作,Cortex-M4在MCU级别处理操作。芯片含有丰富的资源,支持各种存储器接口、图形加速/显示接口和丰富的通信接口。可以广泛应用于工业制造、消费电子、医疗、高端可穿戴设备、智能家居设备等领域。

FrKoqcBCI5pz72sST9QuZe8HF8jP

 

载板详细参数

FhgbFNKs_wvJw2lsDIGjMGzDuSDsFqFPPexmtOJO6WP4owvH4ve6C6Q3

  1. 载板:安装核心板 SoM-STM32MP157C的区域(载板的结构类似树莓派)。
  2. 直流电源输入端口:12V〜24V / 2A(建议输入12V / 2A电源)。
  3. ETH接口:网络电缆接口可以连接到千兆级网络。
  4. USB端口:两个USB主机端口
  5. USB设备:USB 2.0 TypeC。如果将Type C用作板卡电源输入,则应使用5V / 3A电源适配器。
  6. 数字Grove接口:将Grove接口连接到数字引脚。
  7. IIC Grove接口:将Grove接口连接到IIC引脚。
  8. 音频接口:3.5mm音频接口。
  9. MIPI DSI接口:使用MIPI DSI接口(FPC 20Pin 1.0mm)连接到显示器。
  10. 40 PIN GPIO接口:与Raspberry Pi的40-PIN兼容。
  11. AP6236: 2.4G WiFi&BT 4.2控制芯片
  12. 滑动开关:可用于选择SD卡或eMMC来启动。
  13. 调试UART:系统默认的调试串行端口
  14. JST 1.0mm: 3VRTC电池接口。
  15. RST键:系统复位键
  16. PWR按键:长按约8秒可关闭,短按可启动。
  17. 用户按钮:用户按钮。
  18. PWR LED: 开发板电源指示灯。
  19. User LED: 用户可编程的LED。
  20. ACA-5036-A2-CC-S: 板载2.4G陶瓷天线。
  21. IPEX 1代:外部2.4 G外部天线座(使用外部天线时,需要卸下R49,R51两个0Ω电阻)
  22. lSD卡插槽:将装有系统的SD卡插入该区域
  23. DVP摄像头接口:通过DVP接口(FPC 20Pin 1.0mm)连接到摄像机。
  24. KSZ9031: 1000M网络电缆驱动器网卡。
  25. STMPS2252MTR: 电源开关芯片。
  26. MP9943: 降压DCDC电源芯片。
  27. WM8960: 音频编解码器芯片。
  28. MP2161: 降压DCDC电源芯片。

 

准备工作

ODYSSEY-STM32MP157C开发板的包装里只有一个开发板的裸板,其他的配件需要DIY。我们先到板卡的wiki页面看看 。

FmIi0zMb5wOHKryYXzhuLNNitv7t

准备第一次启动所需配件:

  • 电源推荐12V2A直流电源(也可以通过Type C USB供电,需要5V3A适配器)
  • 串口连接线
  • 4GB以上SD卡
  • 网线(可选)

 

因为开发板没有HDMI之类显示接口,所以第一次启动Linux系统需要通过串口调试端口设置,还需要一张4GB以上SD卡烧录系统。如果有有线网络可以直接连接,如果只有无线网络可以启动后再激活网络。

首先我们要在wiki页面下载烧录Linux镜像,熟悉树莓派的朋友一定不陌生。

FuriiNh7V0J9iI149o_67shVaQgB

 

然后连接硬件平台,串口这样连接,如果有网线也可以插上。

FutZ7PLzREkeiPCqrCuGo479L5VR

 

在板上有开关控制启动模式(SD or eMMC),第一次拨到SD端。

Fjt2ul8JPo_5BHbwYe0RoWzccb-V

 

第一次启动

打开一个串口监控程序(例如Putty),设置好串口。开发板上电后在SoM上的Power led变亮,系统启动后User led会一直闪烁,这才代表SD卡启动成功。

Fo75wFK-B8InRulENuPMe0BLiW79

 

输入默认的用户密码debian  temppwd进入Linux系统,可以看看系统信息,如查看当前操作系统内核信息等。

FpjxmO4yJLGXS3gufRfDGgE2_Qwk

 

这时候Linux系统基本上是一个裸系统,如果已经连上了有线网络(或者激活WiFi),我们可以进行系统更新,因为更新源在国外,所以系统更新速度有些慢,需要耐心等待。

sudo apt-get update
sudo apt-get upgrade

 

更新完成后需要安装一些基本工具,如ssh、git、wget、make等等。安装ssh后可以通过ssh远程登录系统更方便。

sudo apt install ssh

 

切换eMMC启动

系统从eMMC启动更方便,这样就不需要再插上SD卡。要如何切换到eMMC启动?首先要更改启动文件/boot/uEnv.txt,

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

 

直接重启,重启完成后会发现这时候SoM上的user led变成常亮。

Ft-CkXXF-MhuVUjZcLh6ffIXgvlt

然后断开电源,取出SD卡,将开关拨到eMMC端。这时重新上电后,系统就从eMMC启动。

 

激活WiFi

如果已经插上网线的话,可以直接连通网络。想要激活WiFi功能首先要修改/boot/uEnv.exe的内容。

 

dtb = stm32mp1-seeed-npi-base.dtb ---> dtb=stm32mp1-seeed-npi-full.dtb

重启系统,该Linux镜像集成了网络管理工具connmanctl,按照wiki教程设置WiFi激活。

FiYrVhimCGvUs4cnpWDstwZoWjF7

 

连上网络后可以通过ssh登录系统。

FqrmUys1F2vgn_q_oszFNSyOa-yF

 

安装Python工具

这款开发板是一个类树莓派的结构设计,完全兼容树莓派扩展接口,最大的区别是少了HDMI接口,增加了两个Grove接口。

Fpep-wRg4j0b4tM3IXzoaw1fjIqc

 

Grove是矽递推出的跨平台工具集,包含了多种外设模块,这些模块采用统一的接口设计,软硬件开源,使用非常方便。通过树莓派接口也可以扩展使用各种Grove接口模块。Grove模块驱动都是通过Python开发,在使用前我们要先在系统安装Python工具。按照wiki的教程先安装Python。

sudo apt install linux-headers-$(uname -r) -y
git clone https://github.com/Seeed-Studio/seeed-linux-dtverlays
cd seeed-linux-dtverlays
make all_stm32mp1 CUSTOM_MOD_FILTER_OUT="jtsn-wm8960" && sudo make install_stm32mp1 CUSTOM_MOD_FILTER_OUT="jtsn-wm8960"
sudo apt install python3 python3-pip -y

 

安装完成python后,我们先安装grove.py库,这个库类似树莓派的驱动库,安装之后可以很方便控制硬件接口。

sudo pip3 install Seeed-grove.py
cd ~
git clone https://github.com/Seeed-Studio/grove.py

 

例如我们首先做一个最简单实验,点亮LED。因为接口和树莓派接口一样。FhebaZ0Ezd1rJ1t82crw3D1ltqPN

import time    
from grove.grove_led import GroveLed
# connect to pin 5(slot D5)    
PIN   = 5    
led = GroveLed(PIN)
while True:      
    led.on()      
    time.sleep(1)      
    led.off()      
    time.sleep(1)

 

编辑一个python文件led.py,执行后会驱动GPIO5引脚的LED闪烁。

sudo python3 led.py 

FguCeeSyQgrxL83Cjm5ipmV5mYev

 

到这里我们就搭好了ODYSSEY-STM32MP157C开发板的软硬件开发环境,在wiki页面上有一些教程,比如驱动树莓派接口上的一个串口等等。目前wiki页面资料还不是很完善,一直在更新,外设驱动的实例也会越来越多。

在这块开发板上没有引出STLink接口,不过PCB还是预留了STLink的调试信号,可以焊接引出STLink接口用于单片机调试。

Fg31iDg2r0FF6pybWjeTBT4Xm0HM

 

在Digi-Key的wiki页面有软件资源的汇集,用户可以制作自己的Linux镜像学习嵌入式Linux的设计。

 

总结

ODYSSEY-STM32MP157C开发板设计之初就考虑融入树莓派生态系统,不仅增加了可玩性,也降低了使用门槛。对于习惯MCU开发的用户是一个很好地上手工具。这款开发板还有一个优势是核心板和载板分离设计,而且硬件设计完全开源。我们知道有很多设计可以直接基于树莓派开发,但是最大缺点是树莓派的硬件是没法定制的。而这款开发板不仅可以做原型设计和软件验证,也很方便将核心板集成到自己的设计,降低产品的设计和时间成本。

 

END