03 2016 档案
摘要:1.解压boa嵌入式web服务 tar zxvf boa-0.94.13.tar.gz 2.进入src目录生成配置文件 ./configure 3.修改生成的Makefile CC=arm-linux-gcc CPP=arm-linux-gcc –E 4.修改源文件 4.1. vim util.c
阅读全文
摘要:ffmpeg是一个开源免费跨平台的视频和音频流方案,它提供了录制、转换以及流化音视频的完整解决方案。移植ffmpeg的目的主要是为了使motion能支持将捕获到的视频流转换成avi格式的视频文件进行存储。因此,我们仅需要移植ffmpeg中如下两个库,而且要在移植Motion之前进行ffmpeg的移植
阅读全文
摘要:V4L2摄像编程模型 1.打开摄像头设备文件 2.获取驱动信息-VIDIOC_QUERYCAP 3.设置图像格式-VIDIOC_S_FMT 4.申请帧缓冲-VIDIOC_REQBUFS 5.获取帧缓冲的地址长度信息-VIDIOC_QUERYBUF 6.使用mmap把内核空间的帧缓冲映射到用户空间 7
阅读全文
摘要:摄像头系统架构 V4L2 video for linux,专门为Linux系统定制的操作摄像头的规范。给应用程序提供访问摄像头统一的接口。相应的摄像头驱动也需要遵循V4L2规范。这样应用程序可以不根据硬件的不同而改变,提高应用程序的可移植性。 使能和测试摄像头驱动 make menuconfig A
阅读全文
摘要:下载madplay安装包和依赖库 编译安装包和依赖库 编译zlib 1.解压 tar zxvf zlib-1.1.4.tar.gz cd zlib-1.1.4 2.配置 通过配置相关的信息产生有效的Makefile文件 mkdir _install 设置编译生成库文件的安装目录 ./configur
阅读全文
摘要:OSS架构 OSS全称是Open Sound system,叫做开放式音频系统,这种早期的音频系统是基于文件系统的访问方式,这意味着对声音的操作完全可以像对普通文件那样执行open,read等操作。OSS中,主要提供了一下几种音频设备的抽象设备文件: /dev/mixer:用来访问声卡中的混音器,用
阅读全文
摘要:移动图像监控系统 USB摄像头 音箱 WEB浏览器 product backlog 1.新建看板 移动图像监控系统-product backlog 2.添加功能 功能1-采集图像-sprint2 功能2-移动判断-sprint3 功能3-语音报警-sprint1 功能4-WEB 服务-sprint4
阅读全文
摘要:项目管理的必要性 随着IT技术的飞速发展,软件的规模也越来越庞大,个人单打独斗式的开发方式已经满足不了软件开发的需要了。软件项目管理是通过一系列科学方法,对成本、人员、进度、质量、风险等进行分析和管理的活动。 瀑布管理模型 1.软件概念->用户需求 2.需求分析->软件原型 3.架构设计->架构文档
阅读全文
摘要:查看USB设备的生产商ID和设备ID 示例: lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 生产商ID是1d6b,设备ID是0002 创建USB总线型字符设备 usb_register_dev //效果同cd
阅读全文
摘要:USB驱动模型 1.USB host controller driver(主控器驱动):为USB主控制器提供驱动程序 2.USB core(USB核心):连接USB主控制器驱动和USB设备驱动 3.USB client driver:为USB外部设备提供驱动程序 USB设备模型 device(设备)
阅读全文
摘要:软件系统架构 1.主机端软件架构 USB设备驱动->USB核心->USB主控制器驱动->USB主控制器 2.设备端软件架构 Gadget驱动->Gadget API->UDC驱动->USB控制器 MassStrorage驱动体验(host 接口) 可以让主机挂载大容量存储器 1.主控器驱动配置 ma
阅读全文
摘要:USB设备逻辑结构 在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口通常有零个或多个端点。 USB设备描述符 当我们把USB设备(例如USB鼠标)插到我们的PC时,主机能够自动识别出我们的USB设备类型。在每一个USB设备内部,包
阅读全文
摘要:USB发展史 USB(universal serial bus),通用串行总线,是一种外部总线标准。用于规范电脑与外部设备的连接和通讯。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。自1996年堆出后,已经成功替代了串口和并口。成为当今个人电脑和大量智能设备的
阅读全文
摘要:SPI Flash驱动 1.打开/drivers/mtd/devices/m25p80.c驱动文件。找到初始化m25p80_init函数,其中通过spi_register_driver来注册spi设备驱动。需要的参数是struct spi_driver指针结构。 2.匹配函数是在m25p_probe
阅读全文
摘要:SPI 子系统架构 1.SPI core核心:用于连接SPI客户驱动和SPI主控制器驱动,并且提供了对应的注册和注销的接口。 2.SPI controller driver主控制器驱动:用来驱动SPI控制器。 3.SPI protocol drvier客户驱动:用来驱动SPI设备 SPI控制器驱动分
阅读全文
摘要:SPI控制器工作流程 SPI控制器提供2个SPI接口。每个SPI接口有两个通道,分别为TX通道和RX通道。CPU要写数据到FIFO中,先写数据到SPI_TX_DATA寄存器中,这样此寄存器中的内容就会自动移动到发送FIFO中;同理,如果CPU要从接收FIFO中读取数据,就访问寄存器SPI_RX_DA
阅读全文
摘要:SPI总线架构 SPI(serial peripheral interface)串行外设接口,是一种高速,全双工,同步的通信总线。采用主从模式(master slave)架构,支持多个slave,一般仅支持一个master。 SPI信号线 SPI接口共有4根信号线,分别是:设备选择线(SS)、时钟线
阅读全文
摘要:AT24C08的驱动在Linux内核中已经提供,在/drivers/misc/eeprom/at24.c文件中。在对应的probe函数中有一个创建/sys/.../eeprom文件的函数,应用程序通过调用/sys/.../eeprom设备文件来对设备进行读写操作。 移植AT24C08驱动 1.修改内
阅读全文
摘要:用户态驱动模型 用户态驱动模型首先是一个应用程序,其次是在这个用户程序中通过内核调用来驱动设备。 IIC通用驱动代码 IIC通用驱动程序的代码在/drivers/i2c/i2c-dev.c中。一次读操作或者一次写操作就是一条消息。 EEPROM用户态驱动 IIC通用设备对应/dev/i2c-0设备文
阅读全文
摘要:IIC子系统架构 device driver层: 1.device driver,由用户开发。 2.i2c-dev由内核实现,但是需要配合应用模式驱动才能使用。 i2c core层: 1.总线驱动,也叫控制器驱动。实现对i2c控制器的操作方法。 2.i2c核心。关联设备驱动和总线驱动,提供设备的注册
阅读全文
摘要:eeprom简介 eeprom电可擦除可编程只读存储器,是一种类似于flash的固态存储器,但是与flash相比又存在一些区别: 1.eeprom可以按位擦写,而flash只能大片擦除。 2.eeprom一般容量都不大,一般都在64kb以下。 I2C初始化 在ARM内部有I2C控制器,可以对I2C器
阅读全文
摘要:IIC电气特性 I2C(inter intergrated circuit)总线是由philps公司开发的两线式串行总线,用于连接微控制器及其外围设备。 I2C总线只有两根双向信号线: SDA:serial date line 数据线 SCL:serial clock line 时钟线 总线寻址 I
阅读全文
摘要:初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函数。 1.使能时钟 2.进行物理地址到虚拟地址转换 3.硬件纠错初始化 4.搜索nand flash
阅读全文
摘要:bootloader环境搭建 1.解压bootloader tar zxvf uboot_mini2440.tar.gz 2.清除bootloader cd uboot_mini2440 make distclean 3.配置bootloader make mini2440_config 4.设置启
阅读全文
摘要:嵌入式系统自启动 MTD技术通过把Nand FLash划分成bootloader分区,Linux kernel分区和file system分区来达到自启动的效果。 配置和编译内核 1.配置Linux内核支持MTD分区 make meunconfig ARCH=arm device drivers
阅读全文
摘要:MTD设备概述 Flash在嵌入式系统中是必不可少的,它是bootloader、Linux内核和文件系统的最佳载体。在Linux内核中引入了MTD子系统为NOR Flash和Nand FLash设备提供了统一的接口,从而使得Flash驱动的设计大为简化。 MTD使用体验 把系统烧写到Nand F
阅读全文
摘要:头文件 #include <linux/blkdev.h> #include <linux/bio.h> blkdev.c Makefile
阅读全文
摘要:块设备驱动实例分析 初始化 1.注册块设备驱动程序,使用register_blkdev。填写主设备号时,设置为零,系统自动分配主设备号,并返回。 2.初始化请求队列,使用blk_init_queue。 3.指明扇区大小,使用blk_queue_logical_block_size 4.为块设备分配g
阅读全文
摘要:块设备概念 块设备是指只能以块为单位进行访问的设备,块大小一般是512个字节的整数倍。常见的块设备包括硬盘,SD卡,光盘等。 体验块设备使用 把内存划出512字节,虚拟成块设备来访问。 1.insmod simple-blk.ko 2.ls -l /dev/simp_blk0 3.格式化块文件设
阅读全文
摘要:LCD驱动程序分析 LCD驱动程序代码在/drivers/video/s3c2410fb.c文件中,在该驱动的s3c2410fb_init中注册了平台驱动,该驱动的初始化代码在s3c24xxfc_probe函数中。 1.分配fb_info结构,使用framebuffer_alloc 2.获取LCD控
阅读全文
摘要:LCD裸机驱动回顾 1.LCD初始化 1.1.控制器初始化 1.2.端口初始化 1.3.指明了帧缓冲 2.LCD图形显示 2.1.将图形数据写入帧缓冲 Linux帧缓冲体验 把图片转换成开发板屏对应的宽高像素和颜色深度,然后把图片放到开发板文件系统中。通过cat image.bin > /dev
阅读全文
摘要:开启XY坐标转换,并上报 触摸屏驱动文件在/drivers/input/touchscreen/s3c2410_ts.c
阅读全文
摘要:触摸屏驱动分析 初始化 1.使能ADC时钟 2.将物理地址转化为虚拟地址 3.让触摸屏进入等待中断模式 4.分配输入设备结构 5.设置可能上报的事件类型和按键类型 6.为TC和ADC中断注册处理函数 7.注册输入型设备 按下处理 1.判断按下或弹起 2.如果是按下情况,那么启动XY坐标的AD转换
阅读全文
摘要:输入子系统核心架构 1.设备驱动层 2.核心层 3.事件层 4.用户空间 输入设备注册 1.拿设备ID去匹配handler的ID,找到对应的handler(事件处理者) 最常用的handler是evdev_handler,相应的匹配表在evdev_ids中。如果设备的ID在事件驱动的ID表中,那么两
阅读全文
摘要:为什么需要输入子系统 在Linux系统中按键属于输入型设备,同样的把按键换成鼠标、键盘等输入型设备,它们的注册和操作方法都是类似的,不同的是在中断处理中对硬件的操作。输入子系统就是把和输入设备有共性的部分提取出来,而把不同的部分让程序员来实现。 输入子系统模型 1.input device driv
阅读全文
摘要:DM9000数据发送 DM9000数据发送函数是在/drivers/net/dm9000.c中的dm9000_start_xmit函数 static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev){ //发送数据长
阅读全文
摘要:网卡初始化 1.分配描述结构,alloc_etherdev 2.获取平台资源,platform_get_resource 2.1.在s3c_dm9k_resource中有相关的资源 2.2.add地址由CS4和ADD2决定,是20000000 2.3.dat地址由CS4和ADD2决定,是200000
阅读全文
摘要:网络发包模型 1.选择路由 2.交给邻居子系统(路由中紧挨着发送方的网关)。如果没有邻居信息,那么由Linux中的邻居子系统来建立邻居信息。 发送数据过程 //系统调用层和协议无关层 1.发送入口sock_aio_write 2.调用do_sock_write 3.调用__sock_sendmsg
阅读全文
摘要:回环网卡(loop) 回环网卡的Tx通道和Rx通道是直连的,所以数据直接发送到接收端口。 编写回环网卡驱动 回环网卡驱动在/driver/net/loopback.c #include <linux/kernel.h> #include <linux/jiffies.h> #include <lin
阅读全文
摘要:Linux网络子系统 1.系统调用接口:提供系统调用 2.协议无关接口:统一网络协议给系统调用接口使用 3.网络协议栈 :实现网络协议 4.设备无关接口:统一设备驱动程序给网络协议使用 5.设备驱动程序:实现网卡驱动 Linux驱动在内核中都有一个结构来描述,首先找到设备描述结构,然后找到设备如何注
阅读全文
摘要:如何开发Linux驱动程序 一般情况下都会有现成的驱动程序,不需要从零开始开发驱动程序。所以Linux驱动开发主要分为两个步骤:1.读得懂驱动程序;2.写的了核心功能。 发送中断处理程序 发送中断处理函数在/drivers/serial/samsung.c的s3c24xx_serial_tx_cha
阅读全文
摘要:tty数据接收流程 //tty子系统 1.tty_fops中的tty_read响应系统调用 2.tty_read调用tty_ldisc_N_TTY中的n_tty_read n_tty_read 1.设置app的状态 2.如果没有数据可读,让阻塞生效 3.如果有数据可读,从read_buf中读走数据
阅读全文
摘要:tty数据发送流程 //tty子系统 1.file_operation中找到tty_write 2.tty_write找到线路规程中的n_tty_write 3.n_tty_write找到uart_ops中的uart_write //串口驱动 4.uart_write找到s3c24xx_serial
阅读全文
摘要:用户程序调用open系统调用后,怎么传递到驱动程序 //tty子系统 1.tty_fops里面的tty_open是串口驱动对系统调用的响应入口 2.tty_open调用uart_ops里面的uart_open 3.uart_open找到了uart_start //串口驱动 4.uart_start找
阅读全文
摘要:串口驱动结构 1.初始化设备 2.打开设备 3.读取数据 4.写入数据 串口驱动在内核的/drivers/serial/下的samsung.c和s3c2440.c 串口驱动中重要的数据结构 file_operations tty_fops.write = tty_write tty_ldisc_op
阅读全文
摘要:tty概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。 1.串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备。Linux把每个串口端口都看作是一个字符设备。这些串口设备所对应的设备名称是/dev/ttySAC0,/d
阅读全文
摘要:平台总线概述 平台总线(Platform bus)是Linux2.6内核加入的一种虚拟总线,其优势在于采用了总线的模型对设备与驱动进行了管理,这样提高了程序的可移植性。这条总线由系统创建,不需要用户再去创建平台总线。 通过平台总线机制开发设备驱动的流程如下: 1.定义platform_device
阅读全文
摘要:总线模型 随着技术的不断进步,系统的拓扑结构也越来越复杂,对热插拔,跨平台移植性的要求越来越高,2.4内核已经难以满足这些需求。为了适应这种形势的需要,从Linux2.6内核开始提供了全新的设备驱动模型。 总线驱动设备模型 这个模型首先有一条总线,然后是总线上挂载有很多驱动。当有设备插到总线上的时候
阅读全文
摘要:阻塞的必要性 当一个设备无法立刻满足用户的读写请求时应当如何处理?例如,调用read时,设备没有数据提供,但以后可能会有;或者一个进程试图向设备写入数据,但是设备暂时没有准备好接收数据。当上述情况发生的时候,驱动程序应当(缺省地)阻塞进程,使它进入等待(睡眠状态),直到请求可以得到满足。 内核等待队
阅读全文
摘要:keydev.c /******************************************************************** *头文件 ******************************************************************
阅读全文
摘要:按键抖动 按键所用的开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开。因而在闭合及断开的瞬间总伴随有一连串的抖动。 按键去抖动的方法主要有两种,一种是硬件电路去抖;另一种就是软件延时去抖。而延时去抖一般又分为两种,一种是for循环等待,另一种是定时器延
阅读全文
摘要:Linux处理嵌套中断 1.慢速中断情况下 第一种情况:当中断处理1正在执行的时候,中断处理2(不同类型中断)到来,那么会暂停中断处理1,转向执行中断处理2,待中断处理2执行完后,再接着执行中断处理1。 第二种情况:当中断处理1正在执行的时候,中断处理2(同类型中断)来到,那么会忽略中断处理2,接着
阅读全文
摘要:中断类型对应中断号 1.在内核代码中找到irqs.h(.../s3c2410.h)对应的中断号,Linux系统中用的中断号是中断类型编号(INTOFFSET)加上基数偏移得到的。 2.其中的宏就是中断类型所对应的中断号 #define S3C2410_CPUIRQ_OFFSET (16) #defi
阅读全文
摘要:裸机中断: 1.中断统一入口。 2.注册中断处理程序。 3.根据中断源编号,调用中断处理程序。 Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口。 2.获取产生中断源的编号(中断号)。 3.根据中断号,找到irq_desc结构 4.从irq_desc描述结构中取出事先
阅读全文
摘要:混杂设备概念 在linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链,对设备访问时内核根据次设备号查找到相应的混杂设备。 设备描述 Linux中使用struct miscdevice来描述一个混
阅读全文
摘要:LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko .../rootfs insmod leddev.ko 2.创建设备文件 mknod /dev/myled0 c 25
阅读全文
摘要:设备控制理论 1.设备控制的作用 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如改变波特率。 2.设备控制的函数 在用户空间使用ioctl系统调用函数来控制设备。 int ioclt(int fd, unsigned long cmd, ...) fd:要控制的设备文件描
阅读全文
摘要:应用程序访问驱动程序 1.系统调用找到内核实现函数(read) 在这个过程中主要做了下面的工作: r7 = 3 svc 说明: svc是系统调用指令,当使用该指令时系统会从用户空间进入内核空间的固定入口处,内核会从r7寄存器中取出系统调用编号,然后内核会查找系统调用表找到对应的函数实现,然后调用该函
阅读全文
摘要:头文件 <linux/cdev.h> struct cdev <linux/fs.h> struct file_operations <asm/uaccess.h> copy_from_user(); copy_to_user(); memdev.c #include <linux/init.h>
阅读全文
摘要:设备驱动模型 1.驱动初始化(驱动安装) 1.1.分配设备描述符 1.2.初始化设备描述符 1.3.注册设备描述符 1.4.硬件初始化 2.实现设备操作(驱动操作) 3.驱动注销(驱动卸载) 设备描述结构 在任何一种驱动模型中,设备都会用内核中的一种结构来描述。我们的字符设备在内核中使用struct
阅读全文
摘要:编译/安装驱动程序 在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码。因此编译/安装一个驱动程序,其实就是编译/安装一个内核模块。 示例: make insmod memdev.ko 创建设备文件 应用程序->设备文件->驱动程序 通过字符设备文件,应用程序可以使用相应的字符设备驱动
阅读全文
摘要:硬件访问实质 驱动程序控制设备,主要是通过访问设备内的寄存器来达到控制目的的,因此我们讨论如何访问硬件,就成了如何访问这些寄存器。 访问流程 1.地址映射 在Linux系统中,无论是内核程序还是应用程序,都只能使用虚拟地址,而芯片手册中给出的硬件寄存器地址或RAM地址都是物理地址,无法直接使用。因此
阅读全文
摘要:驱动程序分类 常规分类法: 1.字符设备 字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常支持open,close,read和write系统调用。例如:串口,LED。按键。 2.块设备 在大部分unix系统中,块设备的定义为:以块(通常是512字节)为最小传输单位的设备,
阅读全文
摘要:系统调用 函数实现体在内核空间,提供给应用程序来使用,就是一个系统调用。 工作流程 1.通过软中断(swi)从用户空间切换到内核空间。entry-common.S中的ENTRY(vector_swi)是用来处理软中断的。系统调用通常从r7寄存器中取出系统调用编号。 2.通过系统调用编号从系统调用表中
阅读全文
摘要:链表简介 链表是一种常见的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。 传统链表与Linux内核链表的区别 L
阅读全文
摘要:进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。 2.进程:是一个执行中的程序,它是一个动态的实体。 进程四要素 1.有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。 2.有进程专用的内核空间堆栈。 3.在内核中有一个task_struct
阅读全文
摘要:内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址。虚拟地址简单的来说就是程序中使用的地址。所以存在虚拟地址到物理地址之间的映射关系。 Linux系统支持的虚拟地址空间由硬件来决定。例如处理
阅读全文
摘要:模块申明 1.MODULE_LICENSE(“遵守的协议”) 申明该模块遵守的许可证协议,如:”GPL”,”GPL v2”等 2.MODULE_AUTHOR(“作者”) 申明模块的作者 3.MODULE_DESCRIPTION(“模块的功能描述”) 申明模块的功能 4.MODULE_VERSION(
阅读全文
摘要:内核模块示例 #inlcude <linux/init.h> #inlcude <linux/module.h> static int hello_init(){ printk(KERN_WARNING”hello_init\n”); return 0; } static void hello_ex
阅读全文
摘要:什么是内核模块 Linux内核的整体结构非常庞大,其中包含的组件也非常多,如何使用这些组件。一种方式是把所有的组件都编译进内核文件,即zImage或bzImage,但这样会导致一个问题,占用内存过多。内核模块是一种能让内核文件本身并不包含某些组件,而是是在被需要使用的时候,动态地添加到到在运行的内核
阅读全文
摘要:服务器环境搭建 1.配置tftp服务器 1.1.设置tftp目录 vim /etc/xinetd.d/tftp server_args = -s .../tftp disable = no 1.2.启动tftp服务 /etc/init.d/xinetd restart 2.配置nfs服务器 2.1.
阅读全文
摘要:根文件系统 一个嵌入式Linux系统可以有多个文件系统,但必须有第一个文件系统,也就是根文件系统。系统启动后看到的目录和目录里面的文件就是文件系统。 建立根文件系统 1.创建目录 示例: mkdir rootfs cd rootfs mkdir bin dev etc lib mnt proc sb
阅读全文
摘要:Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器架构,CROSS_COMPILE指明交叉工具链。在编译uImage会显示找不到mkImage工具。该
阅读全文
摘要:为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能。 内核配置的方法 make config:基于文本交互的配置。 make menuconfig:基于图形菜单的配置。 make menuconfig配置方法 1.菜单项的分类 processor type and features
阅读全文
摘要:Linux系统架构 1.用户空间:应用程序、C函数库 2.内核空间:系统调用接口、内核、体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序,这样使操作系统本身得到了充分的保护。内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件
阅读全文
摘要:嵌入式软件层次 1.Bootloader 2.Linux内核 3.文件系统 编译U-Boot 1.解压uboot tar zxvf uboot.tar.gz 2.清除uboot make distclean 3.配置uboot make mini2440_config 4.编译uboot ARCH指
阅读全文
摘要:第1类 时间编程类 1.1 获取日历时间 1.1.1 函数名 time 1.1.2 函数原形 time_t time(time_t *t) 1.1.3 函数功能 返回日历时间 1.1.4 所属头文件 <time.h> 1.1.5 返回值 成功:日历时间失败:-1 1.1.6 参数说明 t:不为空的情
阅读全文
摘要:脚本定义 脚本就是一个包含一系列命令的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。 脚本编程 1.基本结构 脚本由解析器和命令序列组成,#!/bin/bash指明了脚本由哪个解析器解析运行。创建脚本文件,并更改权限为可执行。注意:文本格式要转换为Unix格式。 2.变量 sh
阅读全文
摘要:守护进程 守护进程,也就是通常说的Daemon(精灵)进程,是Linux中的一种服务进程。例如smbd进程。它的特点是: 1.不占用控制终端(后台运行) 2.独立于控制终端 3.摆脱父进程影响 4.周期性处理任务 不占用控制终端 守护进程需要独立于任何一个控制终端,实现方法调用是通过创建子进程来充当
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #define SERVE
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #define SERVER_PORT 3333 void main(){ //创建标识 int serv
阅读全文
摘要:server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <stdio.h> #define SERVER_PORT 3333 void main(){ //创建标识 int serv
阅读全文
摘要:编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一。而针对不同协议的差异性操作,则交给了Socket去自行解决。 TCP编程模型 UDP编程模型
阅读全文
摘要:网络模型 OSI参考模型: 物理层、数据链路层 | 网络层 | 传输层 | 会话层、表示层、应用层 TCP/IP参考模型: 网络接口层 | 网络层 | 传输层 | 应用层 网络协议要素 1.协议规则 2.数据格式 协议架构 以太网协议格式 IP协议格式 TCP协议格式 UDP协议格式
阅读全文
摘要:线程同步 多个线程按照规定的顺序来执行,即为线程同步。 threadSync1.c #include <pthread.h> #include <stdio.h> #include <unistd.h> pthread_mutex_t mutex; int task = 0; void *threa
阅读全文