toradexsh的博客

www.toradex.cn

  • 博客(201)
  • 收藏
  • 关注

原创 NXP iMX8MP ARM 平台 EMQX 部署测试

EMQX 是一款基于 Erlang/OTP 平台开发的开源 MQTT 消息服务器,广泛应用于物联网(IoT)领域,以实现设备到服务器以及服务器到设备的消息传递与控制,文本就基于 NXP i.MX8M Plus ARM 处理器平台,通过在 Yocto Linux BSP 中集成 Docker 环境来部署测试 EMQX。d). 此时在开发主机,通过浏览器通过如下网址可以查看已经运行的 EMQX 控制台页面,默认登录信息为 admin/public,可以后续自行更改密码。

2025-04-02 11:13:48 980

原创 NXP iMX8QM 通过 SCFW 隔离 AP_M4 核资源

文章介绍了如何使用 SCU 划分不同的分区,将 AP 和 M4 之间做硬件隔离,并使用 SCFW 直接加载 M4 的固件,不仅提高系统可靠性,也将 M4 运行提前到 U-Boot 之前,加快启动速度。AP0:拥有运行 U-boot,Linux 的分区MCU0 和 MCU1:两个 Cortex-M4 核各自运行的分区Shared:共享资源的分区,例如将一段用于 rpmsg 通信的 RAM 区域划分到其中,AP 和 M4 就能够相互发送消息。为了实现 AP 和 M4 之间的硬件隔离,可以采用下面分区。

2025-03-21 10:51:24 878

原创 Yocto Linux 量产 BSP 镜像定制

d). “imx-boot” 如章节 (c) 说明是 Verdin i.MX8MP 平台对应的 Boot Container 文件,如果需要修改底层 Bootloader,可以参考如下文章修改编译生成新的 “imx-boot” 文件后替换 BSP Image 镜像里面的文件。本文只将和定制量产镜像相关的参数着重说明。./ “u_boot_env” 参数定义了 U-Boot 启动动态加载的环境变量参数,可以将自定义的 U-Boot 环境变量参数更新到这个文件,刷写 BSP 镜像后启动即可以生效。

2025-03-06 12:00:58 931

原创 ARM 处理器平台 eMMC Flash 存储磨损测试示例

本文基于 NXP i.MX8MM ARM 处理器平台说明和演示了 eMMC 寿命磨损测试的流程,同时由于测试是线性写入,得出的结果和实际应用具体情况可能有不同,不过在实际应用中,为了最大程度的增加 eMMC 存储器件的寿命和可靠性,在写入数据时候最好不要无论大小数据每次都直接写入磁盘,最好使用缓存将要写入的数据累积到一定量之后,根据具体 eMMC Optimal Write Size 来最终写入磁盘,以尽可能减少 WAF,提高磨损寿命。的说明使用上述下载的 BSP Image 制作启动 SD 卡。

2025-02-26 12:17:21 961

原创 NXP iMX8MP 处理器基于 Linux 关闭 Debug Console 输出

g).通常情况上面保留SPLBootROM启动相关log打印即可满足需求,如果一定要完全去掉,就需要逐项查看对应的源代码,当前打印信息对应(BSP版本变更可能导致变化)以及修改patch请见如下,在对应源码中注释掉相关的“printf()/puts()”打印log输出代码重新编译即可,测试下来这样可以将启动时间缩短到13.8s左右。//如果只需要不显示部分Kernellog信息,则可以只设置增加如下环境变量即可,无需重新修改编译U-Boot。

2025-01-07 14:52:17 710

原创 ARM 处理器平台 Ethernet Compliance 测试流程示例

b). 配置完成后,点击“Start”开始测试,然后录入相关测试基本信息,测试过程中需要根据测试项目提示调整LeCroy TF-ENET-B 测试夹具两端的连接端口,测试完成后会自动生成测试报告,通过示波器的PDF 生成设置导出 PDF 测试报告文本。b). 首先将 LeCroy 808Zi-B 高速示波器 (配置 BNC-SMA 适配器)通过 SMA 线缆和 LeCroy TF-ENET-B 测试夹具SMA 端口进行连接,具体连接的端口依据需要测试的项目来调整。d).其他需要的线缆和附件。

