tag 标签: nxp

相关博文
  • 2023-12-1 11:53
    621 次阅读|
    0 个评论
    By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 软件配置 Verdin iMX8M Plus 模块使用 Toradex Multimedia Reference Image V6.4.0 版本,其包含 Qt5.15 相关运行环境。默认系统中已经使能了 Verdin iMX8M Plus 原生的 HDMI 和 DSI 转 HDMI 适配板。 root@verdin-imx8mp-07320826:~# cat /boot/overlays.txt fdt_overlays=verdin-imx8mp_hdmi_overlay.dtbo verdin-imx8mp_dsi-to-hdmi_overlay.dtbo 在 /sys/class/drm 目录下可以看到两个 HDMI 接口,分别是 HDMI-A-1 和 HDMI-A-2,但是它们都属于同一个 DRM 接口 card1。所以系统只能运行一个 weston 实例。 root@verdin-imx8mp:/sys/class/drm# ls card0 card1 card1-HDMI-A-1 card1-HDMI-A-2 renderD128 version #gbm-format=argb8888 idle-time=0 use-g2d=1 xwayland=true repaint-window=16 #enable-overlay-view=1 modules=screen-share.so shell=kiosk-shell.so Qt 应用在 weston 环境中运行时会对应一个 app_id,例如 BSP 中默认的应用 /usr/share/cinematicexperience-1.0。在命令行中启动该应用前添加 WAYLAND_DEBUG=1。 root@verdin-imx8mp:~# cd /usr/share/cinematicexperience-1.0 &1|grep app xdg_toplevel@21.set_app_id("Qt5_CinematicExperience") 另外一个 Qt 应用位于 `/usr/share/qtsmarthome-1.0/`中。 root@verdin-imx8mp:~# cd /usr/share/cinematicexperience-1.0 &1|grep app xdg_toplevel@21.set_app_id("smarthome") 从上面的命令中可以看到两个应用的 app_id 分别是 Qt5_CinematicExperience 和 smarthome。相应地在 /etc/xdg/weston/weston.ini 创建两个 。指定在 HDMI-A-1 上显示 Qt5_CinematicExperience 应用,而 HDMI-A-2 上则显示 smarthome 应用。配置完成后保存并重启。 name=HDMI-A-1 app-ids=Qt5_CinematicExperience mode=1920x1080 name=HDMI-A-2 app-ids=smarthome mode=1920x1080 分别启动上面两个 Qt 应用后可以在两个 HDMI 显示器上看到相应的内容。 总结 上面介绍了双屏显示的配置,在 Linux BSP 上可以十分便捷得实现,除了提到的 HDMI 接口,对于 LVDS 也是同样的配置方法。
  • 热度 1
    2023-11-23 14:32
    542 次阅读|
    1 个评论
    B y Toradex 胡珊逢 简介 存储器的嵌入式设备中扮演着重要角色,上面不仅安装有操作系统,同时也保存着应用程序和运行日志等。对于存储器如eMMC,写入的数据量决定其使用寿命,对于有大量日志记录的应用,通常可以选用一个大容量的存储设备。文件将介绍如何在 Toradex 的计算机模块 Apalis iMX6 上扩展一个外部 eMMC。 Apalis iMX6 具有四个 SDIO 接口,其中一个已经用于模块本身的 eMMC。其余三个均可以用于连接另外的 eMMC。为了提高读写速度,SDIO 接口可配置为 8bit 模式。 eMMC 模块硬件连接 eMMC 内部有一个控制器,负责执行来自 host 的 MMC 指令、将数据写入到存储单元、维护映射关系确保每个存储单元可以均衡得写入等。该控制器通常需要两路电压。如下图的 VCCQ 用于驱动控制器本身,该电压也用于面向 host 的 SDIO 接口,因此需要于 host 端的 SDIO 电平一致。Apalis iMX6 的 SDIO 为 3.3V,Toradex 另外一个系列 Verdin 模块的接口则为 1.8V。目前绝大多数的 eMMC 都可以支持 1.8V 和 3.3V 两种电压。图中另外一个电源 VCC 用于存储单元 NAND 的供电。 在Apalis Evalution Board 上 Apalis iMX6 的其中一路 SDIO 通过 X5 排针座引出。由于 eMMC 通常不需要热拔插,所以 SDIO 接口的 CD 引脚就不需要再被使用。 我们选取市场上常见的eMMC 模块,制作适合 Apalis Evalution Board 的转接板。在实际应用中,可以把 eMMC 芯片直接焊接在定制的底板上,以增加牢固性和稳定性。 下面是eMMC 模块转接板原理图。其中 U1 是 eMMC 模块底部的 B2B 链接器,上面的引脚都直接来自 eMMC 芯片。其中使用到了 CMD、CLK、DATA0~7。由于 Apalis iMX6 的 SDIO 为 3.3V,所以 eMMC 模块的两路电源均使用 3.3V。iMX6 SoC 只有其中的两路 SDIO 才有 Reset 引脚,其中一路已经用于模块自身的 eMMC,另一路的 SD4_RESET 没有引出到模块的金手指上。这对于扩展的 eMMC 来说将失去硬件复位功能,只能采用断电复位 eMMC。图中 H1 是 2.54mm 排针,可以直接连接 Apalis Evalution Board。另外,对于 CMD、CLK、DATA0~7 信号在设计底板时务必使用等长布线。 将转接板插入到Apalis Evalution Board 的 X5,并提供 3.3V 供电。 Device tree 修改 软件方面采用Linux BSP v3,对应内核为 toradex_4.14-2.3.x-imx 分支。对eMMC 的配置较为简单,在 device tree 中完成即可。 修改`imx6q-apalis-eval.dts`中的 usdhc1 节点,删除原来的 CD 引脚。 diff --git a/arch/arm/boot/dts/imx6q-apalis-eval.dts \ b/arch/arm/boot/dts/imx6q-apalis-eval.dts index 70be137c1f8b..6accb3611bcf 100644 --- a/arch/arm/boot/dts/imx6q-apalis-eval.dts +++ b/arch/arm/boot/dts/imx6q-apalis-eval.dts @@ -468,9 +468,9 @@ /* MMC1 */ &usdhc1 { - pinctrl-names = "default"; - pinctrl-0 = ; - cd-gpios = ; + /*pinctrl-names = "default";*/ + /*pinctrl-0 = ;*/ + /*cd-gpios = ;*/ status = "okay"; }; 修改`imx6qdl-apalis.dtsi`中 usdhc1 引脚配置,添加 non-removable 属性。这里限制了 SDIO 的最高频率为 20MHz。原因是在测试中发现通过转接板方式连接 eMMC 模块,当 SDIO 使用高频率时钟通信时容易引起发 MMC 相关错误。如果在定制底板上直接放置 eMMC 芯片并合理布线,则不会存在该问题。 diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi \ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi index e18ac19dd3bf..5622d1aadb88 100644 --- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi +++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi @@ -910,11 +910,14 @@ /* MMC1 */ &usdhc1 { pinctrl-names = "default"; - pinctrl-0 = ; + pinctrl-0 = ; /* 8bit */ vqmmc-supply = ; + max-frequency = ; bus-width = ; - disable-wp; + /*disable-wp;*/ no-1-8-v; + mmc-ddr-3_3v; + non-removable; status = "disabled"; }; eMMC 测试 重新启动后查看日志中mmc0 相关信息,mmc0 控制器上时别到外部扩展的 eMMC 模块。 root@apalis-imx6:~#dmesg|grepmmc0 mmc0: SDHCI controller on 2190000.usdhc using ADMA mmc0: new DDR MMC card at address 0001 mmcblk0: mmc0:0001 58A43A 14.6 GiB mmcblk0boot0: mmc0:0001 58A43A partition 1 4.00 MiB mmcblk0boot1: mmc0:0001 58A43A partition 2 4.00 MiB mmcblk0rpmb: mmc0:0001 58A43A partition 3 4.00 MiB, chardev (245:1) 由于前面设置了20MHz 的最高时钟,mmc0 的实际频率为 19.8MHz,8bit 总线模式。 root@apalis-imx6:~#cat/sys/kernel/debug/mmc0/ios clock:20000000Hz actualclock:19800000Hz vdd:21(3.3~3.4V) busmode:2(push-pull) chipselect:0(don't care) power mode: 2 (on) bus width: 3 (8 bits) timing spec: 8 (mmc DDR52) signal voltage: 0 (3.30 V) driver type: 0 (driver type B) 测试写入一个1GB 文件,速度约为 14MB/s。 root@apalis-imx6:/media/mmcblk0p1#timeddif=/dev/zeroof=./write_test_8bit\ bs=1Mcount=1024 1024+0recordsin 1024+0recordsout real1m8.987s user0m0.001s sys0m11.510s 总结 上面演示了如何在Toradex 计算机模块上方便地扩展外部 eMMC,以及一些注意事项如 eMMC 接口的电压选择、调试期间的时钟设置和载板设计中的布线问题。 ​
  • 2023-10-11 15:16
    0 个评论
    2023年10月10日,「NXP创新技术论坛」在深圳湾万丽酒店举行,飞凌嵌入式作为NXP金牌合作伙伴受邀参加此次论坛,与众多智能工业行业的伙伴深入交流市场趋势与行业洞察,共同促进未来市场的发展。 本次论坛,飞凌嵌入式展示了采用OKMX8MP-C开发板设计的支持4K HDMI显示的工业相机方案,该方案视觉部分集成双ISP,支持高动态范围(HDR)并能适应恶劣的工业环境;配合使用4K@30fps摄像头,在视频采集上拥有超强的处理能力;可广泛应用于智能工业、人工智能、AGV、机器视觉、HMI等领域。 同时,飞凌嵌入式还带来了基于NXP i.MX 9352处理器设计的FET-MX9352-C核心板及OK-MX9352-C开发板。飞凌嵌入式在i.MX 9352的α阶段便进行了产品的研发工作,并在2022年12月进行了全球首发,致力于在边缘侧为高效、快速、安全的机器学习赋能,使低成本人工智能应用成为可能。 飞凌嵌入式自2014年起就与NXP保持着密切合作,目前基于NXP i.MX6系列、i.MX8系列、LS系列、i.MXRT系列以及 i.MX9系列处理器推出了共二十余款核心板产品,并已广泛应用于人工智能、智慧医疗、智慧交通、智慧城市等领域,为客户产品的智能化升级助力。 本次「恩智浦创新技术论坛」让飞凌嵌入式结识了业内众多优秀的伙伴,飞凌嵌入式会继续凭借NXP生态合作体系的优势,为更多用户提供更好的解决方案,让客户的产品研发更简单、更高效,让客户的产品更智能、更稳定。
  • 热度 2
    2023-8-25 16:40
    871 次阅读|
    0 个评论
    B y Toradex 胡珊逢 Toradex 自从 Linux BSP v6 开始在使用 32 位处理器的 Arm 模块如 iMX6 、 iMX6ULL 、 iMX7 上提供 mainline/upstream kernel , 部分 64 位处理器模块如 Verdin iMX8M Mini/Plus 也提供实验性支持。文章将以季度发布版本 Linux BSP V6.3.0 为例介绍如何下载和编译 mainline/upstream Linux kernel 和 U-Boot 。 Linux 下载 kernel 源码 内核源码可以从官网 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 下载。但考虑到国内网络情况, 推荐 从国内的镜像站点下载,如 https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git 。默认下载时会获取最新的 upstream 内核版本。可根据模块上运行 Linux 的版本 checkout 到对应版本源码。在模块上的 Linux 中运行 uname 命令 , 可以看到当前版本是 6.1.37 。后面的 6.3.0 是 Toradex Linux BSP 季度发布版本。季度发布版本是经过充分的自动化和人工测试后发布的 , 可用于对应模块的生产环境。 ---------------------------------- root@apalis-imx6:~# uname -a Linux apalis-imx6 6.1.37-6.3.0+git.0f4ac6b4c5f0 #1 SMP Sat Jul 1 11:16:27 UTC 2023 armv7l armv7l armv7l GNU/Linux ---------------------------------- 在电脑上使用下面命令并 checkout 到 v6.1.37 。 ---------------------------------- $ git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git $ git checkout v6.1.37 ---------------------------------- 下载和应用补丁 mainline/upstream kernel 通常还需要一些补丁。它们可以从 meta-toradex-bsp-common 中下载, 后续 其版本也需要对应到一样的季度版本。首先打开网址 https://git.toradex.com/cgit/toradex-manifest.git/tree/bsp/pinned-tdx.xml?h=6.3.0 。结尾的 6.3.0 为对应的季度发布版本号。在页面中可以看到如下内容: ---------------------------------- ---------------------------------- 可以看到 meta-toradex-bsp-common.git 在季度发布版本 6.3.0 对应的 hash 是 f7ff10a3b560dcf4e258115da679d1f864e09837 。通常建议使用最新发布的季度版本,获得问题修复和功能完善。 因此, 下载时请修改季度发布版本号和 hash 值。 进入上面下载的 Linux 源码目录后创建 patch 文件夹,并在其中下载 meta-toradex-bsp-common , checkout 对应用版本。 ---------------------------------- $ cd linux-stable/ $ mkdir patch $ cd patch $ git clone https://git.toradex.com/cgit/meta-toradex-bsp-common.git $ cd meta-toradex-bsp-common $ git checkout f7ff10a3b560dcf4e258115da679d1f864e09837 ---------------------------------- 将 meta-toradex-bsp-common/recipes-kernel/linux/linux-toradex-mainline-git 的所有 patch 文件复制到 patch 目录下。 ---------------------------------- $ cp meta-toradex-bsp-common/recipes-kernel/linux/linux-toradex-mainline-git/*.patch ./ ---------------------------------- 在 patch 目录下使用 git am 命令给 kernel 打补丁。注意必须要以固定的顺序打补丁。补丁顺序可以参看 meta-toradex-bsp-common/recipes-kernel/linux/linux-toradex-mainline_git.bb 文件。 ---------------------------------- SRC_URI:append = " \ file://0001-thermal-imx-Update-critical-temp-threshold.patch \ file://0001-Revert-drm-panel-simple-drop-use-of-data-mapping-pro.patch \ file://0001-arm-dts-colibri-imx6-usb-dual-role-switching.patch \ file://0002-arm-dts-colibri-imx6-move-vbus-supply-to-module-leve.patch \ file://0003-arm-dts-colibri-imx6-specify-usbh_pen-gpio-being-act.patch \ file://0001-arm-dts-colibri-imx6ull-keep-peripherals-disabled.patch \ file://0002-arm-dts-colibri-imx6ull-enable-default-peripherals.patch \ file://0001-ARM-dts-colibri-imx6ull-Enable-dual-role-switching.patch \ file://0002-drivers-chipidea-disable-runtime-pm-for-imx6ul.patch \ file://0001-ARM-dts-apalis-imx6-Disable-usb-over-current.patch \ file://0002-ARM-dts-colibri-imx6-Disable-usb-over-current.patch \ file://0003-ARM-dts-colibri-imx6ull-Disable-usb-over-current.patch \ file://0004-ARM-dts-colibri-imx7-Disable-usb-over-current.patch \ file://0001-arm64-dts-imx8mm-verdin-Add-yavia-carrier-board.patch \ file://0002-arm64-dts-imx8mp-verdin-Add-yavia-carrier-board.patch \ file://0001-media-v4l2-async-fix-binding-async-subdevs-with-mult.patch \ file://0002-media-i2c-ov5640-Implement-get_mbus_config.patch \ file://0001-Revert-media-v4l2-async-Use-endpoints-in-__v4l2_asyn.patch \ " ---------------------------------- 在 patch 文件夹里执行面命令,期间不应该出现任何错误和冲突。 ---------------------------------- $ cd patch $ git am 0001-thermal-imx-Update-critical-temp-threshold.patch \ 0001-Revert-drm-panel-simple-drop-use-of-data-mapping-pro.patch \ 0001-arm-dts-colibri-imx6-usb-dual-role-switching.patch \ 0002-arm-dts-colibri-imx6-move-vbus-supply-to-module-leve.patch \ 0003-arm-dts-colibri-imx6-specify-usbh_pen-gpio-being-act.patch \ 0001-arm-dts-colibri-imx6ull-keep-peripherals-disabled.patch \ 0002-arm-dts-colibri-imx6ull-enable-default-peripherals.patch \ 0001-ARM-dts-colibri-imx6ull-Enable-dual-role-switching.patch \ 0002-drivers-chipidea-disable-runtime-pm-for-imx6ul.patch \ 0001-ARM-dts-apalis-imx6-Disable-usb-over-current.patch \ 0002-ARM-dts-colibri-imx6-Disable-usb-over-current.patch \ 0003-ARM-dts-colibri-imx6ull-Disable-usb-over-current.patch \ 0004-ARM-dts-colibri-imx7-Disable-usb-over-current.patch \ 0001-arm64-dts-imx8mm-verdin-Add-yavia-carrier-board.patch \ 0002-arm64-dts-imx8mp-verdin-Add-yavia-carrier-board.patch \ 0001-media-v4l2-async-fix-binding-async-subdevs-with-mult.patch \ 0002-media-i2c-ov5640-Implement-get_mbus_config.patch \ 0001-Revert-media-v4l2-async-Use-endpoints-in-__v4l2_asyn.patch ---------------------------------- kernel 配置 内核配置文件 .config 也可以从 Toradex Artifactory 下载,并使用对应的季度发布版本的编译文件。打开 Toradex Artifactory 网页,在左边的 Artifact Repository Browser 中点开 oe-release ,选择 Linux BSP v6 对应的 kirkstone-6.x.y 。依次打开 kirkstone-6.x.y/release/7/apalis-imx6/tdx-xwayland-upstream/tdx-reference-multimedia-image/oedeploy/ 。 release 下面一般可以选择最大序列的,这对应最新的发布版本。右击 kernel-config 下载即可。 将 kernel-config 复制到刚才下载的内核源码目录,命名为 .config ,用其作为 Linux 的默认配置。如果需要修改,后面还可以使用 make menuconfig 命令。 ---------------------------------- $ cd linux-stable/ $ mv kernel-config .config $ make olddefconfig ---------------------------------- 准备好源码、补丁和内核配置文件,接下来就可以编译了,具体方法参考 这里 。 U-Boot 下载 U-Boot 源码 首先从 https://source.denx.de/u-boot/u-boot.git 下载源码,并 checkout 到 v2022.07 版本,也是 Linux BSP v6 所使用的 U-Boot 版本。 ---------------------------------- $ git clone https://source.denx.de/u-boot/u-boot.git $ cd u-boot $ git checkout v2022.07 ---------------------------------- 下载和应用补丁 Upstream/mainline U-Boot 同样也需要相关补丁,和上面一样由 meta-toradex-bsp-common 提供。按照前面的方法在 u-boot 目录中建立 patch 文件夹后,在其中下载和 checkout 。 U-Boot 补丁位于 meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-toradex 目录下。将里面的 patch 文件复制到 u-boot/patch 目录下。 ---------------------------------- $ cd u-boot $ mkdir patch $ cd patch $ git clone https://git.toradex.com/cgit/meta-toradex-bsp-common.git $ cd meta-toradex-bsp-common $ git checkout f7ff10a3b560dcf4e258115da679d1f864e09837 $ cp meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-toradex/*.patch ./ ---------------------------------- 注意必须要以固定的顺序打补丁。补丁顺序可以参看 U-Boot meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb 文件。 ---------------------------------- TDX_PATCHES = " \ file://0001-toradex-tdx-cfg-block-use-only-snprintf.patch \ file://0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch \ file://0003-toradex-tdx-cfg-block-extend-assembly-version.patch \ file://0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch \ file://0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch \ file://0006-toradex-common-Remove-stale-comments-about-modules-a.patch \ file://0007-toradex-common-Use-ARRAY_SIZE-macro.patch \ file://0008-toradex-tdx-cfg-block-Cleanup-interactive-cfg-block-.patch \ file://0009-toradex-common-Remove-stale-function-declaration.patch \ file://0010-toradex-common-Remove-ifdef-usage-for-2nd-ethaddr.patch \ file://0011-toradex-tdx-cfg-block-Use-official-SKU-names.patch \ file://0012-toradex-common-Improve-product-serial-print-during-b.patch \ file://0013-configs-colibri-imx7-Enable-bootd-command.patch \ file://0001-ARM-imx8mp-verdin-imx8mp-Add-memory-size-detection.patch \ file://0001-apalis-colibri_imx6-imx6ull-_imx7-update-env-memory-.patch \ file://0001-configs-colibri-imx7-Fix-bad-block-table-in-flash-co.patch \ file://0001-colibri_imx6-fix-RALAT-and-WALAT-values.patch \ " ---------------------------------- 在 patch 文件夹里执行面 g it am 命令,期间不应该出现任何错误和冲突。 ---------------------------------- $ git am 0001-toradex-tdx-cfg-block-use-only-snprintf.patch \ 0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch \ 0003-toradex-tdx-cfg-block-extend-assembly-version.patch \ 0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch \ 0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch \ 0006-toradex-common-Remove-stale-comments-about-modules-a.patch \ 0007-toradex-common-Use-ARRAY_SIZE-macro.patch \ 0008-toradex-tdx-cfg-block-Cleanup-interactive-cfg-block-.patch \ 0009-toradex-common-Remove-stale-function-declaration.patch \ 0010-toradex-common-Remove-ifdef-usage-for-2nd-ethaddr.patch \ 0011-toradex-tdx-cfg-block-Use-official-SKU-names.patch \ 0012-toradex-common-Improve-product-serial-print-during-b.patch \ 0013-configs-colibri-imx7-Enable-bootd-command.patch \ 0001-ARM-imx8mp-verdin-imx8mp-Add-memory-size-detection.patch \ 0001-apalis-colibri_imx6-imx6ull-_imx7-update-env-memory-.patch \ 0001-configs-colibri-imx7-Fix-bad-block-table-in-flash-co.patch \ 0001-colibri_imx6-fix-RALAT-and-WALAT-values.patch ---------------------------------- U-Boot 配置 对于 32 位处理器的模块,默认配置如下: l colibri_imx6_defconfig l colibri-imx6ull_defconfig l colibri-imx6ull-emmc_defconfig l colibri_imx7_defconfig l colibri_imx7_emmc_defconfig l apalis_imx6_defconfig 以 Apalis iMX6 为例 。 ---------------------------------- $ make mrproper $ make apalis_imx6_defconfig ---------------------------------- 最后编译 U-Boot 。 ---------------------------------- $ make -j$(nproc) ----------------------------------
  • 热度 5
    2023-8-18 14:30
    425 次阅读|
    0 个评论
    问题 使用NFS网络挂载文件系统后卡住无法进入系统。 解决办法 此处不详细讲述NFS安装流程 查看板卡挂载在/home/etc/rc.init下的自启动程序 进入到../../home/etc目录下,查看rc.init文件,首先从第一行排查,查看/home/etc/netcfg文件代码内容,发现其为配置网络接口内容,可能会与在uboot设置的IP冲突,我们尝试注释掉rc.init文件中的代码行/home/etc/netcfg并保存,随后重启开发板。 注释掉框选内容 netcfg配置文件内容 图0.2重启开发板 查看板卡挂载在/root/etc/rc.init下的自启动程序 重启后发现依然无法进入系统,我们再次进入到../../root/etc目录下,查看rc.init文件代码内容,发现代码行中同样有相关设置网络接口IP代码,再次尝试注释掉并保存,随后重启开发板。 图0.3注释掉框选内容 图0.4重启开发板 这时我们发现HD6UL开发板已经成功进入到NFS挂载的文件系统了.
相关资源