kernel
文章平均质量分 76
G1036583997
这个作者很懒,什么都没留下…
展开
-
linux2.6.32 内核编译 cc1: error: invalid option `abi=aapcs-linux'
转载自:http://blog.csdn.net/penglijiang/article/details/7681347编译make zImage时候 出现如下错误:cc1: error: invalid option `abi=aapcs-linux'root@ubuntu:/opt/FriendlyARM/mini2440/linux-2.6.32.2# make zI转载 2014-12-22 08:51:31 · 904 阅读 · 0 评论 -
输入子系统(国嵌笔记)
输入子系统(input subsystem)按键、触摸屏、鼠标等都可以利用input接口来实现设备驱动体系1.驱动程序input corehandlers 设备描述在linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过inpu原创 2015-03-11 09:22:02 · 666 阅读 · 0 评论 -
Linux网络体系结构 (国嵌笔记)
1.linux的协议栈层次丰富而稳定的网络协议栈(服务器要求稳定和高效)LINUX中协议栈是四层的internet模型2.linux的网络子系统系统调用接口协议无关接口网络协议接口设备无关接口(向下屏蔽硬件的区别使用同一的接口,向上直接将数据包传递到上方,不管是什么类型的协议)设备驱动原创 2015-03-11 09:23:13 · 1008 阅读 · 0 评论 -
触摸屏(国嵌笔记)
触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。s3c2440触摸屏是由横向电阻比和纵向电阻线组成 控制器X/Y分别转换模式X/Y自动转换模式工作流程1.选择转换模式2.设置触摸屏为等待中断模式3.如果中断发生,开始转换(模数转换)4.转换完成后,回到等待中断模式原创 2015-03-11 09:27:27 · 578 阅读 · 0 评论 -
CS8900A 驱动程序分析(国嵌)
CS8900A 驱动程序分析(国嵌) 1. 寄存器 ·LINECTL(0112H)LINECTL决定CS8900的基本配置和物理接口。例如:设置初始值为00d3H,选择物理接口为10BASE-T,并使能设备的发送和接收控制位。·RXCTL(0104H)RXCTL控制CS8900接收特定数据报。设置RXTCL的初始值为0d05H,表示接收网络上的广转载 2015-03-11 09:29:29 · 805 阅读 · 0 评论 -
PCI总线(国嵌笔记)
PCI驱动程序 总线是一种传输信号的信道; 总线是连接一个或多个导体的电气连线。总线由电气接口和编程接口组成,我们重点关注编程接口。PCI是Peripheral Component Interconnect(外围设备互联) 的简称, 是在桌面及更大型的计算机上普遍使用的外设总线。PCI总线具有三个非常显著的优点:1在计算机和外设间传输数据时具有更好的原创 2015-03-11 09:36:59 · 1088 阅读 · 0 评论 -
串口(国嵌笔记)
在Linux中,TTY(终端)是一类字符设备的统称,包括了3种类型: 控制台,串口和伪终端。供内核使用的终端为控制台。控制台 在Linux启动时,通过命令console=…指定,如果没有指定控制台 , 系统把第一个注册的终端(tty)作为控制台 。1.控制台是一个虚拟的终端,它必须映射到真正的终端上。2.控制台可以简单的理解为printk输出的地方。原创 2015-03-11 09:37:14 · 1854 阅读 · 0 评论 -
PCI驱动程序(国嵌笔记)
PCI驱动程序1.使用struct pci_driver结构来描述成员id_table //驱动支持的设备列表(*probe) //函数指针(*remove)//函数指针2.PCI驱动注册pci_register_driver(struct pci_driver *drv)3.在PCI驱动使用PCI设备的任何资源(I/原创 2015-03-11 09:37:41 · 886 阅读 · 1 评论 -
Linux软中断原理浅析
http://www.2cto.com/os/201207/140706.htmlLinux软中断原理浅析 Linux中的软中断机制用于系统中对时间要求最严格以及最重要的中断下半部进行使用。在系统设计过 程中,大家都清楚中断上下文不能处理太多的事情,需要快速的返回,否则很容易导致中断事件的丢失,所以这就产生了一个问题:中断发生之后的事务处理由谁来 完成?在前后台程序中,由于只有中断转载 2015-03-12 14:12:54 · 789 阅读 · 0 评论 -
硬件访问+混杂设备驱动(国嵌笔记)
硬件访问1.寄存器与内存的区别在那里呢??寄存器和RAM的主要不同在于:寄存器操作有副作用(side effect或边际效果),读取某个地址时可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零。2.内存与I/O在X86处理器中存在I/O空间的概念,I/O空间是相对内存空间而言的,他们是彼此独立的地址空间,在32位的X86系统中,I/O空间原创 2015-03-10 20:49:52 · 581 阅读 · 0 评论 -
总线+设备+驱动 (国嵌笔记)
设备模型1.设备模型元素总线、驱动、设备总线是处理器和设备之间的通道,在设备模型中,所有的设备都通过总线相连,设置是内部的虚拟“platform”总线。在LINUX设备模型中,总线由bus_type结构表示,定义在中总线也是一个设备,也要对应一个struct device注册注销总线属性创建属性删除属性init函数{ 注册原创 2015-03-10 20:54:35 · 665 阅读 · 0 评论 -
字符驱动程序 (国嵌笔记)
linux驱动程序概述1.学习方法驱动程序设计模式40%+内核相关知识30%+硬件相关知识30%2.早期设计模式1.每一个应用程序都要写一遍驱动程序。复用性差2.将驱动程序提取出来,多个应用程序调用一个驱动程序。前期设计问题导致的驱动程序改变,全部应用程序都需要变动3.分类字符设备驱动、网络设备驱动、块设备驱动字符设备:以字节为最小单位来访问的设备块设备:访问数原创 2015-03-10 20:42:35 · 666 阅读 · 0 评论 -
内核驱动开发第四天linux内核链表
基本概念1.链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。2.链表的开销主要是访问的顺序性和组织链的空间损失通常链表数据结构至少包含两个域:数据域和指针域,数据域用于存储数据,指针原创 2015-03-10 20:39:30 · 996 阅读 · 0 评论 -
内核驱动开发第五天linux系统调用
1.系统调用一般情况下,用户进程是不能访问内核的。它既不能访问内核中的数据,也不能调用内核中的函数。但系统调用是一个例外。还有一个是中断Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。2.区别系统调用和普通的函数调用非常相似,区别仅仅在于,系统调用由操作系统内核实现,运行于内核态;原创 2015-03-10 20:37:05 · 607 阅读 · 0 评论 -
内核等待队列(国嵌笔记)
内核等待队列可以使用等待队列来实现继承的阻塞,等待队列可以看作保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待队列中取出操作等待队列1.定义等待队列wait_queue_head_t my_queue2初始化等待队列init_waitqueue_head(&my_queue)3.定义并初始化等待队列DECLARE_WAIT_QUEUE_HE原创 2015-03-10 20:46:00 · 540 阅读 · 0 评论 -
自动创建设备文件 (国嵌笔记)
自动创建设备文件1.内核2.4中有设备文件系统使用devfs_register(dir,name,flags,major,minor,mode,ops,info)dir:目录名,为空表示在/dev/下创建name:文件名;flags:创建标志;major,minor:主次设备号;mode:创建模式,字符和块等通过他来标识;ops:操作函数集;info:通常为空2.内核2.6开始原创 2015-03-10 20:46:03 · 623 阅读 · 0 评论 -
mmap设备操作-内存映射,把文件映射到内存中(国嵌笔记)
1.mmap功能:内存映射,负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。返回:起始地址2.参数addr:指定映射的起始地址,通常设为NULL,由系统指定length:映射到内存的文件长度。prot:映射区的保护方式:PROT_EXEC:映射区可被执行PROT_READ:映射区原创 2015-03-10 20:47:53 · 1755 阅读 · 0 评论 -
网卡驱动程序(国嵌笔记)
驱动程序的方法:1.了解在LINUX内核中怎么描述这个设备或者驱动。用什么结构,里面有什么成员、指针(函数,主要是什么功能,什么时间调用)2.怎么注册驱动程序网络驱动程序1.使用struct net_device来描述使用alloc_netdev或alloc_etherdev来动态分配关键成员:char name[IFNAMSIZ] 设备名e原创 2015-03-11 09:24:28 · 747 阅读 · 0 评论 -
平台驱动程序platform(国嵌笔记)
在2.6的内核中很多驱动程序都采用platform形式的驱动程序platform是一种虚拟总线。platform机制的本身实现并不复杂,由两部分组成:platform_device和platform_driverplatform_bus内核已经实现好了,只需要基于这条总线进行操作就可以了1.工作流程1.定义platform_device2.注册platform_de原创 2015-03-11 09:19:48 · 1075 阅读 · 0 评论 -
Linux串口读写
转载自:http://blog.sina.com.cn/s/blog_640531380100wiv8.html串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIARS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的转载 2015-03-12 09:54:21 · 1519 阅读 · 0 评论 -
A Linux serial port test program
转载自:http://www.cnblogs.com/b2tang/archive/2008/12/05/1348687.htmlBelow is a Linux serial test program which requires the command parameters to be entered on the command line when the program is st转载 2015-03-16 14:26:12 · 1840 阅读 · 0 评论 -
嵌入式Linux启动过程分析8-linux-kernel-setup
linux的启动过程可以分为两个部分1.架构/开发板相关的引导过程2.后续的通用启动过程最终目的:运行应用程序(在根文件系统中)------->挂载根文件系统才能找到应用程序第一阶段:引导过程通常使用汇编语言编写第一个执行的文件是/arch/arm/kernel/head.S1.开始确定内核是否支持该构架__lookup_processor_type2.确定内核原创 2015-04-11 08:58:42 · 779 阅读 · 0 评论 -
嵌入式Linux启动过程分析9-root
1.移植busybox2.拷贝形成相应的库文件3.修改配置文件移植busybox1.配置make menuconfig生成配置2.修改Makefile3.make 指定相应的CONFIG_PREFIX否则会覆盖操作系统原有的文件,导致系统崩溃形成库文件将gcc-3.4.5-glibc-2.3.6解压后,将*.so*文件拷贝到 /lib目录下修原创 2015-04-11 09:00:07 · 954 阅读 · 0 评论 -
mini2440移植ssh
下载需要的源码: mkdir -p ~/arm/fs ;mkdir -p ~/arm/source 下载zlib: zlib-1.2.8.tar.gz 下载ssl: openssl-0.9.8d.tar.gz 下载ssh: openssh-5.6p1.tar.gz编译: cd ~/arm/source(1) 编译zlib: tar zxvf zlib-1.2.8.tar.gz原创 2015-04-14 19:06:59 · 2260 阅读 · 1 评论 -
Linux 信号/软中断signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 [喝小酒的网摘]http://blog.const.net.cn/a/16967.htm信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程转载 2015-04-08 07:32:17 · 7384 阅读 · 0 评论 -
YUYV转换为jpg
将YUYV格式转换为jpeg(jpg)的过程中使用libjpeg库,自己安装了两个版本的库 v62 和 v80 路径不同 (参考 http://webhostingneeds.com/wrong_jpeg_library_version:_library_is_62,_caller_expects_80)62在/usr/lib 80在/usr/local/lib原创 2015-03-25 10:44:17 · 3141 阅读 · 0 评论 -
boa cgi html CGIC
转载自:http://blog.csdn.net/jemofh159/article/details/7919740随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和转载 2015-03-24 08:45:42 · 2298 阅读 · 0 评论 -
内核开发总结--pc安装内核
1.首先将/boot/目录下的系统配置文件拷贝到内核源代码目录中,重命名为.config 2.重新进行配置,形成自己的配置文件 make menuconfig 3.进行编译,make bzImage 4.编译模块,make modules 5.安装模块,make modules_install 6.制作init ramdisk ,mkinitrd initrd-2.6.32 2.6.32原创 2015-03-09 09:01:35 · 609 阅读 · 0 评论 -
linux字符设备驱动总结之:全自动创建设备及节点
转自:http://blog.csdn.net/zyhui65/article/details/8053116/*************************************************************************************************** linux字符设备驱动总结之:全转载 2014-12-25 09:29:36 · 630 阅读 · 0 评论 -
嵌入式Linux启动过程分析7-linux
要分析内核源代码首先得知道怎样编译生成最终的二进制代码根据操作过程得到相应的第一个执行的文件目的:1.第一个执行的文件是什么?2.连接脚本怎么排布make uImage ---->arch/arm/Makefile--->uImage:vmlinux:vmlinux才是真正的内核 --------->底层的Makefile被顶层的Makefile所包含原创 2015-04-11 08:57:56 · 594 阅读 · 0 评论 -
嵌入式Linux启动过程分析6-u-boot-2step-word description
第二阶段是从lib_arm/board.c中的start_armboot开始的第二阶段也可以分为两个部分,init_sequence中的初始化部分,start_armboot函数后续的初始化部分,之后是main_loop等待用户处理或启动内核1.初始化本阶段用到的硬件设备,在board.c中的init_sequence数组中预先定义的初始化函数.这中间有使用/include/con原创 2015-04-11 08:55:38 · 637 阅读 · 0 评论 -
nfs:server is not responding,still trying的解决方法(nfs挂载处理大文件)
转载自:http://blog.chinaunix.net/uid-20551291-id-1926970.html方法1 :我在arm上通过NFS共享文件时出现下面的错误提示nfs:server is not responding,still trying原因分析:NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。解转载 2015-03-20 15:37:27 · 4876 阅读 · 0 评论 -
在mini2440上移植Boa服务器
转载自:http://blog.chinaunix.net/uid-24155734-id-2625077.htmlBoa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。转载 2015-03-23 16:56:30 · 809 阅读 · 0 评论 -
mini2440移植sqlite
转载自:http://www.arm9home.net/read.php?tid=127411.解压数据库源文件并进入解压后的目录,如下:tar -zxvf sqlite-3.6.22.tar.gz cd sqlite-3.6.222.创建一个目录build并进入该目录,用于在这个目录中进行交叉编译,如下:mkdir buildcd build3转载 2015-03-23 17:36:35 · 631 阅读 · 0 评论 -
嵌入式Linux启动过程分析1-readme
分析整个环境的启动过程的思路:1.首先确定生成可用于烧写的二进制文件的具体步骤2.倒推启动过程例如:linux内核的启动过程1.配置make menuconfig 之后生成.config文件,生成相关的配置项。配置项即为编译程序功能的宏开关,用来控制功能是否需要编译进内核,模块或者>是不需要。2.根据Makefile生成uImage3.uImage在Makefile原创 2015-04-11 08:48:23 · 876 阅读 · 0 评论 -
嵌入式Linux启动过程分析2-overview
嵌入式linux系统从软件的角度通常可以划分为4个层次1.引导加载程序 初始化硬件设备,准备好软件环境,最后启动操作系统内核 (包括两种模式1.启动加载模式,产品发布时工作在这种模式下2.下载调试模式) 2.linux内核 实现linux的定制内核(包括linux的最基本的功能和驱动) 3.文件系统 包括根文件系统和建立在Flash上的文件系统。原创 2015-04-11 08:49:33 · 614 阅读 · 0 评论 -
嵌入式Linux启动过程分析3-bootloader
选用u-boot作为系统的bootloaderbootloader定义:是一段程序,能在系统上电时开始运行,初始化硬件设备,准备好软件环境,最后调用操作系统内核使用bootloader的目的是:启动内核(终极目的是启动内核)在这个过程中需要进行许多的工作包括:1.读flash2.初始化外设3.启动内核使用u-boot作为引导启动代码,工作过程可以分为两个阶段原创 2015-04-11 08:52:11 · 745 阅读 · 0 评论 -
嵌入式Linux启动过程分析4-u-boot-1step-start.S
/* * armboot - Startup Code for ARM920 CPU-core * * Copyright (c) 2001 Marius Gröger * Copyright (c) 2002 Alex Züpke * Copyright (c) 2002 Gary Jennejohn * * See file CREDITS for list of原创 2015-04-11 08:52:34 · 1298 阅读 · 0 评论 -
嵌入式Linux启动过程分析5-u-boot-1step-word
文字描述u-boot的第一阶段1.首先将CPU设置为SVC模式2.关闭看门狗(或者称为设置看门狗的工作状态)3.设置FCLK、HCLK、PCLK的比例。设置分频器4.关闭MMU和CACHE5.设置BANK的寄存器,为搬移代码准备RAM空间6.判断代码是否在RAM中,若是则不需要进行搬移7.若需要搬移则进行代码搬移(具体的搬移开始结束位置是通过计算出来的)。不需要搬移原创 2015-04-11 08:53:22 · 747 阅读 · 0 评论 -
Poll设备操作(国嵌笔记)
Poll设备操作用户空间中的select对应内核中的Poll1.select系统调用用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。int select(int maxfd,fd_set *readfds,fd_set *writefds,fe_set *exceptfds,const struct timeval *timeout)maxfd:文件描述符的原创 2015-03-10 20:45:14 · 711 阅读 · 0 评论