2024-12-19 15:21:34 1020

原创 基于 NXP iMX8QM 运行 QNX

嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 QNX Everywhere 项目,个人用户可以出于非商业目的免费使用 QNX 操作系统。得益于 Toradex 和 QNX 的良好合作伙伴关系,用户能够在 Apalis iMX8QM 和 Verdin iMX8MP 模块上轻松测试和评估 QNX 8 系统。下面将基于 Apalis iMX8QM 介绍如何运行 QNX。

2024-11-29 15:29:41 803

原创 基于 NXP iMX8MP 平台简单测试 PySide6 应用

然后针对最新的 Qt6 版本,Qt for Python 项目也继续从 Qt 6.6 版本开始发布了最新的 PySide6 版本,本文就基于 NXP i.MX8M plus处理器平台简单测试 PySide6 的部署运行。b). 由于默认配置只包含了 meta-qt5 layer,因此需要参考如下操作将 meta-qt5 替换为 包含 PySide6 支持在内的 meta-qt6 layer,本文测试基于 Qt 6.6.x 版本,可以跟进实际需求改为不低于 Qt 6.6 的版本。

2024-10-30 10:57:39 901

原创 Verdin AM62使用CODESYS

CODESYS 是基于 IEC 61131-3 的 PLC 开发工具,在工业控制、交通等领域中有着广泛的应用。文章将介绍如何在 Toradex 采用 TI AM62 SoC 的 Arm 计算机模块 Verdin AM62 使用评估版本的 CODESYS。使用 TI AM623/AM625 处理器,具有最多 4 个主频 1.4GHz 的 Cortex-A53 内核,以及一个 400MHz 主频的 M4F 核心。内存采用 LPDDR4,从 512 MB 到 2 GB 可供选择。eMMC 从 4~16 GB。

2024-10-11 15:16:01 778

原创 Verdin AM62 引脚复用配置

Verdin AM62 是 Toradex 基于 TI AM623/AM625 SoC 的 Arm 计算机模块。它最多提供 4 个 A53 和 1 个 M4F 处理器。这是 TI 基于其 K3 平台的处理器,虽然和 NXP 的 iMX8M Mini/Plus 都使用 A53 核心,但是由于架构不同,在 Linux 系统中配置外设的方式也不同。文章将介绍如何配置 AM62 的引脚复用关系。所使用的 AM623/AM625 处理器的 GPIO 控制器如下图所示。

2024-09-18 18:06:12 970

原创 TI AM62X Secure Boot 流程简述

d). 需要注意的是由于Kernel阶段的Secure Boot相关认证和加载都是基于U-Boot 环境变量来实现的, 因此如果要让这个启动机制更加安全可靠,则要让U-Boot保持在上述安全启动路径,而不能通过其他启动介质或者脚本来启动而绕开 Secure Boot,比如 Toradex U-Boot默认是使能 Distro Boot 功能的,可以自动扫描外设介质的启动脚本,那么这个功能就需要关闭掉,类似这样的 U-Boot 定制化和启动路径固化可以参考如下文章,本文不做进一步介绍。

2024-09-18 17:48:12 1824

原创 基于 TI AM62 测试 QtWayland 部署

目前主流的 ARM 平台嵌入式 Linux BSP 的显示后端基本都已经从 X11 升级到了 Wayland, 而常用的 Wayland Compositor - Weston 对于 Linux 下常用的 Qt 图形界面开发框架的一些 Plugin (比如 Qt VirtualKeyboard) 的配合并不完善,因此本文就基于 TI AM62 处理器平台测试 Qt 提供的 Wayland Compositor - QtWayland 的部署测试。

2024-07-10 17:00:28 874

