随笔 - 342  文章 - 0 评论 - 49 阅读 - 147万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

01 2014 档案
串行CPU设计
摘要:一、概述串行CPU工作流程 串行CPU的时序流程如下图所示:取指、译码、执行、回写。其中,取指、回写是与存储器打交道;而译码与执行则是CPU内部自个儿的操作。我们究竟想要CPU干什么? CPU的最终目的不是计算,不是把计算结果存储在通用寄存器中。CPU的最终目的应该是按照次序不断的修改存储设备的存储内容。 利用CPU来显示,来唱歌······只有CPU把计算的结果存放在存储设备中的时候(姑且把修改特殊功能寄存器的值也看做是修改存储器的内容),才能实现这些功能。正如假设霍金有个很好的头脑来思考问题,但是假如他不能将思考到的东西通过某种方 阅读全文
posted @ 2014-01-14 18:46 amanlikethis 阅读(1242) 评论(0) 推荐(0) 编辑
__attribute__ ((section(".text")))的测试
摘要:一、测试原因 在学习u-boot的环境变量过程中,看到有如此的代码,现对涉及到的内容进行实验测试。二、测试目的1、了解gcc允许对段的属性进行更改的方法。2、解决”ENV_IS_EMBEDDED“解惑以及相关的移植实验中如何将环境变量(结构体变量environment)定位在代码段的0x33f84000的位置,以实现环境变量区嵌入到代码段的功能。三、测试原理(参考attribute 用法 section 部分) gcc通过选项__attribute__可以改变所声明或定义的函数、数据的特性。它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn... 阅读全文
posted @ 2014-01-14 10:49 amanlikethis 阅读(9808) 评论(0) 推荐(1) 编辑
NandFlash
摘要:一、概述 1、NandFlash NAND结构能提供极高的单元密度,可以达到高存储密度,比如能达到256M,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口。 2、NandFlash和NorFlash对比 Nor/Nand Flash 的差别 Nor Nand 容 阅读全文
posted @ 2014-01-10 20:07 amanlikethis 阅读(809) 评论(0) 推荐(0) 编辑
测试gcc的优化选项
摘要:一、测试准备及原理测试代码: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 阅读(576) 评论(0) 推荐(0) 编辑
如何编写一个简单的makefile
摘要:一个规则的构成目标:依赖1,依赖2······ 命令例子:objs := init.o nand.o head.o main.onand.bin : (objs)armlinuxldTnand.ldsonandelf^ arm-linux-objcopy -O binary -S nand_elf @armlinuxobjdumpDmarmnandelf>nand.dis@ $ nand.dis其中: 阅读全文
posted @ 2014-01-10 19:55 amanlikethis 阅读(508) 评论(0) 推荐(0) 编辑
UBOOT的多支持性与可裁剪性
摘要:UBOOT功能强大,适用于多种操作系统,多种处理器架构。 在阅读它的源码时,可以看到cpu目录有各种处理器,而board目录有各种开发板。但是,对于一个特定的实验平台,例如TQ2440开发板,它用到的只是cpu、board等目录中的一个或者部分文件和文件夹。 不同的处理器,它们的架构不一样,所以编译器肯定也不一样。但是,对于一个特定的实验平台,例如S3C2440,它用到的arm-linux-gcc编译器。 UBOOT可以应用于多种平台,但是对于特定的平台,它只会用到部分文件和文件夹,也只会用到一种编译器。 UBOOT目录中有大量的Makefile文件和配置文件,我想就是为了从众多的... 阅读全文
posted @ 2014-01-10 19:27 amanlikethis 阅读(401) 评论(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 阅读(324) 评论(0) 推荐(0) 编辑
gcc常用的编译选项
摘要:一、程序编译过程 程序编译的时候,要分四个阶段 :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 阅读(631) 评论(0) 推荐(0) 编辑
uboot的jumptable_init函数分析
摘要:一、函数说明函数功能:安装系统函数指针函数位置: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 阅读(1607) 评论(2) 推荐(0) 编辑
uboot的devices_init函数分析
摘要:一、函数说明函数功能:完成设备的初始化函数位置: 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 阅读(882) 评论(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 阅读(20947) 评论(1) 推荐(1) 编辑
快速傅里叶变换(FFT)
摘要:一、FFT的意义 DFT虽然实现了FT的计算机计算,但是计算量大,不适合实时的数字信号处理。FFT算法的出现,使DFT的计算效率更高,速度更快。二、FFT与DFT的关系 从FT到DFT经过了数字角频率w的离散化,由此带来了一些数学公式的改写。而FFT是DFT算法上的突破,可以说数学理论上与DFT是一样的。可以认为,FFT就是DFT的一种快速好用的计算方法,FFT替代了定义法计算的笨拙,如此而已。正因为如此,所以可以看到FFT与DFT的运算结果是相同的。三、matlab实验1、程序L=4; %原离散信号有8点n=[0:1:L-1] ... 阅读全文
posted @ 2014-01-06 10:16 amanlikethis 阅读(1754) 评论(0) 推荐(0) 编辑
离散傅里叶变换(DFT)
摘要:目录 一、研究的意义 二、DFT的定义 三、DFT与傅里叶变换和Z变换的关系 四、DFT的周期性 五、matlab实验 五.1 程序 五.2 实验结果一、研究的意义 DTFT计算公式,中的w取值是连续的而且从负无穷大到正无穷大,对于计算机处理是不可能的,需要无限细分无限区间。即使在DTFT小节中用matlab实现计算,也只是将(-pi,pi)区间划分成1600份来逼近DTFT的效果。 实际上真正用的是DFT,离散傅里叶变换。离散傅里叶变换可以将连续的频谱转化成离散的频谱去计算,这样就易于计算机编程实现傅里叶变换的计算。FFT算法的出现,使得DFT的计算速度更快。二、... 阅读全文
posted @ 2014-01-04 20:02 amanlikethis 阅读(53181) 评论(0) 推荐(1) 编辑
时域离散信号的傅里叶变换
摘要:目录 1 定义 2 FT的周期性 2.1 从数学的观点分析 2.2 从采样角度—实际意义上分析 2.2.1 采样后的连续傅里叶频谱 2.2.2采样后的离散傅里叶频谱 3 matlab实验 3.1 程序及分析 3.2 实验结果1、定义 ... 阅读全文
posted @ 2014-01-04 10:54 amanlikethis 阅读(12459) 评论(0) 推荐(0) 编辑
《C++程序设计》上半部读书笔记
摘要:目录 前言 第一章 C++的初步知识 1 C语言的优点 2 C++产生的背景 3 C++对C的增强 4 如何体会C++的优点 5 类的特性 6 C++开发工具 第二章 数据类型与表达式 1 数据类型 2 浮点数 3 字符 3.1 转义字符极其含义 3.2 字符串常量 4 符号常量 5 变量 6 常变 阅读全文
posted @ 2014-01-03 22:10 amanlikethis 阅读(559) 评论(0) 推荐(0) 编辑
windows“画图”工具用法
摘要:图片编辑工具不少,photoshop功能强大,但是并不是那么容易掌握。而且,倘若一个简单的图片处理问题就使用这么强大的工具,有点“杀鸡焉用牛刀”的意思,要知道只打开photoshop就需要一段等待时间。相比功能强大的图像处理软件,如果有比较简单的图片处理任务可以交给windows自带的画图工具解决的话,就再好不过了。一、给图片区域加框 使用画图工具左边选项栏中的如下图标,可以选择添加不同形状的边框 二、更改线、边框等等的宽度 ctrl+"+" 增加宽度 ctrl+"-" 减小宽度三、拼凑图片 假设你有两张图片,想要拼接在一起,可以在这一条中找到方法。 1 阅读全文
posted @ 2014-01-03 18:27 amanlikethis 阅读(1002) 评论(0) 推荐(0) 编辑
数字信号处理的流程
摘要:目录 前言 1、模拟信号转化成数字信号,再转换回来的过程 2、模拟信号转化为数字信号 2.1 采样 2.2 实例 3、如何把数字信号恢复成模拟信号 3.1信号变换过程中的频谱(傅里叶变换) 3.2把数字信号恢复成模拟信号 3.2.1 理想恢复 3.2.2 实际恢复 4、数字信号处理整个过程前言 数字信号处理,曾经认为是一门无关紧要的课,到现在却发现是如此的重要,而且有意思。相比传统的软件编程,数字信号处理不仅讲究逻辑思维,而且需要过关的数学技能。将数学转化为程序实现,这的确是一门有意思的学问--“算法”。1、模拟信号... 阅读全文
posted @ 2014-01-02 16:37 amanlikethis 阅读(15649) 评论(0) 推荐(0) 编辑

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