嵌入式Linux开发
文章平均质量分 91
嵌入式Linux开发
zhbi98
学习编程并不是一件轻而易举的事情,是需要时间的,在快时代背景下,我们其实更应该保持耐心,多给自己一点时间,
罗马不是一日建成的,沉住气做最优
展开
-
Linux 并发与竞争(二)
协调好 Linux 并发导致的竞争问题,除了可以使用原子操作,自旋锁(含包含读写锁,顺序锁)之外还可以使用信号量,互斥体。有这么多的机制可用,它们各有特点并不是相互取代的关系,这些里面因该没有一种机制是通用的,所以这些机制都要了解(如同学习编程语言,语法都要会,根据逻辑要求使用不同的语法,这就没有学习哪些语法就够了的说法),不用考虑学习哪种机制更好,根据场景结合这些机制的特点去使用这些机制。原创 2023-11-06 21:46:28 · 389 阅读 · 0 评论 -
Linux并发与竞争(一)
在线程中使用 “spin_lock_irqsave/spin_unlock_irqrestore”,在中断中使用 “spin_lock/spin_unlock”。原创 2023-10-29 09:43:25 · 518 阅读 · 0 评论 -
Linux驱动设备号分配与自动创建设备节点
对于 Linux 系统,为了识别和管理设备,每个设备便使用一个唯一的编号来标记设备,每个注册到内核的设备都需要一个编号,这个编号就是设备号,为了细分设备号分为主设备号和次设备号。由于 Linux 的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,所以我们查看文件的详细信息就可以看到设备的设备号。可以看到设备文件权限不再像普通文件那样为rwx了,而是变成了crw第一个字符为c的表示字符设备。原创 2023-10-04 22:01:28 · 874 阅读 · 0 评论 -
Linux驱动__init和__exit的作用
_section__section可以看到了 “__init” 和 “__exit” 是一个宏定义,被定义为了 “__section” 宏定义,这个 “__section” 宏定义使用到了 GCC 编译器提供的 “__attribute__” 指令,这个指令用来设置一些变量或函数的属性,比如这里就是用来设置 section 这个属性。原创 2023-09-25 13:06:22 · 539 阅读 · 0 评论 -
Linux设备树OF操作函数
在 Linux 内核中用 struct device_node 表示设备树的数据结构,它是一种树形结构,该类型如下。#endif。原创 2023-09-18 22:33:29 · 374 阅读 · 0 评论 -
Linux设备树详解
在 Linux 没有设备树之前 ARM 架构的板级芯片硬件细节通过 C 源码的形式编写在 “arch/arm/plat-xxx” 和 “arch/arm/mach-xxx” 形式命名的文件中,不同的硬件对应不同的文件,这些不可复用的文件参杂在 Linux 内核源码目录中。为了从 Linux 内核源码中去除芯片描述代码就引入了设备树,设备树的本质是不再使用 C 源码去描述芯片,而是使用设备树DTS结构化脚本语法去描述各种芯片。原创 2023-08-14 11:59:04 · 1622 阅读 · 1 评论 -
嵌入式Linux应用依赖库打包详解
在嵌入式 linux 中运行过运用程序的小伙伴因该多多少少都遇到过在 Linux 终端启动运用程序时终端输出 “-sh ./xxx: not found” 的问题,这是应用程序依赖的动态库缺失导致的,验证该问题的办法是使用静态编译去编译应用程序(静态编译会将应用程序依赖的库和应用程序本身打包在一起,所以静态编译的应用程序体积很大,所以一般不使用)。Linux 系统缺失依赖库时可以使用静态编译或在 Linux 根文件系统中添加程序依赖的库文件,静态编译只需要给 gcc 添加-static。原创 2023-07-09 14:29:48 · 1417 阅读 · 0 评论 -
Uboot驱动Linux驱动的区别
我们在学习或移植嵌入式 Linux 系统的时候都会接触到 Uboot 驱动移植和 Linux 驱动开发,此时对于嵌入式 Linux 初学者来说不免会有疑问,例如:为什么 Uboot 已经有相关芯片平台以及外部硬件设备的驱动,Linux 系统还要使用使用设备树,还要集成驱动,下面来解释一下。原创 2023-07-01 09:00:55 · 906 阅读 · 0 评论
分享