随笔分类 -  Linux

上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页
摘要:-L option表示程序不等待DCD信号。DCD信号是串口通讯时的一个信号,表示Data Carrier Detected,一般是modem连通之后会发送回来的一个信号,表示数据载波OK,可以继续通信了。但是,在现在的串口通信中,特别是嵌入式开发的时候,开发板上的串口,DCD这个pin一般都不会连线的,一般只连tx/rx/cts/rts四根线就OK了。所以,如果getty或者agetty没有指定-L选项,那么open /dev/ttyS0就会block在那里,因为kernel会wait在一个waitqueue上,等待串口的DCD信号上来(通过中断)。事实上,在getty/agetty程序中, 阅读全文
posted @ 2012-06-04 17:17 super119 阅读(1352) 评论(0) 推荐(0) 编辑
摘要:/* UTF-8 encoding00000000-01111111 00-7F US-ASCII (single byte)10000000-10111111 80-BF Second, third, or fourth byte of a multi-byte sequence11000000-11011111 C0-DF Start of 2-byte sequence11100000-11101111 E0-EF Start of 3-byte sequence11110000-11110100 F0-F4 Start of 4-byte sequence*/ 阅读全文
posted @ 2012-06-01 12:52 super119 阅读(139) 评论(0) 推荐(0) 编辑
摘要:Q. I'd like to rebuild a Debian / Ubuntu package called foo with additional option. How do I recompile .deb packages? A. To build a Debian package, you need the following packages / software installed on system [a] fakeroot : fakeroot package - runs a command in an environment wherein it appears 阅读全文
posted @ 2012-05-29 10:16 super119 阅读(758) 评论(0) 推荐(0) 编辑
摘要:From: http://ifedora.diandian.com/post/2012-02-28/15816554sudo 命令默认是通过终端设备读取密码,这样每次执行命令都需要用户输入密码后才能继续运行。但对于需要定时执行的脚本,就只能修改 sudo 读取密码的方法了。下面分别是一个关机和一个重启脚本的例子:采用重定向的方法(关机)#!/bin/bashsudo -S shutdown -h now <<EOFpasswordEOF利用管道(重启)#!/bin/bashecho password | sudo -S shutdown -r now其中选项 -S(S是大写的)是使 阅读全文
posted @ 2012-05-16 14:34 super119 阅读(529) 评论(0) 推荐(0) 编辑
摘要:hardfp compiles inline FP instructions. If you have an FPU this will be fastest. If you don't, every FP instruction will trap to an emulation routine (assuming your runtime supports this).softfp will compile a library call for every FP operation. Use this if you never run on a system with an FPU 阅读全文
posted @ 2012-05-16 09:11 super119 阅读(783) 评论(0) 推荐(0) 编辑
摘要:#!/bin/bash# Startup checkcase "$#" in2) echo "Install package: ${1} on device: ${2}, start working..." ;;*) echo "Usage: ${0} <l4t buildbrain file path> <SD card device file>" exit ;;esacfunction get_disk_info() { # look for a "given" file somewhe 阅读全文
posted @ 2012-05-15 13:21 super119 阅读(855) 评论(0) 推荐(0) 编辑
摘要:1. 如果要使用emerge安装多个package,貌似不能在命令行中使用通配符。写个脚本可以搞定。2. 如果使用equery list '*'查询出来某个package,名字是诸如:x11-base/xorg-drivers-1.12,那么emerge x11-base/xorg-drivers-1.12是不行的。emerge会说找不到这个package。需要这样写:emerge "=x11-base/xorg-drivers-1.12",或者直接emerge xorg-drivers也行。man一下emerge就可以知道,emerge的内容有四种写法,这 阅读全文
posted @ 2012-05-11 12:56 super119 阅读(452) 评论(0) 推荐(0) 编辑
摘要:比如:testcommand >> output 2>&1如果是这样:testcommand 2>&1 >> output,这样的话,stderr的输出还是会被打印到屏幕上。因为在解析到2>&1的时候,此时1这个FD还是stdout而不是output这个文件,所以,需要将2>&1放到命令的后面,至少要放到1这个FD已经被重定向之后。 阅读全文
posted @ 2012-05-10 23:27 super119 阅读(245) 评论(0) 推荐(0) 编辑
摘要:1. crontab -e编辑定时任务,crontab -l查看。最后的cron任务文件保存在/var/spool/cron/crontab目录下2. cron会切换到/var/spool/cron/crontab目录下cron文件的owner这个用户,然后执行定义的定时任务。3. 但是cron切换用户的时候,任何环境变量,包括.bashrc都不会被执行到。所以诸如$HOME这样的变量也是没有定义的。所以,一般在定时任务的脚本中,我们会这样处理:#!/bin/bashHOME=/home/markzsource ${HOME}/.bashrcexport PATH=/usr/local/bin 阅读全文
posted @ 2012-05-10 09:46 super119 阅读(310) 评论(0) 推荐(0) 编辑
摘要:Resume的时候,其实最开始是从bootrom启动,再到uboot,然后再到kernel,到kernel的common code的时候,arch相关的代码都已经跑完,此时CPU已经起来了(其实CPU起来之后执行的第一句代码位于设定好的CPU reset handler指定地方的代码,一般这是一段汇编,在这里会去读取suspend结束的时候的一些系统状态,从而可以顺利的转到kernel层继续)。所以到了kernel这边的时候,是从suspend结束时的下一条指令开始继续执行。具体就位于suspend.c的suspend_enter的下半部分代码。在这里就可以看到,比如dpm_resume_n. 阅读全文
posted @ 2012-04-24 14:44 super119 阅读(714) 评论(0) 推荐(0) 编辑
摘要:set_current_state(TASK_UNINTERRUPTIBLE);schedule_timeout(HZ * 5);这样可以保证schedule_timeout return的时候,至少过去了HZ * 5这么多jiffies的时间。不过这是不好的做法,不得已不要这么做。 阅读全文
posted @ 2012-04-19 15:05 super119 阅读(290) 评论(1) 推荐(0) 编辑
摘要:转自:http://hamersun.blogspot.com/2010/05/strace-for-arm.htmlsteps:1. 從 http://sourceforge.net/projects/strace/files/strace/ 下載strace source code, 目前最新版為4.5.20 (strace-4.5.20.tar.bz2)2. tar -jxv -f strace-4.5.20.tar.bz23. ./configure --host=arm-linux CC=arm-linux-gcc LD=arm-linux-ld , 配置makefile4. ma. 阅读全文
posted @ 2012-04-16 19:36 super119 阅读(674) 评论(0) 推荐(0) 编辑
摘要:推荐一下,真的不错。http://mobaxterm.mobatek.net/ 阅读全文
posted @ 2012-04-11 13:33 super119 阅读(438) 评论(0) 推荐(0) 编辑
摘要:很简单,进入提示的目录,用git status看下,能看到所谓的uncommitted changes,然后用:git checkout -- <file>revert chagne就OK了。也可以用git reset --hard HEAD^1 阅读全文
posted @ 2012-04-10 10:27 super119 阅读(3772) 评论(0) 推荐(0) 编辑
摘要:代码不规范,比如超过80 column,括号后有空格,申明指针星号没有挨着变量名等等。代码静态检查,比如msleep小于20的话,会建议修改成20,因为小于20没啥意义。scripts目录下其实还有一些脚本,如cleanfile,cleanpatch这些可以用来帮助自动修改代码中的一些问题。checkpatch.pl加上-f option就可以直接对文件进行检查,而不是检查一个patch文件。这样就免得去生成patch文件了。 阅读全文
posted @ 2012-04-06 11:16 super119 阅读(2235) 评论(0) 推荐(0) 编辑
摘要:这个workqueue比较实用,在suspend的时候会freeze,这样就会避免当suspend的时候,一些设备被关闭(或者clock被gate,或者power被gate),但是workqueue中还有work在运行从而导致一些问题。跟了一下代码,这个system_freezable_wq主要就是在create workqueue的时候加上了一个FREEZABLE的flag,然后当suspend发生的时候,在没有开始真正suspend device之前,有一个suspend_prepare会调用suspend_freeze_processes,这样一路调用下来,最终会调用到freeze_w. 阅读全文
posted @ 2012-04-05 11:25 super119 阅读(1768) 评论(0) 推荐(0) 编辑
摘要:代码位于:power/suspend.c,从函数pm_suspend开始。suspend的逻辑和driver相关的主要就是遍历所有device,并调用他们相关driver的suspend函数指针(包括该device的class,bus这些的suspend函数指针)。至于device调用的先后次序是这样的:当我们执行device_add的时候,这些device会被加到一个dpm_list的list中,而且晚add的device会出现在list的靠前位置。也就是说,早add的device会晚一点被suspend,最后add的device会第一个被suspend。resume的时候就正好反过来,.. 阅读全文
posted @ 2012-04-03 14:40 super119 阅读(320) 评论(0) 推荐(0) 编辑
摘要:因为kernel启动的CMDLINE有两个来源:(1)来自bootloader。比如u-boot会将CMDLINE放在一个地址中,然后kernel从这个地址就可以取到。当然这个地址uboot和kernel的代码中必须一致。(2)来自make menuconfig的时候的指定。在make menuconfig的时候,在Boot options->Kernel command line type中,可以指定kernel的CMDLINE是来自uboot还是来自kernel自身配置的,还是extend from bootloader(这个是指将bootloader给出的cmdline和kerne 阅读全文
posted @ 2012-04-03 13:48 super119 阅读(1584) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.chinaunix.net/space.php?uid=20643761&do=blog&id=1594837platform_device_add最终还是调用老接口device_add,只是多了将resource注册进内核的步骤。platform_driver_register也是调用driver_register,而且在driver_register中,会调用到driver的probe函数。platform_device_register()注册过程------------------------------------/* arch/arm/ 阅读全文
posted @ 2012-04-02 17:17 super119 阅读(387) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/lanmanck/article/details/4455692从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统.. 阅读全文
posted @ 2012-04-02 17:07 super119 阅读(264) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页