驱动
文章平均质量分 79
驱动开发相关文章
OopspoO
be better
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux内核学习——模块机制
模块是内核中非常重要的机制,它为Linux内核向外提供了一个接口,其全称为动态可加载内核模块(Loadable Kernel Module)。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大有点是效率高,其缺点是扩展性和维护性相对较差,模块机制就是为了弥补这一缺点。模块是具有独立功能的程序,他可以被单独编译但是不能单独运行。他在运行时被连接进内核作为内核的一部分在内核空间运行。原创 2026-02-26 19:07:32 · 410 阅读 · 0 评论 -
Linux内核学习——进程管理
写时复制(copy on write,COW)技术就是父进程在创建子进程时,不需要复制进程地址空间的内容给子进程,只需要复制父进程的进程地址空间的页表给子进程,这样父子进程就共享了相同的地址空间。start_kernel()上来就会运行 set_task_stack_end_magic(&init_task)创建初始进程。内核线程(Kernel Thread)其实就是独立运行在内核空间的进程,它和普通用户进程的区别在于内核线程没有独立的进程地址空间,它只能运行在内核空间,和普通进程一样参与到系统的调度中。原创 2026-02-26 19:07:00 · 894 阅读 · 0 评论 -
Linux内核学习——同步管理
u8 pending;u8 locked;#endif。原创 2026-02-26 19:02:48 · 1027 阅读 · 0 评论 -
Linux驱动学习——进程管理
编写一个用户进程,使用setpriority()来修改进程的优先级,然后使用getpriority()函数验证。编写一个用户程序,限制该程序的一些资源,比如进程的最大虚拟内存空间等。使用daemon函数,创建一个守护进程。会在指定的目录下每5s转存下内核日志。关于进程管理的介绍参考。原创 2026-02-26 11:38:00 · 384 阅读 · 0 评论 -
Linux驱动学习——内存管理
mem_map[]`数组来统计当前系统有多少个空闲页面、保留页面、swapcache页面、slab页面、脏页面、活跃页面、正在回写的页面等。分配一个物理页面,然后输出该物理页面的物理地址,并输出该物理页面在内核空间的虚拟地址。Linux 内核对每个物理页面都采用struct page。在Linux内核中,可以通过。来分配物理页面,也可以通过。原创 2026-02-09 23:59:08 · 481 阅读 · 0 评论 -
lubancat-A1
LubanCat-A1是野火科技基于全志(Allwinner) H618设计的一款低功耗、高性能单板电脑。LubanCat-A1使用了一颗包含四核Cortex-A53处理器、Arm Mali-G31 MP2图形处理器的SOC, 搭配千兆网口、HDMI、USB2.0等外设接口。LubanCat-A1板载了AW869A双频WiFi6+BT5.0无线模块,支持1*1 IEEE 802.11a/b/g/n/ac/ax WLAN 标准和BT 5.0。原创 2026-01-25 19:55:33 · 179 阅读 · 0 评论 -
香橙派 Orange Pi Prime
Orange Pi Prime采用了全志H5 Cortex-A53四核64位高性能处理器,集成2GB DDR3内存、WiFi+蓝牙、DC供电等。Orange Pi Prime集成了千兆以太网,RJ45板载网络、板载存储、LED指示灯,Low-Level外设,并且兼容树莓派GPIO口,拥有独特的调试串口等。参数。原创 2026-01-19 22:00:43 · 171 阅读 · 0 评论 -
万象奥科HD-RK3506-MINI
RK3506G 是一款高性能的三核 Cortex A7 应用处理器,专为智能语音交互、音频输入/输出处理、图像输出处理以及其他数字多媒体应用而设计。内置 2D 硬件引擎和显示输出引擎,以最小化 CPU 负载,满足图像显示需求。内置丰富的外设接口,如 SAI、PDM、SPDIF、音频 DSM、音频 ADC、USB2 OTG、RMII、CAN 等,可以满足不同的应用开发需求,降低硬件开发复杂性和开发成本。RK3506G 具有高性能的存储器接口,能够支持高要求的存储器带宽。原创 2026-01-15 22:58:51 · 365 阅读 · 0 评论 -
RS485简介
RS-485(目前称为EIA/TIA-485,RS是Recommend Standard的缩写)是通信物理层的标准接口,是一种信号传输方法,是OSI(开放系统互联)模型的第一级。RS-485是为了扩展RS-232接口的物理能力而创建的。串行EIA-485连接使用两根或三根电缆完成:一根数据线、一根反向数据线,以及通常的一根零线(地,0V)。通过这种方式,发射器和接收器使用22或24 AWG实心电缆的双绞线交换数据。这里的主要思想是通过两根电线传输一个信号。原创 2025-09-14 23:10:37 · 2152 阅读 · 0 评论 -
Linux驱动程序——带缓冲区的简单虚拟设备
入下图所示,一个简单的虚拟设备只有一个缓冲区或者FIFO的部件,实现了一个先进先出的缓冲区。用户程序可以通过wirte()函数把用户数据写入这个虚拟设备的FIFO中,还可以通过read()函数把虚拟设备上的FIFO数据读出到用户空间的缓冲区里面。用来将用户空间的数据写入环形缓冲区中,其中参数fifo表示使用哪个环形缓冲区;type表示缓冲区中数据的类型;Linux内核实现了一个称为KFIFO的环形缓冲区的机制,它可以在一个读者线程和一个写者线程并发执行的场景下,无需使用额外的锁来保证环形缓冲区的数据安全。原创 2025-02-10 12:12:10 · 428 阅读 · 0 评论 -
linux驱动程序——入门
内核的模块装载器里保存有内核的版本信息,在装载模块时,装载器会比较所保存的内核vermagic与此模块的modinfo段里保存的vermagic信息是否一致,两者一致时,模块才能被装载。Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作(建立设备文件、分配内存等),在驱动程序中需提供相应函数来处理驱动初始化工作,该函数须使用。Linux系统在退出是需卸载Linux驱动,卸载过程中进行一些退出工作(删除设备文件、释放内存等),在驱动程序中需提供相应函数来处理退出工作,该函数须使用。原创 2023-11-05 22:53:10 · 859 阅读 · 0 评论 -
Linux驱动程序——简单字符设备驱动
可以看到,内核模块在初始化时输出了系统分配的主设备号238,以及次设备号0。上面已经完成了和内核相关的事情,接下来需要编写一个用户测试程序操作该字符设备。函数的输出日志,说明测试程序成功操作了测试驱动。节点信息,看到了生成了名称为。的设备,主设备号为238。可以看到,日志里面有。原创 2024-06-20 00:26:51 · 547 阅读 · 0 评论
分享