2013年9月23日
摘要: 当我们在使用gets函数时候,因为不确定gets函数的buffer究竟有多大,所以这个函数只能用作是玩具函数。因此,当我们需要直接从输入得到一个东西的时候可以用fgets函数代替gets函数,这样不管在嵌入式还是其他系统中的时候都可以使用。代码如下:1 #define U_MAX 2002 char *stdin_get_str(char *str)3 {4 fgets(str,U_MAX,stdin);5 if(str[strlen(str)-1] == '\n')6 str[strlen(str)-1] = '\0';7 return str;8 }... 阅读全文
posted @ 2013-09-23 15:42 hcu5555 阅读(1953) 评论(0) 推荐(2) 编辑
摘要: 运行./a.out程序时候出现如下:*** stack smashing detected ***: ./a.out terminated段错误 (核心已转储)一般这个错误是由于堆栈错误,很可能是编译器的不同造成的。所以可以先在编译的时候加入 -fno-stack-protector编译时候如下gcc my_replace.c -fno-stack-protector。就可以避免这种错误哦。 阅读全文
posted @ 2013-09-23 15:34 hcu5555 阅读(1824) 评论(0) 推荐(1) 编辑
  2013年2月28日
摘要: 嵌入式Linux开发从下到上分为:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。一、嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。熟练掌握嵌入式硬件知识,熟悉硬件开发模式和设计模式,熟悉ARM32位处理器嵌入式硬件平台开发、并具备产品开发经验。精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般需要有4~8层高速PCB设计经验。二、嵌入式驱动开发:熟练掌握Linux操作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式ARM开发,至少掌握Linux字符驱动程序开发。具有单 阅读全文
posted @ 2013-02-28 15:50 hcu5555 阅读(1870) 评论(0) 推荐(0) 编辑
  2012年12月10日
摘要: 当glibc detected *** free(): invalid next size (normal)出现是内存泄露的问题。(1)一般是free了没有分配的内存(2)还有就是分配了内存忘记释放也有可能会出现这样的问题。(3)最后查出来是数组循环的时候越界了 , 写到了其他的内存里面, 然后一free那个区域就出现了这样的问题。是有allocate引起的,一个debug的方法是把你怀疑的矩阵(比如释放了就会报内存错误)定义成静态的,这样如果出现越界,会报段错误。依次检查是否你的数组真的越界了。 阅读全文
posted @ 2012-12-10 10:29 hcu5555 阅读(1263) 评论(0) 推荐(0) 编辑
  2012年10月12日
摘要: tar命令[root@linux ~]# tar [-cxtzjvfpPN]文件与目录....参数:-c:建立一个压缩文件的参数指令(create的意思);-x:解开一个压缩文件的参数指令!-t:查看tarfile里面的文件!特别注意,在参数的下达中,c/x/t仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数! 例如使用『tar -z.. 阅读全文
posted @ 2012-10-12 14:21 hcu5555 阅读(325) 评论(0) 推荐(0) 编辑
  2012年10月9日
摘要: 1. Ctrl + W:关闭当前 Nautilus 窗口2. Ctrl+T:在 Nautilus 打开新的 Tab3. Ctrl + H:切换隐藏文件(夹)显示或者不显示4. Ctrl+E: 发送当前文档给某个 Email5. Ctrl+Q:退出应用6. Ctrl + 1/2:修改文件夹视图为图标或者列表模式7. Ctrl + Shift + W:关闭所有的 Nautilus 窗口8. Ctrl + Shift + N:创建新文件夹9. Ctrl + Alt + L:锁屏,如果你想走开一会而不想让别人看到你的屏幕10. Ctrl + Alt + D:显示桌面/恢复打开的窗口11. Ctrl + 阅读全文
posted @ 2012-10-09 11:53 hcu5555 阅读(199) 评论(0) 推荐(0) 编辑
  2012年9月18日
摘要: 运行着vm的时候如果host忽然关机或者重启的话,再打开虚拟机会提示the virtual machine is in use by an application on your host computer解决方法:进入虚拟机目录删除.lck文件和目录. 阅读全文
posted @ 2012-09-18 09:37 hcu5555 阅读(377) 评论(0) 推荐(0) 编辑
  2012年9月6日
摘要: 1,简单替换表达式替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头::%s/\<four/4/g显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题::%s/\<four\>/4/g如果你在编码,你可能只想替换注释中的 阅读全文
posted @ 2012-09-06 17:54 hcu5555 阅读(283) 评论(0) 推荐(0) 编辑
  2012年9月5日
摘要: avr gcc中的printf函数不支持%f输出注意在gcc中float double型数据一律处理为单精度(4 bytes)有两种做法:1、将浮点数分解为4个字节,分别送出,接收端再这4个字节合并转化为将浮点数示例如下:#include<stdio.h>typedefunion{floatf;unsignedcharu[4];}Float4Byte;intmain(void){Float4Bytem1,m2;m1.f=-1.2356;m2.u[0]=m1.u[0];//假设这里经过了一个传输过程.m2.u[1]=m1.u[1];m2.u[2]=m1.u[2];m2.u[3]=m1 阅读全文
posted @ 2012-09-05 11:56 hcu5555 阅读(1961) 评论(0) 推荐(0) 编辑
  2012年9月3日
摘要: 下面是摘抄网友的的代码void fun(int i, char *res){ int j = 0; while(i){ *(res + j) = i % 2 + '0'; i /= 2; ++j; } *(res + j) = '\0'; strrev(res);}这个感觉太冗长了。而后是这个:#include <iostream>#include <bitset>#include <string>void printBinary(int n) { std::bitset<32> bits(n); for (i.. 阅读全文
posted @ 2012-09-03 13:35 hcu5555 阅读(324) 评论(0) 推荐(0) 编辑