linux c
文章平均质量分 65
涛涛声依旧
开始牛逼的嵌入式开发之旅。
展开
-
linux 嵌入式 基本概念
1. 第一组 用户管理类命令 1.添加用户 格式 : useradd 【选项】 用户名 范例: useradd david 添加名字为david的用户,当用户创建成功后,会在/home/目录下生成与用户名同名的目录。 2.删除用户 格式 : userdel 【选项】 用户名原创 2016-04-07 18:49:45 · 360 阅读 · 0 评论 -
linux文件解压的参数
.tar.gz 格式解压为 tar -zxvf xx.tar.gz.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2原创 2016-07-05 16:56:54 · 300 阅读 · 0 评论 -
双向循环链表
#ifndef _DLINKLIST_H_#define _DLINKLIST_H_typedef void DLinkList;typedef struct _tag_DLinkListNode DLinkListNode;struct _tag_DLinkListNode{ DLinkListNode* next; DLinkListNode* pre; };原创 2016-06-22 20:27:54 · 196 阅读 · 0 评论 -
栈的链式 结构实现
1.这个继承了线性链表的特性。#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next;};LinkList* L原创 2016-06-23 14:46:51 · 318 阅读 · 0 评论 -
shell 详解
1.变量:字符串、数字、环境和参数。2.条件:shell中的布尔值。3.程序控制:if、elif、for、while、untill、case。4.命令列表:5.函数。6.shell内置命令。7.获取命令的执行结果。8.here文档。 $salutation=Hello $echo $salutation在shell中,原创 2016-09-30 16:54:45 · 423 阅读 · 0 评论 -
shell详解二
1.控制结构在下面的小节中,各语句的语法中的statements表示(when、while或until)测试天剑满足时,将要执行的一系列命令。1.if语句if conditionthenstatementselsestatementsfi 2.elif语句#!/bin/shecho "Is it morning?Ple原创 2016-10-03 18:35:13 · 478 阅读 · 0 评论 -
shell详解三
1.命令列表 有时,我们想要将几条命令连接成一个序列。 if [ -f this_file ] ; then if [ -f that_file ] ; then if [ -f the_othe_file ] ; then原创 2016-10-03 19:05:51 · 248 阅读 · 0 评论 -
shell详解四
1.命令shell脚本程序内部执行两类命令,一类是可以在命令提示符中执行的普通命令,也成为外部命令。一类是我们提到的内置命令,也称内部命令。1)break命令用这个命令在控制条件未满足之前,跳出for,while,或until循环。可以用break命令提供一个额外的数值参数来表明所要跳出的循环成熟,在默认情况下,break只跳出一层循环。#!/bin/shrm原创 2016-10-03 19:56:31 · 454 阅读 · 0 评论 -
shell详解五
1.export命令export命令将作为它参数的变量导出到子shell中,并使之在shell中有效。1)导出变量#!/bin/shecho "$foo"echo "$bar"这个是export2#!/bin/shfoo="The first meta-syntactic variable"export bar="The second meta-原创 2016-10-03 21:13:05 · 335 阅读 · 0 评论 -
shell详解 六
1.unset命令unset命令的作用是从环境中删除变量或函数。这个命令不能删除shell本身定义的只读变量#/bin/shfoo="Hello World"echo foounset fooecho foo2.find命令它的功能是查找文件,它及其有用,它不仅仅是因为它有选项,测试和动作类型的参数,也由于其中一个参数的处理结果可以影响后续参数的原创 2016-10-03 21:53:25 · 290 阅读 · 0 评论 -
shell详解七
1.使用grep命令在文件中搜索字符串。事实上,一种非常常见的用法是在使用find命令时,将grep作为传递给-exec的一条命令。grep命令使用一个选项,一个匹配的模式和要搜索的文件:grep [options] PATTERN [FILES]如果没有提供文件名,则grep命令将搜索标准输入。-C 输出匹配行的数目,而不是输出匹配的行-E 启用扩展表达式-h 压原创 2016-10-03 22:31:59 · 312 阅读 · 0 评论 -
shell详解八
1.算术扩展1.expr命令,它允许对简单的算术命令进行处理,但这个命令执行起来相当慢。使用$(())中能够更有效地完成简单的算术运算。这里与x=$(...)命令不同,两对圆括号用于算术替换,而我们之前见到的一对圆括号用于命令的执行和获取输出。2.参数扩展foo=fredecho $foo但当我们在变量后附加的字符时就会遇到问题。例如处理名为1_tmp和2_原创 2016-10-04 12:21:20 · 485 阅读 · 0 评论 -
shell详解九
1.调试脚本程序脚本程序的调试通常都很容易,但并没有特定的辅助工具。当出现错误时,shell一般都会打印出包含错误的行的行号。如果这个错误并不是非常明显,我们可以添加一些额外的echo语句来显示变量的内容。因为脚本程序是解释执行的,所以在脚本程序的修改和重试过程中没有编译方面的额外开支。命令行选项 set选项 说明sh -n set -o noexec set -n 只检查语原创 2016-10-04 12:52:46 · 296 阅读 · 0 评论 -
通用树结构的链式存储
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next; }; LinkList* LinkList_Create()原创 2016-06-29 23:27:00 · 503 阅读 · 0 评论 -
线性队列的改变
#ifndef _SEQQUEUE_H#define _SEQQUEUE_Htypedef void SeqQueue;SeqQueue* SeqQueue_Create(int capacity);void SeqQueue_Destroy(SeqQueue* queue);void SeqQueue_Clear(SeqQueue* queue);int SeqQueu原创 2016-06-27 16:08:46 · 256 阅读 · 0 评论 -
linux驱动开发前奏
驱动开发概述:1.驱动分类2.驱动学习方法常规分类法: 字符设备 块设备 网络设备字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常支持open, close, read 和 write 系统调用。例如:串口,led,按键。在大部分Unix系统中,块设备定义为:以块(通常512字节)为最小传输单位的设备,块设备不能按字原创 2016-04-11 00:46:00 · 292 阅读 · 0 评论 -
linux驱动
1.使用字符设备驱动程序1) 编译/安装驱动2)创建设备文件3)访问设备1) 在linux系统中,驱动程序通常采用内核模块的程序结构进行编码。因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。 驱动名 memdev.c #include #include #include #include #include int原创 2016-04-12 00:03:43 · 490 阅读 · 0 评论 -
字符驱动分析
1.使用字符设备驱动程序 1) 编译/安装驱动 2)创建设备文件 3)访问设备 1) 在linux系统中,驱动程序通常采用内核模块的程序结构进行编码。 因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。 驱动名 memdev.c #include #include #include #include #includ原创 2016-04-13 21:46:12 · 429 阅读 · 0 评论 -
字符驱动的控制技术
1.设备控制理论:作用:大部分驱动程序除了需要提供读写设备的能力外。还需要具备控制设备的能力。比如:改变波特率。设备控制-应用函数在用户空间,使用ioctl系统调用来控制设备,原型如下 int ioctl(int fd,unsigned long cmd ....)fd:要控制设备文件描述符cmd: 发送给设备的控制命令 ..... :原创 2016-04-13 22:04:03 · 307 阅读 · 0 评论 -
每天遇到的问题
Unable to find the ncurses libraries的解决办法 转载▼我们在更新CentOS或者Ubuntu的内核时,执行make menuconfig可能看如这样的错误:*** Unable to find the ncurses libraries or the*** required header files.*** ‘ma转载 2016-04-27 16:28:25 · 314 阅读 · 0 评论 -
遇到的问题 cc1: error: unrecognized command line option "-fconserve-stack"
这个是交叉编译器不兼容的问题。 解决办法:找到适合自己的内核版本的交叉编译器,然后放置到/usr/local/arm 目录下: 然后再 /root/.bashrc 中保存修改的变量路径。 export PATH=$PATH:/usr/local/arm/....原创 2016-04-21 10:55:30 · 1983 阅读 · 0 评论 -
uboot移植之前的工作
1.1计算机系统的主要部件:计算机系统是有cpu来做核心进行运行的系统。典型的计算机系统有:pc机,嵌入式设备(手机、平板电脑、游戏机),单片机(家用电器)。1.2计算机系统组件部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:cpu+外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)。1.3pc机原创 2016-04-23 18:33:08 · 5197 阅读 · 0 评论 -
uboot移植准备工作二
第一部分2.3.1uboot配置编译实践1)源头的源代码时uboot官网下载的。这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的SoC对应的移植版本。2)SoC厂商在退出一款SoC后,厂商的工程师会去uboot官网下载一个uboot,根据自己Soc进行第一步移植,移植的目标是厂商推出的开发板。(譬如三星的S5PV210芯片厂商出的开发板就叫SMDKV210)原创 2016-06-24 09:03:51 · 3311 阅读 · 0 评论 -
uboot移植准备四
第二部分 start_armboot(void)函数简介1. 在uboot/lib_arm/board.c中 从327-798。这不是全部,因为里面还调用了别的函数。2. 为什么这么长的函数,怎么不分成两三个函数?主要因为这个函数整个构成了uboot启动的第二阶段。3. 宏观分析:uboot第二阶段应该做什么? 概况来讲,uboot第一阶段主要是初始化soc内部的一些部件(譬如,看门狗原创 2016-06-24 09:21:48 · 2991 阅读 · 0 评论 -
uboot移植准备工作三
2.5.11.2 )1. TTB就是translation table base 转换表基地址。首先要明白什么是TT(translation table转换表),TTB其实就是转换表的基地址。2. 转换表是建立一套虚拟地址映射的关键。转换表分2部分,表索引和表项。表索引对应虚拟地址,表项对应物理地址。一对表索引和表项构成一个转换表单元,能够对一个内存块进行虚拟地址转换。(映射中基本规定中规原创 2016-06-24 09:24:23 · 644 阅读 · 0 评论 -
队列 线性队列
#ifndef _SEQLIST_H_#define _SEQLIST_H_typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(SeqList* list原创 2016-06-25 17:51:12 · 497 阅读 · 0 评论 -
链式存储队列
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next;};LinkList* LinkList_Create();vo原创 2016-06-25 23:07:16 · 311 阅读 · 0 评论 -
linux文件操作(一)
1.linux文件结构 它们为操作系统服务和设备提供了一个简单而统一的接口。在linux中,一切都是文件。大数情况下你只需要使用五个基本的函数-open close read write ioctl。目录也是文件,正常情况下所有用户都必须用上层的opendir/readdir接口来读取目录,不需要了解特定系统中目录实现的具体细节。2.目录 文件,除了本身原创 2016-10-04 17:07:24 · 411 阅读 · 0 评论