![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
pk_novo
这个作者很懒,什么都没留下…
展开
-
Uboot在S3C2440上的移植
摘 要: 通过分析Uboot的文件结构及其启动流程,详细给出了Uboot在基于ARM920T开发板上的移植方案,包括编译、调试全过程,最终能够在Uboot命令方式下加载映像文件,完成Linux内核与yaffs映像文件的调试,具有Bootloader移植的通用性。 关键词: Uboot; S3C2440; ARM920T; 引导过程; 启动代码 1 Uboot移植环境准摘 要:ong转载 2013-10-27 13:58:24 · 910 阅读 · 0 评论 -
Arm嵌入式开发之Flash设备驱动
Linux MTD系统层次引入了MTD后,linux中的flash设备驱动及接口分为四个层,从上到下:设备节点,MTD设备层,MTD原始设备层,硬件驱动层。1.硬件驱动层:FLASH硬件驱动层负责FLASH硬件设备的读、写、擦出,LINUX MTD设备的NOR FLASH驱动位于/driver/mtd/chips子目录下,NAND FLASH驱动则位于/driver/mtd/n原创 2013-03-05 00:33:47 · 919 阅读 · 0 评论 -
Arm嵌入式开发之网络设备驱动
网络设备完成用户数据包在网络媒介上发送和接收,将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递到上层协议。其不对应/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。网络设备4个层次:网络协议接口层,网络设备接口层,提供实际功能的设备驱动层,网络设备与媒介层。网络协议接口层:向网络层协议提供统一的数据包收发接口,不论arp,还是ip,都通过d原创 2013-03-05 00:28:26 · 876 阅读 · 0 评论 -
arm嵌入式开发之终端设备
1.linux系统中终端是一种字符设备,用tty来简称。有几类:串行端口终端/dev/ttySn 计算机把每个串口作为一个字符设备,这些端口所对应的设备名称为/dev/ttyS0或/dev/tts/0等设备号为(4,0);伪终端/dev/pty 是成对的逻辑终端设备/dev/ptyp /dev/ttyp 登录程序与telnet就是通过其进行通信的;控制台终端 /dev/ttyn,/d原创 2013-03-05 00:25:00 · 1012 阅读 · 0 评论 -
arm嵌入式开发之ramdisk与IDE驱动
1.ramdisk (ram)是一种虚拟磁盘,对应设备文件一般为:/dev/ram%d。使用下面命令创建和挂载:mkdir /tmp/ramdisk0mke2fs /dev/ram0mount /dev/ram0 /tmp/ramdisk0设备模块加载和卸载函数:rd_init() rd_cleanup()设备驱动block_device_operations及成员函数op原创 2013-03-05 00:22:43 · 770 阅读 · 0 评论 -
printf()函数输出格式
printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为转换说明.因为它们指定了如何不数据转换成可显示的形式.下列列出的是ANSI C标准peintf()提供的各种转换说明. 转换说明及作为结果的打印输出%a 浮点数、十六进制数字和p转载 2013-11-18 19:29:08 · 723 阅读 · 0 评论 -
进程理论与编程
进程和程序区别:进程可以看成运行起来的程序,具有动态,并发,独立,异步性。具有三态:就绪,执行,诸塞 进程互斥:若干进程使用共享资源时,最多只允许一个进程使用。进程同步:并发进程按一定顺序执行的过程称为进程间的同步。进程调度:按一定算法,从一组待运行的进程中选出一个来占有CPU运行。调度方式:抢占和非抢占调度算法:先来先服务;短进程先调度;优先级调度;时间片轮寻。临界资原创 2013-11-19 11:28:19 · 581 阅读 · 0 评论 -
多线程理论与编程
和进程相比,线程更节俭。进程必须分配独立的地址空间,建立众多的数据表维护其代码段,堆栈段和数据段。统一进程下的线程共享数据空间。遵循POSIX线程接口,称Pthread.需要使用头文件Pthread.h和库文件Pthread.a.创建线程Int pthread_create(pthread_t *tidp,const pthread_attr_t * attr, void *(*s原创 2013-11-19 10:24:50 · 577 阅读 · 0 评论 -
Linux 网络编程
Tcp/ip四层模型:应用层,传输层,网络层,网络接口层Udp非连接的不可靠的协议 Socket三中类型:流式(tcp):stream数据报(udp):dgram原始(ip):raw 网络地址Struct sockaddr/struct sockaddr_in 用于记录网络地址Struct sockaddr{U_short sa_family;//协原创 2013-11-22 11:37:31 · 550 阅读 · 0 评论 -
【转】linux下解压命令大全
.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf转载 2013-11-22 18:30:49 · 555 阅读 · 0 评论 -
[调用.so动态链接库]Linux Makefile介绍使用的环境深入浅出
Linux Makefile已被广泛应用但是也在不断的更新,这里介绍Linux Makefile安装设置使用,帮助大家安装更新Linux Makefile系统。作为Linux下的程序开发人员,大家一定都遇到过Linux Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Linux Makefile,如果要想写出一个符合自由软件惯例的Linux Mak转载 2014-01-15 19:37:48 · 1001 阅读 · 0 评论 -
- RPATH RUNPATH 和 LD_LIBRARY_PATH
Linux 下链接编译和Windows 绝对有很大的区别。比如应用程序如何加载一个so?为什么我当前目录下有so 加载不上能?怎么着我的应用程序就加载到别的路径的so了呢?我们从加载讨论起:影响加载的东西:首先是ELF 中的变量 RPATH 和 RUNPATH然后是环境变量 LD_PRELOAD 和 LD_LIBRARY_PATHLD_PRELOAD 属于强制加载,有点转载 2014-01-17 20:23:20 · 3504 阅读 · 1 评论 -
Arm嵌入式开发之Flash文件系统建立
Flash转换层Flash无法重复在同一块存储位置做写入操作(要擦除),硬盘上的文件系统沿用时要通过一层转换层:FTL用于NOR Flash,NFTL用于NAND Flash。但其效率不高,尽量避免使用依赖于转换层的文件系统。CramfsCramfs是一种压缩的只读文件系统,当浏览Flash中的目录或读取文件时,Cramfs文件系统会动态地计算出压缩后的数据所存储的位置,实时的解压原创 2013-03-05 00:35:34 · 925 阅读 · 0 评论 -
Arm嵌入式开发之LCD驱动
一、Framebuffer是linux系统为显示设备提供的一个接口,允许上层应用程序直接对其读写,而不必关心物理缓冲区的具体位置和存放方式。只要在显示缓冲区中与对应的区域写入颜色值,对应的颜色就会在屏上显示。、帧缓冲区为标准字符设备,主设备号为29,对应/dev/fb%d。Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Li原创 2013-03-05 00:32:25 · 1380 阅读 · 0 评论 -
module_param与MODULE_PARM_DESC
#include #include static int watchdog = 5000;/* watdog默认值是5000, 但是可以通过 insmod hello.ko watchdog=1000设置非默认值 */module_param(watchdog, int, 0644);/* 对模块的参数进行描述 */MODULE_PARM_DESC(watchdog转载 2013-03-05 00:39:58 · 967 阅读 · 0 评论 -
Linux应用程序编译,模块编译
内核模块编译过程 内核模块的编译模块(module)是可以安装需求加载或卸载到系统内核中,扩展了内核的功能而不需要重启或重新编译内核。没有模块,我就要建立一个完整内核,而且直接添加入内核镜像中,这样就会显的非常臃肿。你可以通过运行lsmod或打开/proc/modules来查看加载到内核中的模块。那么如何编译内核模块,模块如何加载到内核当中呢?下面我们就写一个简单的程序看看这原创 2013-03-05 00:41:45 · 1194 阅读 · 0 评论 -
Arm嵌入式开发之USB主机与设备驱动
USB驱动层次结构由上到下:USB设备驱动-USB核心-USB主机控制器驱动-USB控制器硬件USB核心为USB驱动程序提供了一个用于访问和控制USB硬件的接口,而不必考虑系统当前存在的各种不同类型的USB硬件控制器。USB设备包括配置(configuration)、接口(interface)和端点(endpoint),USB设备绑定到接口上,而不是整个USB设备。如下图所示:原创 2013-03-05 00:37:43 · 977 阅读 · 0 评论 -
通用Makefile讲解【转】
Makefle实质是一系列命令的集合,使用Makefile是为了提高效率!Linux C肯定离不开Makefile,小工程也好大工程也罢,哪里都离不开Makefile;即使拥有强大IDE也不能像在Windows下编程一样完全不理会run按钮背后的动作!1 一个简单的Makefile从源代码到可执行程序,一般要经过预处理,编译,汇编和链接。如有如下工程,msg.c中定义了一个打印转载 2013-03-05 00:53:40 · 680 阅读 · 0 评论 -
arm嵌入式开发之linux音频设备
linux音频设备两种框架:OSS(有两个最基本的音频设备mixer和dsp),ALSA。音频设备硬件接口:1. PCM由时钟BLCK,帧同步信号FS,接收数据DR,发送数据DX组成。在FS上升沿,数据从MSB开始,FS等于采样频率。2. IIS当LRCLK为高时,左声道数据被传输;当LRCLK为低时,右声道数据被传输。3. AC97AC97采用AC-lin原创 2013-03-05 00:30:23 · 2955 阅读 · 0 评论 -
Arm嵌入式开发之I2C总线
Linux内核源码中drivers目录下包含i2c的目录,其中含有如下文件和文件夹:1. i2c-core.c 实现i2c核心功能和/proc/bus/i2c*接口2. i2c-dev.c 实现i2c适配器设备文件的功能。主设备号为89,次设备号0~255。提供了通用的read()、write()、close()等接口。3. chips文件原创 2013-03-05 00:26:51 · 992 阅读 · 0 评论 -
嵌入式Linux视频服务器1
嵌入式LINUX视频服务器 /*采用H.264对视频数据进行编码,并且利用网络进行实时传输(UDP)*/#include #include #include #include #include #include #include #include #include #include #include #include #i转载 2013-08-21 23:39:42 · 633 阅读 · 0 评论 -
交叉编译内核模块的Makefile范本
obj-m := XXX.o DIR := /linux-2.6.22.6/ 这里要改成内核路径/usr/src/...或改为/lib/modules/$(shell -uname -r)/build //自己添加PWD:= $(shell pwd)CROSS_ARCH := ARCH=arm CROSS_COMPILE=arm-linux-#ARCH =arm#CROSS原创 2013-03-05 00:55:17 · 911 阅读 · 0 评论 -
Linux异步通知fasync与异步I/O
异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信号与与一个函数对应,当接收到这个信号就会调用相应的函数。 一、什么是异步通知个人认为,异步通知类似于中断的机制,如下面的将要举例的程序,当设备可写时,设备驱动函数发送一个信号给内核,告知内核有数据可读,在条件不满足之前,并不会造成阻塞。而不像原创 2013-03-05 00:49:00 · 796 阅读 · 0 评论 -
Linux内存与I/O访问
内存和I/O我们知道,在X86中,有I/O空间的概念,I/O空间是相对于内存空间的概念,它通过特定的指令in,out来访问。端口号标识了外设的寄存器地址。而巧的是Arm等嵌入式控制器中并不提供I/O空间,所以我们就不考虑了,我们重点放在内存空间。 内存空间可以通过地址,指针来访问,在C语言中的表现就是通过指针来操作,如在186处理器中: unsigned char *p = (转载 2013-03-05 00:51:49 · 777 阅读 · 0 评论 -
Linux设备驱动中的阻塞与非阻塞I/O
阻塞与非阻塞I/O阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。因为阻塞的进程会进入休眠状态,因此,必须确保有一个地方能够唤醒休眠的进程。唤醒进程的地方最大可能发生在中断里面,因为硬件资源获得的同时往往伴随着一个中断。 注意:驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。 休眠(被阻塞原创 2013-03-05 00:47:15 · 570 阅读 · 0 评论 -
linux设备模型详解【转】
Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。2.6设备模型提供了这个抽象.现在它用在内核来支持广泛的任务,包括:电源管理和系统关机这些需要转载 2013-03-05 00:45:45 · 365 阅读 · 0 评论 -
IORESOURCE_IO和IORESOURCE_MEM
内核中有很多资源,但属于IO资源的有:#define IORESOURCE_IO 0x00000100 /* Resource type */#define IORESOURCE_MEM 0x00000200#define IORESOURCE_IRQ 0x00000400#define IORESOURCE_DMA 0x00000800本文我主要研究IORESOURCE_IO IORESOURC转载 2015-01-08 09:18:14 · 2793 阅读 · 0 评论