随笔分类 -  Linux底层驱动

摘要:知识点: 1. Ubuntu驱动程序开发2-Uboot使用(bootcmd、bootargs、uboot命令) 1 更新uboot到EMMC 1.1 在uboot中更新uboot 将编译好的u-boot.imx拷贝到Ubuntu中的tftpboot目录下,然后在uboot命令行下执行以下命令 mmc 阅读全文
posted @ 2020-12-29 11:38 Mike_2019 阅读(545) 评论(0) 推荐(0)
摘要:LInux针对PIN的配置推出了pinctrl子系统,针对GPIO的配置推出了gpio子系统。 1、pinctrl子系统 pinctrl子系统重点是设置PIN(有的SOC叫做PAD)的复用和电气属性。下面向设备树添加一个pinctrl节点模板: 功能:创建一个test设备,test使用了GPIO1_ 阅读全文
posted @ 2020-08-19 18:41 Mike_2019 阅读(452) 评论(0) 推荐(0)
摘要:1、I.MX6U IO命名 格式:IOMUXC_SW_MUC_CTL_PAD_XX_XX举例:IOMUXC_SW_MUC_CTL_PAD_GPIO1_IO01 IOMUXC_SW_MUC_CTL_PAD_UART1_TX_DATA 2、I.MX6UL IO复用寄存器(SW_MUX_CTL Regis 阅读全文
posted @ 2020-08-19 17:10 Mike_2019 阅读(360) 评论(0) 推荐(0)
摘要:设备树里面描述的内容如下: 1、I.MX6ULL 这个 Cortex-A7 架构的 32 位 CPU。 2、I.MX6ULL 内部 ocram,起始地址 0x00900000,大小为 128KB(0x20000)。 3、I.MX6ULL 内部 aips1 域,寄存器起始地址为 0x02000000, 阅读全文
posted @ 2020-08-18 10:18 Mike_2019 阅读(455) 评论(0) 推荐(0)
摘要:1、下载 https://buildroot.org/ 2、解压得到源码 tar -vxjf buildroot-2019.02.6.tar.bz2 3、进入源码目录,打开图形化配置界面 make menuconfig 4、配置buildroot 4.1 配置Target option 4.2 配置 阅读全文
posted @ 2020-05-18 20:21 Mike_2019 阅读(220) 评论(0) 推荐(0)
摘要:1、Linux驱动的两种运行方式 1.将驱动编译进Linux内核中,当内核启动就会自动运行驱动程序;2.将驱动编译成模块(.ko文件),在内核启动以后使用“insmod”命令加载驱动模块。 2、注册模块加载和卸载函数 module_init(xxx_init); //注册模块加载函数. xxx_in 阅读全文
posted @ 2020-05-15 10:34 Mike_2019 阅读(876) 评论(0) 推荐(0)
摘要:应用程序运行在用户空间,而Linux驱动属于内核的一部分,当我们用户空间想要实现对内核的操作,必须使用一个叫做“系统调用”的方法来实现从用户空间陷入到内核空间,这样才能实现对底层驱动的操作。在Linux内核文件include/linux/fs.h中有个叫file_operation的结构体,就是li 阅读全文
posted @ 2020-05-15 10:07 Mike_2019 阅读(521) 评论(0) 推荐(0)
摘要:1 编译 在kernel文件夹下新建一个mx6ull_mk_emmc.sh文件,输入以下内容: #!/bin/sh make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean # make ARCH=arm CROSS_COMPILE=arm 阅读全文
posted @ 2020-05-15 09:14 Mike_2019 阅读(384) 评论(0) 推荐(0)
摘要:1、环境变量bootcmd与bootargs 1.1 环境变量bootcmd bootcmd 保存着 uboot 默认命令, uboot 倒计时结束以后就会执行 bootcmd 中的命令。这些命令一般都是用来启动 Linux 内核的,比如读取 EMMC 或者 NAND Flash 中的 Linux 阅读全文
posted @ 2020-05-15 09:13 Mike_2019 阅读(1608) 评论(0) 推荐(0)
摘要:1、设备号的组成 设备号由主设备号和次设备号组成,主设备号表示一个具体的驱动,次设备号表示使用这个驱动的各个设备。数据类型dev_t,是个unsigned int(32位)型数据 其中,高12位为主设备号,低20位为次设备号。 MAJOR(dev_t):从dev_t获取主设备号 MINOR(dev_ 阅读全文
posted @ 2020-05-14 13:36 Mike_2019 阅读(353) 评论(0) 推荐(0)
摘要:1、安装交叉编译工具链 1.1 下载4.9.4版本的交叉编译器,并存放到/usr/local/arm目录 链接:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/ 1.2 阅读全文
posted @ 2020-05-10 19:23 Mike_2019 阅读(467) 评论(0) 推荐(0)
摘要:1、查找节点的OF函数 Linux内核使用device_node结构体来描述一个节点,此结构体定义在文件include/linux/of.h 1.1. of_find_node_by_name:通过节点名字查找指定节点 1.2. of_find_node_by_type:通过device_type属 阅读全文
posted @ 2020-05-09 09:49 Mike_2019 阅读(3406) 评论(0) 推荐(0)
摘要:将描述板级硬件信息的内容从Linux分离出来,用一个专属的文件来描述,这个专属文件叫做设备树,文件扩展名.dts。而一个SOC可以做出很多不同的板子,这些板子都有共同的信息,将这些共同的信息提取出来作为一个通用的文件,其他.dts文件直接引用这个通用文件即可,这个通用文件就是.dtsi文件。 1、存 阅读全文
posted @ 2020-01-14 17:10 Mike_2019 阅读(3042) 评论(0) 推荐(0)
摘要:Make的工作主要依赖于一个叫Makefile的文件。Makefile文件描述了整个程序的编译、链接等规则。 1 make命令 1.1、make命令的选项和参数 -k:作用是让make命令在发现错误时仍然继续执行。可以利用这个选项在一次操作中发现所有未编译成功的源文件。 -n:作用是让make命令输 阅读全文
posted @ 2020-01-14 09:23 Mike_2019 阅读(1085) 评论(0) 推荐(0)