摘要:
移植Tslib1 下载源码tslib-x.x.tar.gz2 解压,cd tslib3 生成configure ./autogen.sh4 配置,生成Makefile ./configure --host=arm-none-linux-gnueabi(平台) --prefix=/(安装目录) --enable-debug=no5 编译 make6 安装 make install 在指定的安装目录下生成/bin /etc /lib /include文件夹,并放入相应的文件。如果相应的文件夹已经在,则把相应的文件放入对应的文件夹。7 运行测试程序,需要配置如下参数export TS... 阅读全文
摘要:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <limits.h>void swap(unsigned char *a, unsigned char *b);/* @brief reverse an array, whose index is equal and larger than lo, and equal and smaller then high*/void reverse(unsigned char array[], int lo, int high) 阅读全文
摘要:
1 检查可用IP#!/bin/shi=0while [ "$i" -le "255" ]do str="10.200.28.$i" ping -c 4 $str | awk '{if ($1=="PING") {ip=$2} else if ($5=="received,") {if ($4==0) {print ip,"/tFree"} else {print ip, "/t/tIn use"}}}' i=`expr $i + 1`don 阅读全文
摘要:
指针-----一个指针变量存储另一个对象或函数的地址。星号*的意义是指向。printf提供了输出指针的格式符%p。一个指针,无论它指向的对象是何种类型,它占用的内存都是一样的。在32位的电脑上,指针长度通常是4个字节。void*被用作通用指针类型。类型限定符const, volatile, restrict如果出现在*和指针名之间,则是修饰指针本身,否则就是修饰它所指向的对象。volatile告诉编译器,一个对象可能被另一个进程或事件所改变。因此每次访问都应该避免用缓存的值。如果要把一个指针转换为一个含有更少类型限定符的指针,你必须使用显示转换。相反的转换编译器会隐式完成。restrict 只 阅读全文
摘要:
声明--------------在你能够在表达式中使用相应表达式之前,编译器需要知道它们的类型、作用域。所以,每一个编译单元必须包含在这个编译单元中用到的每一个标识符的声明。除了用作goto语句跳转目标的标签外,所有其它的标识符都必须在它们第一次使用之前显示声明。typedef 声明: 为一个已经存在的类型声明一个新的名字。存储类别说明符extern static auto register声明中的存储类别说明符决定被声明标识符的链接方式和相应对象的声明周期。带auto声明的对象具有自动存储期。在函数内声明的对象默认具有自动存储期。register关键词提示编译器应该使一个对象能够被尽可能快的 阅读全文
摘要:
内核概述Linux内核提供了应用程序可以运行的执行环境。因此,内核必须提供一组服务及相应的接口。内核可以说是有一个个驱动模块和一些公用模块组成的。内核响应用户空间的请求,驱动硬件提供相应的服务。更进一步可以说内核是由一系列函数和一些全局数据结构组成。系统的运行系统的运行是以一个个进程的方式进行的。内核本身并不是进程,而是进程的管理者。当进程需要用到内核提供的服务是,它通过调用系统调用转到内核执行。Linux内核包括几个所谓的内核线程。在单处理器系统中任何时候只有一个进程运行。如果进程运行在内核态,处理器就执一些内核例程。Linux内核的各个部分并不是严格按照顺序依次执行的,而是采用交错执行的方 阅读全文
摘要:
C语言特点:1 良好的可移植性2 接近机器语言3 高效操作系统大部分可以用C语言编写,少部分与硬件紧密相关的部分用汇编来写。许多与硬件相关的操作由C标准库提供。C高度的可移植性归功于它是一门只含少量硬件相关元素的紧凑的核心语言。C是特别为系统编程设计的,常被用来开发文字处理、数据库、图像处理软件等。C程序的结构:预处理命令全局变量定义函数定义每一个C源文件和它所包含的头文件构成一个翻译单元。printf中转义字符:\b 退格 \n 回车换行 \r 回车--移动到行首C编译器是如何工作的?每一个翻译单元由一个源文件和被它引用的头文件构成,如果没有错误,编译器将产生一个包含相应机器码的目标文件。之 阅读全文
摘要:
【问题】背光驱动初始化先于LCD驱动初始化,导致LCD驱动初始化时出现闪屏的现象。【解决过程】1 mach-xxx.c中platform devices列表如下/* platform devices */static struct platform_device *athena_evt_platform_devices[] __initdata = { //&xxx_led_device, &xxx_rtc_device, &xxx_uart0_device, &xxx_uart1_device, &xxx_uart2_device, &xxx_ 阅读全文
摘要:
ls | grep [\.][^c]$ | awk '{system("rm "$0)}' 或者 rm `ls | grep [\.][^c]$` 删除当前目录下所有非.c文件rm `svn status | awk '{print $2}'` 删除当前目录下与SVN不一致的文件【python删除字串中多于的空格】import rep = re.compile(r'\s+')str = p.sub(' ', str) 阅读全文
摘要:
从源文件生成可执行程序所经历的阶段: 预处理、编译、汇编、链接。1 预处理(preprocessing):预处理器执行源文件中的预处理命令、扩展源文件中的宏。 把包含所有的头文件扩展到源文件,替换源文件中的宏。预处理阶段影响GCC行为的常用选项如下:-E:保存预处理输出作为诊断用,打开该选项GCC只执行预处理。-o: 指定输出的中间文件名,默认输出到标准输出。-C:阻止预处理器移除源文件和头文件中的注释。-D name[= definition] 在预处理源文件之前定义符号name。该选项结合源文件中的预处理命令#ifdef name可以用于 条件编译。例如:-D DEBUG可以用来... 阅读全文