- 博客(92)
- 资源 (14)
- 收藏
- 关注
原创 Linux内核wait_event_interruptible/ wait_event_interruptible实现简介
Linux内核wait_event_interruptible/ wait_event_interruptible实现简介
2022-10-04 02:02:05 7674 2
原创 好文值得收藏:LINUX内核--信号实现原理
信号简介信号在最早的UNIX系统引入,用于进程间通信,是内核的一种软件机制,通过内核代码实现的。内核对信号的响应机制有点像中断,信号来了后需要打断当前进程的执行,去执行信号处理函数,执行完毕后,再恢复原来的上下文继续执行。内核对信号是如何管理的?信号在内核中是如何响应的?当前进程执行过程中,代码执行流是如何跳转到信号处理函数的?执行完信号处理函数后,又是如何再跳回来的?请看下文,下文是基于X86处理器,4.18的内核为基础写的。信号最原始的作用信号是很短的消息,...
2021-09-16 23:54:18 2188
原创 使用pid namespace后host pid与容器pid的关系
当系统中某个进程使用新的pid namespace后,就会有两个pid号,一个是这个进程在host中的pid号,一个是这个进程在其容器空间的pid号,那么这两个pid号之间是什么关系呢?如何内核中通过其中一个pid号查找到另外一个号呢?如何通过任意一个pid号找到进程的task_struct? 先看一些相关的内核结构,内核描述一些功能的结构都是相互联系的,搞清楚这些结构的联系,就可以了解它...
2019-01-30 23:55:07 2245
原创 汇编学习之一个最简单的c程序对应的汇编
一、基础了解对于系统工程师来说,汇编属于一种基本功,应长期关注。在一些性能分析、问题定位时,有时需要读汇编代码,在学习linux内核过程中,也需要读汇编代码。所以先以x86为例,学习一个最简单的c语言程序对应的汇编。基础知识介绍:首先了解一下x86处理器拥有的寄存器x86_64寄存器如下所示: 0-63 0-31 0-15 ...
2019-01-19 23:38:14 3181 3
原创 xilinx uboot网卡驱动分析
在大体分析代码的时候先讲一下基础知识,这也是我之前不懂的地方。1、MAC控制器、网卡、PHY、MDIO、mii、gmii、rgmii概念扫盲 网卡在功能上包含OSI模型的两个层,数据链路层和物理层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制
2016-10-29 23:57:56 4604
原创 openwrt下挂载4g模块网络配置
etc/config/networkconfig interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0'config interf
2015-11-16 18:48:46 9647
原创 linux内核之系统调用
用户应用程序访问并使用内核所提供的各种服务的途径,就是系统调用,系统调用接口层作为内核和用户应用程序之间的中间层,扮演了一个桥梁,系统调用把应用程序的请求传达给内核,内核处理完后,把结果返回给应用程序。
2015-08-12 19:50:07 525
原创 GDB调试
最近要用gdb调试跟踪chromium源码,记录下gdb的一些使用,shell,gdb,makefile好像是linux开发必备啊,看了一些面试记录,貌似这些常见的常用的一定要非常熟练的掌握了,不然到时候就不好了。1.进入调试状态在终端下输入gdb,然后进入gdb控制台,然后输入 file chrome ,.或者直接输入 gdb chrome ,进入gdb调试2.调试带参数程序
2015-08-12 19:03:36 856
原创 linux内核之系统初始化
linux内核的总体流程主要为:系统上电后,先进行(1)cpu自身的初始化自身初始化后,cpu从某个固定位置取得指令执行,该指令为跳转指令,会跳转到bios指令的首部(2)加电自检这个是bios的第一个任务,即所谓的post power on self test,完成系统的内存检测、系统总线检测等。(3)加载内核引导程序post之后,会读取启动设备的第一个扇区,即51
2015-08-11 22:49:50 2113
原创 C++之异常处理学习笔记
看了国嵌的深度实践c++视频,记录下,C++中提供了try和catch语句块对可能产生异常的代码进行分开处理。Try语句块处理正常逻辑。Catch语句块处理异常。C++语言中通过throw语句引发一个异常。Throw语句用于将异常对象抛出,throw语句将异常抛出,如果在当前函数中没有try … catch语句能够处理该异常,则当前函数将立即返回。异常被传递到上层调用函数,仍然需要try
2015-04-27 22:02:01 530
原创 C++经典问题解析
看了国嵌的c++深入实践视频,唐老师讲的非常好,感谢唐老师,记录一下1.什么是符号表符号表是编译器在编译过程中产生的关于源程序中语法符号的数据结构。如常量表、变量名表、数组名表、函数表等符号表是编译器自用的内部数据结构符号表不会进入最终产生的可执行程序中***只有用字面量初始化的const常量才会进入符号表Const int i =1;对const常量进行引用取
2015-04-27 14:59:43 805
原创 C++之泛型编程笔记
不考虑具体数据类型的编程模式就叫泛型编程。1. 函数模板提供一种特殊的函数可用不同类型进行调用看起来和普通函数很相似似 ,区别是类型可被参数化。定义为template template告诉编译器即将开始泛型编程,typename T告诉后面的程序,T是一个泛指类型。void Swap(T &a , T &b){T t = a;a = b;;a=t;
2015-04-27 09:44:51 468
原创 C++之多态与继承学习笔记
如果子类定义了与父类中原型相同的函数会发生什么?例如class Parent{public: void print() { cout }}; class Child : public Parent{public: void print() { cout }};使用时
2015-04-22 09:00:47 472
原创 C++之操作符重载学习笔记
看了国嵌的c++视频,记录一下C++标准库并不是C++语言的一部分,C++标准库是由C++语言编写而成的类库和函数的集合,C++标准库中定义的类和对象都位于std命名空间中,C++标准库的头文件都不带.h后缀,C++标准库涵盖了C库的功能,C库中头文件对应C++中的 C++标准库预定义了多数常用的数据结构,如字符串,链表,队列,栈等。 C++中通过operator关键字可以
2015-04-20 16:58:18 655
原创 C++之函数的升级
1.内联函数C++中使用inline关键字声明内联函数,推荐使用其代替宏代码片段。例如:Inline int func(int a ,int b ){Return a}宏代码只是预处理器进行文本的替换,而内联函数具有一般函数的特征,有参数检查,返回类型检查功能,更加安全。程序员可以加inline对编译器进行请求,所以编译器可以拒绝请求。有些c++编译器可以进行编
2015-04-18 09:10:08 464
原创 exynos4412使用MFC硬件编解码为H246格式数据
很多人都有使用三星的处理器的mfc硬件编解码模块,但是一般新手就是无从下手,不知道怎么搞,找不到它的API函数,其实,mfc属于处理器内部的一个模块,所以它的驱动是不用我们关心的,一般都可以直接使用,不用修改内核,,只需要找到它的API函数使用就可以了。 去哪找API函数呢,,从安卓源码里,我这次使用的linux内核为linux3.5内核,对应的安卓系统为android4.2.2,
2015-04-16 10:49:19 3515 1
原创 C++之引用
在C++中新增加了引用的概念,引用可以看作一个已定义变量的别名引用的语法:Type& name = var;注意:普通引用在声明时必须用其它的变量进行初始化。引用作为其它变量的别名而存在,因此在一些场合可以代替指针引用相对于指针来说具有更好的可读性和实用性经典实例:Void swap(int &a,int &b){Int t =a ;a=b;B=t;}
2015-04-16 10:04:04 604
原创 linux内核配置编译以及启动概述
拿到一个linux内核后,要使用它先要进行配置,编译,选择linux运行的处理器架构,比如arm,在arch/arm/configs目录下,有很多arm架构的linux配置文件,可以在内核顶层目录下,使用,make xxx_defconfig,或者拷贝arch/arm/configs目录下的配置文件,到内核源码顶层目录下的.config,然后执行make menuconfig进行配置。总之
2015-02-24 18:35:51 726
原创 移植linux3.7.4系统到itop4412开发板记录
最近要移植linux3.7.4系统到itop4412开发板,好长时间没有移植系统了,今天弄了一下,都感觉手生了。首先先编译一下内核试下,然后再慢慢移植各驱动1.下载linux内核源码2.进入内核源码目录,修改makefile中的arch =arm 交叉编译器为我们自己的交叉编译器3.到arch/arm/configs目录下,拷贝4412的默认配置文件到内核根目录下的.config,
2015-01-29 00:18:56 2829
原创 live555实现直播
网上有大神已经把源码贴出来了,我正在实验,http://www.cnblogs.com/mlj318/archive/2013/01/23/2872932.htmlhttp://blog.csdn.net/firehood_/article/details/16844397感谢这俩大神的分享这位大神的博客讲LIVE555讲的不错http://blog.csdn.net/ni
2015-01-09 00:19:08 1345
原创 linux下的cmos摄像头驱动设计2-应用程序的调用与驱动程序的关系
上一篇写了,摄像头驱动的注册过程,这次写写应用程序的调用与驱动程序的关系,遵循V4L2架构的应用程序主要由几个ioctl组成,其实也比较简单,有时候驱动写的不标准,应用程序按标准的操作操作就不行,出不来图像,这时需要跟踪驱动程序,看看哪个地方出错了,首先,要打开设备 1.fd = open(dev_name, O_RDWR /* required */| O_NONBLOCK, 0)
2014-12-01 00:44:47 1808
原创 linux下的cmos摄像头驱动设计1-video驱动的注册
linux下的cmos驱动设计分析:cmos摄像头驱动设计主要分为几部分:1.ARM处理器摄像头接口部分,2.通过i2c接口控制的摄像头芯片部分,被称为senor部分,3.就是上述两部分直接的联系部分,写在板级文件mach-boardname.c文件中。其实这个摄像头驱动不是太难,摄像头驱动设计的目标就是,ARM处理器控制摄像头芯片,使其能够采集图像然后处理器把图像读出来。围绕着这个目
2014-11-30 21:23:29 3483 1
原创 super4412下调试cmos驱动是的nternal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM问题解决
一直都觉得友善之臂的4412开发板的cmos硬件接口部分有问题,
2014-11-01 17:59:08 21150
原创 ubuntu14.4下安装4412交叉编译器
tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C/
2014-10-21 14:51:01 1342 1
原创 asoc 音频驱动学习笔记3
Asoc 驱动中的platform 部分的dai部分在sound/soc/s5pv2xx目录下,有关于处理器方面的asoc驱动部分,包括dma相关的和i2s部分,先看i2s部分吧,dma部分貌似简单,好找在s5pc1xx-i2s.c文件中,这里驱动名为s3c64xx,应该是210的i2s部分和6410差不多吧
2014-08-26 23:44:49 1302
转载 画PCB板经验总结
A. 创建网络表1. 网络表是原理图与PCB的接口文件,PCB设计人员应根据所用的原理图和PCB设计工具的特性,选用正确的网络表格式,创建符合要求的网络表。2. 创建网络表的过程中,应根据原理图设计工具的特性,积极协助原理图设计者排除错误。保证网络表的正确性和完整性。3. 确定器件的封装(PCB FOOTPRINT). 4. 创建PCB板根据单板结构图或对应的标准板
2014-07-10 15:16:37 10085
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人