
Linux
文章平均质量分 91
林零七
这个作者很懒,什么都没留下…
展开
-
【Linux】块设备驱动
块设备驱动程序不同于字符设备驱动程序,它需要将每一次的“读/写”操作放入队列进行优化后在执行,这样做是为了提高读写的效率。比如:在硬件中里有两个磁盘A和B,软件需要读A的磁盘,再跳到磁盘B写,然后跳回A读,这里要两次跳转,当这个跳转次数多的时候将会十分耗时间。而块设备驱动程序将这次操作优化成:将读A磁盘的所有操作完成后在去磁盘B写,这样只需要跳转一次,有点类似与电梯算法(将同次需要下的人运输下去,然后再运输需要上的人)。 接下俩讲讲块设备的框架:当上层App操作文件(read/...原创 2020-07-01 22:34:49 · 203 阅读 · 0 评论 -
【Linux】输入子系统——分离分层概念
在输入子系统里input.c会向上提供给App一个接口,将底层相关的代码分层开来,而底层的代码有分离出硬件相关和软件相关的代码。 了解了概念,在分离分层概念的基础上产生了总线设备驱动模型(bus_dev_drv),在总线bus下有两个结构体device(硬件相关)和driver(驱动相关),分别将device和driver放入dev链表和drv链表。当硬件发生变化的时候,device_add和driver_register会分别取出各自的链表用.match函数进行比较,如果...原创 2020-07-01 22:25:53 · 309 阅读 · 0 评论 -
【Linux】USB驱动程序
我们把USB设备插入电脑的时候,比如安卓手机,电脑会弹出“发现XXX设备”并自动或者弹出对话框选择安装驱动程序,这一系列的操作都是USB总线驱动程序实现的,总的来说,USB总线驱动程序负责识别USB设别并为之找到对应的驱动设备。而USB总线驱动程序之所以能够是被USB设备的种类取决于PC与USB设备之间的规范:当USB插入的时候,USB总线驱动程序会发出命令,等待USB设备返回相关信息,USB设备收到命令后会根据规范返回自己的信息。 那么在USB总线驱动程序识别由USB设备插入...原创 2020-06-27 23:43:09 · 303 阅读 · 0 评论 -
【Linux】输入子系统通俗讲解
在字符设备驱动程序里,当我们要调用某个设备驱动的时候需要在应用层做open(“dev/buttons”,O_RDWR)类似的打开操作,这时候需要明确知道“dev/buttons”。但是在实际的开发过程中,应用层不会这么明确的写,比如Qt程序,那么应该如何处理?就要使用Linux现成的驱动:输入子系统 在字符设备里,我们需要自己指定major主设备号、file_operation结构体、在入口出口函数中注册和注销这个结构体。而在输入子系统中,这些都是现成的系统写好的。...原创 2020-06-27 15:10:43 · 269 阅读 · 0 评论 -
4.3【根文件系统】构建根文件系统
一、创建文件 1、跳转到/work/nfs_root/first_fs查看:cd/work/nfs_root/first_fs 2、查看文件下的主设备号和次设备号:ls dev/console /dev/null -l 会查看到以下内容crw------- 1 root root 5,1 2010-11-26-07;47 /dev/co...原创 2019-08-07 17:56:19 · 229 阅读 · 0 评论 -
4.2【根文件系统】init进程分析
一、busybox:ls,cp等命令的组合 执行:ls"/sbin/init 会发现/sbin/init-->../bin/busybox 所以"/sbin/init"也是在busybox进程中,所以要分析这些,需要进入busybox中分析二、uboot启动内核,内核启动应用程序 内核----->../sbit/init/----->应用程序...原创 2019-08-07 17:55:26 · 287 阅读 · 0 评论 -
4.1【Linux】启动第一个程序
一、分析init_post 从内核启动流程可知,start_kernel最后会启动init_port来执行应用程序的代码(linux-2.6.22.6\init)static int noinline init_post(void){ ...省略...if (sys_open((const char __user *) "/dev/console", O_...原创 2019-08-07 17:51:18 · 446 阅读 · 0 评论 -
3.5【Linux】字符设备驱动程序
一、驱动框架搭建①写出led_open、led_read②怎么告诉内核 --->定义一个file_operations结构,填充它Linux下的file_operations结构体(linux-2.6.22.6\include\linux)struct file_operations {struct module *owner;lo...原创 2019-08-07 17:38:00 · 342 阅读 · 0 评论 -
3.3【U-boot分析】内核启动流程分析
内核的最终目的:运用应用程序一、内核编译 一)解压缩:tar xjf linux-linux-2.6.22.6.tar.bz2 一)打补丁: 用 patch 命令, -p 是指需要忽略的目录层数。如果打补丁,在源代码里有显示。 --- 是指源文件。 +++ 是指修改过的文件。 ...原创 2019-08-07 17:20:54 · 322 阅读 · 0 评论 -
3.2【U-boot分析】从零手写BootLoader
一、BootLoader的目标是启动内核 1)从Flash上把内核读入内存 a)能读取Flash b)初始化内存/时钟/其他 2)启动 a)设置参数 b)跳转执行二、最简单的BootLoader编写步骤 1...原创 2019-08-07 17:17:11 · 477 阅读 · 0 评论 -
3.1【U-boot分析】Bootloader概念及U-boo分析
一、了解BootLoader BootLoader(引导程序)是硬件上电之后运行的第一段程序,主要用来初始化硬件设备。BootLoader的实现依赖于硬件设备。所以在移植BootLoader的时候需要进行配置。uboot是BootLoader中最著名的一种,它支持的CPU架构比较多,所以被使用的范围也比较广。但是即使这样也不能拿来主义,需要更改相关配置后才能够移植到自己所使用的的板子上。...原创 2019-08-07 17:13:53 · 427 阅读 · 0 评论 -
4.4【U-boot根文件系统】 挂载虚拟根文件系统
继续完善根文件系统 cd first_fs/ 创建proc目录:mkdirproc 挂载虚拟根文件系统 加一个配置文件:vi etc/inittab console::askfirst:-/bin/sh //之前...原创 2019-08-08 15:24:03 · 362 阅读 · 0 评论 -
如何在Windows下使用make等命令
一、下载安装MinGWMinGW下载网页:http://sourceforge.net/projects/mingw/files/latest/download?source=files二、设置环境变量右击计算机->属性->高级系统设置->环境变量,在系统变量中找到PATH,将MinGW安装目录里的bin文件夹的地址添加到PATH里面,(注意:PATH里两个目录之间以...原创 2019-06-13 15:55:00 · 12352 阅读 · 6 评论 -
2.3【裸机部分】掌握ARM芯片时钟体系
一、时钟体系结构 CPU-FCLK:400MHZ AHB总线-HCLK:136MHZ APB总线-PCLK:68MHZ 文档解释: 中文翻译:FCLK、HCLK和PCLK,FCLK由ARM920T使用。HCLK用于AHB总线,由ARM920T、内存控制器、中断控制器、LCD控制器、DMA和USB主机块。PCLK用于APB总线,用于WDT、...原创 2019-04-06 12:24:48 · 515 阅读 · 0 评论 -
2.1【裸机部分】点亮LED灯
目录一、所需知识点储备二、点亮LED功能实现四、三个LED循环点亮五、按键点亮LED一、所需知识点储备 常见二极管和三极管 二极管:当A点电流大于B点时,二极管从左往右导通 三极管:左图:当A点电流大于B点时,电流从上往下走,三极管导通; ...原创 2019-04-04 16:34:36 · 641 阅读 · 0 评论 -
1.0【熟悉开发板】步骤和常见问题
目录一、熟悉使用串口连接二、使用eop烧写裸板程序三、使用uboot烧写裸板程序一、熟悉使用串口连接 1、插入电源线和serial插口,连接电源和电脑 2、电脑会自动加载驱动程序,如果没有则使用PL2303_Prolific_DriverInstaller_v1.7.0.exe软件将加载驱动 3、使用MobaXterm_Personal_10.4...原创 2019-04-04 16:29:00 · 463 阅读 · 0 评论 -
1.1【熟悉开发板】详解Linux命令
目录一、Linux命令所需要的单词二、常用Linux命令解释记忆三、常见命令分析四、vi编辑器五、linux进阶指令一、Linux命令所需要的单词单词 翻译======================directory 目录list ...原创 2019-02-11 20:47:29 · 357 阅读 · 0 评论