- 博客(677)
- 资源 (5)
- 收藏
- 关注
原创 powerpc平台watchdog总结
watchdog总结1. 硬件原理图这里使用了ADM706芯片,wdi喂狗引脚与CPUGPIO3相连。wdo看门狗超时复位信号输出引脚,与/MR手动复位输入相连,也就是会产生一个RESET信号。原理图如下所示: 2. uboot中添加watchdog喂狗功能首先需要在include/configs/xxx.h文件
2014-09-10 17:34:19
1696
原创 完成量(completion )实例
这是一个公交司机和售票员之间的线程调度,用于理解完成量,完成量是对信号量的一种补充,主要用于多处理器系统上发生的一种微妙竞争,在这里两个线程间同步,只有当售票员把门关了后,司机才能开动车,只有当司机停车后,售票员才能开门。 #include#include#include#include#includeMODULE_LICENSE("DualBSD/GPL");
2014-09-10 17:02:18
924
原创 看门狗的种类
在现在的嵌入式系统中主要可以分为三种类型的看门狗: 1. CPU内部自带的看门狗此类看门狗一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,设定溢出时间,并启动定时器。程序按时对定时器赋初值(或复位),以免被咬。这种看门狗是可以被禁用的(只要停止这个定时器即可)。大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册,如s3c2440系列芯片。优点:可以通过程
2014-09-10 16:45:47
3143
原创 gmp 移植
GNU MP is a library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. It has a rich set of functions, and the functions have a regular int
2014-04-22 13:33:39
725
原创 ppp 交叉编译
这里有一篇比较详细的ppphttp://blog.csdn.net/jmq_0000/article/details/7105287
2014-04-22 13:13:53
1180
原创 openssl 交叉编译
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
2014-04-22 12:34:12
683
原创 flex 交叉编译
我使用的是flex_2.5.35版, mips平台上交叉编译:./configure --host=mipsel-linux
2014-04-17 17:56:05
1091
原创 socket类型
流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不
2013-12-12 11:25:31
549
原创 do...while(false)的作用
经常在函数中见到 do {...}while(false);一直挺纳闷,为什么会有这样的代码。现在想明白一点,这样做中间可以用break来跳出循环,从而达到goto的作用,因为goto有诸多弊端,应尽量避免。
2013-12-10 09:09:32
702
原创 中断保存现场
通常,中断响应时硬件已经保存了PC和PS的内容,但是还有一些状态环境信息需要保存起来。如果不做保存处理,那麽即使以后能按断点地址返回到被中断程序,但由于环境被破坏,原程序也无法正确运行。中断响应时硬件处理时间很短,所以保存现场工作可由软件来协助硬件完成,并且在进入中断处理程序时就立即去做。对现场信息的保存方式是多样化的,常用方式有两种:一种是集中式保存:在内存的系统区中设置一个
2013-11-13 13:50:04
4516
1
原创 并发(concurrency)与并行(parallelism)
并发和并行并不是一个意思。并行:是严格的多CPU同时执行。并发,并不是严格的同时执行,而是以时间片为单位交替执行,所以不需要多处理器。例子:一个并发程序是指能同时执行通常不相关的各种任务。以一个游戏服务器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着复杂的信息交互。一个组件有可能要处理多个用户聊聊;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的
2013-11-07 11:10:00
547
原创 dd 之前必须 flash_eraseall 一下
用dd或nandwrite写mtd 设备 /dev/mtd* 之前,必须flash_erase 或flash_eraseall 一次,要不然会写不正确。
2013-11-06 16:50:25
856
原创 僵尸进程
1. 僵尸进程概念僵尸进程就是指子进程退出了,而父进程尚未退出,并且没有对子进程进行wait,致使子进程的资源得不到释放,依然占据在内存中,从而变成了像“僵尸”一样的进程.(僵尸不能动,却占据着身体;进程不能执行了,却占据着内存等资源)。 这种进程因为不再活动了,不会对信号进行处理,使用kill向它发送信号是没有用的,也就是它变成了杀不死的进程2. 僵尸进程的避免基本由3
2013-11-04 12:31:34
444
转载 linux中inittab文件详解
init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬件中没有固定的信息
2013-10-15 22:17:21
1198
原创 linux启动:upstart 原理(替代了传统的init)
长期以来,多数Linux发行版一直在使用Unix System V引入的 init 系统。init 由内核自身产生,任务是启动系统剩余部分,产生并监视所有其它进程,看其是否停止或僵死。System V init 虽然过去一直运行的很好,但它已经有些迟暮了。这也是 Ubuntu 为什么会使用Upstart来代替正在老化的 init 系统。获取源代码地址: 从http://upst
2013-10-15 22:07:33
1098
原创 linux启动:upstart(替代了传统的init)
长期以来,多数Linux发行版一直在使用Unix System V引入的 init 系统。init 由内核自身产生,任务是启动系统剩余部分,产生并监视所有其它进程,看其是否停止或僵死。System V init 虽然过去一直运行的很好,但它已经有些迟暮了。这也是 Ubuntu 为什么会使用Upstart来代替正在老化的 init 系统。获取源代码地址: 从http://upst
2013-10-15 20:57:58
224
转载 shell 脚本实现的守护进程
# #!不是注释符,而是指定脚本由哪个解释器来执行,# #!后面有一个空格,空格后面为解释器的全路径且必须正确。#! /bin/ashPRO_PATH=""# testpro为要守护的可执行程序,即保证它是一直运行的PROGRAM="testpro"# 此脚本一直不停的循环运行,while 与 do 放在一行上要在条件后加分号# if、then、while、do等关键字或命令是作
2013-10-15 15:41:22
662
原创 xenomai
这两天一直在玩xenomai, 这是个开源项目,地址:www.xenomai.org英文是这么介绍xenomai的:Xenomai is a real-time development framework cooperating with the Linux kernel, in order to provide a pervasive, interface-agnostic, har
2013-10-12 17:55:13
2169
原创 Linux下编译静态库(.a)和动态库(.so)
静态库 在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项: d -----从指定的静态库文件中删除文件 m -----把文件移动到指定的静态库文件中 p -----把静态库文件中指定的文件输出到标准输出 q -----快速地把文件追加到静态库文件中 r -----把
2013-10-11 12:10:41
661
原创 alsa-lib, alsa-utils安装方法
ALSA 驱动安装方法ALSA 驱动下载:去http://www.alsa-project.org/main/index.php/Main_Page 下载: alsa-driver-xxxxxx alsa-lib-xxxxxx alsa-ultis-xxxxxx即driver, lib, ultis包,后面的xxxxxx是具体的版本号,我
2013-10-10 11:41:31
1365
转载 amixer 命令使用
最近接触到amixer,大概明白了其意思和具体用法,简述如下。alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式
2013-10-09 13:34:23
584
原创 linux系统让进程在后台运行的几种方法
1. 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:$ ./test.sh & $ jobs -l[1]+ 17208 Running ./test.sh & 2. 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将
2013-09-27 15:42:00
475
原创 linux系统让进程在后台运行的几种方法
1. 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:$ ./test.sh & $ jobs -l[1]+ 17208 Running ./test.sh & 2. 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将
2013-09-27 15:35:41
479
原创 killall
Linux命令:killall用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,这真是一个太好用的命令了。常用参数格式:killall 杀死指定名字的进程。实际上是向名字为的所有进程发
2013-09-25 16:44:15
548
原创 shell 脚本中删除所有进程
arm机器上删除所有进程比较简单,x86上进程就多了,就要复杂一些:如果要删除名为 "abc" 的进程,可以用以下步骤完成! 1. 查看进程,比如说有名为 abc 的进程,可以这样查看它的详细信息:ps -aux | grep -i "abc" //表示查看所有包含abc字符的进程;2. 去掉包含grep本身命令的情况:ps -aux | grep -i
2013-09-25 16:33:06
773
原创 for循环中有多个限制结束条件的正确写法
正确写法应该是:for(i=a,j=b; id; i++,j--){....}我以前都是把多个条件用逗号分隔开写。for(i=a,j=b;id; i++,j--){....}一直没有什么问题。但是今天我做了一个题,一直找不出来错误,我单步调试,最后终于被我发现,就是这种写法错了。原来,我之前的写法其实是逗号运算符, id 结果就是j>d的结果~~要想限制
2013-09-25 13:20:46
2081
1
原创 grub 编译_安装_配置
grub 源代码可以从网上下,这里我用的是grub-1.981. 编译grub源文件./configure使用configure 进行配置,产生相应的makefile文件。make使用make 编译make install如果configure 时候指定 --prefix= /install, 他会把编译出来的文件都放在/install 目录下
2013-09-24 18:07:40
1424
原创 getopt()和getopt32()
getopt()和getopt32()这两个函数, 都是用来就是用来分析命令行参数的函数。1. getopt()在继续讨论getopt 之前,先要明确两个概念:选项(option) 和 选项参数(argument)。如下例子:gcc -g -lm foo.c -o foo -g 中的 g,-o 中的 o 还有 -lm 中的 l 就是选项,而 -lm 中的 m 就是 l
2013-09-24 11:47:49
978
原创 路由器和交换机有什么区别
一直都不清楚路由器和交换机的区别, 今天仔细查了查,终于弄明白了些.路由器 路由器和交换机的区别:交换机主要是实现大家通过一根网线上网,但是大家上网是分别拨号的,各自使用自己的宽带,大家各自上网没有影响,哪怕其他人在下载,对自己上网也没有影响,并且所有使用同一条交换机的电脑都是在同一个局域网内。路由器比交换机多了一个虚拟拨号功能,通过同一台路由器上网的电脑是共用一个宽带账号,大
2013-09-22 13:24:49
821
原创 nanosleep()
函数原型int nanosleep(const struct timespec *req, struct timespec *rem);d.h头文件#include 参数形式struct timespec{time_t tv_sec; /* seconds */long tv_nsec; /* nanoseconds */};功能这个函数功能是暂停某
2013-09-22 10:37:13
609
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人