tag 标签: imx7

相关博文
  • 热度 13
    2022-7-6 16:53
    2667 次阅读|
    0 个评论
    B y Toradex 胡珊逢 在先前的文章我们已经介绍在使用 eMMC 的模块上配置只读属性的文件系统,以及利用 s quashfs 和 o verlayfs 挂载可写分区。 T oradex 的产品除了使用 eMMC 存储外,还有部分是采用 Nand Flash ,例如 Colibri iMX7 和 Colibri iMX6ULL 。下面将以 Colibri iMX7 为例介绍如何配置只读属性的文件系统。 由于存储介质不同, Nand Flash 上通常采用如 jffs2 、 UBI 等格式文件系统。 Toradex 的 Linux 系统使用 UBI 文件系统。 在 Colibri iMX7 的 Nand Flash 上会采用以下规划。 Nand Flash 总体上划分为两个部分。最前面的 raw 部分不采用任何文件系统,直接存储模块硬件信息 bcb , u-boot 和 u-bo ot 环境变量。第二部分则使用 UBI ,创建 5 个 volume ,用于存储内核文件( kernel )、设备树文件( dtb )、 M 4 的固件( m 4-fw )、 L inux 文件系统( r ootfs )、用户文件( userdata )。其中 rootfs 将设置成自读属性,而 userdata 则可以写入数据。 T oradex Easy Installer 可以通过 image.json 文件方便地修改分区,从而避免使用命令工具。首先从 这里 下载用于 Colibri iMX7S 的 L inu x BSP v5.x 安装文件。解压后在 image.json 中添加 userdata 的相关配置。 ----------------------------------- { "name": "rootfs", "content": { "filesystem_type": "ubifs", "filename": "Reference-Minimal-Image-colibri-imx7.tar.xz", "uncompressed_size": 108.1171875 }, "size_kib": 102400 }, { "name": "userdata", "content": { "filesystem_type": "ubifs", "filename": "app.tar.xz", "uncompressed_size": 0.1171875 } } ----------------------------------- 这里 name 指定 ubi volume 的名字, filesystem_type 用于指定 ubi fs 文件格式, f ilename 里包含了需要烧录到 userdata v olume 的文件,这些是用户应用和配置等, uncompressed_size 是指 app.tar.xz 未压缩的大小,用于显示 Toradex Easy Installer 的安装进度条。更多关于 image.json 配置说明请参考 这里 。 使用 Toradex Easy Installer 将上面修改的镜像烧录到 Colibri iMX7S 即可。启动后进入 u-boot ,使用下面名可以看到所创建的 volume 。 ----------------------------------- Colibri iMX7 # ubi part ubi Colibri iMX7 # ubi info layout Volume information dump: vol_id 0 ...... name kernel Volume information dump: vol_id 1 ...... skip_check 0 name dtb Volume information dump: vol_id 2 ...... skip_check 0 name m4firmware Volume information dump: vol_id 3 ...... skip_check 0 name rootfs Volume information dump: vol_id 4 ...... skip_check 0 name userdata ----------------------------------- 启动进入 L inux 后, userdata 并不会被自动挂载,需要将下面内容添加到 /etc/fstab 文件中。现在 rootfs 根目录还没有设置成只读属性,可以创建 /home/root/userdata 目录用于挂载 userdata 卷。 ----------------------------------- ubi:userdata /home/root/userdata ubifs defaults,noatime,rw 1 1 ----------------------------------- 于此同时,还可以进行系统配置。例如添加一个开机启动应用。该应用 write_to_file 在运行时会往 /home/root/userdata 写入一个文件。在 /etc/systemd/system/ 目录下创建 user-demo.service 。 user-demo.service ----------------------------------- Description=launch user's demo on dedicated partition ConditionFileIsExecutable=/home/root/userdata/write_to_file After=multi-user.target WorkingDirectory=/home/root/userdata Type=simple ExecStart=/home/root/userdata/write_to_file WantedBy=multi-user.target ----------------------------------- 运行下面命令使 user-demo.service 开机运行。然后重启系统。 ----------------------------------- ~# systemctl enable user-demo.service ~# reboot ----------------------------------- 此时,使用 m ount 命令查看所挂载的卷,其中有 ubi:userdata 。 ----------------------------------- ~# mount -l tmpfs on /var/volatile type tmpfs (rw,relatime) ubi:userdata on /home/root/userdata type ubifs (rw,noatime,assert=read-only,ubi=0,vol=4) ----------------------------------- 在 /home/root/userdata 目录下也可以看到 write_to_file 写入的文件 file.txt 。 ----------------------------------- ~/userdata# ls file.txt write_to_file ~/userdata# cat file.txt This is a writing file test ~/userdata# systemctl status user-demo.service * user-demo.service - launch user's demo on dedicated partition Loaded: loaded (/etc/systemd/system/user-demo.service; enabled; vendor preset: disabled) Active: inactive (dead) since Wed 2022-07-06 06:09:44 UTC; 14min ago Process: 316 ExecStart=/home/root/userdata/write_to_file (code=exited, status=0/SUCCESS) Main PID: 316 (code=exited, status=0/SUCCESS) Jul 06 06:09:44 colibri-imx7-02873356 systemd : Started launch user's demo on dedicated partition. Jul 06 06:09:44 colibri-imx7-02873356 systemd : user-demo.service: Succeeded. ----------------------------------- 最后需要再次修改 /etc/fstab 将 rootfs 根目录设置为只读属性, n oatime 后面添加 ro 。 ----------------------------------- /dev/root / auto noatime,ro 1 1 ----------------------------------- 重启系统,进入 u-boot 命令模式,配置下参数。 ----------------------------------- setenv ubiargs "ubi.mtd=ubi root=ubi0:rootfs ro rootfstype=ubifs ubi.fm_autoconvert=1" saveenv reset ----------------------------------- 重启进入 L inux 系统。根目录 / 已经是只读状态,无法创建文件。而 /home/root/userdata 目录下的应用仍可以正常执行并写入文件。 ----------------------------------- :~# mount -l ubi0:rootfs on / type ubifs (ro,noatime,assert=read-only,ubi=0,vol=3) ~# mkdir test mkdir: can't create directory 'test': Read-only file system ----------------------------------- 总结 通过将 Linux 的系统文件设置为只读状态,可以降低因文件系统损坏导致无法启动的概率。对于更高要求的应用,甚至可以使用外部存储作为备份,用于恢复文件。
  • 热度 17
    2020-2-20 11:50
    1892 次阅读|
    0 个评论
    By Toradex 秦海 1). 简介 NXP iMX7 是 NXP 基于 Cortex-A7 和 Coretex-M4 异构多核架构的 ARM 处理器,其中 iMX7 Dual 型号 SoC 支持两路 MAC 控制器,可以通过外置百兆或者千兆 PHY 芯片扩展两路以太网接口,本文就基于 Toradex 基于 NXP iMX7 Dual SoC 的 ARM 核心板模块 Colibri iMX7D 示例扩展两路以太网。 2). 第一路以太网 a). Colibri iMX7D 模块已经通过模块上面部署的一个 Microchip KSZ8041NL 百兆 PHY 芯片默认支持了第一路百兆以太网 b). KSZ8041NL 的参考电路请参考 这里 (原理图示例的 SoC MAC 端来自 Toradex VF61 ARM 模块的定义,在 iMX7 或者其他平台上面不能直接引用,请只参考 PHY 一侧的连接) c). 由于选择的 iMX7D ENET1 MAC RMII 接口 50MHz 参考时钟输出引脚 GPIO1_IO12 和另外一个 M4 核心的 NMI 输入引脚冲突,因此最终在设计中,这一路的 KSZ8041PHY 使用了外部参考时钟,没有使用 iMX7 ENET1 的参考时钟输出 d). 基于上述配置的第一步以太网对应的 device tree 节点定义和 pinmux 定义请参考如下,内核基于 4.9.166 版本 --------------------------------------- # arch/arm/boot/dts/imx7-colibri.dtsi …… &fec1 { pinctrl-names = "default", "sleep"; pinctrl-0 = ; pinctrl-1 = ; clocks = , , , ; clock-names = "ipg", "ahb", "ptp", "enet_clk_ref"; assigned-clocks = , ; assigned-clock-parents = ; assigned-clock-rates = , ; phy-mode = "rmii"; phy-supply = ; fsl,magic-packet; }; … &iomuxc { … pinctrl_enet1: enet1grp { fsl,pins = < MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x73 MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x73 MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x73 MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER 0x73 MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x73 MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x73 MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x73 MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1 0x73 MX7D_PAD_SD2_CD_B__ENET1_MDIO 0x3 MX7D_PAD_SD2_WP__ENET1_MDC 0x3 ; }; pinctrl_enet1_sleep: enet1sleepgrp { fsl,pins = < MX7D_PAD_ENET1_RGMII_RX_CTL__GPIO7_IO4 0x0 MX7D_PAD_ENET1_RGMII_RD0__GPIO7_IO0 0x0 MX7D_PAD_ENET1_RGMII_RD1__GPIO7_IO1 0x0 MX7D_PAD_ENET1_RGMII_RXC__GPIO7_IO5 0x0 MX7D_PAD_ENET1_RGMII_TX_CTL__GPIO7_IO10 0x0 MX7D_PAD_ENET1_RGMII_TD0__GPIO7_IO6 0x0 MX7D_PAD_ENET1_RGMII_TD1__GPIO7_IO7 0x0 MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x0 MX7D_PAD_SD2_CD_B__GPIO5_IO9 0x0 MX7D_PAD_SD2_WP__GPIO5_IO10 0x0 ; }; --------------------------------------- 3). 第二路以太网 a). 第二路以太网通过模块预留的 RMII 或者 RGMII 接口连接百兆 PHY 或者千兆 PHY 来扩展, Colibri iMX7D RMII 或者 RGMII 接口管脚定义请参考 手册 5.4 章节。 b). 同样使用 KSZ8041NL 百兆 PHY 扩展的参考电路请参考 这里 (原理图示例的 SoC MAC 端来自 Toradex VF61 ARM 模块的定义,在 iMX7 或者其他平台上面不能直接引用,须按照上面手册定义连接),如需要连接千兆 PHY ,请参考所使用的千兆 PHY (如 Microchip KSZ9031RNL )手册进行连接 c). 通过 ENET2 RMII 接口连接 KSZ8041NL 百兆 PHY 的 device tree 配置参考如下 patch ,和上面第一路以太网不同,这次使用的 iMX7 SoC 内部的参考时钟输出给 PHY ,因此在 clock 项目配置会有不同 https://github.com/simonqin09/colibri_imx7_2nd_ethernet/blob/master/0001-imx7d-2nd-ethernet-support_update_20200218.patch // 对于 &fec2 节点中的 “fsl,mii-exclusive” 参数,因为 ENET1 和 ENET2 分别使用其对应的 MDIO 总线,而不是共享一个 MDIO 总线,在 4.9 kernel 下,如果不配置这个参数,驱动会默认都使用 ENET1 的 MDIO 去配置 ENET2 ,因此在这里是必须的。但在其他 i.MX 平台或者 mainline kernel 下则不一定需要。 // MX7D_PAD_EPDC_BDR0__CCM_ENET_REF_CLK2 配置为 0x40000073 ,因为使用 iMX7 SoC 内部参考时钟,这个时钟要同时给 PHY 和 MAC 提供参考时钟,因此 Input 和 Output 都要配置使能,因此需要为 0x40000073 ,关于 pinctrl 的更多说明请参考 这里 。 d). 通过 RGMII 连接千兆 PHY 的 device tree 配置请参考 这里 4). 总结 本文基于 iMX7 示例了双路以太网的设计和配置思路,同时对于其他支持双路 MAC 的 NXP i.MX ARM 处理器(如 iMX8 )的配置思路也都是一致的,只是具体的 clock 和 pinmux 定义等要做对应的适配
  • 热度 14
    2016-2-29 20:26
    1219 次阅读|
    0 个评论
    2016年2月23号,德国纽伦堡 : Toradex 很荣幸地发布基于 NXP i.MX 7 系列处理器的系统模块新成员。该处理器具有优异的能效比、高级安全功能以及采用 ARM Cortex-A7 和 Cortex-M4 的异构多核构架。这些特性使该平台非常适合快速增长的物联网市场。   处理器新特性 :Colibri iMX7S 和 Colibri iMX7D -NXP i.MX 7Solo 和 i.MX 7Dual 处理器 -1x/2x ARM Cortex-A7 最高主频1GHz , 1x Cortex-M4 200MHz 主频 -256MB/512MB RAM, 512MB on-board Flash -非对称 / 异构多核处理 -低功耗 / 高效能 -高级安全功能 -外设接口:CAN、以太网、USB、I2C、UART 等 -多媒体:触摸、RGB、并口摄像头、模拟音频等 -温度范围:-20° 到 85° C   其中 Cortex-M4 核专为实时应用设计。该独特的异构多核架构允许将实时任务从任何服务或者用户界面相关的应用中分离出来。i.MX 7 处理器还提供诸多安全功能,例如安全启动、加密加速和篡改检测,这对物联网具有较高的价值。   Toradex 内部性能检测证实了 i.MX 7 处理器所采用构架的高效性。在具有和 i.MX 6Solo (ARM Cortex-A9 1GHz)相近的性能下,其运行功耗却同 Colibri VF61 (ARM Cortex-A5 500MHz) 相当,低于 i.MX 6Solo 75% 的功耗。在空闲模式下, i.MX 7功耗甚至比 i.MX 6Solo 少三分之一。 *测试结果基于 nbench 性能测试工具,其使用单核计算,所以 双核 i.MX 7Dual 和 单核 i.MX 6Solo, VF61 VF50 的性能和功耗数据具有可比性。   Colibri iMX7S/D 扩展了Toradex 稳健、紧凑型嵌入式计算机模块和可定制化单板电脑,其可以应用于众多行业,如工业自动化、医疗、汽车、机器人以及其他领域。Toradex 的产品是快速进行产品概念验证以及从原型到大规模量产无缝迁移并且无需重新设计的理想选择。   "我们很荣幸地成为全世界少数 的几个公司能够提供基于 NXP i.MX 7 系列处理器的产品。该处理器为基于 VFxx 引脚兼容平台提供升级方案,于此同时,继续在同一个芯片上保持两种不同内核独特的组合。通过使用 Cortex-M4 控制传感器和运动执行器,Cortex-A7 运行非实时任务,用户可以极大地降低系统复杂度和 BOM 成本。该产品是 Toradex 和 NXP 之间长久和牢固合作伙伴关系的成果",Toradex CEO Stephan Dubach 提到。   i.MX 应用 CEA Robert Thompson :"NXP 一直致力于扩展 i.MX7 应用,我们合作伙伴提供的板级系统设计,使得我们的用户能够有效地缩短产品上市时间。Toradex 的 i.MX7 是一个非常高效、强劲的系统模块,采用紧凑封装,提供诸多安全功能。该系统模块依附广泛的生态系统,用户能够快速启动产品研发,缩短产品上市时间"。   技术详细参数 Colibri iMX7 系统模块技术参数说明 https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7 .   上市时间 Toradex Colibri iMX7 系统模块将于 2016年3 月上市。   网络研讨会议 Toradex 将在 2016 年 3 月 9 日,同 NXP 一起举行网络研讨会议。现在注册:i.MX7 产品介绍 – Toradex 和 NXP 主讲。
  • 热度 19
    2016-2-29 20:25
    1787 次阅读|
    0 个评论
    2016年2月23号,德国纽伦堡 : Toradex 很荣幸地发布基于 NXP i.MX 7 系列处理器的系统模块新成员。该处理器具有优异的能效比、高级安全功能以及采用 ARM Cortex-A7 和 Cortex-M4 的异构多核构架。这些特性使该平台非常适合快速增长的物联网市场。   处理器新特性 :Colibri iMX7S 和 Colibri iMX7D -NXP i.MX 7Solo 和 i.MX 7Dual 处理器 -1x/2x ARM Cortex-A7 最高主频1GHz , 1x Cortex-M4 200MHz 主频 -256MB/512MB RAM, 512MB on-board Flash -非对称 / 异构多核处理 -低功耗 / 高效能 -高级安全功能 -外设接口:CAN、以太网、USB、I2C、UART 等 -多媒体:触摸、RGB、并口摄像头、模拟音频等 -温度范围:-20° 到 85° C   其中 Cortex-M4 核专为实时应用设计。该独特的异构多核架构允许将实时任务从任何服务或者用户界面相关的应用中分离出来。i.MX 7 处理器还提供诸多安全功能,例如安全启动、加密加速和篡改检测,这对物联网具有较高的价值。   Toradex 内部性能检测证实了 i.MX 7 处理器所采用构架的高效性。在具有和 i.MX 6Solo (ARM Cortex-A9 1GHz)相近的性能下,其运行功耗却同 Colibri VF61 (ARM Cortex-A5 500MHz) 相当,低于 i.MX 6Solo 75% 的功耗。在空闲模式下, i.MX 7功耗甚至比 i.MX 6Solo 少三分之一。 *测试结果基于 nbench 性能测试工具,其使用单核计算,所以 双核 i.MX 7Dual 和 单核 i.MX 6Solo, VF61 VF50 的性能和功耗数据具有可比性。   Colibri iMX7S/D 扩展了Toradex 稳健、紧凑型嵌入式计算机模块和可定制化单板电脑,其可以应用于众多行业,如工业自动化、医疗、汽车、机器人以及其他领域。Toradex 的产品是快速进行产品概念验证以及从原型到大规模量产无缝迁移并且无需重新设计的理想选择。   "我们很荣幸地成为全世界少数 的几个公司能够提供基于 NXP i.MX 7 系列处理器的产品。该处理器为基于 VFxx 引脚兼容平台提供升级方案,于此同时,继续在同一个芯片上保持两种不同内核独特的组合。通过使用 Cortex-M4 控制传感器和运动执行器,Cortex-A7 运行非实时任务,用户可以极大地降低系统复杂度和 BOM 成本。该产品是 Toradex 和 NXP 之间长久和牢固合作伙伴关系的成果",Toradex CEO Stephan Dubach 提到。   i.MX 应用 CEA Robert Thompson :"NXP 一直致力于扩展 i.MX7 应用,我们合作伙伴提供的板级系统设计,使得我们的用户能够有效地缩短产品上市时间。Toradex 的 i.MX7 是一个非常高效、强劲的系统模块,采用紧凑封装,提供诸多安全功能。该系统模块依附广泛的生态系统,用户能够快速启动产品研发,缩短产品上市时间"。   技术详细参数 Colibri iMX7 系统模块技术参数说明 https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7 .   上市时间 Toradex Colibri iMX7 系统模块将于 2016年3 月上市。   网络研讨会议 Toradex 将在 2016 年 3 月 9 日,同 NXP 一起举行网络研讨会议。现在注册:i.MX7 产品介绍 – Toradex 和 NXP 主讲。