摘要:
一、概述 1、NandFlash NAND结构能提供极高的单元密度,可以达到高存储密度,比如能达到256M,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口。 2、NandFlash和NorFlash对比 Nor/Nand Flash 的差别 Nor Nand 容 阅读全文
摘要:
一、测试准备及原理测试代码:static void wait(volatile unsigned long dly){ for(; dly > 0; dly--);}int main(void){ unsigned long i = 0; // LED1,LED2,LED3,LED4对应的4根引脚设为输出 GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out; while(1){ wait(30000); GPBDAT = (~(i<<5)); // 根据i的值,点... 阅读全文
摘要:
一个规则的构成目标:依赖1,依赖2······ 命令例子:objs := init.o nand.o head.o main.onand.bin : $(objs) arm-linux-ld -Tnand.lds -o nand_elf $^ arm-linux-objcopy -O binary -S nand_elf $@ arm-linux-objdump -D -m arm nand_elf > nand.dis %.o:%.c arm-linux-gcc -Wall -c -O2 -o $@ $ nand.dis其中: 阅读全文
摘要:
UBOOT功能强大,适用于多种操作系统,多种处理器架构。 在阅读它的源码时,可以看到cpu目录有各种处理器,而board目录有各种开发板。但是,对于一个特定的实验平台,例如TQ2440开发板,它用到的只是cpu、board等目录中的一个或者部分文件和文件夹。 不同的处理器,它们的架构不一样,所以编译器肯定也不一样。但是,对于一个特定的实验平台,例如S3C2440,它用到的arm-linux-gcc编译器。 UBOOT可以应用于多种平台,但是对于特定的平台,它只会用到部分文件和文件夹,也只会用到一种编译器。 UBOOT目录中有大量的Makefile文件和配置文件,我想就是为了从众多的... 阅读全文
摘要:
函数指针变量有时非常好用,下边说一下它的用法。下边就说说它的用法。1、声明与定义 “static void (*nand_reset_addr)(void);” nand_reset_addr是变量名,static是变量的类型,这个函数指针变量指向一个无返回值和入口参数的函数。“unsigned char (*read_data)(void);”定义的函数指针变量指向一个“unsigned char 函数名(void)”类型的函数。2、赋值 “nand_reset_addr= s3c2410_nand_reset;”函数指针变量的赋值与其他类型指针变量赋值类似,也是让... 阅读全文
摘要:
一、程序编译过程 程序编译的时候,要分四个阶段 :1、预处理阶段,完成宏定义和include文件展开等工作;2、根据编译参数进行不同程度的优化,编译成汇编代码;3、用汇编器把汇编代码进一步生成目标代码;4、用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件;二、gcc/g++的编译过程1.预处理,不生成文件 [预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成.s的文件 [编译器egcs] 3.由汇编变为目标代码(机器代码)生成.o的文件 [汇编器as] 4.连接目标代码,生成可执行程序 [链接器ld] 三、gcc常用编译选项-E只运行C预编译器cpp,不生成文件.. 阅读全文