摘要: 宽字符:每个字符统一占4个字节, sizeof(wchar_t) = 4,编码格式为Unicode。多字符:对于字符和数字,每个字符占1个字节,每个汉字占3个字节。sizeof(char) = 1, sizeof(汉字) = 3,编码格式为GBK多字符串与宽字符串之间的转换:代码示例如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 int main() 8 { 9 wchar_t *wstr = L"abcd一二三四", *wst;10 char *mstr="五六七八xyz", 阅读全文
posted @ 2014-03-02 21:03 ★行云流水★ 阅读(1678) 评论(0) 推荐(0) 编辑
摘要: 在Linux平台下,要为开发板编译内核,图形界面Qtopia,bootloader,还有其他一些应用程序,均需要交叉编译工具链。以交叉编译器arm-linux-gcc-4.3.2为例,安装步骤如下:1、将交叉编译器压缩文件arm-linux-gcc-4.3.2.tar.bz2(arm-linux-gcc-4.3.2.tar.gz)拷贝到拷贝到某个目录下,如:/temp/,进入到该目录,执行解压命令:cd /temptar xvjf arm-linux-gcc-4.3.2.tar.bz2 -C / 或者cd /temptar xvzf arm-linux-gcc-4.3.2.tar.gz -C. 阅读全文
posted @ 2014-02-12 17:55 ★行云流水★ 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 问题:在编译内核,执行make menuconfig命令的时候,提示如下错误:解决办法:1. 安装libncurses5-dev,通过命令:安装完毕之后再运行make menuconfig就可以了。问题解决。 阅读全文
posted @ 2014-02-12 17:21 ★行云流水★ 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1、IIC总线接口为开漏输出,因此需要接上拉电阻,通常为1~10k。(注:上拉输出即只能输出低电平,不能输出输出高电平,输出高电平时呈高阻态)2、使用IIC接口时,首先要配置引脚为IIC功能引脚。3、起始信号:当SCL处于高电平时,SDA出现一个下降沿。 停止信号:当SCL处于高电平时,SDA出现一个上升沿。 应答信号:接收方将SDA拉低,即SDA在第9个时钟脉冲时为低电平。反之,为高电平则为非应答。 阅读全文
posted @ 2014-02-07 22:04 ★行云流水★ 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 源文件用不同的编码方式编写,会导致代码的执行结果不同。用UE编辑文档时,可以使用快捷键"Ctrl + H"查看文字的字符编码(可以设置显示什么编码,ACII码、GBK、BIG5、Unicode等)。 在编译程序时,可以指定字符集,查看帮助信息:man gcc, :/charset -finput-charset=charset 表示源文件的编码方式, 默认以UTF-8来解析 -fexec-charset=charset 表示可执行程序里的字时候以什么编码方式来表示,默认是UTF-8如:gcc a.c -o agcc -finput-charset=GBK -fexec-ch 阅读全文
posted @ 2014-01-20 17:37 ★行云流水★ 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 4 typedef char int8_t; 5 typedef unsigned char uint8_t; 6 typedef unsigned short uint16_t; 7 typedef short int16_t; 8 9 #define N 64 //傅里叶变换的点数 10 #define M 6 //蝶形运算的级数,N = 2^M 11 #define N2 32 //N/2 12 #define N4 16 //N/4 13 14 #define... 阅读全文
posted @ 2014-01-06 16:04 ★行云流水★ 阅读(298) 评论(0) 推荐(0) 编辑
摘要: DMA驱动实际上是一个字符设备驱动程序,用普通的注册字符设备驱动即可。驱动代码如下: 1 /* 2 * dma驱动实际上是一个字符设备驱动。 3 * 本程序实现了用DMA将一段内存从一个源地址拷贝到目的地址,源、目的均在内存上, 4 *大小为BUF_SIZE。 还可以不适用DMA,直接使用MCU拷贝,使用命令MEM_CPY_NO_DMA和 5 *MEM_CPY_DMA选择是否使用DMA拷贝。 6 * 7 */ 8 9 #include 10 #include 11 #include 12 #include 13 #include 14 #i... 阅读全文
posted @ 2013-12-28 12:34 ★行云流水★ 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 1 #define PERF_ALIGN(x, a) __PERF_ALIGN_MASK(x, (typeof(x))(a)-1)2 #define __PERF_ALIGN_MASK(x, mask) (((x)+(mask))&~(mask))返回以a字节对齐需要的字节数,结果类似于roundup,例如:PERF_ALIGN(9, 4) = 12;PERF_ALIGN(11, 4) = 12;PERF_ALIGN(6, 2) = 6;1 #define roundup(x, y) \2 ( ... 阅读全文
posted @ 2013-12-27 10:40 ★行云流水★ 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 在linux\kernel.h中,有这么一个宏:1 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))意为向上取整,网上解释如下:1. 问题A,B都是整数并且 A>1, B>1求 ┌ A/B ┐ 即 A/B 的上取整。当 A/B 整除,往上取整返回值 为 A/B。当 不整除,返回值是 int(A/B) + 1这个算法的一个应用:如果你有一个动态增长的缓冲区,增长的步长是 B,某一次缓冲区申请的大小是 A,这个时候,就可以用这个算法,计算出缓冲区的一个合适大小了,正好可以容纳A,并且不会过于得多,多余部分不会比B多。2. 方法int( 阅读全文
posted @ 2013-12-27 10:01 ★行云流水★ 阅读(9311) 评论(0) 推荐(0) 编辑
摘要: 一、1 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址;4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型;巧妙之处在于将0转换成(TYPE*),结构以内存空间首地址0作为起始地址,则成员地址自然为偏移地址。举例说明: 1 #include 阅读全文
posted @ 2013-12-27 09:36 ★行云流水★ 阅读(288) 评论(0) 推荐(0) 编辑