随笔分类 -  C及ARM裸机系列博文

摘要:函数名,到底是什么?这个问题是我看了uboot里的一个“函数指针数组”的应用而问自己的。 如果不把函数名理解为函数指针,就无法理解“函数指针数组”的访问方式。 首先看看指针的概念: 指针变量就具有3种形态: 1、a 表示指针a对应的内存空间(可以说就是指针本身的值,或者说是指针指向的地址值,这个值存 阅读全文
posted @ 2016-06-23 17:16 宋桓公 阅读(8357) 评论(0) 推荐(3) 编辑
摘要:看了一套视频,感觉DDR这个部分将的非常细致也很好,于是把视频内容花了一个多星期作了总结。 这个视频就是不知道是谁讲的,做好事不留名啊~~~那位知道告诉我哈~~ 平台:S5PV210 DDR: 兼容 三星的一块芯片——NT5TU64M16GG-DDR2-1G-G-R18-Consumer // 28 阅读全文
posted @ 2016-05-26 16:45 宋桓公 阅读(4123) 评论(1) 推荐(2) 编辑
摘要:先看一段奇葩代码: int x = 4; int y; y = (x++); printf("hello world. y = %d.\n", y); x = 4; y = (x++)+(x++); printf("hello world. y = %d.\n", y); x = 4; y = (x 阅读全文
posted @ 2016-05-14 09:43 宋桓公 阅读(1945) 评论(17) 推荐(3) 编辑
摘要:上节《编程语法分析之从表达式说起》中说到表达式,他的主要作用就是返回一个值!那这个值具体是多少,就要看表达式的整个运算过程。要理解表达式的运算过程就必须了解“优先级”和“结合律”。 之前讲到表达式,一般有操作数和操作符(或者叫做运算符)组成。“优先级”和“结合律”都是针对操作数和操作符来分析的。现在就来看张表: 这张表介绍了“优先级”和“结合律”,优先级数字越小,优先级越高。在优... 阅读全文
posted @ 2016-01-08 17:04 宋桓公 阅读(2212) 评论(0) 推荐(1) 编辑
摘要:表达式,一般有操作数和操作符组成。要问表达式和语句的区别,百度截取的一个回答: 在c语言中,分号“;”是语句结束的标志,就相当于中文中的句号。表示一条语句的结束。反过来,“;"是语句的象征,本身 ";"就表示一条语句,称为空语句,一般用于占位。比如while (1) ; ; 第1个分号表示的是空语句,第2个分号表示的是语句结束符。主要区分表达式和语句的区别,在C语言中带分... 阅读全文
posted @ 2016-01-08 16:58 宋桓公 阅读(1375) 评论(0) 推荐(0) 编辑
摘要:说到异常向量,会让人联想到中断向量。其实,中断是属于异常的子集的,也就是说中断其实是异常其中的一种。 回到异常向量,他其实是一张表格,每个格子里存放的是一个地址,或者是一个跳转命令,不管是哪个,其目的都是让PC跳转到真正处理异常的代码的地方。以下是arm的异常向量表:图1初步介绍完异常向量,就来对比... 阅读全文
posted @ 2016-01-08 12:00 宋桓公 阅读(9935) 评论(1) 推荐(4) 编辑
摘要:1 #include 2 #include 3 4 typedef struct abc 5 { 6 char a; 7 char b; 8 char c; 9 }Abc; 10 11 12 int main(int argc, char *argv[])... 阅读全文
posted @ 2015-12-30 10:22 宋桓公 阅读(3108) 评论(0) 推荐(0) 编辑
摘要:本篇文章,将提到4个概念: 1、普通变量 2、指针变量 3、内存(内存空间) 4、地址 我们先看内存是什么?内存是实实在在的硬件,可以存放数据!在我们的一块可编程的芯片的内部有大把的内存。 形象一点,内存就像一个个的小格子,每个格子的大小是一个字节,可以存放一个字节的数据。 那这么多内存如何区分呢? 阅读全文
posted @ 2015-12-30 10:09 宋桓公 阅读(7595) 评论(0) 推荐(2) 编辑
摘要:声明定义虽然无处不在,但是真正的想区分它们,却不是表面上那么简单。 首先,从广义的角度来讲声明中包含着定义:定义又可以称之为,“声明性定义”;而狭义的声明,有可称之为“引用性声明”。 下面,我们就来讨论“声明性定义”与“引用性声明”。的区别,之后简称定义与声明。 1、定义时系统会为定义的变量分配空间 阅读全文
posted @ 2015-12-14 12:31 宋桓公 阅读(4155) 评论(0) 推荐(0) 编辑
摘要:对于2440而言,启动的方式不多。一般就是外界一个NAND FLASH ,2440内部有个NAND FLASH Controller,会自动把NAND FLASH的前4K拷贝到2440的片内SRAM。2440这个片内SRAM就是所谓的 Stepping Stone刚好也是4K。 在制... 阅读全文
posted @ 2015-11-17 09:35 宋桓公 阅读(8966) 评论(0) 推荐(1) 编辑
摘要:C语言如何向系统接要存,就有这么三种方式: 1、向栈要。 2、向堆要。 3、向数据段要。 这一下就扯出了三种内存空间,内存空间的本质是一样的,一个地址对应一个方框,方框里可以放数据。但是为了更好的去 管理这篇空间,于是将空间分成了几个不同的区域,这些区域有: ... 阅读全文
posted @ 2015-11-17 09:26 宋桓公 阅读(456) 评论(0) 推荐(0) 编辑
摘要:前言: 最近在看一位叫朱有鹏大神的视频,讲的甚好。应此,我的感悟也因此被激发,准备针对朱老师将的内容,结合自己的理解,写一个系列的笔记博客~~大家可以去www.zhulaoshi.org观看视频~~1)如何识别二维数组。 假设数组为a[2][5]二维数组肯定是有两个维度,从左到右看: [2]... 阅读全文
posted @ 2015-11-17 08:57 宋桓公 阅读(2440) 评论(0) 推荐(3) 编辑
摘要:首先看两行汇编代码: 1: adr r0, _start 2: ldr r1, =_start 同样是加载一个标号的地址值,adr和ldr有什么区别呢?注意这里的ldr不是命令ldr,而是伪指令ldr,若想区分它们请参看我的一篇博文《adr adrl ldr mov总结整理》。 要区分它们,就需要引 阅读全文
posted @ 2015-11-17 08:21 宋桓公 阅读(5318) 评论(0) 推荐(4) 编辑
摘要:ADR这是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。 使用的格式:ADR register,exper。 在编译源程序时,汇编器首先计算出当前PC值(当前指令位置)到exper的距离,然后会用一条ADD或者SUB指令来替换这条伪指令,例如:ADD register, 阅读全文
posted @ 2015-11-03 20:05 宋桓公 阅读(3110) 评论(0) 推荐(1) 编辑
摘要:目前所知道的跳转指令有 b,bl,bep,bne.他们共同点是都是以b开头,首先从字面上分析:b:是Branch,表示分支。bl:是Branch Link表示带连接的分支。bep:Branch ,Equalbne:Branch ,Not Equal。B或BL指令引起处理器转移到"子程序名"处开始执行... 阅读全文
posted @ 2015-11-03 20:03 宋桓公 阅读(3601) 评论(0) 推荐(0) 编辑
摘要:makefile不仅仅是一个命令的集合体,其中有一些规则是需要理解掌握的。 首先,了解makefile的规则: // 格式 目标 : 依赖1,依赖2 (TAP键)命令 // 1、目标,就是我们想生成的文件。 2、依赖往往是我们已经有的文件,是生成目标的必要条件。 3、命令就是利用依赖来产生目标。 命 阅读全文
posted @ 2015-11-03 20:02 宋桓公 阅读(926) 评论(0) 推荐(0) 编辑
摘要:初学ARM感觉写个裸板程序还真的不容易,可能是没有用到ADS,keil之类的开发平台的缘故吧。编译,链接过程在linux平台上完成,这样学起来更有实感,还能顺便熟悉linux环境,以及命令,何乐而不为呢?为此得准备一些必要的基础知识,前几篇博客总结一些汇编的指令,以及makefile的总结。有兴趣的... 阅读全文
posted @ 2015-11-03 20:01 宋桓公 阅读(1620) 评论(0) 推荐(1) 编辑
摘要://这篇文章理解过时,请看新发表的——从两句汇编认识运行时地址与链接地址 我的第二个裸板程序的目的是,将程序在arm外接的SDRAM上运行程序,而不是,arm的片内ram。再此之前先得聊一聊“链接地址”和“存储地址”。 还记得,第一个裸板程序的链接地址是如何确立的吗? arm-linux-... 阅读全文
posted @ 2015-11-03 19:59 宋桓公 阅读(654) 评论(0) 推荐(0) 编辑
摘要:为啥是“PC = PC + 8”;“PC = PC + 8”其实这样写容易让人蒙了。“PC = PC + 8”真正含义应该是:执行处代码地址 = PC - 8;也就是说,”PC指向的地址“领先“执行处代码地址”8个字节;也就是说“PC = PC + 8”中的第二个PC,其实表示是“执行处代码地址”然... 阅读全文
posted @ 2015-11-03 19:53 宋桓公 阅读(2160) 评论(1) 推荐(0) 编辑
摘要:typedef,用最简单的话去诠释他,那么就是给类型取别名!!! 但是他并没有你想象的那么简单! 举例: typedef int size;//那么int就有一个别名叫size了,以后就可以 size i 什么的了;看到这里,如果你仅仅认为typedef不过如此,不就是把第一个参数(类型名),等同于... 阅读全文
posted @ 2015-11-03 19:28 宋桓公 阅读(750) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示