原创 Verdin AM62 LVGL 移植

Verdin AM62 的 Linux 中已经实现了显示硬件驱动的配置,lvgl 只需要在 wayland 完成渲染显示即可,在 lv_drv_conf.h 不需要太多的设置,这里只设定了显示窗口大小。文章介绍了如何将 LVGL 移植到 Verdin AM62 模块上,由于底层显示驱动已经在 Linux 中配置,移植过程并不涉及硬件驱动,该方法同样也适用于除了 AM62 以外的其他模块。在 CMakeLists.txt 中添加了 Linux SDK 的安装目录,以及相关的头文件在 SDK 中对应的位置。

2024-04-29 15:25:58 812

原创 基于 NXP iMX8MM 测试 Secure Boot 功能

f). 需要注意的是由于Kernel阶段的Secure Boot相关认证和加载都是基于U-Boot命令行来实现的, 因此如果要让这个启动机制更加安全可靠,则要让U-Boot保持在上述安全启动路径,而不能通过其他启动介质或者脚本来启动而绕开Secure Boot,比如Toradex U-Boot默认是使能Distro Boot功能的,可以自动扫描外设介质的启动脚本,那么这个功能就需要关闭掉,类似这样的U-Boot定制化和启动路径固化可以参考如下文章,本文不做具体测试。

2024-04-25 16:37:17 1212

原创 Verdin iMX8MP 调试串口更改

例如在 imx8mp-verdin-u-boot.dtsi 中配置 UART1 对应的 pinctrl_uart1,并删除原来的 pinctrl_uart1。Verdin iMX8M Plus 具有四个串口,其中 UART3 是用于 A53 核心上的系统如 Linux 的默认调试串口,出于设计需要可能需要将调试口换到其他串口,文章将介绍如何使用 UART1 作调试串口。ATF 代码的 imx8mp_bl31_setup.c 中,把 RDC_PDAP_UART1 划分到 A53 所在的 D0 域。

2024-03-08 11:38:40 756

原创 NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

NXP i.MX8 系列处理器均为异构多核架构 SoC,除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心,还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心,本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-M4 核心来运行 GPT (General Purpose Timer) 输入采集功能模块的测试。./ clock_config.h/clock_config.c 用于 i.MX8MM M4 核心基本时钟配置,本文不做修改。

2024-03-06 17:13:24 1364

原创 嵌入式Linux下使用 Plymouth 实现开机画面示例

嵌入式 Linux 下传统实现 Splash Screen 的方式是通过替换 kernel 默认的 TUX 小企鹅 logo 为定制的开机画面图片来实现嵌入式设备开机图片,虽然比较成熟且可以保证开机画面加载比较早,但是存在的问题首先是对嵌入式设备不同显示接口的兼容性不好,另外每次修改适配都需要重新编译内核,维护起来不是很方便,然后就是只能支持静态图片无法支持动画。j). 修改 build/conf/local.conf 文件,增加 Plymouth 和 initramfs 相关定义。

2024-01-26 14:31:50 1424

原创 Flutter 在嵌入式 Linux 的应用

在 data 目录下创建 flutter_assets 文件夹后,将 build/flutter_assets/ 中剩余的 AssetManifest.bin,AssetManifest.json,FontManifest.json,fonts,NOTICES.Z,packages 和 shaders 均移动到 data/flutter_assets 中。支持 KMS 和 DRI,3D 硬件加速。使用 Flutter 可以开发跨平台应用,并获得流畅的本地运行体验,在移动端和 Web 端都有广泛的应用。

2024-01-19 14:40:32 2102

原创 Apalis_iMX6_eMMC常驻ToradexEasyInstaller

Toradex Easy Installer 是 Toradex 计算机模块上出厂预装的软件,可以令开发人员首次安装不同的操作系统,同时也适生产线上模块的批量烧写作业。通常在安装系统后,Toradex Easy Installer 将被从模块的存储上擦除。本文将介绍如何使 Toradex Easy Installer 常驻在存储,并用其重装系统。实现该操作的方法为在存储设备上创建一个专门存放 Toradex Easy Installer 的分区。

