linux c
文章平均质量分 57
树懒的聪明
遥远的恒心!
展开
-
一种更小、更快、更高效的协议
前言之前分享关于JSON的使用:例说嵌入式实用知识之JSON数据。JSON类型数据可读性很好,但是整个数据包中会带有一些无用的数据,自然会在一定程度上带来通信负担。本篇文章我们来分享一种更轻量的数据格式——protobuf。protobuf的优点:更小、更快、更简单。 支持多种编程语言 。 解析速度快。 可扩展性强。什么是protobuf、protobuf-c?Protocol Buffers,是Google公司开发的一种数据格式,类似于XML能够将结构化数据序列化,可用于数据存储、转载 2021-11-02 07:44:30 · 148 阅读 · 0 评论 -
sed命令常见用法
查看文件或者目录是否存在,经常用到-d,-e,-f,其中区别如下-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真-f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真-w filename 如果 filename可写,则为真-x filename 如果 filename可执行,则为真-s f转载 2021-10-29 14:50:16 · 1451 阅读 · 0 评论 -
环形缓冲区的实现
队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除(出队)。队列的特点转载 2021-10-29 14:45:16 · 83 阅读 · 0 评论 -
Shell
菜鸟教程在线编辑器#!/bin/bashecho "/limebike/log/ap.log { su root list copytruncate compress olddir /limebike/log size 1500k missingok rotate 100 notifempty}/limebike/log/krn.log { su ro...转载 2021-10-29 14:44:18 · 87 阅读 · 0 评论 -
解决GPG error: The following signatures couldn‘t be verified because the public key is not available
将Ubuntu的源修改为国内源:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/88777483将Ubuntu的源修改为国内源的之后,执行sudo apt-get update出现问题:GPG error: The following signatures couldn't be verified because the public key is not available解决方法:sudo gpg --keyserver转载 2021-08-30 20:21:52 · 927 阅读 · 0 评论 -
Ubuntu升级GCC版本
12344567781111转载 2021-08-30 20:13:50 · 1484 阅读 · 0 评论 -
struct hostent结构体使用
struct hostent { char *h_name; //正式主机名 char **h_aliases; //主机别名 int h_addrtype; //主机IP地址类型:IPV4-AF_INET int h_length; //主机IP地址字节长度,对于IPv4是四字节,即32位 char **h_addr_list; //主机的IP地址...转载 2020-09-17 08:05:52 · 204 阅读 · 0 评论 -
使用busybox制作rootfs
1 获取源码解压从busybox的官方主页http://www.busybox.net ,下载busybox的源码,目前最新的版本为busybox-1.13.3.tar.bz2#tar –jvxf busybox-1.13.3.tar.bz2进入解压后的busybox源码目录#cd busybox-1.13.32 配置busy转载 2014-12-18 08:38:52 · 493 阅读 · 0 评论 -
S3C2410下INTPND 寄存器与SRCPND的比较
通过多方查阅资料加Google,我发现,为了让朋友们更好更容易的去理解ARM体系结构中的中断体系,下面的东西还是值得分享的。 在查看芯片手册时,大家会发现,INTPND 寄存器与 SRCPND 寄存器 长得几乎一模一样,但他们在中断异常处理中却扮演着不同的角色,如果说SRCPND 是中断信号进入中断处理模块后所经过的第一个场所的话,那么INTPND则是中断信号在中断处理转载 2014-11-03 14:39:17 · 385 阅读 · 0 评论 -
在linux中,如何增加、修改、删除、暂停和冻结用户名
在linux中,如何增加、修改、删除、暂停和冻结用户名在操作增加、修改和删除用户名前,先认识linux中两个最重要的文件,它们就是账号管理最重要文件“/etc/passwd”与“etc/shadow”.环境:windows 7 + virtualbox + fedora 15 KDE1.认识“etc/passwd”文件在命令行输入:vi /etc/passwd转载 2014-12-18 08:40:28 · 321 阅读 · 0 评论 -
linux文件系统启动流程 ---笔记整理
下面是一张linux启动流程图:在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为:1. /sbin/init2. /etc/inittab3. /etc/rc.d/rc.sysinit4. /etc/rc.d/rcN.d //这是几个文件夹N代表数字1,2,3,4..5. /etc/fstab1.关于/sbin/init与/e转载 2014-12-18 08:42:36 · 467 阅读 · 0 评论 -
linux下vi命令大全
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复f转载 2014-12-18 08:43:59 · 281 阅读 · 0 评论 -
Linux开机启动过程分析
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当 你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关 信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP转载 2014-12-18 08:46:09 · 319 阅读 · 0 评论 -
Linux新手入门:账号和密码文件 /etc/passwd和/etc/shadow抢沙发
Linux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到,作为一名合格的Linux系统管理员,一定要对这两个文件非常的熟悉!(天哪,竟然把用户和密码就放在文件中,不怕被其他人看的或者修改吗?不用紧张啦,/etc/passwd只有系统管理员才可以修改的,其他用户可以查看,/etc/shadow其他用户还是别想了,看都不让看,这个时转载 2014-12-18 08:37:30 · 812 阅读 · 0 评论 -
gcc warning: no newline at end of file
在WINDOW下编了一个程序,本想看linux是否能顺序编译通过,但出现警告: warning: no newline at the end of file修复这个警告,在文件结尾回车一下就行了。可以很少会有人去仔细探究,为什么gcc会给出这么一个警告?原因其实也很简单,因为标准规定如此。C99第5.1.1.2节这样写道: Each instance of a ba转载 2014-10-16 14:14:46 · 509 阅读 · 0 评论 -
深入理解ARM体系架构(S3C6410)---外部中断控制实例
关于S3C6410的中断问题,网上有很多高手已经分析过了,在这里我主要分析S3C6410实现过程,和自己已经编写好的简单程序。我用的是mini6410 的k1键实现外部中断。按键初始化:void Key_Init() { rGPNCON|=(1<<1); //将GPN0设置为中断模式 rGPNPUD&=~(1<<0);//上拉电阻转载 2014-11-03 14:37:22 · 392 阅读 · 0 评论 -
C语言-链表
链表在C语言中很重要,本文所设计的链表,以一个经典的存储学生学号和成绩的结构体作为例子,具 体的结构体如下: struct student { int num; float socre; struct student *next; }; 首先建立一个链表,具体函数如下: #define转载 2014-11-08 22:28:15 · 269 阅读 · 0 评论 -
Linux开机启动过程分析十步
Linux开机启动过程分析十步开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬转载 2014-11-08 22:27:03 · 382 阅读 · 0 评论 -
u-boot.lds文件诠释
u-boot.lds文件诠释 网上大部分u-boot.lds文件的分析大部分都是千遍一律,例如下面就是本人在网上找到的关于u-boot.lds的资料。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*指定输出可执行文件是elf格式,32位ARM指令,小端*/OUTPUT_ARCH(ar转载 2014-11-08 22:06:29 · 292 阅读 · 0 评论 -
LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则
1. tcp 收发缓冲区默认值 [root@qljt core]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 416153687380 :tcp接收缓冲区的默认值 [root@qljt core]# cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 416转载 2014-11-08 22:07:51 · 336 阅读 · 0 评论 -
sprintf,你知道多少?
选自《CSDN 社区电子杂志——C/C++杂志》http://emag.csdn.net 2005 年1 月 总第1 期 - 93 -本文作者:steedhorse(晨星)printf 可能是许多程序员在开始学习C 语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf 了解多吗?在将各种类型的转载 2014-10-12 15:18:58 · 415 阅读 · 0 评论 -
sscanf函数用法
本文转自:http://kmplayer.iteye.com/blog/556293 此文所有的实验都是基于下面的程序: char str[10]; for (int i = 0; i 执行完后str的值为 str = "!!!!!!!!!!" 我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的转载 2014-10-12 16:16:08 · 353 阅读 · 0 评论 -
linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待转载 2014-11-03 14:34:46 · 357 阅读 · 0 评论 -
s3c6410中断处理
Andrew Huang bluedrum@163.com 转载请注明作者及联络方式一.中断的场景模拟----------------------------------------------------------------------------中断(Interrupt)是最常用的硬件通知软件的机制。中断的优点相对另一种机制轮询(Polling)的缺点而言,这两种的机制我们转载 2014-11-03 14:36:27 · 441 阅读 · 0 评论 -
busybox登陆后没要求输入密码的解决办法
制作好ramdisk之后 通过串口进入系统 却发现系统直接登录进去了 并没有要求用root用户名和密码进行登录 解决如下在 /etc/init.d/rcS 文件添加如下语句 root:/> cat /etc/inittab ::sysinit:/etc/init.d/rcS::respawn:/bin/login#::respawn:-/bin/sh#tty转载 2014-12-18 10:31:57 · 832 阅读 · 0 评论 -
busybox 文件系统 etc目录,登陆 login,密码 password,shadow
用busybox做文件系统的很多介绍,这里就不啰嗦了。说几点:1、etc目录下有inittab,则系统按此文件规则来启动和运行,内容为:::sysinit:/etc/init.d/rcS#把respawn改成askfirst就会出现按enter才能进去的提示::respawn:-/bin/sh::restart:/sbin/init::ctrlaltdel:/s转载 2014-12-18 10:36:55 · 867 阅读 · 0 评论 -
Linux 操作系统启动流程
Linux系统启动的基本过程和步骤:最近在某个版块看到有人讨论GRUB的问题,这里是我个人的一些理解。我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖引玉了!Linux系统启动过程大致按照如下步骤进行(这是一个简述):第一阶段:BIOS启动引导阶段; 在该过程中实现硬件的初始化以及查找启动介质;转载 2014-12-19 08:36:48 · 727 阅读 · 0 评论 -
在单片机中什么是堆栈?它的作用是什么?
在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。保护现场/恢复现场数据传输...转载 2018-06-12 09:40:52 · 5884 阅读 · 0 评论 -
RAM中设置堆栈区
RAM的特点就是高速存储。形象的说:堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序 ;而在RAM中设置堆栈是为了存储程序运行过程中的变量或数据的;提高代码的执行速率。例如:现在有一个函数调用了一个子函数;那么调用前的一些变量或数据就要放入堆栈中;当子函数执行完后又把变量或数据从中堆栈取出来。但是你要注意堆和栈是两种不同的数据结构;堆(操作系统): 一般由程序...转载 2018-06-12 09:39:29 · 3603 阅读 · 0 评论 -
Linux设备模型——设备驱动模型和sysfs文件系统解读
2012-07-29 19:34 3295人阅读 评论(2) 收藏 举报目录(?)[+]本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的。在分析过程中,本文将以platform总线和spi主控制器的platform驱动为例来进行讲解。其实,platform机制是基于driv转载 2015-03-05 16:16:28 · 1604 阅读 · 0 评论 -
用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别
文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地转载 2014-12-12 17:55:28 · 823 阅读 · 0 评论 -
根文件系统的挂载过程
1、VFS注册2、VFS挂载3、根文件系统的挂载default_rootfs()主要往rootfs中生成两个目录/dev和/root以及一个设备文件/dev/console。似乎在rootfs中的init文件必须位于根目录下,即/init,否则系统会尝试mount其他的文件系统。populate_rootfs()如果内核支持ini转载 2014-12-12 13:54:11 · 523 阅读 · 0 评论 -
linux挂载文件系统
挂载文件系统,目前有两种方法:一是通过 mount 来挂载另一种方法是通过/etc/fstab文件来开机自动挂载1、通过mount 来挂载磁盘分区mount的用法其实也简单,我们说几个常用的;挂载文件系统的命令格式:[root@localhost beinan]# mount [-t 文件系统 ] [-o 选项] 设备 目录注:-t转载 2014-12-12 09:35:22 · 604 阅读 · 0 评论 -
S3C2440 flash 分区 nor nand FLASH区别(开发板启动时) 及 结构
nandflash 的分区表 对应于内核arch/arm/mach-s3c2440/mach-mini2440.c中(友善官网提供的2.6.32.2的移植内核)flash 分区 nor nand FLASH区别(开发板启动时) 及 结构" title="S3C2440 flash 分区 nor nand FLASH区别(开发板启动时) 及 结构" style="margin:0px; padd转载 2014-12-12 17:53:33 · 1720 阅读 · 0 评论 -
【嵌入式linux】(第四步):安装NFS服务,并挂载到开发板
1.前言 由于嵌入式linux开发大多数使用的是交叉编译环境,难免很频繁的将文件在开发板和PC环境之间传递,最方便的当然是网络传递了,可以使用FTP,以及挂载NFS两种方式了,显然后者更为方便了。2.NFS服务安装 Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序: sudo apt转载 2014-12-12 11:23:24 · 369 阅读 · 0 评论 -
mtd层次分析
关于mtd的层次分析,网上一大堆,先看看网上怎么说的.MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱 动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层转载 2014-12-11 18:10:54 · 731 阅读 · 0 评论 -
使用BusyBox制作根文件系统 .
1、BusyBox简介BusyBox 是很多标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet;有些人将 BusyBox 称为 Linux 工具里的“瑞士军刀”。BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的转载 2014-12-09 23:13:03 · 605 阅读 · 0 评论 -
SQLite header and source version mismatch解决
最近需要用到sqlite,去官网下了一个编译安装后打开sqlite3出现SQLite header and source version mismatch这个错误。这个问题是因为ubuntu里面原来自带了一个老版的sqlite运行库,这个库由一个库文件和一个符号链接组成,位于/usr/lib/i386-linux-gnu目录,分别是libsqlite3.so.0.8.6和一个符号链转载 2015-01-29 14:33:40 · 1080 阅读 · 0 评论 -
安装SQLite3引发的库问题
由于项目需要,需要用嵌入式数据库SQLite3搭建数据库。首先当然是要安装SQLite啦。从官网下了安装包,读完README和INSTALL,发现安装过程很简单,还是老三式:./configure、make 和 make install。但是在安装好之后,程序还是无法运行,出现错误:ERROR:SQLite header and source version mismatc转载 2015-01-29 14:30:43 · 576 阅读 · 0 评论 -
新内核2.6.30编译完之后在目标板上看不到ttyS1
问题:在老内核2.6.24.3的目标板上,/dev下能看到ttyS0,ttyS1和ttyS2;没有ttys*文件;但是,内核升级到2.6.30后,在/dev下只能看到ttyS0和ttyS2,有ttys0~ttysf共16个文件;并且,不能通过open命令打开ttyS1设备。解决办法:1. 进入到内核所在目录linux-2.6.30,运行命令:转载 2015-01-09 08:35:26 · 480 阅读 · 0 评论