摘要:"调试难度本来就是写代码的两倍. 因此, 如果你写代码的时候聪明用尽, 根据定义, 你就没有能耐去调试它了." --Brian Kernighan1 内核调试以及工具总结内核总是那么捉摸不透, 内核也会犯错, 但是调试却不能像用户空间程序那样, 为此内核开发者为我们提供了一系列的工具和系统来支持内核
阅读全文
摘要:时间:2019-01-17 本文章向大家介绍Linux kernel 配置选项,主要包括Linux kernel 配置选项使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 <!-- article_left_top_banner --> General
阅读全文
摘要:大量可用的引导装载程序(bootloader)、规模缩小的分发版(distribution)、文件系统和 GUI 看起来可能太多了,但是这些丰富的选项实际上是一种恩赐,允许您调整开发或用户环境以完全符合您的需要。 许多 Linux 改良品种迎合了嵌入式/实时市场。它们包括 RTLinux(实时 Li
阅读全文
摘要:Minicom:Linux下的终端程序,用于通过串口进行通信,在嵌入式Linux系统中,可以用于主机与目标系统通信,实现串口控制台的功能。 DHCP: 动态主机配置协议。运行实现该协议的服务的主机,通过对客户发起的DHCP请求进行应答,可以动态的配置客户机的IP地址等网络信息。 TFTP: 一种FT
阅读全文
摘要:由于系统调用都是从调用中断开始的,所以我们还是从中断讲起. 关于中断: Intel386认识两种事件类:异常(exception)与中断(interrupt)。两者都会强制性创建一个进程或任务。中断能在任何不可预料的时间发生,来响应硬件的信号,是硬中断;而异常是由指令执行而产生的,是软中断。 386
阅读全文
摘要:理发师问题: 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉 一个顾客到来时,它必须叫醒理发师 如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。 解法: 引入3个信号量和一个控制变量: 1)控制变量waiting用
阅读全文
摘要:Part 1:Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发
阅读全文
摘要:一、 在Linux 系统中,对硬件判别的标识的依据 在LinuxSir.Org讨论区,我们经常看到有些弟兄这样来描述自己的硬件“我的显示卡是XXX牌子的,Linux不支持怎么办?”。其实这样描述是 最差的,大家也根本没有办法提供帮助;因为Linux对硬件的识别是以为芯片组的厂商为依据的,而非硬件的品
阅读全文
摘要:I/O空间 I/O端口和I/O内存 首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间。 设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三
阅读全文
摘要:一、什么是下半部 中断是一个很霸道的东西,处理器一旦接收到中断,就会打断正在执行的代码,调用中断处理函数。如果在中断处理函数中没有禁止中断,该中断处理函数执行过程中仍有可能被其他中断打断。出于这样的原因,大家都希望中断处理函数执行得越快越好。 另外,中断上下文中不能阻塞,这也限制了中断上下文中能干的
阅读全文
摘要:如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当 的属性 集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中
阅读全文
摘要:介绍关于本文档udev面向2.6以上的linux内核在用户空间提供动态的/dev下固定设备命名方案. 之前的/dev实现: devfs现在已被废弃,udev成为继任者. udev vsdevfs是一个敏感的谈话内容,在进行比较之前你应该读一下这个文档(http://kernel.org/pub/li
阅读全文
摘要:信号量与自旋锁 内核同步措施 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。 Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今
阅读全文
摘要:一、 什么是ioctlioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数
阅读全文
摘要:完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所有的工作。 GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了。 我不是一个狂热的自由软件份子,虽然我很喜欢自由软件。这篇文章也
阅读全文
摘要:1 系统调用意义 Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。 一般的,进程是不能访问内核的。它不能访问内核所占内存空间也不能调用内核函数。CP
阅读全文