stm32mp1 i.mx7开发与树莓派 Jetson nano开发对比

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驱动相关:

https://wiki.st.com/stm32mpu/wiki/How_to_cross-compile_with_the_Distribution_Package#Modifying_a_built-in_Linux_kernel_device_driver

 

M4内核的驱动硬件 单独写与操作系统无关,和普通的STM32芯片编程相同。

A7内核使用硬件 需要设计linux驱动(下面流程待确认)

 方法1:静态把驱动编译到内核中  适合发布用

https://wiki.st.com/stm32mpu/wiki/Getting_started/STM32MP1_boards/STM32MP157x-DK2/Develop_on_Arm%C2%AE_Cortex%C2%AE-A7/Modify,_rebuild_and_reload_the_Linux%C2%AE_kernel

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

X Window System

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fquick_start.html%23

Linux内核相关:

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fkernel_custom.html%23

linux驱动相关:

下载安装Jetson.GPIO库:

启动Jetson‑IO  sudo /opt/nvidia/jetson-io/jetson-io.py

添加对自定义硬件的支持

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fxavier_toolchain.html%23

 

硬件控制方式:

c和python在用户空间直接控制硬件 

开发语言支持:

C C++ Python

GUI设计:

QT/QTE

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fwindow_system_stub.html%23

 

其他应用支持:

opencv Keras sk-learn pytorch tensorflow

浏览器:Chromium  VLC播放器   RealVNC

Dcoker git   FileZilla  SSH  NFS SAMBA  vim 

 

 

关于Yocto:

如何新增驱动Developing_Kernel_Module_on_Yocto.pdf

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值