
Linux内核与驱动
文章平均质量分 87
Joern-Lee
嵌入式-物联网-美好的未来~~~
展开
-
研究内核的目的
一.研究内核的目的 欲举其事,先正其道。要谈论内核的研读以及交流心得,前提必须得有一个恰当准确的目的,方能收获良多。很多人都有这样一个疑惑,为什么要研究内核呢?我们又不是内核开发者(或许你将来就会成为Linus的助手:-)。此言差矣,众所周知,Linux包含两层含义,一是内核,二是发行版本,前者乃核心精华,后者则是应用方案,二者皆不可废。知前者而略后者,思而不学也;略前者而知后者,转载 2017-02-20 10:09:23 · 358 阅读 · 0 评论 -
U-Boot学习笔记(一):基本概念
1.U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。原创 2016-12-06 14:59:40 · 348 阅读 · 0 评论 -
U-Boot学习笔记(二):U-Boot--arm--Start.S的分析
声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出。再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处。我的目的是想让大家共同进步。希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善。以原创 2016-12-06 15:03:57 · 609 阅读 · 0 评论 -
U-Boot学习笔记(三):顶层Makefile分析
U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。u-boot源码结构转载 2016-12-06 15:07:34 · 507 阅读 · 0 评论 -
U-Boot学习笔记(四):TEXT_BASE的理解
[IMX6Q]TEXT_BASE和_start的区别 :其实可以这么理解:_start是可以动态变化,而TEXT_BASE是链接时就确定的地址。_start是实际运行的地址,而TEXT_BASE是要copy到sdram中运行的地址, 当然也是最终u-boot实际运行的地址。u-boot的start.S中在启动第一阶段会比较这两个值是否相等,不相等则会将自身cop原创 2016-12-06 15:30:32 · 3808 阅读 · 0 评论 -
Linux驱动入门学习(一):入门介绍
我们今天所要说的是Linux驱动编写。现在linux驱动比较流行,主要有几个方面的原因:1)linux平台免费,很多芯片厂商希望linux平台支持自己的产品;2)最近Android平台很火,这在无形之中帮了linux的忙,搞linux驱动的人也开始多了起来;3)还有就是收入了,按照目前基本行情来说,搞driver驱动的收入要比一般的开发工程师的收入要高一些,这可以从招聘网站上得到答案,因此很多朋友转载 2016-12-10 14:53:40 · 754 阅读 · 0 评论 -
Linux驱动入门学习(二):字符设备和块设备区别
自己网上整理的一些概念供大家学习用,如果有侵请告诉我,立刻删除。一、概念区分Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。(2) 块设备:应用程序可转载 2016-12-10 15:13:31 · 1587 阅读 · 0 评论 -
Linux驱动入门学习(三):I2C架构全面理解
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。 因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。 linux下的驱动思路 在linux系转载 2016-12-10 16:00:57 · 297 阅读 · 0 评论 -
gdb远程调试目标开发板
本笔记基于韦东山的教程,目的通过GDB去调试目标板上内核的运行。1.确保三者能够ping通。 2.修改目标板Uboot命令参数 为 3.输入命令:->nfs 0x31000000 10.196.169.xxx:/work/nfs_root/uImage ->bootm 0x31000000 使用命令之前把linux内核放原创 2016-12-12 16:40:57 · 462 阅读 · 0 评论 -
NFS-连接虚拟机Linux和开发板
1.首先确保开发板的linux的ip和虚拟机linux处于同一个网段Ifconfig eth0 10.196.169.xxx这个重启就没用了。我的是进入/etc/init.d/ ,vi rcS然后在第一行添加上面那一句就可以了。 2.进入开发板linux使用挂接命令(确保你的虚拟机有nfs服务器,开发板作为客户端)# mount -o nolock,rw -t nfs原创 2016-12-12 20:58:08 · 404 阅读 · 0 评论 -
Source Insight 常用设置和快捷键大全
1.括号配对高亮:“在前括号左侧,后括号左侧” 双击鼠标左键,可以选定匹配括号和其中内容(<>,(),L{R},[]之间) 2.让{ 和 } 不缩进:Options -> Document Options -> Auto Indenting -> Auto Indent Type 选 Simple还有:让{ 和 } 不缩进: options-&g...转载 2016-12-26 20:34:19 · 314 阅读 · 0 评论 -
Linux内核中断机制(一):中断注册方法
今天在网上看到一份不错的讲解内核中断原理的文章,分享给大家!1.中断注册方法在 linux 内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, c转载 2016-12-27 22:00:29 · 4807 阅读 · 0 评论 -
Linux内核中断机制(二):异常向量表建立
异常向量表建立①arm硬件方面a,ARM中通过CP15协处理器C1寄存器的bit[13]控制。要么V=0 0x00000000~0x0000001CV=1 0xFFFF0000~0xFFFF001C b,arch/arm/mm/proc-arm920.S里面有介绍 ②Linux内核init/main.c -> start_kernel()->trap_ini转载 2016-12-27 22:01:42 · 651 阅读 · 0 评论 -
Linux内核中断机制(四):中断处理下
中断处理模型要想弄清楚 desc->handle_irq(irq, desc)和我们注册的中断有什么关联,就要了解中断处理模型了。 1.中断处理模型结构 ①NR_IRQS:最大的中断号include/asm/arch/irq.h②irq_desc[]:是一个指向irq_desc_t 结构的数组,irq_desc_t 结构是各个设备中断服务例程的描述符。Irq_d转载 2016-12-27 22:05:29 · 479 阅读 · 0 评论 -
Linux内核启动过程(一):head.S学习
一.arch/arm/kernel/head-armv.S(我的好像就叫head.S)内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间初始代码主要作用是检查CPU ID,Architecture Type,初始化BSS等操作,并跳到start_kernel函数。在执行前,处理器应满足以下状态:r0 - should be 0 r1 - u转载 2016-12-28 16:44:07 · 579 阅读 · 0 评论 -
Linux内核中断机制(三):中断处理上
内核中断处理过程S3C2410和Linux2.6.26内核为例讲解处理过程 1.中断向量表arch\arm\kernel\entry-armv.S__vectors_start:swi SYS_ERROR0b vector_und + stubs_offsetldr pc, .LCvswi + stubs_offsetb vector_pabt + stubs_of转载 2016-12-27 22:03:54 · 491 阅读 · 0 评论 -
Linux内核:Poll机制理解
最近看了一下Linux Poll 机制的实现,看了韦老师的分析文档,总结如下:int poll(struct pollfd *fds,nfds_t nfds, int timeout);总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返转载 2016-12-29 21:01:22 · 482 阅读 · 0 评论 -
tty初探-uart驱动框架分析
本文参考了大量牛人的博客,对大神的分享表示由衷的感谢。主要参考: tty驱动分析 :http://www.wowotech.net/linux_kenrel/183.html Linux TTY驱动--Uart_driver底层:http://blog.youkuaiyun.com/sharecode/article/details/9196591 Li转载 2017-01-10 14:47:28 · 424 阅读 · 0 评论 -
ubuntu的简单搜索命令
1.whereis 文件名 特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的查找都用这条命令. 2.find / -name 文件名 特点:准确,但速度慢,消耗资源大,例如我想找到php.ini的准确位置,就需要用 #find / -name php.ini 3.lo...原创 2016-12-11 21:03:12 · 270 阅读 · 0 评论