自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 中断子系统

tip:在调用request_irq函数后等于已经调用了enable_irq函数由软件发送中断指令产生的中断软中断编号:tip:NR_SOFTIRQS并不是中断编号tasklet 是基于软中断实现,如果对效率没有特殊要求推荐是用 tasklet 实现中断分层。为什么这么说,根据之前讲解软中断的中断服务函数是一个全局的数组,在多 CPU 系统中,所有 CPU 都可以访问,所以在多 CPU 系统中需要用户自己考虑并发、可重入等问题,增加编程负担。

2024-04-26 15:43:00 847 1

原创 imx6ull环境安装

imx6ull-mmc-npi.dtb 更新到 开发板的/usr/lib/linux-image-4.19.35-imx6 并重启开发板即可。将设备树文件(imx6ull-mmc-npi.dts)复制到 内核路径/arch/arm/boot/dts。Makefile中添加的语句为 imx-fire-rgb-led.dtbo。修改内核目录/arch/arm/boot/dts/overlays。生成的dtb文件为:imx-fire-rgb-led.dtbo。以进行设备树插件的编译。位于内核根目录下的“

2024-03-21 15:45:32 371 1

原创 i2C子系统

总线驱动主要有俩个功能:1.提供一个平台用于匹配设备树和设备驱动2.完成了最基础的I2C协议 即拉高拉低电平设备驱动:1.完成具体的接口函数2.完成设备的创建。

2024-02-28 16:39:04 262

原创 设备树(五) ——pinctrl子系统与GPIO子系统

(2) 设置pinctrl-names="default"与pinctrl-0 = <&pinctrl节点名称>(2)在内核/arch/arm/boot/dts/imx6ulpinfunc.h中寻找对应的引脚复用宏定义。这里只是对引脚复用宏定义进行解释,实际不会去修改这个文件,只会对其进行应用,所以我们的重点在PAD(引脚属性)值。引脚复用宏定义:在其内核文件下的 arch/arm/boot/dts/imx6ul-pinfunc.h。编译成功后会在“./arch/arm/boot/dts。

2024-02-26 10:28:38 1472

原创 (野火)imx6ull移植openwrt(二)

此篇的目的在于实现imx6ull在openwrt的系统下,能够使用4g网卡(EC20)注意点:openwrt只要编译过一次就可以了,在没有调用make menuconfig去修改内部配置时,就可以一直使用它,内核上的改动,去替换内核即可,这能省下不少时间,因为可能要多次修改在上一篇的过程中,我们已经实现了wifi功能。但是发现将EC20接上以后,USB口可以识别到EC20,但是并没有在/dev下产生相应的设备节点,即cdc_wdm0(这个是使用qmi拨号形式下的名称),如果使用ppp拨号 可能名称有些不

2023-12-07 17:05:45 246 1

原创 设备树(四)

可以理解为主设备树的“补丁”它动态的加载到系统中,并被内核识别。例如我们要在系统 中增加 RGB 驱动,那么我们可以针对RGB这个硬件设备写一个设备树插件,然后编译、加载到 系统即可,无需重新编译整个设备树。

2023-11-06 16:00:50 10

原创 设备树(三)

1.该驱动文件生成的ko文件,在调用insmod 后,就会去调用 module_init申明的函数,去平台注册平台驱动结构体。​​​​​​2.获取节点中的硬件信息(reg属性记录),并将其转换成 虚拟地址。2.去匹配 匹配表与设备树,当匹配成功后,则会调用probe函数。该函数是在驱动与设备树匹配之后,自动调用的函数。

2023-11-06 11:29:55 10

原创 设备树(二)

上一篇主要介绍设备树的一些语法这一篇主要来研究下,该如何将设备树的信息传递给驱动struct device_node :用于记录节点信息。结构体如下所示:•节点中属性为name的值•节点中属性为的值•节点的名字,在结构体后面放一个字符串,full_name指向它•链表,连接该节点的所有属性•指向父节点•指向子节点•指向兄弟节点。

2023-11-06 10:30:10 4

原创 平台设备驱动小结

这里注意一点:inode->i_cdev其实对应的地址是cdev_add函数中的cur_led->led_cdev,然后通过宏container_of时,找到结构体的首地址,然后再将首地址传给filp->private_data,以便必要的信息传输给write、read等函数。把原先的文件分成了俩个文件,一个是驱动文件(drv),一个是设备文件(dev),俩个分别生成了.ko文件 当我们调用指令insmod 去注册。时,其主动在platform_bus这个平台总线上,去寻找匹配(match函数)名字的。

2023-11-04 16:07:58 6

原创 设备树(一)

每一个"{}"都是一个"节点""/{...};"表示根节点 每一个设备树都只有一个根节点注意:因为设备树可以像.h文件一样引用,比如imx6ull.dtsi 文件有个根节点 而 imx6ull-mmc-npi.dts 引用了该文件,且也有一个根节点,这并不代表设备树有俩个根节点,因为不同文件的根节点会合并成一个"&xxx{...};":比根节点下的子节点多一个"&" 这表示该节点在向已经存在的子节点追加数据。节点基本格式:node-name:用于指定节点的名称其中的符号“

2023-10-27 11:22:30 14

原创 (野火)imx6ull移植openwrt

如上图所示 系统在文件夹 /home/linux/19_openwrt/openwrt-19.07.2/package/kernel/linux 下 由于 modules/netfilter.mk的161行包含nf_flow_table_hw.ko ,但是在其对应文件夹下又找不到该文件 而导致了问题的产生。这里提供一个安装包(也可以在野火提供的百度云文件中搜索下使用) https://download.csdn.net/download/qq_51252118/88046394。

2023-08-14 11:16:04 1638

原创 Makefile

//延迟赋值:= //立即赋值?= //空赋值 当变量未赋值时有效+= //追加赋值。

2023-06-28 17:33:57 63 1

原创 cmake语法笔记

这个标志是可选的,如果传递了该参数表示新增加的子目录将会排除在ALL目录之外(可能是make系统中的make all?如果未指定路径列表,则函数将在默认的系统库路径中搜索。SYSTEM:指定添加的头文件路径是为了包含系统头文件,并将这些路径标记为系统路径,以避免在产生警告时提醒用户。这个目录是可选的,如果指定,cmake命令执行后的输出文件(可执行文件等)将会存放在此处,若没有指定,默认情况等于。指定一个包含CMakeLists.txt和h代码文件所在的目录,该目录可以是绝对路径,也可以是相对路径,

2023-06-05 13:54:23 154 1

原创 Openssl交叉编译

LD_LIBRARY_PATH是为了让其链接库时优先考虑该文件夹。查找atomic 将这个链接进行注释之后重新编译即可正常通过。问题的原因在于该交叉编译链缺少atomic这个链接库。说明 PATH 是为了让其找到该可执行文件。主要是可执行文件和其对应的动态链接库。将这四个文件移动到开发板的目录下即可。并将 PATH包含该目录(A)

2023-05-12 16:46:30 528 1

关于openwrt支持4g模块 EC20的一些资料

关于openwrt支持4g模块 EC20的一些资料

2023-12-07

野火imx6ull镜像下载工具

用于野火镜像的下载

2023-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除