Aki's blog
  • 首页
  • 归档
  • 分类
  • 关于
  • 工具
    CAN报文生成
/ᐠ。ꞈ。ᐟ\

Linux Platform驱动通用框架

设备树 Platform驱动需要读取设备树中的compatible信息用于of_match_table进行匹配: 12345678910/* Custom LED pinctrl */gpioled { #address-cells = <1>; #size-cells = <1>; compatible = "custom-gpioled"
2025-03-28
嵌入式(Linux开发)

Linux文件描述符

文件描述符(file descriptor) 我们知道在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。在操作这些所谓的文件的时候,我们每操作一次就找一次名字,这会耗费大量的时间和效率。所以Linux中规定每一个文件对应一个索引,这样要操作文件的时候,我们直接找到索引就可以对其进行操作了。 文件描述符(file descriptor)就是内核为了高效管
2025-03-26
嵌入式(Linux开发)

Linux阻塞、非阻塞与异步通知

阻塞IO 阻塞状态下应用程序从驱动读取函数时,若kernel回报设备不可用,应用程序对应的线程将会进入睡眠,等待设备可用后由设备通知应用程序并将其唤醒以继续执行。 Linux依靠等待队列(wait queue)来进行进程同步,其允许进程在某个条件满足前进入睡眠,并在条件满足时由驱动进行唤醒,避免CPU忙等。 等待队列 基本的等待队列包括: 事件(event):通常是 硬件中断、数据可用 或
2025-03-26
嵌入式(Linux开发)

Linux中断机制

设备树中断信息节点 IMX6ULL和IMX6UL的中断控制器呈兼容关系,即IMX6ULL继承IMX6UL的GIC节点信息。在imx6ul.dtsi中有: 12345678910111213141516171819intc: interrupt-controller@a01000 { compatible = "arm,gic-400", "arm,cort
2025-03-26
嵌入式(Linux开发)

Linux内核定时器

新版本Kernel下定时器API得到了比较好的优化,以正点原子阿尔法基于4.4版本kernel的旧版API为例做对比: 定时器回调函数: 旧版: 12345678void timer_function(unsigned long arg) { struct timer_dev *dev = (struct timer_dev *)arg; static int sta = 1; /*
2025-03-26
嵌入式(Linux开发)

Linux并发与竞争

原子操作 原子操作能够在无锁条件下实现线程安全操作,避免多个线程同时修改变量导致数据竞争。比较适用于简单的计数或标志变量等小型共享数据。但是原子操作只能保证单个原子变量的原子性,不能保护复杂数据结构。并且虽然其不会导致线程阻塞,但可能导致活锁,即多个线程不断重试并竞争CPU资源。 驱动中通过原子操作来保护进程的方式为: 在设备结构体中声明原子变量 1234struct gpioled_dev
2025-03-24
嵌入式(Linux开发)

Linux字符设备驱动框架

字符设备 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。最常见的点灯、按键、IIC、SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。 字符设备驱动工作流程 加载/卸载驱动模块 Linux的驱动有两种工作方式: 驱动编译进kernel,kernel启动时自动运行驱动程序 驱动编译为模块(
2025-03-14
嵌入式(Linux开发)

IMX6ULL Linux内核移植

准备工作 网络设置 关闭主机的Ubuntu的防火墙: 1sudo ufw disable 确认VMWare使用桥接模式,主机、虚拟机和开发板三者处于同一网段,如: 主机:192.168.1.100 虚拟机:192.168.1.105 开发板:192.168.1.103 (DHCP获取) 在uboot下,开发板ping虚拟机和主机、虚拟机ping主机应当都能ping通。未加载Linux内核前
2025-03-11
嵌入式(Linux开发)

NXP 官方u-boot移植和启动过程

官方U-Boot下载 Github 下载后拷贝tar.bz2至Linux,然后tar -vxjf U-boot工程目录 除了文件夹之外,还有一些文件: 验证defconfig cd /configs/,确认存在有I.MX6ULL的配置文件: 新版本uboot中mx6ull_14x14_evk_defconfig用于传统的非安全启动(Non-Secure Boot)模式,而mx6ull_
2025-03-07
嵌入式(Linux开发)

IMX6UL DDR3配置

RAM和ROM RAM:Random-access memory,随机存储器,随时读写,速度快,掉电后数据丢失。内存条即为常见的RAM。ARM中栈、堆(malloc申请的内存)、全局区(.bss段、.data段)都存放在RAM中。 ROM:Read-only memory,只读存储器。容量大,速度慢,掉电后数据留存。 对于IMX6U,256/512MB的DDR3为RAM,512MB的NANF
2025-03-05
嵌入式(Linux开发)
12345…7

搜索

Hexo Fluid