嵌入式 & C
古-月
怕什么真理无穷,进一寸有一寸的欢喜
展开
-
GNU-ld链接脚本浅析
0. Contents1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗含的连接脚本1. 概论每一个链接过程都由链接脚本(linker script, 一般以l转载 2012-02-24 22:18:24 · 1383 阅读 · 0 评论 -
printf函数压栈解惑
最近开到一些原创 2014-06-12 09:54:07 · 4344 阅读 · 0 评论 -
PC机交叉编译ARM boost库
从官网下载所需版本的boost源代码,解压进入文件:./bootstrap.sh然后会自动产生一个project-config.jam文件,打开该文件,修改“using gcc”一行:using gcc : : arm-none-eabi-gcc; 注意:符号前后的空格然后开始编译:./bjam stage --layout=tagged --build原创 2013-01-21 17:04:37 · 3537 阅读 · 0 评论 -
C函数与汇编函数之间参数及返回值传递方法
AAPCS对ARM结构的一些标准做了定义,在这里我们只重点介绍函数调用部分,如图8所示,AAPCS为ARM的R0~R15寄存器做了定义,明确了它们在函数中的职责: 图 8 AAPCS关于ARM寄存器的定义函数调用时的规则如下:1. 父函数与子函数间的入口参数依次转载 2013-01-14 19:41:28 · 13231 阅读 · 0 评论 -
C指针的用法总结
char *p, **p, ***p;char p[],p[][],p[][][];char *p[],*p[][],**p[],**p[][],*(*p)[],(**p)[],(**p)[][]; void (*pFun)(int i);大神们看到这些东西脑袋里一定像蓝天白云一样清晰明了。。。(1)关于指针与数组的存储a、指针和数组在内存中的存储形转载 2012-10-26 15:50:16 · 3881 阅读 · 0 评论 -
NAND和NOR flash的区别
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。 相“flash转载 2011-12-26 13:55:36 · 2631 阅读 · 0 评论 -
ROM、RAM、DRAM、SRAM、FLASH的区别
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也转载 2011-12-26 15:29:36 · 2010 阅读 · 2 评论 -
片外SRAM芯片IS61LV25616研究
IS61LV25616是ISSI公司的SRAM芯片,它的存储容量为16*256K,并具有高低选择信号. 特点如下:1.高速访问时间8,10,12,15ns2.CMOS低功郝操作3.TTL兼容的接口电平4.单电源3.3V供电5.无时钟无刷新需求6.三态输出7.数据控制分为高,低字节内部框图如下: 封装管脚定义如转载 2012-02-14 21:41:03 · 20001 阅读 · 7 评论 -
openocd0.6.0的安装与配置
1. openocd0.6.0安装1.1. 源码下载 下载代码主要有两种方式: 1.从openocd的官网(http://openocd.berlios.de/web/) 上下载官方发布的最新版本(0.5.0),下载网址(http://developer.berlios.de/projects/openocd/) ,openocd的使用文档的下载地址为http://原创 2012-02-19 18:40:44 · 3921 阅读 · 1 评论 -
ubuntu10.10 JDK的安装
ubuntu10.10中没有JDK的源,所以在命令行下直接apt-get会提示找不到源,在sources.list中加入如下的源即可: deb http://archive.canonical.com/ lucid partner 然后要 sudo apt-get update 更新完之后就可以直接安装了原创 2012-02-19 19:10:34 · 1074 阅读 · 0 评论 -
堆与栈的区别
一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 . q; B8 H$ E- g, p7 L! Z8 }1 h0 A6 v: R1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 # E+ U; O0 v7 F( g \2 j2 L+ x7 a2、堆区(heap) ―转载 2012-04-16 15:15:07 · 1269 阅读 · 1 评论 -
atoi,atol,strtod,strtol,strtoul实现类型转换
atof(将字符串转换成浮点型数)相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include 定义函数 double atof(const char *nptr);函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符转载 2012-04-16 11:56:52 · 1113 阅读 · 0 评论 -
GCC警告选项例解
程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵。遇到任意一条编译器警告都坚决不放过。有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint。 这个建议也很不错。不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此。那么我 们就从此放弃么?不,如今的编译器做得都很好,它可转载 2012-03-22 16:25:53 · 11991 阅读 · 0 评论 -
warning 'XXX' declared 'static' but never defined解决方法
C语言中的static一直都是比较头疼的问题,但是高质量的C 程序往往都将static用的非常精妙。 今天在程序使用static的时候遇到一个问题,定义一个局部可见的程序的时候使用了static,在头文件声明后产生了“warning 'XXX' declared 'static' but never defined”的警告。 XX.c文件中:原创 2012-03-19 13:51:14 · 17773 阅读 · 0 评论 -
getopt函数的使用
每一天你都在使用大量的命令行程序,是不是感觉那些命令行参数用起来比较方便,他们都是使用getopt来实现的。在Linux下使用getopt写程序是一种比较cool的事情,下面来简单的介绍一下getopt的使用。=== getopt使用 ===在讨论参数处理之前,我们先明确两个概念:选项、选项参数gcc -g -o test test.c我们经常使用上面的命令来编译程序,转载 2012-03-23 21:25:40 · 6217 阅读 · 0 评论 -
什么是堆和栈,它们在哪儿?
问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?它们的作用范围是什么?它们的大小由什么决定?哪个更快?答案一栈是为执行线程留出转载 2014-11-17 10:18:13 · 4473 阅读 · 5 评论