随笔分类 -  Linux

some linux knowledges
摘要:glibc glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc;它本身也提供了许多其它一些必要功能服务的实现; libc.so.6 libc.so.6是一个链接到glibc的软链接;对glibc的升级其实是对libc.s 阅读全文
posted @ 2018-02-26 10:03 小禾先生 阅读(8071) 评论(1) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define PORT 6666 8 #define BUFFER_SIZE 2048 9 #define MAX_ALLOWED_CLIENT 10240 10 11 struct ev_io *libevlist[MAX... 阅读全文
posted @ 2016-09-25 23:07 小禾先生 阅读(843) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在装有ds18b20模块并有ds18b20驱动的系统上跑的,本人写的ds18b20的驱动 以下操作是建 阅读全文
posted @ 2016-08-23 15:22 小禾先生 阅读(5099) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 之前看过led的,platform_led的,platform_button的。当时以为看懂了,可是真的拿到一个模块要去写 阅读全文
posted @ 2016-08-17 03:35 小禾先生 阅读(2761) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在装有ds18b20模块并有ds18b20驱动的系统上跑的,本人写的ds18b20的驱动 一、sock 阅读全文
posted @ 2016-08-17 02:47 小禾先生 阅读(902) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 GPRS:SIM900A 在开发SIM900模块之前,开发板已经加载了linux内核以及文件系统,并且开发板串口已经使能。并且一定要注意的是:要有一张 阅读全文
posted @ 2016-08-17 02:02 小禾先生 阅读(5812) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 GPRS:SIM900A 在开发SIM900模块之前,开发板已经加载了linux内核以及文件系统,并且开发板串口已经使能。并且一定要注意的是:要有一张 阅读全文
posted @ 2016-08-05 13:58 小禾先生 阅读(2708) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 本文章的内核已经已经添加了DM9000的网卡,USB驱动,使用的是initramfs的文件系统。 大体移植过程:添加内核支持-->编译Openssl生 阅读全文
posted @ 2016-07-18 11:58 小禾先生 阅读(567) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 开发板:FL2440 本文章的内核已经已经添加了DM9000的网卡,USB驱动,使用的是initramfs的文件系统。 一、配置内核 [*] Networking support >Networking op 阅读全文
posted @ 2016-07-15 17:20 小禾先生 阅读(512) 评论(0) 推荐(0)
摘要:交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 开发板:FL2440 本文章的内核已经已经添加了DM9000的网卡,USB驱动,使用的是initramfs的文件系统。 便于理解,在这里把rt3070 sta模式一直的大体步骤说一下:添加内核支持-->编译W 阅读全文
posted @ 2016-07-15 15:55 小禾先生 阅读(677) 评论(0) 推荐(0)
摘要:驱动程序: 按键驱动的两个重点:去抖、中断 编写中断程序需要注意的事情:1、Linux不支持中断嵌套 2、中断处理程序不可重用,不可阻塞 应用程序: 阅读全文
posted @ 2016-06-12 14:40 小禾先生 阅读(519) 评论(0) 推荐(0)
摘要:刚开始玩Linux的童鞋可能有这样一个困扰,我明明用ifconfig eth0 192.168.0.37设置了eth0的网络,而且用ifconfig查看网卡信息的时候显示的eth0的网络也是正确的,可是当我们ping 192.168.0.1的时候,为什么还是显示ping不通呢? 原来Linux里面有 阅读全文
posted @ 2016-06-10 11:01 小禾先生 阅读(218) 评论(0) 推荐(0)
摘要:一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就想一个Shell脚本一样,其中也可以执操作系统的命令。 Linux环境下的程序员 阅读全文
posted @ 2016-05-18 12:26 小禾先生 阅读(880) 评论(0) 推荐(0)
摘要:什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和Linux的本质不同,因此二者库的二进制是不兼容的。Linux操作系统支持的库函数分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的库函数,如/lib,/usr/lib;头 阅读全文
posted @ 2016-05-18 11:24 小禾先生 阅读(366) 评论(0) 推荐(0)
摘要:编译的过程 编译的概念:编译程序读取源程序(字符流),对之进行词法与语法的分析,将高级语言指令转换成功能等效的汇编代码,再由汇编程序转换成机器语言,并且按照操作系统对可执行文件格式的要求链接成可执行程序。 编译的完整过程:C源程序 > 预编译处理(.c) > 编译、优化程序(.s、.asm) > 汇 阅读全文
posted @ 2016-05-18 10:23 小禾先生 阅读(460) 评论(0) 推荐(0)
摘要:为了说清楚要修改的地方,下面会比较啰嗦 Linux系统内核的源代码是开放的,因此我们可以从官网上下载Linux内核。 下载地址:https://www.kernel.org 解压之后进入内核会看到一下一下目录: 其中每个目录的表示如下: 内核要修改的地方其实很少,只需要改一下arch/arm/目录下 阅读全文
posted @ 2016-05-14 16:56 小禾先生 阅读(1179) 评论(0) 推荐(0)
摘要:首先需要知道的是,设备跟驱动是分开的。设备通过struct device来定义,也可以自己将结构体封装到自己定义的device结构体中: 例如:struct platform_device: platform_device通过向内核注册struct device dev这个结构体来告诉内核加载这个设 阅读全文
posted @ 2016-05-10 17:33 小禾先生 阅读(461) 评论(0) 推荐(0)
摘要:首先要明白字符设备驱动注册的基本流程 当我们调用insomd命令加载驱动后,驱动程序从module_init函数开始执行:硬件初始化 -> 申请主次设备号 -> 定义fops(file_operations)结构体 -> 申请cdev结构体并把fops结构体嵌入cdev结构体中与之绑定 -> cde 阅读全文
posted @ 2016-05-10 13:29 小禾先生 阅读(280) 评论(0) 推荐(0)
摘要:注意:1、只有在bootloader阶段才能使用j-link下载调试,一旦Linux运行起来后,j-link就不能再使用了。2、如果开发板上没有出厂时的wince系统,就可以跳过前面的擦除出厂系统自带bootloader的过程,直接使用j-link下载bootstrap程序并烧录u-boot。 3、 阅读全文
posted @ 2016-05-06 14:57 小禾先生 阅读(612) 评论(0) 推荐(0)
摘要:许多语言,例如C,C++,JAVA等等都是从hello world开始的,因此我们的驱动程序的开发也要从hello world入手。 首先来看下我们的代码: 上面的代码所有的程序都是从module_init函数开始的,module_init的使用是强制性的,这个宏会在模块的目标代码中增加一个特殊的段 阅读全文
posted @ 2016-05-03 17:38 小禾先生 阅读(248) 评论(0) 推荐(0)