精华内容
下载资源
问答
  • ARM-IMX6U IMX6U学习笔记
  • imx6ul

    2021-01-06 05:20:20
    正点原子-imx6ul学习笔记 一:正点原子-uboot(2020.3.8-2020.3.9) 1:正点原子修改过的uboot 编译 目录:linux/imx6ull/uboot/alientek_uboot A)编译shell脚本 文件名:mx6ull_alientek_emmc.sh 编译方法:./mx6ull_...
  • 飞思卡尔IMX6D

    2018-11-23 12:01:50
    飞思卡尔imx6硬件PDF资料共享
  • IMX6D数据手册

    2017-11-17 14:04:26
    IMX6D数据手册IMX6D数据手册IMX6D数据手册IMX6D数据手册
  • imx6数据手册

    2020-09-22 19:00:22
    imx6英文datasheetimx6英文datasheetimx6英文datasheetimx6英文datasheetimx6英文datasheetimx6英文datasheet
  • 文章目录 主控芯片 硬件开发板 内核版本 ...imx6 100ask_imx6ull ...本专栏将以imx6为主控,进行一系列的相关驱动实验及讲解。... [imx6][Linux4.9]U-boot启动流程分析 [imx6][Linux4.9]休眠... [imx6][Linux4.9]内核的.

    在这里插入图片描述

    文章目录

    主控芯片 硬件开发板 内核版本
    imx6 100ask_imx6ull Linux-4.9.88

    本专栏将以imx6为主控,进行一系列的相关驱动实验及讲解。
    开篇我们首先规划下本专栏的实验内容暂定40篇。

    平台基础篇:

    • [imx6][Linux4.9]U-boot启动流程分析
    • [imx6][Linux4.9]休眠唤醒调试步骤
    • [imx6][Linux4.9]文件系统分区挂载流程
    • [imx6][Linux4.9]内核的启动方式
    • [imx6][Linux4.9]内核的启动流程

    驱动基础篇:

    • [imx6][Linux4.9]内核的proc文件系统的介绍及使用
    • [imx6][Linux4.9]内核的sysfs文件系统的介绍及使用
    • [imx6][Linux4.9]内核驱动的基石kobject的介绍
    • [imx6][Linux4.9]内核驱动的骨架kset的介绍
    • [imx6][Linux4.9]内核用户空间的法宝kobj_type的介绍
    • [imx6][Linux4.9]内核消息的快递包(以USB热拔插的通知为例)
    • [imx6][Linux4.9]内核驱动的大管家class的介绍与添加
    • [imx6][Linux4.9]内核中虚拟的平台总线platform的介绍与添加
    • [imx6][Linux4.9]内核中创建一个属性自己的总线
    • [imx6][Linux4.9]内核中的并发自旋锁的介绍与使用
    • [imx6][Linux4.9]内核中的并发信号量的介绍与使用
    • [imx6][Linux4.9]内核中的并发互斥锁的介绍与使用
    • [imx6][Linux4.9]设备驱动中的非阻塞IO的介绍与使用
    • [imx6][Linux4.9]设备驱动中的阻塞IO等待队列的介绍与使用
    • [imx6][Linux4.9]设备驱动中的poll机制的介绍与使用
    • [imx6][Linux4.9]内核中Completion机制基本概念
    • [imx6][Linux4.9]内核中的内核线程的介绍与使用
    • [imx6][Linux4.9]内核中断的介绍及使用
    • [imx6][Linux4.9]内核中软中断和tasklet的介绍及使用
    • [imx6][Linux4.9]内核工作队列的介绍及使用

    外设驱动篇:

    • [imx6][Linux4.9]PCIe接口4G模块EC20调试
    • [imx6][Linux4.9] 网卡的调试
    • [imx6][Linux4.9]USB``HOST端的调试
    • [imx6][Linux4.9]USB``OTG功能的调试
    • [imx6][Linux4.9] SD卡的调试
    • [imx6][Linux4.9] 光敏模块的调试
    • [imx6][Linux4.9] EEPROM的调试
    • [imx6][Linux4.9] OLED的调试
    • [imx6][Linux4.9] Framebuffer 设备驱动的调试
    • [imx6][Linux4.9] WIFI 设备驱动的调试

    驱动子系统篇:

    • [imx6][Linux4.9]pinctrl子系统
    • [imx6][Linux4.9]IIC子系统
    • [imx6][Linux4.9]SPI子系统
    • [imx6][Linux4.9]输入子系统

    设备树篇:
    [imx6][Linux4.9]DTS

    展开全文
  • linux-imx6-solo:imx6 solo linux内核源代码
  • imx6
  • IMX6UL数据手册

    2017-11-17 13:59:08
    IMX6UL数据手册IMX6UL数据手册IMX6UL数据手册IMX6UL数据手册
  • IMX6ULL参考手册

    2020-03-19 22:58:32
    IMX6ULL参考手册,英文文档,4127页的IMX6Ull芯片的超详细介绍。NXP官方出版。共分为60个章节,全方面的概括了IMX6Ull的特性以及配置方式
  • imx6蓝牙移植

    2018-12-12 09:45:58
    imx6 android 移植bluetooth hardware层编译过程简单总结
  • IMX6 镜像制作手册

    2018-07-15 14:50:25
    IMX6 镜像制作手册, 天嵌IMX 资料, IMX6 镜像制作手册, 天嵌IMX 资料
  • 文章目录设备树1、设备树的查看2、设备树源文件分析3、设备树内容的解析函数3.1、查找节点(`node`)的`of`函数3.2、查找属性值(`property`)得`of`函数3.3、其他常用...imx6ull芯片的原始设备树头文件:imx6ul.dtsi .

    在这里插入图片描述

    主控芯片 硬件开发板 内核版本
    imx6 100ask_imx6ull Linux-4.9.88

    设备树

    1、设备树的查看

    设备树文件:

    • 内核设备树的路径:Linux-4.9.88/arch/arm/boot/dts
    • imx6ull芯片的原始设备树头文件:imx6ul.dtsi
    • 100ask_imx6ull开发板的设备树:100ask_imx6ull-14x14.dts

    设备树在系统中的体现:
    Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的/proc/device-tree目录下根据节点名字创建不同文件夹:
    在这里插入图片描述


    2、设备树源文件分析

    设备树源文件(Device tree source)由节点(node)和属性(property)组成,每个结点可包含子结点和属性,详见我之前的博客:图解Kernel Device Tree(设备树)的使用


    3、设备树内容的解析函数

    在设备树节点上带有名称,寄存器等参数,可以通过一些列的of函数,在设备树中提取节点的相关信息:

    3.1、查找节点(node)的of函数

    1. 通过节点名字查找指定的节点

    节点信息:在这里插入图片描述
    解析函数:

    struct device_node * of_find_node_by_name(struct device_node *from , const char *name)
    

    from 是开始查找的节点,如果为NULL,表示从根节点开始查找整个设备树 ,
    name 要查找的节点名字
    返回: 找到的节点。如果为NULL,表示查找失败

    1. 通过device_type属性查找指定的节点

    节点信息:
    在这里插入图片描述
    解析函数:

    struct device_node *of_find_node_by_type(struct device_node *from, const char *type)
    

    from 是开始查找的节点,如果为NULL,表示从根节点开始查找整个设备树 ,
    type 要查找的节点device_type属性值,字符串
    返回: 找到的节点。如果为NULL,表示查找失败

    1. 通过device_typecompatible这两个属性查找指定的节点

    节点信息:
    在这里插入图片描述
    解析函数:

    struct device_node *of_find_compatible_node(struct device_node *from,const char *type,const char *compatible)
    

    from:开始查找的节点,如果为NULL表示从根节点开始查找整个设备树。
    type:要查找的节点对应的 type 字符串,也就是 device_type 属性值,可以为NULL,表示忽略掉 device_type属性。
    compatible: 要查找的节点所对应的 compatible 属性列表。
    返回: 找到的节点。如果为NULL,表示查找失败

    1. 通过of_device_id匹配表来查找指定的节点
    struct device_node *of_find_matching_node_and_match(struct device_node *from,const struct of_device_id *matches,const struct of_device_id **match)
    

    from:开始查找的节点,如果为NULL表示从根节点开始查找整个设备树。
    matches: of_device_id 匹配表,也就是在此匹配表里面查找节点。
    match: 要找的匹配的of_device_id
    返回: 找到的节点。如果为NULL,表示查找失败

    1. 通过路径来查找指定的节点
    inline struct device_node *of_find_node_by_path(const char *path)
    

    path:带有全路径的节点名,可以使用节点的别名,比如“/backlight”就是 backlight这个节点的全路径。
    返回: 找到的节点。如果为NULL,表示查找失败


    3.2、查找属性值(property)得of函数

    1. 查找指定的属性
      节点:
      在这里插入图片描述
      设备树:
      在这里插入图片描述
      解析函数:
    property *of_find_property(const struct device_node *np,const char *name,int *lenp)
    

    np:设备节点。
    name: 属性名字。
    lenp[out]:属性值的字节数
    返回值: 找到的属性。

    1. 获取属性中元素的数量
      节点:
      在这里插入图片描述
      解析函数:
    int of_property_count_elems_of_size(const struct device_node *np,const char *propname,int elem_size)
    

    np: 设备节点。
    propname: 需要统计元素数量的属性名字
    elem_size: 元素的长度
    返回值: 得到的属性元素数量。

    1. 从属性中获取指定标号的u32类型数据值
    int of_property_read_u32_index(const struct device_node *np,const char *propname,u32 index,u32 *out_value)
    

    np: 设备节点
    propname: 要读属性的名字
    elem_size: 要读取的值标号
    out_value[out]: 读取到的值
    返回值: 0,读取成功,负值,读取失败,-EINVAL 表示属性不存在,-ENODATA 表示没有要读取的数据,-EOVERFLOW 表示属性值列表太小。

    1. 读取属性中u8u16u32u64 类型的数组数据
    int of_property_read_u8_array(const struct device_node *np,const char *propname,u8 *out_values,size_t sz)
    int of_property_read_u16_array(const struct device_node *np,const char *propname,u16 *out_values,size_t sz)
    int of_property_read_u32_array(const struct device_node *np,const char *propname,u32 *out_values,size_t sz)
    int of_property_read_u64_array(const struct device_node *np,const char *propname,u64 *out_values,size_t sz)
    

    np:设备节点。
    proname: 要读取的属性名字。
    out_value:读取到的数组值,分别为 u8u16u32u64
    sz: 要读取的数组元素数量。
    返回值: 0,读取成功,负值,读取失败,-EINVAL 表示属性不存在, -ENODATA表示没有要读取的数据,-EOVERFLOW 表示属性值列表太小。

    1. 读取只有一个整型值得属性
      设备树源码:
      在这里插入图片描述
      节点:
      在这里插入图片描述
      解析函数:
    int of_property_read_u8(const struct device_node *np,const char *propname,u8 *out_value)
    int of_property_read_u16(const struct device_node *np,const char *propname,u16 *out_value)
    int of_property_read_u32(const struct device_node *np,const char *propname,u32 *out_value)
    int of_property_read_u64(const struct device_node *np,const char *propname,u64 *out_value)
    

    np:设备节点。
    proname: 要读取的属性名字。
    out_value:读取到的数组值。
    返回值: 0,读取成功,负值,读取失败, -EINVAL 表示属性不存在, -ENODATA 表示没有要读取的数据, -EOVERFLOW 表示属性值列表太小。

    1. 读取属性中的字符串值
      例如获取leds当前的状态
      在这里插入图片描述
    int of_property_read_string(struct device_node *np,const char *propname,const char **out_string)
    

    np:设备节点。
    proname: 要读取的属性名字。
    out_string:读取到的字符串值。
    返回值: 0,读取成功,负值,读取失败。

    1. 用于获取#address-cells
      我们以spi4为例
      在这里插入图片描述
      对应节点:
      在这里插入图片描述
      解析函数:
    int of_n_addr_cells(struct device_node *np)
    

    np:设备节点。
    返回值: 获取到的#address-cells属性值

    1. 用于获取#size-cells 属性值
    int of_n_size_cells(struct device_node *np)
    

    np:设备节点。
    返回值: 获取到的#size-cells属性值。


    3.3、其他常用的OF函数

    1. 函数用于查看节点的 compatible 属性是否有包含 compat 指定的字符串,也就是检查设备节点的兼容性
    int of_device_is_compatible(const struct device_node *device,const char *compat)
    

    device:设备节点。
    compat:要查看的字符串。
    返回值:0,节点的 compatible 属性中不包含compat 指定的字符串; 正数,节点的 compatible属性中包含 compat 指定的字符串

    1. 用于获取地址相关属性。主要是“reg”和“assigned-addresser
    const __be32 *of_get_address(struct device_node *dev,int index,u64 *size,unsigned int *flags)
    

    dev:设备节点
    index:要读取的地址标号。
    size:地址长度
    flags:参数,比如 IORESOURCE_IOIORESOURCE_MEM
    返回值: 读取到的地址数据首地址,为 NULL 的话表示读取失败。

    1. 负责将从设备树读取到的地址转换为物理地址
    u64 of_translate_address(struct device_node *dev,const __be32 *in_addr)
    

    dev:设备节点。
    in_addr:要转换的地址。
    返回值: 得到的物理地址,如果为 OF_BAD_ADDR 的话表示转换失败。

    1. IICSPIGPIO 等这些外设都有对应的寄存器,这些寄存器其实就是一组内存空间, Linux内核使用 resource 结构体来描述一段内存空间
    int of_address_to_resource(struct device_node *dev,int index,struct resource *r)
    

    dev:设备节点。
    index:地址资源标号。
    r:得到的 resource 类型的资源值。
    返回值: 0,成功;负值,失败。

    1. 用于直接内存映射.采用设备树以后就可以直接通过 of_iomap 函数来获取内存地址所对应的虚拟地址,of_iomap 函数本质上也是将 reg 属性中地址信息转换为虚拟地址,如果 reg 属性有多段的话,可以通过index参数指定要完成内存映射的是哪一段
    void __iomem *of_iomap(struct device_node *np,int index)
    

    np:设备节点。
    indexreg 属性中要完成内存映射的段,如果 reg属性只有一段的话 index 就设置为 0
    返回值: 经过内存映射后的虚拟内存首地址,如果为 NULL 的话表示内存映射失败。若设备结点的reg属性有多段,可通过index标示要ioremap的是哪一段,只有1段的情况, index0。采用Device Tree后,大量的设备驱动通过of_iomap()进行映射,而不再通过传统的ioremap

    展开全文
  • imx6_keyirq-源码

    2021-02-07 23:33:35
    imx6_keyirq
  • 文章目录1、GPIO debug介绍...100ask_imx6ull Linux-4.9.88 在说明pinctrl子系统之前,我们要知道如何查看系统的GPIO 1、GPIO debug介绍 1.1、/sys/class/gpio目录文件介绍 Linux开发平台实现了通用GPIO的驱动,用户

    在这里插入图片描述

    主控芯片 硬件开发板 内核版本
    imx6 100ask_imx6ull Linux-4.9.88

    在说明pinctrl子系统之前,我们要知道如何查看系统的GPIO

    1、GPIO debug介绍

    1.1、/sys/class/gpio目录文件介绍

    Linux开发平台实现了通用GPIO的驱动,用户通过Shell命令或系统调用即能控制GPIO的输出和读取其输入值。其属性文件均在/sys/class/gpio 目录下,如:
    在这里插入图片描述
    上图中属性文件有 exportunexpor
    其余几个个文件为符号链接(gpiochip0gpiochip32gpiochip64gpiochip96…),指向管理对应设备的目录。
    在这里插入图片描述

    1.2、gpio属性文件介绍

    • 属性文件介绍
      在这里插入图片描述
    文件 作用
    base 设备所管理的 GPIO 初始编号
    label 设备信息
    ngpio 设备所管理的 GPIO 总数
    power 设备供电方面的相关信息
    subsystem 符号链接,指向父目录
    uevent 内核与 udev(自动设备发现程序)之间的通信接口

    我们重点看下gpio label属性:
    在这里插入图片描述
    目录:Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi
    label代表设备信息:

    • 地址:0x0209c000
    • 大小:0x4000
      在这里插入图片描述

    1.3、GPIO 的使用

    GPIO 导出后默认为输入功能。向 direction 文件写入“in”字符串,表示设置为输入功能;向 direction 文件写入“out”字符串,表示设置为输出功能。读 direction 文件,会返回 in/out 字符串,in 表示当前 GPIO 作为输入,out 表示当前 GPIO 作为输出。方向查看和设置命令如下:

    # cat /sys/class/gpio/gpioN/direction #查看方向
    # echo out > /sys/class/gpio/gpioN/direction #设置为输出
    # echo in > /sys/class/gpio/gpioN/direction #设置为输入
    

    1.4、GPIO 的/sys/kernel/debug/gpio 查看当前gpio信息

    在这里插入图片描述

    展开全文
  • IMX6SDLRM.pdf

    2016-12-10 17:36:47
    IMX datasheet IMX6SDLRM.pdf IMX6数据手册
  • IMX6官方文档

    2018-06-02 14:29:55
    imx6官方开发参考文档,包括BSP、GPU、CPU、YOCTO相关文档
  • IMX6 fast boot

    2018-07-02 22:07:10
    IMX6 快速启动文档,系统裁剪,系统优化,针对内核和uboot的设计
  • imx6 bsp设置.pptx

    2021-04-21 14:07:35
    imx6 bsp设置.pptx
  • 100ask_imx6ull Linux-4.9.88 1、Pinctrl 子系统 1.1、Pinctrl 子系统的作用 获取设备树中的pin信息; 根据获取到的pin信息来设置pin的复用功能; 根据获取到的pin信息来设置pin的电气特性。 1.2、设备树.

    在这里插入图片描述

    主控芯片 硬件开发板 内核版本
    imx6 100ask_imx6ull Linux-4.9.88

    1、Pinctrl 子系统

    1.1、Pinctrl 子系统的作用

    • 获取设备树中的pin信息;
    • 根据获取到的pin信息来设置pin的复用功能;
    • 根据获取到的pin信息来设置pin的电气特性。

    1.2、设备树中PIN的配置信息

    设备树里面创建一个节点来描述 GPIO PIN 的配置信息:
    设备树文件目录:Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi
    在这里插入图片描述
    iomuxc 节点进行数据的追加:

    &iomuxc {
            pinctrl-names = "default";
            pinctrl-0 = <&pinctrl_hog_1>;
            imx6ul-evk {
                    pinctrl_hog_1: hoggrp-1 {
                            fsl,pins = <
                                    MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059 /* SD1 CD */
                                    MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x17059 /* USB OTG1 ID */
                                    MX6UL_PAD_CSI_DATA07__GPIO4_IO28           0x000010B0
                                    MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05        0x000110A0
                            >;
                    };
                    ......
                    pinctrl_i2c1: i2c1grp {
                            fsl,pins = <
                                    MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
                                    MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
                            >;
                    };
                    ......
    		}
    }
    

    1.2、设备树中PIN的配置信息中的复用信息解析

    MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059
    

    这个宏定义在:Linux-4.9.88/arch/arm/boot/dts/imx6ul-pinfunc.h

                                                        /* <mux_reg  conf_reg  input_reg  mux_mode input_val> */
    #define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19               0x0090   0x031c    0x0000     5        0
    

    从芯片手册:IMX6ULLRM.pdf可知

    • mux_regSW_MUX_CTL_PAD_UART1_RTS_B偏移地址:0x0090

    • mux_mode5代表为普通GPIO模式
      在这里插入图片描述

    • conf_regIOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B偏移地址:0x031c

    • 0x17059 就是 conf_reg 寄存器值,对应二级制为:10111000001011001
      在这里插入图片描述

    1.3、PINCTRL子系统驱动

    文件目录:Linux-4.9.88/drivers/pinctrl/freescale/pinctrl-imx6ul.c
    文件目录:Linux-4.9.88/rivers/pinctrl/freescale/pinctrl-imx.c

    展开全文
  • IMX6的文档

    2018-06-11 09:37:40
    IMX6的文档,总是到处找,上传这里,备用,应该是有点用的
  • IMX6Q核心板 IMX6DL核心板 Freescale Cortex-A9 四核 i.MX6Q, Freescale Cortex-A9 双核精简版 i.MX6DL, 主频 1.2 GHz 主频 1.2 GHz 内存:2G 内存:1G ...
  • IMX6_GPIOS

    热门讨论 2016-12-28 12:19:37
    Linux内核版本:linux-3.0.35 开发板: IMX6S MY-IMX6-EK200 编译环境:Ubuntu12 主要内容:IMX6S的IO驱动程序编写 实现功能:通过应用层程序控制底层IO的读写操作。
  • IMX6Q imx6D NXP官方开发板SABRESDP Cadence arregro设计硬件原理图PCB(8层)+BOM文件
  • IMX6Q imx6D NXP官方开发板SABRESDB Cadence arregro设计硬件原理图PCB(8层)+BOM文件
  • Freescale IMX6用户手册

    2017-03-09 16:06:59
    Freescale IMX 6Dual/6Quad Applications Processor Reference Manual Freescale IMX6 软件驱动手册
  • Imx6原理图

    2017-12-21 15:19:16
    基于IMX6的原理图,据有USB、SATA、PCIE、SD、NAND接口
  • iMX6 V1I1 s.zip

    2020-09-04 16:32:12
    iMX6完整工程,包括原理图和6层PCB:iMX6完整工程,包括原理图和6层PCB:iMX6完整工程,包括原理图和6层PCB:
  • IMX6ULL与IMX6UL异同

    万次阅读 2017-05-16 14:34:47
    与I.MX6UltraLite芯片是PIN-2-PIN兼容的,使的I.MX6ULL很容易在IMX6UL上重用,主要更改如下。 1. 增加了EPD显示支持与EPDC/PXP的低端电子阅读器,相对于6sl7d系列也是一个低成本低功耗方案。 2. 安全功能如CAAM/BEE/...
  • NXP IMX 6 introduction

    2016-02-29 14:54:37
    NXP IMX 6 introduction application processor core value

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,893
精华内容 2,757
关键字:

imx6