上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 34 下一页
摘要: 一、测试原因 在学习u-boot的环境变量过程中,看到有如此的代码,现对涉及到的内容进行实验测试。二、测试目的1、了解gcc允许对段的属性进行更改的方法。2、解决”ENV_IS_EMBEDDED“解惑以及相关的移植实验中如何将环境变量(结构体变量environment)定位在代码段的0x33f84000的位置,以实现环境变量区嵌入到代码段的功能。三、测试原理(参考attribute 用法 section 部分) gcc通过选项__attribute__可以改变所声明或定义的函数、数据的特性。它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn... 阅读全文
posted @ 2014-01-14 10:49 amanlikethis 阅读(9736) 评论(0) 推荐(1) 编辑
摘要: 一、概述 1、NandFlash NAND结构能提供极高的单元密度,可以达到高存储密度,比如能达到256M,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口。 2、NandFlash和NorFlash对比 Nor/Nand Flash 的差别 Nor Nand 容 阅读全文
posted @ 2014-01-10 20:07 amanlikethis 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 一、测试准备及原理测试代码: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的值,点... 阅读全文
posted @ 2014-01-10 20:04 amanlikethis 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 一个规则的构成目标:依赖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其中: 阅读全文
posted @ 2014-01-10 19:55 amanlikethis 阅读(507) 评论(0) 推荐(0) 编辑
摘要: UBOOT功能强大,适用于多种操作系统,多种处理器架构。 在阅读它的源码时,可以看到cpu目录有各种处理器,而board目录有各种开发板。但是,对于一个特定的实验平台,例如TQ2440开发板,它用到的只是cpu、board等目录中的一个或者部分文件和文件夹。 不同的处理器,它们的架构不一样,所以编译器肯定也不一样。但是,对于一个特定的实验平台,例如S3C2440,它用到的arm-linux-gcc编译器。 UBOOT可以应用于多种平台,但是对于特定的平台,它只会用到部分文件和文件夹,也只会用到一种编译器。 UBOOT目录中有大量的Makefile文件和配置文件,我想就是为了从众多的... 阅读全文
posted @ 2014-01-10 19:27 amanlikethis 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 函数指针变量有时非常好用,下边说一下它的用法。下边就说说它的用法。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;”函数指针变量的赋值与其他类型指针变量赋值类似,也是让... 阅读全文
posted @ 2014-01-10 19:24 amanlikethis 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 一、程序编译过程 程序编译的时候,要分四个阶段 :1、预处理阶段,完成宏定义和include文件展开等工作;2、根据编译参数进行不同程度的优化,编译成汇编代码;3、用汇编器把汇编代码进一步生成目标代码;4、用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件;二、gcc/g++的编译过程1.预处理,不生成文件 [预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成.s的文件 [编译器egcs] 3.由汇编变为目标代码(机器代码)生成.o的文件 [汇编器as] 4.连接目标代码,生成可执行程序 [链接器ld] 三、gcc常用编译选项-E只运行C预编译器cpp,不生成文件.. 阅读全文
posted @ 2014-01-10 19:19 amanlikethis 阅读(626) 评论(0) 推荐(0) 编辑
摘要: 一、函数说明函数功能:安装系统函数指针函数位置:common/exports.c二、函数分析 1 void jumptable_init (void) 2 { 3 int i; 4 5 gd->jt = (void **) malloc (XF_MAX * sizeof (void *)); //在堆中开辟指针空间 6 for (i = 0; i jt[i] = (void *) dummy; //指针空间都初始化成指向空函数 8 //依次安装函数指针 9 gd->jt[XF_get_version] = (... 阅读全文
posted @ 2014-01-07 16:18 amanlikethis 阅读(1594) 评论(2) 推荐(0) 编辑
摘要: 一、函数说明函数功能:完成设备的初始化函数位置: common/devices.c二、程序分析 1 int devices_init (void) 2 { 3 #ifndef CONFIG_ARM /* already relocated for current ARM implementation */ 4 ulong relocation_offset = gd->reloc_off; 5 int i; 6 7 /* relocate device name pointers */ 8 for (i = 0; i < (sizeof (stdio_... 阅读全文
posted @ 2014-01-07 15:58 amanlikethis 阅读(877) 评论(0) 推荐(0) 编辑
摘要: 目录1 数字滤波器的概念2 数字滤波器分类 2.1 经典滤波器与现代滤波器 2.2 无限脉冲响应滤波器和有限长脉冲响应滤波器 2.3 选频滤波器和其他滤波器3 滤波器的用途4 数字滤波器的技术指标5 数字滤波器设计方法6 模拟滤波器的设计 6.1 常见的模拟滤波器 6.2 模拟低通滤波器的... 阅读全文
posted @ 2014-01-07 10:52 amanlikethis 阅读(20372) 评论(1) 推荐(1) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 34 下一页