2023-12-26 16:04:06 967

原创 NXP iMX8MM 通过 TFTP和 NFS 启动示例

本文就基于 NXP iMX8MM ARM嵌入式平台演示 TFTP/NFS 启动的简单示例。-rw-r--r-- 1 simon simon 12981512 9月 2 00:35 Reference-Minimal-Image-upstream-verdin-imx8mm.bootfs.tar.xz。-rw-r--r-- 1 simon simon 38155936 9月 2 00:37 Reference-Minimal-Image-upstream-verdin-imx8mm.tar.xz。

2023-12-22 10:45:18 1058

原创 NXP iMX8M Plus Qt5 双屏显示

文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。Qt 应用在 weston 环境中运行时会对应一个 app_id,例如 BSP 中默认的应用 /usr/share/cinematicexperience-1.0。在 /sys/class/drm 目录下可以看到两个 HDMI 接口,分别是 HDMI-A-1 和 HDMI-A-2,但是它们都属于同一个 DRM 接口 card1。

2023-12-01 11:53:24 1757

原创 扩展外部eMMC存储

iMX6 SoC 只有其中的两路 SDIO 才有 Reset 引脚,其中一路已经用于模块自身的 eMMC,另一路的 SD4_RESET 没有引出到模块的金手指上。这对于扩展的 eMMC 来说将失去硬件复位功能,只能采用断电复位 eMMC。对于存储器如 eMMC,写入的数据量决定其使用寿命,对于有大量日志记录的应用,通常可以选用一个大容量的存储设备。上面演示了如何在 Toradex 计算机模块上方便地扩展外部 eMMC,以及一些注意事项如 eMMC 接口的电压选择、调试期间的时钟设置和载板设计中的布线问题。

2023-11-23 14:31:30 406

原创 嵌入式Linux下运行 DotNet 应用简单示例

当然也可以选择添加 ASP .NET (aspnet-core) 和 Visual Studio Remote Debugger (vsdbg) 组件,需要注意 ASP .NET runtime 会包含 .NET runtime,因此两者不要同时添加。./修改 build/conf/local.conf 文件,增加 .NET 相关库组件,如果需要可以选择指定 .NET runtime 版本,本文编译测试没有指定,默认是支持的最高版本,当前是 7.0.11 版本。

2023-11-17 17:10:52 802

原创 NXP iMX8MM 修改 UART4至 Cortex-A53 核心

下载Toradex Ycoto Linux BSP Multimedia Image Quarterly 6.3.0+build.7版本,默认image通过Toradex Easy Installer安装后,将 /boot 目录下的默认 imx8mm-verdin-wifi-dev.dtb device-tree 文件替换为章节6 生成的文件后启动测试,由于没有修改 ATF (默认版本是v2.6(release):lf_v2.6-g3c1583ba0a),会报出 kernel Oops 错误。

2023-09-07 09:52:21 826

原创 Mainline Linux 和 U-Boot编译

U-Boot 补丁位于 meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-toradex 目录下。补丁顺序可以参看 meta-toradex-bsp-common/recipes-kernel/linux/linux-toradex-mainline_git.bb 文件。补丁顺序可以参看 U-Boot meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb 文件。

2023-08-25 16:41:57 1342

原创 基于NXP iMX8MP处理器M7核心LVGL移植

除了上面的延时函数外,用于控制 ILI9341 数据/命令引脚 的 LV_DRV_DISP_CMD_DATA() 、复位ILI9341 的 LV_DRV_DISP_RST() 和 SPI 传输一个字节、多个字节的函数spi_transaction_one_byte(),spi_transaction_array ()也需要自己实现。LV_DRV_DELAY_US() 和 LV_DRV_DELAY_MS() 需要在自己的代码中实现(位于freertos_ecspi_loopback.c)。

