stm32mp1
支持的操作系统:
官方系统OpenSTLinux (Cortex®-A7)↑ OpenSTLinux是基于OpenEmbedded构建框架的Linux®发行版。
OpenSTLinux层提供了几个发行版:
- openstlinux-weston:使用Wayland / Weston图形后端使用进行分发。
- openstlinux-eglfs:专门用于Qt使用的发行版。通过此发行版,Qt使用eglfs图形后端。
- openstlinux-x11:专门用于X11框架的发行版。
- https://github.com/STMicroelectronics/meta-st-openstlinux/
Openstlinux-5.4-dunfell-mp1-20-06-24 is the new version delivered with the STM32MP15-ecosystem-v2.0.0 release
STM32MP15-ecosystem-v2.0.0版本专用于STM32MP15微处理器。它是基于新社区组件版本(Yocto LTS Dunfell,内核5.4 LTS,U-BOOT v2020-01,TF-A 2.2,OP-TEE 3.9)的不断发展的维护版本。
https://wiki.st.com/stm32mpu/wiki/STM32MP15_ecosystem_release_note
https://wiki.st.com/stm32mpu/wiki/STM32MP1_Developer_Package
Android
https://wiki.st.com/stm32mpu-ecosystem-v1/wiki/STM32MP15_distribution_for_Android_release_note
开发方式:ubuntu主机+开发板
开发包:
https://wiki.st.com/stm32mpu/wiki/STM32MP1_Developer_Package#Installing_the_Linux_kernel
OpenSTLinux SDK为开发人员提供了有效的开发周期(编译,在目标上部署和调试)。
使用此SDK,开发人员可以利用Yocto项目开发环境(快速开发,部署和测试应用程序或任何其他软件,作为运行硬件的映像的一部分),而无需了解似乎可能出现的所有Yocto项目机制。有点复杂。
Linux内核相关:
https://wiki.st.com/stm32mpu/wiki/How_to_customize_the_Linux_kernel
内核重新编译后可直接拷贝到文件系统,重启一次开发板就完成内核升级。
M4 M7内核通信:RPMSG
引导:U-Boot
https://github.com/STMicroelectronics/u-boot/
如何修改内核:
1,下载源代码并解压
2,下载并应用st补丁
3,编译并生成内核
4,复制内核到开发板并更新依赖
scp arch / arm / boot / uImage root @ <板IP地址>:/ boot
5,重启开发板
linux驱动相关:
M4内核的驱动硬件 单独写与操作系统无关,和普通的STM32芯片编程相同。
A7内核使用硬件 需要设计linux驱动(下面流程待确认)
方法1:静态把驱动编译到内核中 适合发布用
1,在主机上修改硬件驱动代码
2,重新制作内核镜像
make uImage LOADADDR=0xC2000040
3,复制到开发板
scp arch/arm/boot/uImage root@<board ip address>:/boot
4,重启开发板
Board $> reboot
具体流程参考:Yocto
开发流程(下面流程待确认)
方法2:动态加载驱动到系统中,适合调试用
1编写驱动程序
① 确定主设备号,也可以让内核分配
② 定义自己的 file_operations 结构体
③ 实现对应的 drv_open/drv_read/drv_write 等函数,填入 file_operations 结构体
④ 把 file_operations 结构体告诉内核: register_chrdev
⑤ 设计入口函数:安装驱动程序时,就会去调用这个入口函数
⑥ 有入口函数就应该有出口函数:卸载驱动程序时,出口函数调用 unregister_chrdev
⑦ 其他完善:提供设备信息,自动创建设备节点: class_create, device_create
2编写makefile生成驱动程序
3编写应用程序来测试驱动程序
4拷贝驱动程序和应用程序到开发板
5安装驱动程序
insmod xx.ko // 安装驱动程序
ls /dev/xx -l // 驱动程序会生成设备节点
6运行应用程序
echo "7 4 1 7" > /proc/sys/kernel/printk // 打开内核的打印信息
./xx_test // 查看测试程序的用法
https://weidongshan.coding.net/public/01_all_series_quickstart/01_all_series_quickstart/git/files
驱动源代码
https://github.com/STMicroelectronics/linux/tree/v5.4-stm32mp/drivers
BASH实例
https://github.com/STMicroelectronics/linux-examples/blob/master/GPIO/leds/toggle_led.sh
#!/bin/sh
while true; do
gpioset gpiochip0 14=1
sleep 1
gpioset gpiochip0 14=0
sleep 1
done
#!/bin/sh
val=1
while true; do
pid=$$
gpiomon --num-events=1 --silent --rising-edge gpiochip0 13
trap 'kill -9 $pid' 2
if [ $val -eq 1 ]; then
val=0
else
val=1
fi
gpioset gpiochip0 14=$val
done
硬件控制方式:
在linux中使用c和C++调用驱动程序进行编程
或直接运行M4中的主程序
开发语言支持:
C C++
使用gdb管理进行OpenSTLinux调试
GUI设计:
QT/QTE GTK+ java
其他应用支持:
NFS SSH 待补充
NXP i.mx7(Yocto管理)
支持的操作系统:
Android, linux, Windows iot ,free RTOS
https://www.nxp.com/document/guide/get-started-with-the-mcimx7sabre:GS-MCIMX7SABRE
https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf
https://www.nxp.com/docs/en/release-note/IMX_LINUX_RELEASE_NOTES.pdf
Linux内核相关:
可直接重新编译内核,复制到开发板,重启完成内核更新
M4 M7内核通信:RPMSG
linux驱动相关:
M4内核硬件开发和普通M4芯片一样 使用mdk或IAR开发
A7内核 需要编写linux驱动 动态加载 静态编译两种模式
GPIO API:
https://www.nxp.com/docs/en/user-guide/IMX_PORTING_GUIDE.pdf
https://www.nxp.com/docs/en/reference-manual/IMX_REFERENCE_MANUAL.pdf
硬件控制方式:
在linux中使用c和C++调用驱动程序进行编程
或直接运行M4中的主程序
开发语言支持:
C C++
GUI设计:
QT/QTE
其他应用支持:
待补充chromium opencv YOLO caffe tensorflow TfMobileNet ONNX Python Arm NN
https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf
树莓派
支持的操作系统:
官方推荐的有Raspbian和NOOBS https://www.raspberrypi.org/documentation/installation/noobs.md,
第三方操作系统有Ubuntu MATE、Ubuntu Core、Ubuntu Server、Windows10 IoT Core、OSMC、Fyde OS
Linux内核相关:
linux驱动相关:
硬件控制方式:
c和python在用户空间直接控制硬件
开发语言支持:
C C++ Python php
GUI设计:
QT/QTE
其他应用支持:
浏览器:Chromium VLC播放器 Synaptic软件包管理器 Arduino IDE Fcitx输入法 RealVNC
Dcoker git owncloud网盘 wordpress FileZilla SSH NFS SAMBA vim opencv tensorflow pytorch
Jetson nano:
支持的操作系统:
Weston (Wayland) Windowing System
Gnome-Wayland Desktop Shell Support
Linux内核相关:
linux驱动相关:
下载安装Jetson.GPIO库:
启动Jetson‑IO sudo /opt/nvidia/jetson-io/jetson-io.py
硬件控制方式:
c和python在用户空间直接控制硬件
开发语言支持:
C C++ Python
GUI设计:
QT/QTE
其他应用支持:
opencv Keras sk-learn pytorch tensorflow
浏览器:Chromium VLC播放器 RealVNC
Dcoker git FileZilla SSH NFS SAMBA vim
关于Yocto:
如何新增驱动Developing_Kernel_Module_on_Yocto.pdf