- 博客(59)
- 资源 (2)
- 收藏
- 关注
原创 flas的块有大小之分
NAND FLASH主要以页(page)为单位进行读写,以块(block)为单位进行擦除。FLASH页的大小和块的大小因不同类型块结构而不同,块结构有两种:小块(图7)和大块(图8),小块NAND FLASH包含32个页,每页512+16字节;大块NAND FLASH包含64页,每页2048+64字节。
2007-07-23 16:10:00
1549
原创 2440为什么有27根地址线
1) 理论上可以寻址的空间为4GB,但其中有3GB的空间都预留给处理器内部的寄存器和其他设备了,留给外部可寻址的空间只有1GB,也就是0X00000000~0X3fffffff,总共应该有30根地址线。这1GB的空间,2410处理器又根据所支持的设备的特点将它分为了8份,每份空间有128MB,这每一份的空间又称为一个BANK。为方便操作,2410独立地给了每个BANK一个片选信号(nG
2007-07-23 16:05:00
2164
1
转载 三星NANDflash的一些知识
现在flash芯片容量越来越大,三星疯了一样的过段时间就宣布一次容量又翻倍。虽然很多东西还有些一知半解,但还是做个记录。flash是利用浮动门来存储信息的,类似于MOSFET,但是多一个gate,周围用绝缘体包着,所以电荷进去了就呆在那里了。这样的一个部分叫做一个cell,对于SLC,Single Level Cell(好像是这个的简写),一个cell存储一个bit。由于多的那个gate里电荷
2007-07-23 14:23:00
4157
原创 2440上大容量NANDflash的选择
现在产品需要选择一款大容量的NANDfalsh,容量至少一个GBYTE。 下面是三星生产的NANDflash芯片的型号:PartNumber Organization Operating Voltage(V) Temperature Speed(ns) PackageK9F5608R0D 32Mx8 1.65~1.95 C,I 50 63FBGAK9F5608U0D 32Mx8 2.7~3
2007-07-23 14:22:00
2077
原创 44B0X的LCD 控制器资料
44B0X的LCD 控制器资料LCD 控制器用来把定位在系统存储器中的视频缓冲区的LCD图象数据传输到LCD驱动器,并产生必须的LCD控制信号。 LCD 控制器使用时间抖动算法和帧速率控制方法,支持在灰白LCD上的单色、4级灰度(一个点占两位)、16级灰度(一个点占4位)显示,也能与彩色LCD的接口支持最大256色(每点8位)的显示 。 LCD 控制器可以编程支持不同水平和垂直点数(640x480
2006-12-26 11:10:00
1974
原创 s3C44B0X中关于frameBuffer的问题
s3C44B0X中关于frameBuffer的问题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%..#if (LCD_TYPE==MLCD_240_320)#define SCR_XSIZE (480) #define SCR_YSIZE (640)..#define ARRAY_SIZE
2006-12-25 17:18:00
1229
原创 嵌入式编程]指针与多维数组
如何理解嵌入式LCD控制器编程中的下面这段程序:在开发板所带的测试程序中的 lcdlib.c 中有这么一句:frameBuffer256=(unsigned int (*)[SCR_XSIZE/4])malloc(ARRAY_SIZE_COLOR);请问这种写法表示什么意思?语法上怎么了解?在Glib.c中 frameBuffer256 应该是一个二维数组,而在lcdlib.c中定义为
2006-12-25 17:17:00
1278
原创 浅谈C中的malloc和free(1)
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!
2006-12-25 16:25:00
1201
原创 理解(*(volatile unsigned char *)0x5F[转]
理解#define SREG (*(volatile unsigned char *)0x5F)这样的定义,总是感觉很奇怪,不知道为什么,今天终于有了一点点心得,请大虾们多多批砖~~~ 嵌入式系统编程,要求程序员能够利用C语言访问固定的内存地址。既然是个地址,那么按照C语言的语法规则,这个表示地址的量应该是指针类型。所以,知道要访问的内存地址后,比如0x5F, 第一步是要把它强制
2006-12-25 11:30:00
2020
1
转载 μC/OSII中的时钟中断技术研究
μC/OSII中的时钟中断技术研究μC/OSII中的时钟中断技术研究引 言:1 系统中断与时钟节拍1.1 系统中断 中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被系统识别,CPU则保存部分(或全部)现场(context),即部分(或全部)寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后执行任务调度,程序回到就绪态优先级最高的任务
2006-12-21 21:01:00
1384
转载 基于uC/OS-II的文件系统设计
基于uC/OS-II的文件系统设计基于uC/OS-II的文件系统设计摘要:本文提出了基于µC/OS-II的一个文件系统的设计与实现方法。通过分析文件系统中的层次结构和功能模块,给出了文件系统的详细设计方案,包括文件控制块、文件描述符和文件保护机制等。最后还阐述了文件系统为保证可靠性所采取的技术。关键词: 实时嵌入式系统 µC/OS-II 文件系统1 前言 从系统的角度来看,一个文件系统要实现对存
2006-12-21 21:01:00
2485
原创 对于volatile的理解
一般说来,volatile用在如下的几个地方: 1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 2、多任务环境下各任务间共享的标志应该加volatile; 3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义; 另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实 现,2中
2006-12-09 11:33:00
1002
转载 软中断SWI
软中断:编程异常通常叫做软中断软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式。中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。 1.软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的2.软中断是由程序
2006-11-19 09:50:00
1606
原创 BSP 概念解析(转)
BSP 概念解析(转)Drew在这里按照自己的理解来解释一下BSP( Board Support Package),仅供参考:BSP是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一C
2006-11-18 11:49:00
1105
转载 QX44B0_BIOS
关于QX44B0_BIOS想写一篇关于44B0 BIOS的文章。这是因为很多学ARM的用户还弄不懂BIOS里面到底有些什么?为什么单片机不用BIOS?下面以QX44B0_II BIOS解释BIOS的作用。下图是开发板上电复位后BIOS的工作过程。 此主题相关图片如下:screen.width-333)this.width=screen.width-333" border="0" />从图中可知开发
2006-11-18 11:30:00
1501
原创 uC/OS应用的简单剖析
uC/OS应用的简单剖析这里给大家简单剖析一下uCOS吧,希望对大家能有所帮助。不足之处多多指教,有问题可以讨论。 一. uC/OS-II的移植移植uC/OS对目标处理器有一定要求,这个可以参照>一书中第8章的内容.整个嵌入式系统分为两大层:硬件层和软件层.这里主要研究软件层的架构.软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用相关部分,用户的应用系统.l 实时
2006-11-17 20:15:00
1482
原创 OSInit( );
uC/OS II学习时的一个重要函数 OSInit( );在uC/OS II的学习中,OSInit( );是一个重要的函数,它在OS应用中的void main();函数中首先被调用,是OS运行的第一个函数,如下程序,它完成各初始变量的初始化,建立任务空闲键表OSTCBFreeList, 建立事件空闲键表OSEventFreeList.创建一个空闲任务OS_TaskIdle,以及初始化其它如
2006-11-17 19:49:00
6399
1
转载 uC/OS - II 之事件控制块学习笔记
uC/OS - II 之事件控制块学习笔记 ------Mike zhong 一. 事件控制块ECB数据结构:typedef struct{ INT8U OSEventType; //事件类型 INT8U OSEventGrp; //等待任务所在的组 INT16U
2006-11-17 17:55:00
1667
原创 程序的错误结果分析
运行11月17日的程序(消息邮箱的使用)总有错误发生,下面是对结果的分析:(1)times=0说明Task1执行,发送一个邮箱,然后Times自加,Times=1。 (2)接着执行Task2,times2=0,ss=1,说明Task2执行一次并顺利获得邮箱,接着times自加,times2=1。(3)times2=1,ss=-369098697,说明Task2执行一次,并且获得了邮箱,
2006-11-17 11:38:00
1245
原创 OSMboxPost ()
#if OS_MBOX_POST_EN > 0INT8U OSMboxPost (OS_EVENT *pevent, void *msg){#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr;#e
2006-11-17 10:07:00
3026
原创 OSMboxPend()
void *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *err){#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr;#endif
2006-11-16 17:59:00
8479
原创 与中断相关的问题
要弄清楚以下函数的意义:OSTimeTick()在OS_CORE.C中,为时钟管理函数。OSTickISR( )在OS_CPU_A.S中以汇编的形式编写。任何计算机系统都应该有一系统时钟,UCOS系统的系统时钟是通过硬件定时器产生中断来实现的,这个中断会产生一个时钟中断服务程序,时钟中断服务程序也叫做节拍服务。各个任务运行都需要一个周期性的信号指示,即每一个任务允许运行的时间片是多少,
2006-11-15 17:48:00
1546
原创 与中断相关
要弄清楚以下函数的意义:OSTimeTick()在OS_CORE.C中,为时钟管理函数。OSTickISR( )在OS_CPU_A.S中以汇编的形式编写。任何计算机系统都应该有一系统时钟,UCOS系统的系统时钟是通过硬件定时器产生中断来实现的,这个中断会产生一个时钟中断服务程序,时钟中断服务程序也叫做节拍服务。各个任务运行都需要一个周期性的信号指示,即每一个任务允许运行的时间片是多少,
2006-11-15 17:48:00
794
原创 void OSStatInit (void)
#if OS_TASK_STAT_EN > 0void OSStatInit (void){#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr;#endif OST
2006-11-14 21:27:00
1801
原创 void OSStart (void)
void OSStart (void){ INT8U y; INT8U x; if (OSRunning == FALSE) { y = OSUnMapTbl[OSRdyGrp]; /* Find highest prioritys task priority number */ x
2006-11-14 17:40:00
2877
原创 OSTaskCreate()函数分析
INT8U OSTaskCreate (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio);函数返回一个8位的整型数,调用该函数需要四个参数。第一个参数一个指针,也就是用户代码的首地址,在平时使用中我们把自己创建的任务的名字作为这个参数就可以了;第三个参数是指向任务堆栈栈顶的指针,通常我们把创建的任务的堆栈数组的首地址
2006-11-14 16:38:00
16753
5
原创 建立一个邮箱OSMboxCreate()
建立一个邮箱OSMboxCreate() OSMboxCreate()基本上和函数OSSemCreate()相似。不同之处在于事件控制块的类型被设置成OS_EVENT_TYPE_MBOX,以及使用.OSEventPtr域来容纳消息指针,而不是使用.OSEventCnt 域。也就是二者的不同之处在于二者的类型不同:sem 是信息量,使用的的是.OSEventCnt ,用它来表征共享资源的情况,表
2006-11-14 16:05:00
7533
原创 消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)
OS_EVENT *OSSemCreate (INT16U cnt) ;该函数返回的数据类型为指针,指针指向的数据类型为OS_EVENT(事件的数据类型为结构体)。也就是函数返回一个地址,地址里存的是新创建的结构体类型所占据的内存的首地址。 OS_EVENT *pevent; pevent = OSEventFreeList;
2006-11-14 15:51:00
10373
1
原创 OSTimeDly()函数
调用该函数后,系统作的事情有:1,把调用OSTimeDly()的任务在就绪表中的相应位置为0。2,把要延长的时间ticks赋给OSTCBCur->OSTCBDly 。3,调用 OS_Sched(),找出优先级最高的任务,并运行这个优先级最高的任务。
2006-11-14 15:13:00
3075
原创 基于操作系统的简单应用
在建立应用之前,还应该先设置OS_CFG.H头文件来确定uC/OS-II允许的各种功能,包括定义最大任务数,任务最低优先级,事件控制块数目,内存块数目,队列控制块数目等,不用的选项可以禁止掉,以减少编译后的代码长度。本文设计一个运用uC/OS-II的简单应用,利用板上的一个七段数码管和3个LED,主要编程思路是:建立一个优先级较高的七段数码管显示任务,循环显示从1到9的数字;建立一个优先级较低
2006-11-14 11:26:00
1051
转载 uC/OS-II嵌入式操作系统移植
操作系统的移植指的是使实时系统的内核能在微处理器上运行。uC/OS-II应移植到所使用的CPU上,然后才能得到应用。在uC/OS-II的移植中,处理器必须满足一下一些要求:l 处理器的C编译器能产生可重入型代码l 处理器支持中断,并且能产生定时中断l 用C语言就可以开/关中断l 处理器能支持一定数量的数据存储硬件堆栈
2006-11-14 11:25:00
2408
原创 uC/OS-II 应用程序基本结构
uC/OS-II 应用程序基本结构应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-II的应用程序的基本结构以及注意事项。每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构:void task ( void* pdata ){INT8U err;InitTimer(); // 可选For( ;; ){// 你的应用程序代码…….
2006-11-11 11:32:00
2625
原创 关于ucos问题
1)我想问一下斑竹,4510在跑ucos时,除了ucos自己的*.c *.s文件以外,是不是要需要另外的bootloader?? 也就是说,几乎所有的代码在arm上运行时,都需要有bios??而不仅仅uclinux需要?不一定都要有BOOTLOADER,需要写一个启动代码,和内核编译在一起就可以了:编译时应该在放在第一个文件位置编译。启动代码需要完成如下工作:设置 异常向量表,即在 0
2006-11-07 21:36:00
2240
原创 FIR的阶数,矩形窗的长度
FIR滤波器的阶数是否就是矩形窗的长度?该值的改变对滤波器的滤波特性有何影响?以下是同一个用矩形窗设计的数字低通滤波器,通带截至频率为0.3pi,矩形窗的长度N为41和121。根据图形可以看出:(1)时域上两者的时间轴上不同的。N=41时有41点,N=121时有121点,则它们之间的时间间隔是否相同?这个时间间隔又是由谁来决定的?此外,它们在时域上的幅值和形状是一样的。似乎N=1
2006-11-06 22:03:00
9397
原创 matlab常用的矩阵函数
矩阵的操作 MATLAB的基本单位是矩阵,它是的MATLAB精髓,掌握矩阵的输入、各种数值运算以及矩阵函数的使用是以后能否学好MATLAB的关键。l 矩阵的输入 I. 直接输入创建矩阵 输入方法是先键入左方括弧“[”,然后按行直接键入矩阵的所有元素,最后键入右方括弧“]”。注意:整个矩阵以“[”和“ ]”作为首尾,同行的元素用“,”
2006-11-03 15:15:00
11804
原创 MATLAB的常用的三角函数 计算函数
、MATLAB 中的常用函数MATLAB的常用内部函数有: 表2.1 常用的三角函数 函数名称 函数功能sinx 函数名称
2006-11-03 15:13:00
25525
原创 MATLAB的数据显示格式
MATLAB的数据显示格式虽然在MATLAB系统中数据的存储和计算都是双精度进行的,但MATLAB可以利用菜单或format命令来调整数据的显示格式。Format命令的格式和作用如下:l Format|format short 5位定点表示l Format long 15位定点表示l
2006-11-03 15:12:00
6496
原创 Boolean数据类型
Boolean数据类型 Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)。使用关键字 True 与 False 可将 Boolean 变量赋值为这两个状态中的一个。 当转换其他的数值类型
2006-11-03 10:30:00
31953
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人