2023-07-14 11:40:28 700

原创 嵌入式Linux下Dropbear SSH配置优化

的说明将上述修改下重新编译生成的 Ycoto Linux Image 通过 Toradex Easy Installer 更新到 Apalis iMX8 模块,此时测试无论本地串口登录还是远程SSH登录 root 用户都需要输入预设的密码了,增强了安全性。c). 为了进一步提高 SSH 安全性,可以创建普通 user 用户用于远程登录,而禁止 root 用户 SSH 远程登录。./ 禁止 root 用户 SSH 登录,参考如下 patch 修改 /etc/default/dropbear 文件。

2023-05-31 15:18:46 2803 1

原创 基于NXP iMX8处理器扩展外部 SGTL5000 音频接口

Apalis iMX8 的数字音频接口可以非常方便地扩展音频编解码器,具体的引脚分配、device tree 配置等需要结合所使用的音频编解码器,有些可能会十分简单,如 MAX98357A,其甚至不需要 I2C 和 SYS_MCLK 就可以直接工作。iMX8 处理器具有多路 SAI 通道,SAI1 已经被模块片上的 SGTL5000 使用,SAI0 通道引出到模块金手指上,并且是兼容 Apalis 标准数字音频接口,该通道在基于其他 CPU 的 Apalis 模块也可以直接使用。

2023-04-19 17:49:29 1654 1

原创 基于NXP iMX8M Mini处理器测试DPDK

c). 由于默认的 oe-core/layers/meta-freescale/recipes-extended/dpdk/ 提供的 DPDK 19.11版本还未支持 iMX8MM,需要参考 NXP i.MX_Yocto_Project_User's_Guide 文档,下载 NXP imx-6.1.1-1.0.0 branch 代码来获取 DPDK 21.11 版本的 BB 描述文件。的说明下载 Linux Kernel 源代码, 对应 Branch 为 toradex_5.15-2.1.x-imx。

2023-04-11 14:45:47 963

翻译 在设计载板时添加USB-C - 第2部分

为了充分利用USB-C的 Super-Speed 信号功能,必须使用多路复用器以及使用CC引脚进行正确的电缆方向检测,如第一篇博客所解释的那样,以便多路复用器能够得到正确的控制。当向您的USB-C应用添加 Super-Speed 功能时,如前所述,所需的多路复用器用于将 Super-Speed 信号连接到电缆的正确一侧,这可以简单地由同一个 TUSB321芯片控制。USB 2.0的D+/D-引脚在插座上是对称的,这意味着不需要识别插入的电缆的方向,也不需要多路复用器来切换信号。

2023-03-29 16:51:23 456

原创 NXP iMX8系列处理器TSN网络时钟同步测试

本文就基于 NXP 最新的 i.MX8 系列 ARM 处理器平台进行 TSN 时钟同步的简单测试。

2023-03-16 16:57:13 1211 1

原创 使用 YoctoProject集成Qt6

在嵌入式领域中 Qt 作为普遍选择的 UI 方案目前已经发布 Qt6 版本。本文将介绍如何为 Toradex 的计算机模块使用 Yocto Project 将 Qt6 集成到镜像里。

2023-03-10 11:35:16 999

原创 NXP iMX8系列处理器Pin Multiplexing定义说明

为了提高处理器的设计灵活性和可用性,NXP的所有i.MX系列处理器都配备了基于 IOMUX Controller (IOMUXC)和IOMUX来使能Pin Mux功能,使得一个特定的IO管脚可以选择不同的可能多达8种的功能定义模块(ALT0, ALT1, ALT2, ALT3...),同时为了适配不同的功能模块,IOMUXC可以对应配置管脚的配置参数(比如上拉/下拉,驱动能力等等)。本文就基于NXP最新的i.MX8系列平台说明Pin Mux的定义和配置方式。

2023-03-01 14:49:33 1216

翻译 在设计载板时添加USB-C - 第1部分

