- 博客(30)
- 资源 (8)
- 收藏
- 关注
原创 内核Panic和soft lockup分析及排错
一、概述众所周知,从事linux内核开发的工程师或多或少都会遇到内核panic,亦或者是soft lockup,前者多半是因为内存泄露、内存互踩、访问空地址等错误导致的,而后者可以肯定是因为代码的逻辑不当,进而导致内核进入一个死循环。问题可大可小,当问题足够隐蔽又难以复现时通常会让程序猿们十分抓狂,我前些日子有幸体验了一把,足足花费了我一周时间才成功找到问题,为了让自己以后能从容的面对内核pa
2015-08-24 00:09:05
12762
2
原创 CloudXNS探索之旅
距离使用CloudXNS已经有大半年时间了,在这段时间里感慨颇多,经历了刚开始新网注册域名时的内心忐忑,到配置NS时的一知半解,再到使用CloudXNS托管域名时的小心翼翼,这段时间同样也见证了我如何从DNS菜鸟到初级开发人员的成长过程。
2015-06-26 15:03:26
978
原创 博客之路
不知不觉已经快有一年没写过博客了,只因一个字懒,感觉自己在无尽的代码中已经丧失了曾经学计算机的激情,取而代之的是各种无奈,各种逃避,有时候都在怀疑自己到底适不适合学计算机,怎么感觉能力就不见提高呢!回首这一年,代码分析从linux的Netfilter框架,到Android的进程间通信Binder机制,再到现在DirectFB,感觉博大精深中却迷雾重重,因为涉及到所谓的项目机密,不方便深入的说。Ne
2012-03-24 14:56:16
646
原创 使用J-link调试内核
<br />使用J-link调试内核<br />一、烧写uboot+linux内核+根文件系统<br />对于一块空白的mini6410开发板,或者对于项目所要求的需要支持netfilter框架的内核,原厂装好的内核显然不能满足需要,这时可以根据需要重新编译内核,(具体编译过程参照将iptables移植到mini2440那篇文章),将最终生成的zImage映像烧写到开发板中。<br />烧写过程采用SD卡是最简单的,<br />1、首先用光盘的tools目录下的SD-Flasher将superboot(静像
2011-05-11 20:36:00
4242
2
原创 在mini2440上搭建NAT服务器
在mini2440上搭建NAT服务器一、绑定两个IP首先仍然是想办法给一个网上绑定两个IP,一个外网IP:202.117.132.132,一个留作内部网关的内网IP:192.168.1.2,开发板上修改IP使用的命令格式如下:ifconfig eth0 202.117.132.132 netmask 255.255.0.0 route add default gw 202.117.132.1定义DNS则要使用vi编辑器编辑/etc/resolv.conf文件修改为nameserver 202.117.128
2011-05-11 20:34:00
1370
原创 移植iptables到mini2440
移植iptables到mini2440一、首先安装好交叉编译环境。 1.将板子自带的arm-linux-gcc-4.4.3放到/usr/local目录下,并用tar命令解压出来,按照/usr/local/arm/4.4.3目录路径来安放。 2.配置环境变量,在主目录下创建.bash_profile文件,在里面输入export PATH=$PATH:/usr/local/arm/4.4.3/bin。 3.需要使用交叉编译工具时执行~/. .bash_profile,或者执行source ~/
2011-05-11 20:21:00
4933
原创 NAT服务器的搭建
<br />NAT服务器的搭建<br />选择一台PC作为NAT服务器,给网卡绑定两个IP,一个内网IP,无需设置网关;另一个接口IP要可以连接internet。在实验室里默认分配的IP是202.117.132.X,而内网我们一般就使用局域网的ip网段192.168.1.X,在linux中默认只有一个IP,一般的设备名为eth0,在linux配置文件里进行相关的设置后,再创建eth0:1设备并进行相关的设置。接下来就是用iptables工具命令配置NAT服务器,最后设置局域网其他机器的IP和网关等。<br
2011-05-11 20:13:00
4257
原创 网络设备驱动学习
<br /><br />网络设备驱动学习<br />概述:本周主要学习了网络驱动层面的一些知识,最主要的学习目标是基本弄清包的发送与接收的过程,这不仅涉及到了高层的协议与机制,底层的驱动与硬件,更要理解数据包的封装与包格式。我们主要是围绕着设备驱动开发的第十六章来学习这些内容。<br />问题:对十六章进行细化后发现主要可以归结成对几个问题的把握,包括数据包的承载问题,加包头与去包头的实现,网络的框架结构,网络设备的注册与注销,数据的发送与接收流程。<br />正文:<br />一、数据包的承载问题<br
2011-03-27 18:30:00
1459
原创 开学了.....
<br /> 今天是正式开学的日子,不管上一学期学习的是好是坏,不管寒假度过的是开心还是难过,现在都要重新开始新的生活,不能再有颓废的心情,报废的身体,这一切只因我们又长大了一岁,不管是否变得更成熟,我们都要至少在别人看来是成熟的,希望自己能在本命年里一切顺利,学习进步吧,祝福自己~
2011-02-28 14:23:00
870
2
原创 分析报告:关于Linux中断初始化的分析
简介:本篇报告首先从定义以及基本概念入手介绍中断的相关知识,接着重点分析了linux内核中中断初始化的过程,本文的所有代码均依据2.6.36版内核源码。一、中断的基本概念中断最初是用来克服CPU对I/O接口采用程序查询的服务方式从而导致处理器低效率,由此而引入的一种让CPU及时响应I/O的服务方式,更通俗的来讲,就是CPU在做自己的事情,突然之间有一个硬件信号打断了CPU的执行,并要求CPU为其执行相应的代码片段。为此计算机必须有相关的软硬件来为服务提供支持,硬件方面添加了两片8259A,软件方面则体现在操
2010-12-15 11:53:00
2020
原创 Linux系统调用
<br /><br /> 这一周学的主要内容是linux系统调用,先从linux操作系统原理与应用的第6章入手,接着学习了M.TimJones的Linux系统调用再探。<br /> 提到系统调用自然想到了API(应用编程接口),linux遵循了Unix的API规范POSIX,POSIX旨在提高UNIX环境下应用程序的可移植性,更在源代码级提供了C的编程接口给操作系统的服务程序。API和系统调用的关系有两种:其一是多个API函数可能使用相同的系统调用来封装,其二是一个API函数可能
2010-12-05 21:33:00
874
原创 Linux虚拟文件系统二
<br /><br /> 这一周的前二天主要分析了师姐编的三个小程序,还有就是学习了Linux2.4.30内核文件系统学习这篇文章。<br /> VFS从根本上来说就是提供一套代码框架,根据共有的属性抽象出最关键的数据结构,面向具体的文件系统定义一系列统一的操作接口,对文件和目录抽象出的inode结构提供统一的操作接口,能对具体的文件系统进行注册和安装等。<br /> 打开文件的过程就是寻找目录节点对应的inode的过程,当根据路径找到相应的目录节点时inode中
2010-12-05 21:29:00
672
原创 Linux虚拟文件系统
p { margin-bottom: 0.21cm; }这一周主要学了文件系统的相关知识,通过学习基本上掌握了linux文件系统的结构,文件类型,以及读取模式等等,也学会怎么用命令简单的创建一个文件系统。Linux的文件系统主要有ext2、ext3、ext4,在windows下一个分区会采用的一棵目录树来管理,而linux则只有一棵目录树,除了系统安装所在分区外,不管还有多少分区,什么样的文件系统,都只是目录树下的支干。根目录下的目录结构大致为bin、dev、etc、home
2010-11-23 12:28:00
766
原创 学习内存管理实例的感想
<br /> 这一周主要看了陈老师的内存管理实例,感觉理解的很有限,实例代码的网址如下:http://home.lupaworld.com/home-space-uid-26540-do-blog-id-230202.html<br /> 师姐把这个实例拆分成了四个部分,第一部分比较简单,根据vm_area_struct结构体中的vma_next指针来完成当前进程虚存区的遍历,打印当前进程的vma,并且打印vma的标志,标志对应可读、可写、可执行,我们还可以通过当前进程的task_struc
2010-11-15 17:54:00
834
原创 师姐的嵌入式项目交流
会议记录时间:2010.11.10与会人:陈老师、两个师姐、10级的六个研究生记录人:张超会议主题:大师姐分享她的项目经验,方式主要以大家自由交流为主 大师姐一开始给我们讲了她的学习经历,让我们一定要戒骄戒躁,学习是一个过程,即便之前所学的内容很云里雾里的,但随着学习的慢慢深入以后,形势会变的渐渐明朗,就如陈老师说的,这是一个看风景的过程,也许前方有更美的风景,何必太过纠结于细节而停止不前,也许在不同时间不同经历下再回味时体会已产生质的飞跃。 师姐还给我们讲了GDB调试工具在项目中甚至在
2010-11-11 14:05:00
895
原创 Linux内存管理
这一周学习的主要内容是Linux的内存的寻址和内存管理,对应的书本就是Linux操作系统原理与应用的第二章和第四章。第二章刚开始部分回顾了寻址方式的演变过程,由最原始的4位机到后来的16位,引入了段的概念到后来的32位后,段寄存器的存在却成了向下兼容与支持保护模式的一大障碍。寄存器大概分为两大类,一类是基本结构寄存器,有通用寄存器、段寄存器、指令寄存器和标志寄存器,另一类是系统级寄存器,有控制寄存器、系统地址寄存器、调试和测试寄存器。我们所能用到的基本上是第一类寄存器,这是提供给用户可以访问的寄存器,而第二
2010-11-11 13:27:00
746
原创 内核等待队列的学习
p { margin-bottom: 0.21cm; }这周主要学习了设备驱动开发详解中的第八章阻塞与非阻塞I/O,不过对于阻塞和非阻塞部分总体上理解的还很肤浅,对于其中所涉及到的好几个头文件以及源代码之间的关联还缺乏很大程度的了解。对这部分的学习涉及到的文件大致有:wait.h、wait.c、sched.c、spinlock.h和list.h等。我觉得在学习过程中首先应该把所要用到的几个类型搞清楚,包括等待队列头:struct__wait_queue_head {spi
2010-11-01 20:40:00
784
原创 操作系统的学习1
上一周学习了操作系统的第一、二章,第一章主要是相关的描述性的语言,包括操作系统的发展历史,以及描述了各种任务机制的操作系统。第二章把进程之间的同步和互斥学完了,对于前面几节的相关概念有了更深层次的了解,尤其是进程的特性,以及进程状态之间的转换过程等等。对于接下来的进程同步的问题所涉及到的信号量机制,因为它的算法采用PASCAL语言描述,有的地方理解的还不到位,好在最后对于同步的几个经典问题都理解了实现算法,以及使用信号量和信号量集实现的不同之处。我基本上把进程的定义、特征、状态转换、同步互斥、以及进程同步的
2010-10-26 12:38:00
669
原创 内核中断的学习总结
<br />这一周多的时间主要学的是中断相关的内容,对于这部分的很多内容很多还是一知半解的,尤其是时钟和定时器那部分,刚开始的时候看了内核之旅的那篇博文,对中断的原理有了大致的了解,包括中断的定义,中断控制器8259A,以及中断的分类,和中断向量等等概念的了解,在后来的几天里我又看微机原理的中断部分,对中断在汇编级的实现过程有了相应的了解,我觉得在中断向量的引导过程,和中控制器的硬件实现过程对我还有所帮助,而对于用初始化命令字ICW1到ICW4来初始化中断控制器,和用操作命令字OCW1到OCW3修改相关设置
2010-10-17 21:23:00
1010
原创 LPC3250环境搭建的总结
<br /> 这一周的任务主要任务是搭建LPC3250的系统平台,以及在主机上进行相关环境的搭建,最后是将交叉编译好的内核模块加载到板子中。在整个平台搭建过程中遇到了很多的问题,第一是笔记本没有串口,另外WIN 7系统对相关工具的不兼容,对此我采用安装WIN 7下的XP Mode(XP模式)。对于整个环境搭建的详细步骤我就不想多说了,大致的环节也就是交叉编译工具的安装、内核的编译和配置、串口通信和调试的工具安装、tftp服务器的安装、NFS服务器的安装、以及相关文件的烧写,相信大家跟着实验指导上的
2010-10-07 22:10:00
2346
原创 字符设备驱动的学习总结
这个周报告本来应该是上一周交的,但之前对于这一章理解的有限,加上事情比较多也没来得及写,现在把它补上,总算把所有的报告都交了。今天再简单把第六章的内容看了一遍,也算是复习了。第六章主要学习了字符设备驱动,第一节讲了字符设备驱动的结构,最初讲了一个很重要的结构体-cdev,其中包括了kobject结构体变量(第五章有定义,但没细看),module*owner结构的指针变量(可以用作为try_module_get()和module_put()两个模块计数管理接口的变量,还可用作文件操作等),文件
2010-10-03 15:07:00
1032
原创 9月27号会议内容的补充
会议原内容:会议时间:2010.9.27 星期一会议地点:15楼会议室参加者:陈老师、刘老师以及陈老师、李老师、刘老师、王老师的研究生主题:一、会议开始之前,陈老师先询问大家的学习情况,并根据了解结果提出以下建议:1、c语言基础薄弱的同学要自己下功夫复习相应的知识。2、对内核不要有恐惧心里,要知难而进,坚持下去。3、不能浮躁,要先打好基础,从内核学起,反过来看应用层程序便会更加得心应手。4、希望大家形成积极讨论共同学习的氛围。二、由
2010-10-03 14:58:00
979
原创 开学前三周的会议总结
会议记录时间:2010-9-24 记录者:张超会议内容:本次会议主要的内容是回顾一下前三周所学的内容,首先由我给大家回顾了一下内核编译的过程,然后重点讲了一些关于Kconfig和Makefile的一些内容,接着是由李廷和吴宪萍同学讲了内核模块源文件的架构,以及如何编译、加载、删除模块,紧接着由武特同学重点讲解了字符设备的相关知识,其中包括:全局内存的初始化和退出函数、cdev结构体、设备号的申请、以及文件操作的相关函数。下面我将三个部分的主要内容大致的整理一下:第一部分: 1.讲了内核源码
2010-09-28 13:31:00
780
原创 内核模块相关知识的学习
这周主要以学习模块的结构和模块的编译,其中第一章讲了一个简单的模块源程序,通过这个程序我们可以看出模块的大概结构。结构分析如下:首先是编译模块所需的内核内部的头文件,其中包括初始化init.h头文件、模块所需的头文件moudle.h、内核中部分被调用函数所包含的内核头文件kernel.h。接下来是模块的许可证的申明,一般我们常采用BSB/GPL双许可证,如果不加的话编译时会提示kernel tainted(内核被污染),接着是用户自定义的函数来实现模块的功能,包括初始化的函数和退出的函数,再下面是调
2010-09-28 13:21:00
751
原创 ATI显卡驱动花屏后的修复和重安装并开启特效
前几天,同学把她的联想笔记本安装了显卡后就花屏了,我想帮她把原来的主文件夹里的文件拷出来却出现了意外,用sudo fdisk -l却无法显示linux分区,不知道她是怎么弄的,无耐帮她重新分了区,再重装ubuntu10.04,装好以后又帮她装了显卡驱动,无耐的事情又发生了,这次我帮她进了Live CD想帮她把显卡驱动卸载掉,接着sudo fdisk -l,知道了分区后将其挂载到media下,也可以双击分区自动挂载,再进入media把里面的名称复制出来,接着cd /media/名称,然后照着网上输
2010-09-27 21:23:00
3036
原创 Kconfig和Makefile文件的学习总结
开始接触Kconfig文件是在内核编译时,所以首先回顾一下内核编译的过程: 我们可以从网上下载内核源码包或者从/usr/src中将内核文件夹复制出来,这样做以妨直接对内核操作从而造成不可知的结果。 接下来我们就是来配置内核,配置内核可以采用字符界面配置(makeconfig)、或用菜单界面配置(make menuconfig),另外两种由于有别的依赖条件我们暂时不讲,而我们平常用的比较多的就是菜单界面了。进入内核目录有时直接使用makemenuconfig命
2010-09-26 15:54:00
1163
原创 暑假C语言学习总结之三
我这周看的有点杂,本着先把C语言学完的想法一开始主要看了C中函数的高级应用,最新接触到的便是递归调用,虽然以前有所了解,但这次深入学习时还是很吃力,特别是汉诺塔问题,递归函数中包含两次递归调用,而且参数较复杂,实在搞不懂调用流程时,我就把书上求阶乘的调用流程仔细分析后才有了点眉目,然后在纸上把汉诺塔的递归调用流程一步步画出来,直到这样才对递归的用法和思想有了个较为深刻的了解。后面又接触到了一些关于函数的知识,其中包括:返回指针值的函数、函数指针,特别是对函数指针以前从来没有碰到过,对其用法和作用
2010-09-13 22:57:00
515
原创 暑假C语言学习总结之二
我最近仍然以学习C语言为主,学习的内容主要包括数组、指针、结构体和共用体,这些内容虽然以前都学过,不过对于当时仅仅算是入门,或者更差,通过这一周的学习后对这几部分的综合应用有了较深的体会,特别是刚开始对兔子生崽问题反复研究了好几遍才对数组的运用较为理解,以及在查找和排序时一维和二维数组的地址传递。在学习指针的时候,刚开始还对C语言为什么要使用指针感到困惑,一节一节学下来后才知道指针的重要性,而数组和指针联合应用时其灵活性却始终不太好把握。学习结构体和共用体时,终于对链表这个一直畏惧的数据结构有了更
2010-09-13 22:53:00
557
原创 暑假C语言学习总结之一
上次和老师你说了自己的大概情况后,我决定把C语言、数据结构、操作系统系统的复习一遍,现在C语言看到指针部分,因数据结构涉及到很多指针、结构体、链表等知识,所以我打算C基本复习完时再看数据结构,虽然大家基本上都开始学习linux C编程实战这本教材,但我觉得linux内核代码涉及到很多操作系统的原理,所以我想按照原定计划把操作系统复习一遍,因操作系统只看了前面的概述部分,在下面的汇报中主要还是针对C。在学习过程中,我把C教材中遇到的注意点基本都总结在了笔记中,把书本上的代码在电脑上输了一遍,用TC3
2010-09-13 22:51:00
632
原创 总结过去,展望新的一天....
当一切尘埃落定时,不知不觉考研已成了过去,回首时布满了遗憾,预期的一年时光我才备考几何?那时的我:懒惰已成为了常态,浮躁也时常相伴随,不安在深夜总会来临,告诫往往在放松时被击垮!这对于我来说也未必全是糟糕的过去,也许我再多考一些就会继续在通信领域蹒跚着,而不会选择转投计算机,至少对于现在的我能有幸成为陈老师的学生,来从事内核的编程我已经很满足了,能继续着成少年时的计算机梦想,这才是重要的结果,过程显得已不再是那么重要了! 暑假在家玩了将近一个月时,陈老师发信息给我让我在家好好打
2010-09-13 18:01:00
1251
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人