tag 标签: 设备树

相关博文
  • 2024-7-5 10:45
    0 个评论
    在嵌入式产品的开发过程中,开发者往往需要花费大量的时间和精力来理解和配置MPU引脚的复用功能,不仅开发难度高,还可能因错误配置而影响系统的稳定性和性能。 为了帮助各位用户朋友解决这一问题,飞凌嵌入式打造了一款专门针对ARM嵌入式MPU引脚复用的软件工具——Forlinx pinMux。通过深入研究MPU引脚的特性和相关技术,结合飞凌嵌入式核心板、开发板的设计,提供一种更加高效、准确和便捷的方式来管理和配置引脚复用功能,并生成对应的设备树文件以供开发者使用。 接下来,就通过几个业务场景带各位朋友了解一下Forlinx pinMux工具的功能。 场景1: 硬件工程师为飞凌嵌入式核心板分配所有引脚资源,以UART1为例。 1. 启动程序 → 选择平台 → 新建一个设计方案。 2. 在左侧“接口选择”列表中选择不同外设(如UART1),可以在“接口信号选择”和“引脚图”中看到该接口的相关信息。 工程师可以参考可选引脚的分布情况进行设计,并确定需要选择的引脚。 Forlinx pinMux提供两种方式完成设置。 方法1: 在“接口信号选择”窗口进行选择。 (注:如果所选择的外设接口信号较多,可点击“全部选择”快捷按钮,程序将自动为所有信号选择一个可用引脚。) 引脚图同步显示: 设备树语句同步生成,并可以修改引脚配置,直接用于软件开发。 方法2: 在“连接器引脚图”窗口进行选择。 在弹出的“设置引脚复用功能”窗口选择相应的功能。 重复上述操作完成所有引脚的选择,选择结果同样会同步显示到引脚图和设备树语句窗口。 场景2: 硬件工程师查看飞凌嵌入式默认方案并在此基础上进行修改设计。 1. 新建一个设计方案; 2. 点击快捷按钮“读取飞凌方案”(或使用菜单操作); 3. 查看接口选择、接口信号选择、设备树语句、引脚图,了解飞凌设置的具体情况; 4. 根据自己的需要修改相应设置,完成自己的设计方案即可。 情况1: 使用未被其它接口使用的引脚,直接选择目标引脚即可。 情况2: 使用已被其它接口占用的引脚。 点击被占用的引脚; 程序自动跳转到占用该引脚的接口,并高亮显示; 根据设计需要选择其它可用引脚或停用该信号; 点击“上一个查看的接口”快捷按钮,快速回到开始需要进行引脚设置的接口; 原来被占用的引脚已经可以使用,直接选择即可。 这样,我们就完成了一个接口复用引脚的修改工作。对于上述修改,在连接器引脚图上同样可以进行,请参照业务场景1中的操作。 场景3: 软件工程师,引用设备树语句。 通过上面两个例子我们知道,在进行引脚复用设置时,程序会同步更新相应的设备树语句。 软件工程师可以将上述设备树语句复制粘贴到自己的设备树文件中使用,也可以通过pinMux工具提供的“生成设备树文件”功能,得到一个单独的设备树文件,进行编辑和使用。 通过上面3个业务场景下的操作介绍,我们可以初步了解Forlinx pinMux工具可以完成哪些工作。总之,这款软件工具不仅适用于专业开发者,也可帮助初学者更好地理解和利用飞凌嵌入式核心板、开发板的功能。无论在工业控制、智能家居还是物联网等领域,它都能发挥重要作用,为开发者提供强大的支持,实现更出色的系统设计。 (注:目前Forlinx pinMux工具已支持FET6254-C核心板和FETMX8MP-C核心板两款产品,后续将支持更多平台,敬请期待!) Forlinx pinMux 下载地址: https://pan.baidu.com/s/1F_hk656rQyd6bhKdr8kf7A
  • 热度 25
    2016-3-28 21:43
    1885 次阅读|
    0 个评论
    一、准备工作 l          开发环境: a)          Vivado 2014.2 b)         SDK 2014.2 l          利用 Vivado 搭建硬件环境,生成 bitstream 。 l          下载用于生成 device-tree 文件的资源包 a)          下载链接: https://github.com/Xilinx/device-tree-xlnx/releases ( 2014.2 之后的版本) b)         我下载的是,将之解压到 E:\vivado\sw_repo 路径下(设置 repository 路径要用到) l          设置软件 Repositories , GUI 操作方法如下: 在 SDK 中操作点击菜单 : Xilinx Tools  Repositories  图 1-1 点击 New 按钮,选择刚才的设置的路径下解压出来的文件夹,点击 OK 则设置完毕。 图 1-2   二、 Device-tree 文件的创建 2.1 、利用 SDK GUI 操作创建 dts 文件 在 Vivado 中通过 Launch SDK 指令打开 SDK 。 按照上述方法设置 repository 。 新建 BSP 。 图 2-1 设置正确的话,在弹出的对话框内(图 2-2 )可以看到红色方框内的 device-tree 选项。 图 2-2 选中,并点击 Finish 。 会弹出一个 BSP 设置窗口,如图 2-3 所示: 图 2-3 打开设备树 BSP 的 system.mss 文件并点击“修改 BSP 设置”也能够弹出该窗口。 修改相应选项如下: “ boot args ”参数用于指定启动时传递给内核的参数 “ console device ”参数用于指定所使用的串口输出设备 boot args 的 Value 填为: console=ttyPS0,115200 root=/dev/ram rw initrd=0x800000,8M earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0 console device 选择 ps7_uart_1 点击 OK ,发现 dtsi 文件和 dts 成功生成,如图 2-4 所示,在 device_tree_bsp_0 文件夹下可以找到对应文件。 图 2-4   过程中遇到的错误一: 21:33:21 ERROR     :   Problem running tcl command ::sw_device_tree::device_tree_drc : invalid command name "hsi::utils::add_new_child_node"     while executing "hsi::utils::add_new_child_node $os_handle "global_params""     (procedure "::sw_device_tree::device_tree_drc" line 3)     invoked from within "::sw_device_tree::device_tree_drc device_tree"   Error(s) while running DRCs. 21:33:21 ERROR     : Error generating bsp sources: Failed to generate BSP. 21:33:21 ERROR     : Failed to regenerate sources for BSP project device_tree_bsp_0 org.eclipse.core.runtime.CoreException: Internal error occurred while generating bsp sources. Please check the SDK Log view for further details.     at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler.internalGenerateBsp(RegenBspSourcesHandler.java:178)     at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler.access$2(RegenBspSourcesHandler.java:163)     at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler$1$1.run(RegenBspSourcesHandler.java:131)     at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)     at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler$1.run(RegenBspSourcesHandler.java:135)     at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)   这里遇到的错误实际上是因为所下载的设备树生成资源包版本和 SDK 版本不匹配造成的。刚开始由于粗心,一直以为自己下载的是 device-tree-xlnx-xilinx-v2014.2.zip ,在网上找了好久解决办法,找不到,然后就下载另一个版本,下载完发现之前下载的是 device-tree-xlnx-xilinx-v2015.4.zip 。因为这个粗心造成的错误,干耗了俩小时。   2.2 、采用 hsm 指令快速生成 dts 文件 还有另一种更简单的方式,可以通过 Xilinx 命令行快速生成 dts 文件。 在 SDK 的 Xilinx Tools 菜单下选择 Launch Shell 指令打开 Xilinx 命令行窗口。 图 2-5   逐条或者一次性将如下指令粘贴至命令行:   hsm open_hw_design E:/vivado/zed_linux/zed_linux.sdk/system_wrapper_hw_platform_0/system.hdf set_repo_path E:/vivado/sw_repo/device-tree-xlnx-xilinx-v2014.2.01 create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0 generate_target -dir my_dts   注意: hdf 文件的路径, repository 路径要根据自己的实际情况修改。生成的 my_dts 文件夹位置,在命令行窗口提示的路径下,如图 2-6 所示:   图 2-6 发现对应路径下生成了 my_dts 文件夹,该文件夹内文件如图 2-7 所示: 图 2-7 其中, ps.dtsi 和 system.dts 是我们需要的文件,刚开始我并没有在意 ps.dtsi ,所以又被小小地坑了一下,本以为自己生成的 dts 文件会和 digilent 提供的 Linux 自带的 dts 文件一致,所以就比较了一下: 艾玛,不一样的地方太多了,官方的 N 行,我生成的 10 来行的样子,再怎么骗自己也觉得过不去啊。   看了半天才发现,自己生成的 system.dts 虽然少了一大片,但多了一行: /include/ "ps.dtsi"   既然有个 include ,是不是把 ps.dtsi 文件包含进来的意思呢,打开 ps.dtsi 文件,果然发现有很多内容,虽然两个文件差别还很大,但综合来看 system.dts 该有的节点都有了。     参考文献   http://www.wiki.xilinx.com/Build+Device+Tree+Blob   未完待续,参考官方 wiki 做出的 dtb 文件无法启动 Linux ,下一篇博文会解决 ~
  • 热度 26
    2016-3-28 21:18
    1043 次阅读|
    0 个评论
    版权声明: 本文由博主 “cuter” 发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和版权声明。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。 博客官方地址: ChinaAETna : http://blog.chinaaet.com/cuter521 EDN China : http://bbs.ednchina.com/BLOG_cuter521_356737.HTM   按照 【 博客大赛 】 创建 Zynq Linux 设备树文件 一文提供的办法(基本上完全参考 Xilinx Wiki )创建出来 dts 文件,然后利用 dtc 工具编译生成 dtb 文件,使用该 dtb 文件并不能成功启动 Linux ,而是卡在“ UncompressingLinux... done, booting the kernel ”如图 1 所示。 图 1 Linux 内核启动失败   有网友说这是 dts 文件有问题,但是整个创建过程已经严格地按照 Xilinx WiKi 来了,估计是版本不匹配吧,生成的 dts 文件不能被内核识别。   最终解决办法是用 digilent 自带的 dts 文件,将我的硬件环境里没有的设备全部注释掉,然后生成 dtb ,启动成功。   比较 digilent 自带的 dts 和我们用 SDK 生成的 dts 文件可以发现,主要有两点不同: 1) 设备有差异,如图 2 所示。 图 2 设备数量不同 2) Compitable 属性不同,应该是指定的驱动程序有差别,如图 3 所示。 图 3 驱动程序描述不同 3) 二者对时钟的描述方法差别比较大,如图 4 所示。(问题应该不大) 图 4 时钟描述不同 做出判断的原因是查看了 driver/clk.c 文件,发现对应的处理函数,虽然没有仔细分析,但可以猜测时钟能够被解析。 4) QSPI 描述差别较大,如图所示 4 。 5) 网口描述差别较大,如图 5 所示。 图 5 网口描述不同 毫无疑问,把这些全改掉就可以启动,但我尝试定位到底哪些必须改: 1) compatible = "xlnx,zynq-7000"; 必须改为      compatible = "xlnx,zynq-zed"; 2) 其他 compatible 必须改; 3) 多出来的设备要注释掉; 以上三个报错如图 1 所示。 4) 网口描述必须要改,否则报错如图 6 所示; 图 6 网口描述导致的报错 5) QSPI 描述必须要改,否则报错如图 7 所示。 图 7 QSPI 导致的报错 从图中可以看出“ couldn’t determine bus-num ”:无法决定 bus-num 信号; 同样的,片选信号“ num-chip-select ”也要在 dts 中描述,否则会报类似的错误。   本文采用了笨方法解决了问题,但是有时间的话应当研究 Linux 是如何解析 dts 文件的,搞清楚整个解析过程,就可以轻松定位到出错的原因。  
  • 热度 19
    2016-1-28 14:37
    1860 次阅读|
    0 个评论
    1). 简介 设备树 (Device Tree)是一种用来描述系统硬件的数据结构,一些硬件设备设计机制就是可被系统发现的(如PCIExpress或者USB总线),而有 一些则不是(尤其是内存映射外设)。对于后一种情况,不同于X86架构系统采用BIOS和操作系统沟通硬件拓扑信息,ARMLinux通常情况是将硬件设 备描述硬编码到系统内核(LinuxKernel)中,但由于ARM嵌入式设备的多样和离散性,即便如此也不能保证覆盖到所有设备,而且长久以来给 ARMLinux内核代码维护造成了很大负担;基于这种情况,设备树的概念就被提出,将ARMSOC和板卡硬件平台描述信息从内核独立出来成为设备树文 件,通过bootloader传递给内核来识别当前平台设备并加载相应的资源和驱动,这样就把ARM嵌入式Linux内核统一起来,更好的利于内核维护, 而对于广泛的ARM嵌入式设备系统维护和迁移也更方便和有效率。 设备树机制从Linux 内核3.2 版本左右开始采用,其不仅可以定义ARMSoC内部内存映射外设,还可以定义整个板卡,下面就以 ToradexColibri VF61 计算机模块搭配 ColibriEva Board 为例来展示设备树的具体应用,另外关于设备树的更深入介绍,请参考 这里 。 2).设备树文件说明 Toradex ARM计算机模块工业产品级Embedded Linux源代码下载及编译指南请见 这里 ,其中设备树文件位于Kernel源代码 arch/arm/boot/dts/ 目录下。 产品系列 SoC Image版本 SoC级别 模块级别 EvaBoard级别 ColibriVF50 NXP/FreescaleVybrid V2.3Beta5onwards vf500.dtsi vf500-colibri.dtsi vf500-colibri-eval-v3.dts ColibriVF61 NXP/FreescaleVybrid V2.3Beta5onwards vf610.dtsi vf610-colibri.dtsi vf610-colibri-eval-v3.dts ColibriiMX6DL/S NXP/Freescalei.MX6 allcompatible imx6q.dtsi imx6qdl-colibri.dtsi imx6dl-colibri-eval-v3.dts ApalisiMX6Q/D NXP/Freescalei.MX6 V2.3Beta3onwards imx6q.dtsi imx6qdl-apalis.dtsi imx6q-apalis-eval.dts   设 备树通常由多级别的多个设备树文件构成,一个设备树文件(dts和dtsi)可以包含另外一个可包含设备树文件(dtsi),如一个板卡级设备树文件 (dts)一般会包含其所使用的SoC级别的设备树文件(dtsi)。如上图所示,为了支持Toradex产品,定义了三个级别的设备树文件:载板级别, 模块基本以及SoC级别,这些区别也体现在了设备树文件的命名上面。 载板级别的设备树文件(如vf610-colibri-eval- v3.dts)定义自Colibri EvaBoard载板,但基于Colibri模块的标准定义,同样也兼容于其他Colibri载板(如Iris载 板);不过如果用户针对自己应用定制了载板,则需要对应定制化设备树文件以便使能非默认定义功能设备(如第二个网口)或者关闭一些无用的设备。 设备树文件(dts)最后要被编译成设备树二进制文件(dtb)以供Linux内核启动加载所使用,所需的编译器也都集成在Linux源文件里面可以直接调用,从后面的示例可以看到具体的编译方法。 设 备树文件的基本单元是node,一个设备树文件只能有一个root node (/),其他node按照parent/childnode以树状结构分 布,每个node里面包含一些property/value来描述该node特性,如下面是一个UART设备的描述;另外低级别设备树文件的定义可以在更 高级别的设备树文件中重新定义或者更改,最后生成的二进制文件以最后一次定义为准,因此我们定制化设备树文件时候通常只定制修改最高级别的载板级设备树文 件即可;更详细的关于设备树文件语法的说明请见 这里 。 3).定制设备树文件 本文以Colibri VF61计算机模块和Eva board载板为例,定制设备树文件以使能GPIO和CANbus。Colibri Vybird系列产品设备树文件的架构如下图所示: a).创建新的载板级别设备树文件,这里为了方便直接复制vf610-colibri-eval-v3.dts ---------------------------------------------------------------------------------------- $ cp arch/arm/boot/dts/vf610-colibri-eval-v3.dtsarch/arm/boot/dts/vf610-colibri-my-carrier.dts ---------------------------------------------------------------------------------------- b).编辑设备树文件vf610-colibri-my-carrier.dts,将默认配置为PWM设备管脚配置为GPIO ---------------------------------------------------------------------------------------- $ vi vf610-colibri-my-carrier.dts ---------------------------------------------------------------------------------------- //添加下面内容于设备树文件中 c). 配置编译环境并编译新的设备树文件 ./ 安装交叉编译Tool Chain,请从 这里 下载 ---------------------------------------------------------------------------------------- $ tar xvfgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz $ ln -s gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihfgcc-linaro ---------------------------------------------------------------------------------------- ./ 配置环境变量 ---------------------------------------------------------------------------------------- $ export ARCH=arm $ export PATH=~/gcc-linaro/bin/:$PATH $ export CROSS_COMPILE=arm-linux-gnueabihf- ---------------------------------------------------------------------------------------- ./ 修改arch/arm/boot/dts/Makefile文件, 插入"vf610-colibri-my-carrier.dtb" ---------------------------------------------------------------------------------------- dtb-$(CONFIG_SOC_VF610) += \ vf500-colibri-eval-v3.dtb \ vf610-colibri-eval-v3.dtb \ vf610-colibri-my-carrier.dtb \ vf500-colibri-dual-eth.dtb \ vf610-colibri-dual-eth.dtb \ vf610-cosmic.dtb \ vf610-twr.dtb ---------------------------------------------------------------------------------------- ./编译设备树文件,源代码根目录linux-toradex下,生成的文件可以在arch/arm/boot/dts/下找到 ---------------------------------------------------------------------------------------- $ make colibri_vf_defconfig $ make dtbs ---------------------------------------------------------------------------------------- 4).部署新的设备树文件并测试 a). 将新的设备树文件"vf610-colibri-my-carrier.dtb"放置到目标板ColibriVF61 Linux系统 /boot目录下 b). 如下修改目标板 uboot环境变量 ---------------------------------------------------------------------------------------- $ setenv fdt_board 'my-carrier' $ saveenv ---------------------------------------------------------------------------------------- c). 重启后则系统加载新的设备树文件 下面两个截图分别是更改前和更改后使用Toradex提供的GPIOConfig工具对PWM对应管脚进行查看,可以看到由原来的PWM属性变成了GPIO,修改成功后则可以按照 这里 的说明直接调用GPIO使用。 d). 对于CAN,ColibriVF61支持两个CAN接口,CAN0和CAN1,在设备树中使能CAN设备示例如下 ./ 编辑vf610-colibri-my-carrier.dts,添加下面内容 ./ 和上述方法一样重新编译设备树文件后部署,然后就可以在系统中调用CAN了,更详细的说明可以参考这里。  
  • 热度 21
    2016-1-28 14:37
    1384 次阅读|
    0 个评论
    1). 简介 设备树 (Device Tree)是一种用来描述系统硬件的数据结构,一些硬件设备设计机制就是可被系统发现的(如PCIExpress或者USB总线),而有 一些则不是(尤其是内存映射外设)。对于后一种情况,不同于X86架构系统采用BIOS和操作系统沟通硬件拓扑信息,ARMLinux通常情况是将硬件设 备描述硬编码到系统内核(LinuxKernel)中,但由于ARM嵌入式设备的多样和离散性,即便如此也不能保证覆盖到所有设备,而且长久以来给 ARMLinux内核代码维护造成了很大负担;基于这种情况,设备树的概念就被提出,将ARMSOC和板卡硬件平台描述信息从内核独立出来成为设备树文 件,通过bootloader传递给内核来识别当前平台设备并加载相应的资源和驱动,这样就把ARM嵌入式Linux内核统一起来,更好的利于内核维护, 而对于广泛的ARM嵌入式设备系统维护和迁移也更方便和有效率。 设备树机制从Linux 内核3.2 版本左右开始采用,其不仅可以定义ARMSoC内部内存映射外设,还可以定义整个板卡,下面就以 ToradexColibri VF61 计算机模块搭配 ColibriEva Board 为例来展示设备树的具体应用,另外关于设备树的更深入介绍,请参考 这里 。 2).设备树文件说明 Toradex ARM计算机模块工业产品级Embedded Linux源代码下载及编译指南请见 这里 ,其中设备树文件位于Kernel源代码 arch/arm/boot/dts/ 目录下。 产品系列 SoC Image版本 SoC级别 模块级别 EvaBoard级别 ColibriVF50 NXP/FreescaleVybrid V2.3Beta5onwards vf500.dtsi vf500-colibri.dtsi vf500-colibri-eval-v3.dts ColibriVF61 NXP/FreescaleVybrid V2.3Beta5onwards vf610.dtsi vf610-colibri.dtsi vf610-colibri-eval-v3.dts ColibriiMX6DL/S NXP/Freescalei.MX6 allcompatible imx6q.dtsi imx6qdl-colibri.dtsi imx6dl-colibri-eval-v3.dts ApalisiMX6Q/D NXP/Freescalei.MX6 V2.3Beta3onwards imx6q.dtsi imx6qdl-apalis.dtsi imx6q-apalis-eval.dts   设 备树通常由多级别的多个设备树文件构成,一个设备树文件(dts和dtsi)可以包含另外一个可包含设备树文件(dtsi),如一个板卡级设备树文件 (dts)一般会包含其所使用的SoC级别的设备树文件(dtsi)。如上图所示,为了支持Toradex产品,定义了三个级别的设备树文件:载板级别, 模块基本以及SoC级别,这些区别也体现在了设备树文件的命名上面。 载板级别的设备树文件(如vf610-colibri-eval- v3.dts)定义自Colibri EvaBoard载板,但基于Colibri模块的标准定义,同样也兼容于其他Colibri载板(如Iris载 板);不过如果用户针对自己应用定制了载板,则需要对应定制化设备树文件以便使能非默认定义功能设备(如第二个网口)或者关闭一些无用的设备。 设备树文件(dts)最后要被编译成设备树二进制文件(dtb)以供Linux内核启动加载所使用,所需的编译器也都集成在Linux源文件里面可以直接调用,从后面的示例可以看到具体的编译方法。 设 备树文件的基本单元是node,一个设备树文件只能有一个root node (/),其他node按照parent/childnode以树状结构分 布,每个node里面包含一些property/value来描述该node特性,如下面是一个UART设备的描述;另外低级别设备树文件的定义可以在更 高级别的设备树文件中重新定义或者更改,最后生成的二进制文件以最后一次定义为准,因此我们定制化设备树文件时候通常只定制修改最高级别的载板级设备树文 件即可;更详细的关于设备树文件语法的说明请见 这里 。 3).定制设备树文件 本文以Colibri VF61计算机模块和Eva board载板为例,定制设备树文件以使能GPIO和CANbus。Colibri Vybird系列产品设备树文件的架构如下图所示: a).创建新的载板级别设备树文件,这里为了方便直接复制vf610-colibri-eval-v3.dts ---------------------------------------------------------------------------------------- $ cp arch/arm/boot/dts/vf610-colibri-eval-v3.dtsarch/arm/boot/dts/vf610-colibri-my-carrier.dts ---------------------------------------------------------------------------------------- b).编辑设备树文件vf610-colibri-my-carrier.dts,将默认配置为PWM设备管脚配置为GPIO ---------------------------------------------------------------------------------------- $ vi vf610-colibri-my-carrier.dts ---------------------------------------------------------------------------------------- //添加下面内容于设备树文件中 c). 配置编译环境并编译新的设备树文件 ./ 安装交叉编译Tool Chain,请从 这里 下载 ---------------------------------------------------------------------------------------- $ tar xvfgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz $ ln -s gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihfgcc-linaro ---------------------------------------------------------------------------------------- ./ 配置环境变量 ---------------------------------------------------------------------------------------- $ export ARCH=arm $ export PATH=~/gcc-linaro/bin/:$PATH $ export CROSS_COMPILE=arm-linux-gnueabihf- ---------------------------------------------------------------------------------------- ./ 修改arch/arm/boot/dts/Makefile文件, 插入"vf610-colibri-my-carrier.dtb" ---------------------------------------------------------------------------------------- dtb-$(CONFIG_SOC_VF610) += \ vf500-colibri-eval-v3.dtb \ vf610-colibri-eval-v3.dtb \ vf610-colibri-my-carrier.dtb \ vf500-colibri-dual-eth.dtb \ vf610-colibri-dual-eth.dtb \ vf610-cosmic.dtb \ vf610-twr.dtb ---------------------------------------------------------------------------------------- ./编译设备树文件,源代码根目录linux-toradex下,生成的文件可以在arch/arm/boot/dts/下找到 ---------------------------------------------------------------------------------------- $ make colibri_vf_defconfig $ make dtbs ---------------------------------------------------------------------------------------- 4).部署新的设备树文件并测试 a). 将新的设备树文件"vf610-colibri-my-carrier.dtb"放置到目标板ColibriVF61 Linux系统 /boot目录下 b). 如下修改目标板 uboot环境变量 ---------------------------------------------------------------------------------------- $ setenv fdt_board 'my-carrier' $ saveenv ---------------------------------------------------------------------------------------- c). 重启后则系统加载新的设备树文件 下面两个截图分别是更改前和更改后使用Toradex提供的GPIOConfig工具对PWM对应管脚进行查看,可以看到由原来的PWM属性变成了GPIO,修改成功后则可以按照 这里 的说明直接调用GPIO使用。 d). 对于CAN,ColibriVF61支持两个CAN接口,CAN0和CAN1,在设备树中使能CAN设备示例如下 ./ 编辑vf610-colibri-my-carrier.dts,添加下面内容 ./ 和上述方法一样重新编译设备树文件后部署,然后就可以在系统中调用CAN了,更详细的说明可以参考这里。