本文是双篇文章系列的第一部分,旨在帮助您理解并实现在您的下一版电路板设计中使用USB-C

2023-02-20 13:14:29 679

原创 NXP iMX8平台上使用imx-gpu-sdk开发

Apalis iMX8 计算机模块采用了 NXP 的 i.MX 8 QuadMax 处理器。该处理器具有两个 Vivante GC7000/XSVX 单元,能够支持 OpenCL、OpenVX、OpenGL ES 。本文将介绍如何使用 NXP 提供的 imx-gpu-sdk 编译能够在 Apalis iMX8 运行的 OpenCL 和 OpenCV 应用。

2023-02-13 10:07:17 1227

翻译 在 Linux 系统上 Docker 容器的性能影响

开发人员很少看到嵌入式应用程序在本地运行与在容器内运行的性能比较。随着容器被广泛使用,许多开发人员和系统管理员可能会偏向于认为容器在性能上可能与虚拟机和其他虚拟化技术类似。然而,这与事实相去甚远。虽然虚拟机有其应用场景,但它们在架构上与容器有所差异,这使得它们在设计上也非常不同,包括性能方面。两种方式之间的主要区别在于容器并不运行在虚拟化引擎(又称为 hypervisor)之上。相反,它们直接在您主机的内核上运行。在容器内启动进程与在设备本身上启动进程没有什么不同——除了虚拟化的隔文件系统。

2022-12-16 12:22:39 1612

原创 NXP iMX8M Plus M7核心FreeRTOS开发

如果 M7 的固件不大,则可以在 TCM 上运行。将 release 目录下编译好的 M7 固件重命名为 m7.bin,然后复制到模块的 /home/root/ 目录下。将 ddr_release 目录下编译好的 M7 固件重命名为 m7.bin,然后复制到模块的 /home/root/ 目录下。进入 SDK 安装目录的SDK_2_12_1_MIMX8ML8xxxKZ/boards/evkmimx8mp/multicore_examples/rpmsg_lite_str_echo_rtos/ 路径。

2022-11-22 11:53:14 1803

原创 嵌入式Linux上使用Ramoops

对于嵌入式设备,尽管在部署前会经历大量的测试和验证,但在使用现场有时候仍不可避免会出现意外情况,如 Kernel opps、panic。在 Linux 中还有许多其他的调试方法,如kdb, kdump, tracing 等,它们的使用特点和复杂程度也各有不同,用户可以根据需求加以选择。RAM 的物理地址空间为 0x10000000-0x4fffffff,选择在 Kernel code 和 Kernel data 之外的 0x30000000 作为 ramoops 的起始地址,大小为 1MB。

2022-09-23 15:44:26 919

原创 使用容器编译Yocto镜像

采用 Docker 容器可以免于配置 Yocto Project 的依赖环境,同时能够在不同的编译主机上方便地复用所下载的文件。该容器里面我们使用国内的 repo 源,便于在大部分网络环境里初始化编译所需的文件。minimal-image 没有图形框架,在模块上可启动的最小系统。或者只是单独编译某个软件,可以采用下面命令进入容器,在修改。所需的大部分文件,将其解压到你自己的编译目录,例如本文的。在使用上面的容器编译时就无需重复下载,缩短编译时间。,这里将会保存所有编译相关的文件,以及生成的。...

2022-09-01 17:43:03 968

原创 基于NXP iMX8测试Secure Boot功能部署

由于NXP从iMX8/iMX8x处理器开始引入了SCU/SECO等底层控制模块来进行包含启动管理等多项底层初始化功能,因此对于Secure Boot功能支持,也同样升级为Advanced High Assurance Boot (AHAB)特性来配合,以区别于iMX6/iMX8MM/iMX8MP处理器所使用的HABv4特性;AHAB和HABv4都是基于公共密钥加密(Public Key Cryptography)和数字签名(Digital Signature)技术来实现Secure Boot的...

2022-08-30 12:15:40 1661

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除