摘要:
最近在驱动方面一直在概念上不能很好的理解.有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚功能,所以不能很好的有个硬件上的框架.今天看了一个ppt,一下子就明了了.觉得其实一个arm也没有那么困难嘛~~反而引脚越多越简单嘛~~看到s3c44b0如何外接rom启动bootloader.就明白了,原来始能引脚就在芯片上...然后好好的结合了下2440的PCB原理图,就发现了...原来模块都被指定好了.什么引脚出现什么功能...一切都变的豁然开朗起来.. 阅读全文
摘要:
现在用led做广告牌已经很普遍了。但是led的亮光灯很刺眼,现在走在街上都不想抬头。光污染越来越严重了。国家说低碳生活。其实是一个大大的误区。为什么?真正的低碳生活就是不要去这么消费。你发明出一个节能40%的产品,但是要面临大面积换装,你还说节能减排,那么换掉的老旧产品怎么解决??以前的路灯都是柔和的光,现在的led灯完全就是阴光,又冷又刺眼。一面刺激消费,一面呼吁环保。真是大笑话! 阅读全文
摘要:
怕忘了,自己记录下.用find和grep结合查找指定目录下指定类型文件中包含指定字符串的行所在.查找当前目录下所有c文件中包含stdio.h的行casio$ find ./ -name '*.c' | xargs grep "stdio.h"./termios/getpass.c:#include <stdio.h>./termios/ctermid.c:#include <stdio.h>./lib.44/cliconn.c:#include <stdio.h>./signals/abort.c:#include < 阅读全文
摘要:
本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。 刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。那怎么建立呢?为此上网“翻云覆雨”起来而结果却是“惨败而归“。 为此托了一天又4个小时(当然包括吃饭睡觉的时间),连个简单的 hello wrold 都没实现。(书中p22页最 阅读全文
摘要:
在写一个练习时候出现的.觉得奇怪,因为翻译说缺少哨兵??什么意思呢...=====================================/*//练习如下,创建一个进程*/#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(void){ printf("Running ps with execlp\n"); execlp("ps", "ps", "-ax", 0); /*<----错误出现 阅读全文
摘要:
是不是只有编译的时候才知道程序写了错误?有没有在未编译的时候就让机器帮你检查错误的工具呢?答案是:有!!splint工具.用一个最简单的HELLO WORLD来表述:=====================================/*错误很明显*/#include <stdio.h>int main(void){ print("hello world\n", s); return}-----------------------------------------------------casio$ splint -strict foo.c Splint 阅读全文
摘要:
gcc -MM 自动生成依赖关系.比如gcc -MM *.c. 能看到一堆输出.依赖都给你写好.真方便.示例如下:=========================casio$ gcc -MM *.c2.o: 2.c a.h b.h3.o: 3.c b.h c.hfoo.o: foo.cimport1.o: import1.cimport2.o: import2.cimport3.o: import3.cmain.o: main.c a.h对应的一个更好的程序是makedepend, 直接添加进Makefile====================================patch. 阅读全文
摘要:
学习内存管理时候,看到linux内核管理内存分配的部分,进行的小试验:一个程序能分配到多少内存呢?在一台物理内存1G, swap有512M的机器上的试验.分配到800多开始,硬盘开始转动.明显慢下来了.机器也会有点卡起来.最后的结果:Now allocated 1100 MegabytesNow allocated 1101 MegabytesNow allocated 1102 MegabytesNow allocated 1103 MegabytesCommand terminated by signal 90.20user 2.54system 1:17.39elapsed 3%CPU 阅读全文
摘要:
说是过几天到水利研究所参加连调,可惜这几天等着一点信号也没有,有点慢下来了.搞搞自己的...实验室的arm开发箱虽然样子很大,但是一个开发箱居然都不给原理图.这让人怎么搞啊,想编译个内核,发现连液晶是哪个公司的型号都不知道...还是一步一步来吧...有C8051F做arm的过渡我感觉还不错哈...晚上回来早点.继续上次的学习.fwrite和write,一个是标准I/O,一个是底层调用.谁快呢?我起初觉得即然用底层调用应该是很快的.不过实践是检验真理的好办法.下面给出实际测试情况:先上fwrite:===========================代码:------------------- 阅读全文
摘要:
学习中了解到,文件复制和文件块写操作.CPU在复制过程中操作一次read和write都会进行一次系统调用,那么字符写和块写的差别有多大呢?代码:==================================================字节操作:/*--------------------------------------------//写入1K大小的文件,文件内容为空.当然,稍作修改,可以复制任意字符.不论I/O//测试速度://Char creat complete!//0.00user 0.00system 0:00.02elapsed 38%CPU (0avgtext+0av 阅读全文
摘要:
链接地址:www.yuanma.org/data/2007/0501/article_2562.htm今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另 阅读全文
摘要:
今天在图书馆看到的,开始看起来,觉得挺不错,也开始了这本书的读书笔记了.本来想晚上回来打到博客里面,后来想,又不是我的原创,不过一点笔记而已,并且还不知道对不对,贴出来反而对看官产生了误导.所以作罢.这书真挺不错的.觉得从一些思维的角度来帮助程序员写出健壮的代码,当然,还包括如何与他人合作的一些建议.毕竟在现实社会中,不是所有的程序员都是十分优秀的,同样,也不是每个用户都是善意的.希望自己能成为一名合格的C语言程序员. 阅读全文
摘要:
不好意思,我就这么无耻的转过来了.原文出处:hi.baidu.com/way168/blog/item/ed1a87440c989748510ffeeb.htmlCRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理解,编程实现简单。用了一天时间研究了CRC的C语言实现,理解和掌握了基本原理和C语言编程。结合自己的理解简单写下来。 1、CRC简介 CRC检验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定... 阅读全文
摘要:
单端输入,输入信号均以共同的地线为基准.这种输入方法主要应用于输入信号电压较高(高于1 V),信号源到模拟输入硬件的导线较短(低于15 ft),且所有的输入信号共用一个基准地线.如果信号达不到这些标准,此时应该用差分输入.对于差分输入,每一个输入信号都有自有的基准地线;由于共模噪声可以被导线所消除,从而减小了噪声误差. 单端输入时, 是判断信号与 GND 的电压差. 差分输入时, 是判断两个信号线的电压差. 信号受干扰时, 差分的两线会同时受影响, 但电压差变化不大. (抗干扰性较佳) 而单端输入的一线变化时, GND 不变, 所以电压差变化较大. (抗干扰性较差) 差分信号和普通的单端信号走 阅读全文
摘要:
常用的: AND 与门 ANTENNA 天线 BATTERY 直流电源 BELL 铃,钟 BVC 同轴电缆接插件 BRIDEG 1 整流桥(二极管) BRIDEG 2 整流桥(集成块) BUFFER 缓冲器 BUZZER 蜂鸣器 CAP 电容 CAPACITOR 电容 CAPACITOR POL 有极性电容 CAPVAR 可调电容 CIRCUIT BREAKER 熔断丝 COAX 同轴电缆 CON 插口 CRYSTAL 晶振 DB 并行插口 DIODE 二极管 DIODE SCHOTTKY 稳压二极管 DIODE VARACTOR 变容二极管 DPY_3-SEG 3段LED DPY_7-SEG 阅读全文
摘要:
#include <stdio.h>/*<--------- #define string char * ---->*/typedef char * string; int main(void){ string a[] = {"I", "like", "to", "fight,"}, b[] = {"pinch,", "and", "bight."}; printf("%s %s %s %s %s %s %s\n" 阅读全文
摘要:
觉得不错,转了.原帖位置: bbs.chinaunix.net/thread-993238-1-1.html==============================================1. 首先,在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自动转换成指针的类型.#include<stdio.h>void fun(){}int main(void){ printf("%p %p %p\n", &fun, fun, *fun); return 0;}------------------------- 阅读全文
摘要:
#pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para.............etc..baike.baidu.com/view/1451188.htm=======================强制使用函数而不是宏定义的两种方法:1: #undef 阅读全文
摘要:
第一个:------------------------------------------------------#include <stdio.h>#include <string.h>void tell_me(int f(const char *, const char *));int main(void){ tell_me(strcmp); tell_me(main); return 0;}void tell_me(int f(const char *, const char *)){ if (f == strcmp) /* <-----我不理解这里*/ 阅读全文
摘要:
什么是空指针常量(null pointer constant)? [6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant. 这里告诉我们:0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (tyc: 我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量( 阅读全文