![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
C_Aya
多做事,少说废话
展开
-
驱动学习——Linux下浅析USB转串口驱动的流程
我们知道,Linux对于USB设备的支持是十分强大的,USB接口的无线网卡、USB的摄像头、USB键盘、鼠标等等。做些许代码修改,内核选项选中支持后,即可使用这些设备。但是我们要清楚,越是简单的使用,其背后就越是复杂的设计。粗略翻了翻《Linux 那些事儿之我是U盘》,才意识到Linux的USB host驱动有多复杂,不是两三天就能读懂的。( T^T..)。 这篇博文仅分析一下从内核初始化到USB原创 2017-09-01 18:56:43 · 6665 阅读 · 2 评论 -
Linux——sqlite3安装、简单应用
sqlite3是在嵌入式中主要使用的轻量级数据库,在此先学习记录一下简单的使用,往后编程过程中会结合数据库。 先推荐学习sqlite的很好的网站:http://www.runoob.com/sqlite/sqlite-installation.html=========================================== sqlite数据类型: 用于描述一个对象的属性。 主要原创 2017-06-22 20:03:41 · 481 阅读 · 0 评论 -
安信可-A7模块——C语言编程实现GPS功能
上一篇博文整理学习了有关串口通信、串口编程的一些基本知识。本篇将通过编程来获取、解析、转换GPS接收机接收的信息。 我们将在fl2440开发板上实现该功能。一、A7与开发板连线我使用的是USB转TTL串口转接线,这里要保证Linux支持了所用的转接芯片。我使用的是cp210的USB转串口芯片,因此要在内核选项中支持它:make menuconfig Device Drivers->原创 2017-06-07 17:23:20 · 4208 阅读 · 4 评论 -
fl2440模块学习——3G拨号上网
本篇学习在fl2440开发板上添加3G无线拨号上网模块,实现上网。 所使用的3G模块为:SIMCOM的 SIM5360E,可以支持WCDMA/GSM,即联通2G/3G,移动2G。测试用的是联通卡。 先了解一下: WCDMA 是英文Wideband Code Division Multiple Access(宽带码分多址)的英文简称,是一种第三代无线通讯技术。目前是由国内的联通在做; GSM(原创 2017-05-30 16:27:12 · 1872 阅读 · 0 评论 -
fl2440模块学习——添加RT3070实现无线上网
最近学习了在fl2440开发板上添加了RT3070网卡,并通过连接路由器上网,在此记录一下。首先预备一下一些有关的网络知识: 1、计算机网络->无线网络的几种常见标准: IEEE802.11a:使用5GHz频段,传输速度54Mbps,与802.11b不兼容; IEEE 802.11b:使用2.4GHz频段,传输速度11Mbps; IEEE802.11g:使用2.4GH原创 2017-05-23 19:46:01 · 806 阅读 · 0 评论 -
fl2440模块学习——RT3070无线网卡SoftAP模式实现路由器功能
上一篇博文记录了fl2440添加了RT3070作为STA模式,并成功连接路由器上网。 这篇则记录第二种模式:SoftAP模式。以开发板fl2440作为一个路由器,并使自己的手机、笔记本电脑连接到这个“路由器”上网。在这里我们会用到几个软件hostapd、udhcpd、iptables。基于内核的mac80211驱动框架来实现。一、内核配置 make之后烧录到开发板。把开发板用网线连接一个路由原创 2017-05-25 20:53:38 · 1346 阅读 · 0 评论 -
fl2440——修改UART2作为正常串口
在S3C2440芯片上,是有3个串口的,其中默认UART0,UART1是作为普通串口。而UART2被Linux内核默认配置成了红外模式,若想把它当作普通串口使用,则需要修改代码。 同时。GPH6被设置为nRTS1,GPH7被设置为nCTS1,此时,串口2是无法收发数据的。代码修改如下: 1、vim arch/arm/mach-s3c2440/mach-smdk2440.c 修改红色框处原创 2017-05-07 13:29:28 · 1098 阅读 · 0 评论 -
fl2440——Linux下I2C驱动体系
初学I2C的时候,因为第一次接触到这么一种驱动体系,与之前学习的普通字符设备驱动、platform驱动还是有一些区别的。在看内核的I2C有关源代码的时候确实感到不太能理清楚它的框架,还好网上的大神们分享的知识让我学到了很多。因此现在先对I2C有一个大致的学习,往后在做到相关的项目时再来加深、巩固。1、I2C基础知识1.1 概述IIC (也称I2C)即Inter-Integrated Circuit(原创 2017-05-05 14:19:21 · 527 阅读 · 0 评论 -
fl2440——RTC(实时时钟)的学习、内核添加RTC支持
一、RTC基础知识在一个嵌入式系统中实时时钟(RTC)单元可以提供可靠的时钟包括时、分、秒和年、月、日。即使系统处于关机状态下它也能够正常工作(通常采用后备电池供电)其外围也不需要太多的辅助电路只需要一个高精度的晶振。 它的特点有: 1.时钟数据是以BCD码或者二进制表示。 2.对闰年的年、月、日能自动处理。 3.具有告警功能,当系统处于关机状态时能产生告警中断。 4.独立的电源输入。原创 2017-04-23 14:46:14 · 732 阅读 · 0 评论 -
笔记——轮询、中断、DMA、通道
一、轮询方式 对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。 尽管轮询需要时间,但轮询要比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。 当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序转载 2017-04-23 13:46:37 · 1092 阅读 · 0 评论 -
fl2440——内核自带LED的使用
在之前的学习中,学习了led普通字符设备以及platform总线的led。其实在linux的内核中,已经有了对s3c24xx的led支持,我们只要稍作修改便可以使能它。一、添加内核支持make menuconfig Device Drivers ---> [*] LED Support ---> 将如上选项选上即可。二、代码修改想查看自带的代码可以到[tangbin@l原创 2017-04-22 14:01:53 · 541 阅读 · 0 评论 -
Linux——C语言调用sqlite3
之前有记录了在linux下的sqlite3的安装以及简单使用,实际上sqlite3是提供了很多C语言的API接口的,接下来就来结合一个实例来学习C语言+sqlite3的使用。常用的API有: sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_finalize() sqlite3_close()原创 2017-07-17 15:19:01 · 1309 阅读 · 0 评论 -
Linux——Shell使用学习
Shell脚本是个十分便捷的东西,在日常工作中能在某种程度上提高我们得工作效率。Shell是一个命令解析器,简单来讲就是把各类命令丢到里面,从而可以使程序一次性执行,它不需要编译就可以直接执行。因此,使用Shell来进行一些重复性的工作,一些批量处理的工作等都是很高效的,为我们节省不少时间。Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、原创 2017-08-15 21:25:23 · 916 阅读 · 0 评论 -
C——Linux下的串口编程
之前在学习安信可A7模块时,是在PC上使用串口调试助手做了GPS的坐标数据信息的采集,同时分析了一些语句的含义。在这过程中,涉及到对嵌入式开发人员一个非常重要的知识:串口通信。在前篇也说到,我们将会自己写程序来对GPS数据进行解析,而这些数据正是靠串口来传输的。所以,本篇博文将进行关于串口通信的学习。一、串口接头首先我们得知道串口长什么样,常用的串口接头有两种,一种是9针串口(简称DB-9),一种是原创 2017-06-06 19:30:50 · 26444 阅读 · 3 评论 -
USB 3G上网卡讲解之三
USB 3G卡热插拔那些事4——pppd在上一节中我们知道3G卡设备驱动已经加载好了,并且和ttyUSB*已经绑定成功,意味着我们可以拨号了,和3G卡内部3G模块通信了,而我们知道3G模块通信是tty设备,通过串行设备,这里和3G卡的两种工作模式相吻合—moden模式. 首先我们这里先给出3G工作原理图: 我们万事俱备只欠东风了,就是pppd拨号了,当然pppd的源码自己可以去网上下载最转载 2017-09-06 16:31:53 · 2757 阅读 · 0 评论 -
驱动学习回顾——按键(Button)驱动的理解和总结
当时在学习按键驱动时,便觉得其中有几个点是比较难理解的,在整体上自己感到并没有很好地掌握。现在经过了一段时间地学习,再将按键驱动里的疑难点加以理解之后,总结记录一下。 关于驱动代码之前已经给出,点击:这里,但只是关于代码语句的注释,下面将从功能块上着重分析这个驱动。一、中断也许现在提起中断,都可以联想到这个图: 中断,本质上就是一种特殊的信号,由某个设备发个CPU,CPU接到这个信号后,操作原创 2017-08-24 16:53:22 · 1926 阅读 · 0 评论 -
fl2440——驱动学习-ADC驱动
硬件描述: S3c2440有一个10-bit的CMOS ADC 模数转换器,支持8个模拟通道输入,10位的分辨率,最高速度可达500KSPS(500 千次/每秒)。 fl2440上的原理图: 从图中可知:模拟ADC,包含了2部分功能,一部分是触屏功能,另一部分就是普通ADC功能,分别可以产生INT_TC和INT_ADC 两个中断。8个AIN模拟输入(A[3:0],YM,YP,XM,XP原创 2017-04-09 20:02:56 · 477 阅读 · 0 评论 -
USB 3G上网卡讲解之二
USB 3G卡热插拔那些事3——usb serial驱动上一节我们已经把3G识别出来并且可以工作了,具体3G卡拨号这一块我们稍后会讲到,这里先提下,首先就是pppd拨号程序,可以网上下载最新版源码自己编译安装,我是利用evdo拨号(本人是用的SIM5360E,WCDMA/GSM,即联通2G/3G),当然还有其他方式。这里是用户空间如何建立ppp连接,在内核层就是ppp协议以及tty模块,在往下就是w转载 2017-09-06 14:29:29 · 666 阅读 · 0 评论 -
USB 3G上网卡讲解之一
转载了一个比较详细的关于USB 3G上网卡的讲解,原文地址: http://blog.chinaunix.net/uid-20786208-id-3157021.htmlUSB 3G卡热插拔那些事1——原理框架这里我们先讲讲USB热插拔事件的处理工作。—–Khubd守护进程。 -Khubd守护进程它是一个守护进程,来检查usb port的事件通知HCD和usb core,然后做相应的处理。 驱转载 2017-09-06 14:09:49 · 1489 阅读 · 0 评论 -
fl2440——驱动学习-Platform_Button驱动代码分析
#include "s3c_driver.h"#define DRV_AUTHOR "Tang bin"#define DRV_DESC "S3C24XX button driver"/* Driver version*/#define DRV_MAJOR_VER原创 2017-04-04 15:29:04 · 618 阅读 · 0 评论 -
驱动学习回顾——platform总线驱动-结合LED实例分析
前一篇文章总结了Linux下的bus设备模型,实际上,我们在编程过程中,并不需要自己来创建总线,Linux已经为我们实现了诸如platform总线、USB总线、I2C总线等等。 而接下来要学习总结的platform总线有点“特别”,与USB、I2C、SPI等物理总线不同,它是一条虚拟总线。像USB设备、I2C设备都会有自己对应类型的总线进行挂载,从而与CPU通信。但是在嵌入式系统中,并不是所有的设原创 2017-08-21 20:08:30 · 1467 阅读 · 0 评论 -
驱动学习回顾——Linux下bus设备模型
关于Linux的驱动学习有三个点是应该掌握的,即:总线,驱动,设备。不管是一些物理总线(如:I2C,SPI等)的抽象,还是为了增加设备“容量”而定义的虚拟总线(plat-from),都是围绕着这三个进行。即:一个符合Linux设备驱动模型的device和device_dvrier都挂在一个bus上,由bus来进行两者匹配,进行双向绑定。下面简单地给出自己简单的学习过程。一、总线总线这个概念在内核中在原创 2017-08-21 13:14:06 · 622 阅读 · 0 评论 -
fl2440——DS18B20 驱动编写
转载自:http://blog.csdn.net/zqixiao_09/article/details/50973969 供学习之用!对驱动工程师而言,时序分析的意思是让芯片之间的访问满足芯片手册中时序图信号的有效的先后顺序、采样建立时间、保持时间的要求,通过时序来达到数据传输和硬件控制的目的。 嵌入式开发平台:mini2440 DS18B20 所用GPIO:S3C2410_GPF(3)一、D转载 2017-08-20 16:47:34 · 651 阅读 · 0 评论 -
Socket再学习——开发板ds18b20获取温度值并上报服务器
经过一段时间的学习、积累,自己对于物联网、计算机网络、socket编程等相关的领域和知识有了新的理解,网络部分一直是重中之重。因此重新再学习了Linux下的socket,并结合了一个简单的实际例子再来学习client端与server端工作流程。===========================================文件描述符:实际上就是Linux内核给分配的“称谓”,而在我们的TCP通原创 2017-06-21 16:45:08 · 970 阅读 · 0 评论 -
fl2440——移植USB驱动、内核添加USB支持、U盘挂载
关于USB的基础知识可以参考这篇博文:http://blog.csdn.net/u012507643/article/details/52932578 USB的协议还是比较复杂的,有空希望能了解一下,在这仅记录学习移植过程。一、修改代码vim arch/arm/mach-s3c2440/mach-smdk2440.c 添加头文件: 添加USB init函数: 在smdk2440_ma原创 2017-04-20 19:55:18 · 1125 阅读 · 0 评论 -
C——container_of宏
container_of 宏: container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:439/**440 * container_of - cast a member of a structure out to the containing structure441 * @ptr: the pointer to the member.442转载 2017-05-01 12:49:12 · 269 阅读 · 0 评论 -
fl2440——Platform_Button实例
/********************************************************************************* * Copyright: (C) 2017 TangBin<tangbinmvp@gmail.com> * All rights reserved. * * Filena原创 2017-04-04 15:33:41 · 480 阅读 · 0 评论 -
ioctl()函数的简单使用——获取本机的IP、掩码、HWaddr
ioctl()函数的详解:http://blog.csdn.net/shanshanpt/article/details/19897897 ioctl和struct ifreq:http://blog.csdn.net/shanshanpt/article/details/19897897 ioctl在socket中的一些用法及示例 ,控制网络文件:http://blog.chinaunix原创 2016-10-30 15:55:26 · 1485 阅读 · 0 评论 -
什么是make config,make menuconfig,make oldconfig,make xconfig,make defconfig,make gconfig?
在进行内核配置,或者是对一些软件的配置和编译中,常常会遇到: make config make menuconfig make oldconfig make xconfig make defconfig make gconfig————————————————————————————— 1、make config 是文本式,对话式,基于命令行的一种配置。 2、make me转载 2016-10-20 20:38:31 · 1702 阅读 · 0 评论 -
fl2440——u-boot启动过程的简要分析
u-boot是在嵌入式开发中,经常使用的bootloader。 我们知道,在PC上引导程序一般是由BIOS(一段固件程序)开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(如GRUB),后进一步引导操作系统的启动。 而在嵌入式系统中,通常没有BIOS(有的CPU也会内嵌一小段启动程序),所以整一个系统的引导就由bootloader承担了。原创 2016-11-08 19:41:43 · 571 阅读 · 0 评论 -
Linux与Windows的文件共享
1.windows之间的文件共享 在局域网中,处于文件共享的需要,我们需设置文件共享的功能。在同一交换机或同一路由器下,通过局域网的文件共享即可实现不同windows在同一局域网内的共享功能。 2.查询本机IP 2.1通过cmd命令获取IP地址 同时按下“win”+“R”键,在运行框内输入cmd 确定后,弹出命令框,输入“ipconfig”,根据当前连接,获得本机IP地址:原创 2016-10-28 17:01:27 · 764 阅读 · 0 评论 -
Socket——实现简单的一对一服务器端与客户端聊天功能
server.c/* Socket head file */#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>/*sockaddr_in{} */#include<arpa/inet.h>/* Unix standard head file */#include<stdio.h>#include<stdlib原创 2016-10-26 16:05:09 · 5126 阅读 · 4 评论 -
Liunx-使用Buildroot工具制作交叉编译器
Buildroot是一个成套的嵌入式开发环境。它可以用来制作交叉编译器,制作属于自己的根文件系统,编译uboot,Liunx kernel。是一个十分便捷的工具。下面记录一下自己使用Buildroot制作ARM交叉编译器的过程: PC:windows 10 专业版 虚拟机:VMware Workstation Pro 12.5 Liunx版本:CentOS 6.7 今后使用的开发板为fl24原创 2016-10-26 17:14:48 · 1017 阅读 · 0 评论 -
Linux-CentOS6.7——安装Samba服务器
1.Samba简介Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。Samba的主要目的就是用来沟通Windows与Linux这两种不同的作业平台。由于NFS(网络文件系统原创 2016-10-16 11:16:28 · 725 阅读 · 0 评论 -
Liunx-CentOS6.7——安装NFS服务器
CentOS 6.7安装NFS服务器一、NFS简介NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统原创 2016-10-25 21:54:19 · 469 阅读 · 0 评论 -
交叉编译(cross compile)的一些介绍
1、交叉编译的含义在学习嵌入式开发中,必然会遇到:交叉编译(cross compile),那么交叉编译是什么呢?即:在一种平台上进行程序的编译,而这个编译出来的程序放到另一个平台上运行。因此,编译的环境运行的环境是不一样的,交叉的,即所谓的cross。比如,我有一个ARM9的开发板,在进行开发时,需要在我的x86的PC上使用交叉编译器来编译我写好的程序代码,而编译所程序是放到ARM的CPU上运原创 2016-10-23 14:47:28 · 8884 阅读 · 0 评论 -
uclibc,eglibc,glibc之间的区别和联系
原文地址:http://www.crifan.com/relation_between_uclibc_glibc_eglibc/ —————————————————————————————1.Glibcglibc = GNU C Library是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。目前,常见的桌面和服务器中的GNU/Linux类的系转载 2016-10-24 16:28:54 · 306 阅读 · 0 评论 -
笔记——Linux常用命令
编辑命令行的快捷键Ctrl+U :删除当前整行Ctrl+C :终止当前正在执行的命令,并移动光标到下一行的开头显示正在运行的shell命令:echo $SHELL 示例:heaad@ubuntu:~echo echo SHELL/bin/bash为shell命令创建别名命令:alias 例如:alias la=’ls -A’ 表示 la已经设置为’ls –A’的别名。在转载 2016-12-04 11:38:04 · 484 阅读 · 0 评论 -
笔记——I2C总线的时序
一篇关于I2C总线时序的文章!很不错: http://www.cnblogs.com/BitArt/archive/2013/05/28/3103917.html转载 2017-02-26 17:06:56 · 747 阅读 · 0 评论 -
fl2440——u-boot的移植
1、u-boot移植前期准备 1.1创建开发板目录结构 我创建了fl2440这个文件夹,除了bootloader的u-boot之外,以后需要制作的Linux内核,根文件系统,相关的驱动,第三方应用,自己写的程序等,都放入对应目录下,便于管理。 [tangbin@localhost ~]$ cd fl2440/[tangbin@localhost原创 2017-03-20 20:16:02 · 969 阅读 · 0 评论