- 博客(72)
- 收藏
- 关注
原创 28335的启动步骤介绍
TI支持很多种方式的boot,内部的ram(saram),flash,sci,但无论哪种启动都遵循下面的流程:而该流程中的reset,initboot,call selectbootmode, read i/o state, call boot loader这些步骤都是固化在芯片内的程序自己执行的,也就是说这些代码在出厂的时候已经在TI的芯片内。(我们写的程序是从codestart出开
2016-11-05 22:36:39
16324
1
转载 外设寄存器映射及中断向量表介绍
一、两个头文件的内容介绍无论写什么程序,下面两个头文件都必须包含DSP2833x_Device.h包含全部外设寄存器定义的头文件。DSP2833x_Device.h内各外设头文件使对应外设的每个寄存器被声明为一个个的结构体,结构体的元素为对应的寄存器的位。最后声明一个该外设的寄存器,元素为对应的所有的寄存器。并定义了一个该外设的结构体,利用此结构体即可操作对应的
2016-11-05 19:46:25
5808
2
原创 DSP28335工程模版各文件介绍
首先建立工程,file-new-css project。然后设置该工程。(包含include路径,是否使用浮点,生成的文件路径等),然后加入一些TI已经写好的文件。最终如下图:一、ccs中后缀为.pjt的文件作用是什么?每个项目都需要有自己独有的pjt文件吗?pjt是project的缩写,你可以用任何的文本编辑软件打开查看里面的内容,例如记事本等。他里面主要指定了这个工程里
2016-11-05 18:46:37
11230
3
原创 CMD文件及段的总结
一、CMD文件CMD文件,全名连接命令文件(linkercommand files),以后缀.cmd结尾。它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间,所以不同的芯片就有不同大小的rom和ram,放用户程序的地方也不尽相同。所以要根据芯片进行修改。分两部分:MEMORY和SECTIONS.(1):存储器(MEMORY)伪指令,用来定义目标系统的存储器空间。MEMO
2016-11-05 11:36:44
9188
1
原创 DSP前言
由于项目的需要,一周前开始了DSP编程之旅。由于想对DSP有一个全面的掌握,所以进度很慢。到现在也没编一句代码。由于以前学习过51及STM32,所以学起来不是特别吃力。现在在此处做一个对28335的总结,在以后的学习过程中会不断的加入新的内容。另一方面是关于这方面的资料很零碎,也方便自己的实时查阅。DSP芯片是一种具有特殊结构的微处理器。该芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件
2016-11-05 10:45:18
1383
原创 堆、栈、重映射及内存分配理解
所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?(也即是在内存中的位置,每个处理器都有其寻址的范围,我们把这个范围从0开始编号,一般都是按字节编址的,寄存器的地址就是在这
2016-10-06 20:46:55
1826
原创 设计嵌入式操作系统简单原理
这个是在网上看到的一篇文档,作者的目的是设计一个简单的嵌入式操作系统,只实现一个基本任务调度器的功能。正如作者所说,虽然不能称为操作系统,但已体现了小型嵌入式操作系统的精髓。对于我们来说是很好的学习资料,可以从中一窥操作系统的面目,特总结在此处。一、多任务机制其实在单一CPU 的情况下,是不存在真正的多任务机制的,存在的只有不同的任务轮流使用CPU,所以本质上还是单任务的。但由于CPU
2016-10-05 19:11:41
1820
原创 UCOS-II简单总览
由于操作系统一般都是很大的,而且牵扯的问题比较多,所以此处只是一个大体上的对ucos的总结。一、 嵌入式操作系统概览嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。并且可以充分利用硬件资源,如在单任务时(大循环结构,如大部分51程序)遇到delay函数时,CPU在空转。而在多任务系统,遇到delay或需等待资源
2016-10-05 18:15:48
1065
原创 C语言结构体对齐总结
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问都可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就是对齐。结构体对齐包括两个方面的含义1)结构体总长度; 2)结构体内各数据成员的内存对齐,即该数据成员相对结构体的起始位置;一、字节对齐的原因大致是如下两条1、平台原因(移植原因):不是所有的硬件平台都能访问
2016-10-04 18:51:20
652
原创 C编译过程总结
一、编译的全局概览编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)二、各
2016-10-04 11:44:11
964
原创 STM32总结
以下内容大部分是根据零死角玩转STM32这篇文档,写的非常好。这个总结只是写了基础的部分,包括STM32的简介及STM32的IO口操作、中断配置,总结在此处方便以后的回顾。一、Cortex简介ARM Cortex 系列是新一代的,一个为广泛的技术需求提供标准架构的处理器。与其他的ARM 处理器不同,Cortex 系列是一个完整的处理器核心,一个标准的CPU 和系统架构。Cortex
2016-10-03 21:32:53
4823
原创 51头文件总结
1)“文件包含”处理概念 所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。2)寄存器地址及位地址声明的原
2016-09-20 22:12:23
2541
原创 51单片机总结
51单片机学习是在3年前学的,有的地方可能忘记,总结不到。为了以后回忆,现大致总结下。51概述MCS-51使用哈佛结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的
2016-09-20 22:07:48
4849
原创 STM32启动文件总结
一、ARM控制器一些启动简介 ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令,执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况:1、通过boot引脚设置可以将中断向量表定位于SRAM区,即起
2016-08-29 21:30:38
4384
原创 一道可用背包问题解的华为编程题
题目描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无
2016-08-27 09:31:19
2018
原创 初学单片机时总结的想法及一些程序
大二写的一个总结,今天翻出来整理了下。放在此处晒晒。一、单片机编程总结1、要养成总结的好习惯,总结不仅是对自己学习的一个总结,还是对学习过程的一个回顾与加深,还可避免第二次犯错。2、编写程序之前先要有一个对该项目熟悉的了解,做到心中有数,列一个大致框架。仔细推敲该怎么布局,怎样布局最合理,该步骤很重要。要分析先做哪个模块,具体到该模块的具体步骤,各个函数怎么命名,与其他模块的衔接等。最
2016-08-26 09:27:06
3243
原创 芯片应用总结
这是研究生前单片机概括 所谓的单片机也就相当于人的大脑,所有的命令都由其发出。与之通信通过各个管脚,上电运行之后,单片机能自动运行存储在其内部的程序,先是启动代码(为后续程序能够运行提供一个良好的环境,例如:分配堆、栈空间等,启动代码是用汇编程序写的,与具体的硬件环境相关)(为什么用汇编,因为汇编也就相当于机器语言,只不过汇编用助记符而已,机器可直接运行,至于启动代码完成什么工
2016-08-23 11:21:11
2984
原创 静态成员
静态数据成员如果有n个同类的对象,那么每一个对象都分别有自己的数据成员,不同对象的数据成员各自有值,互不相干。但是有时人们希望有某一个或几个数据成员为所有对象所共有。这样可以实现数据共享。如果想在同类的多个对象之间实现数据共享,也不要用全局对象,可以用静态的数据成员。静态数据成员是一种特殊的数据成员。它以关键字static开头。静态的数据成员在内存中只占一份空间。每个对象都可以引用
2016-08-17 08:48:59
730
转载 C++常对象,常变量,常成员函数详解(含添加内容)
· 用const修饰的声明数据成员称为常数据成员· 用const修饰的声明成员函数称为常成员函数· 用const修饰的定义对象称为常对象变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。(一)用const修饰的声明数据成员称为常数据成员 有两种声明形式:const int cctw
2016-08-15 21:57:09
13190
6
原创 虚函数与多态
虚函数与多态概念多态性:调用同一个函数名,可以根据需要实现不同的功能。虚函数:可以在程序运行时通过调用相同的函数名而实现不同功能的函数称为虚函数。编译时的多态性(函数重载)运行时的多态性(虚函数)运行时的多态性是指在程序执行之前,根据函数名和参数无法确定应该调用哪一个函数,必须在程序的执行过程中,根据具体的执行情况来动态地确定。 虚函数当一个基类被继承为不同的派生类时,
2016-08-15 10:11:20
701
原创 继承和派生
类的数据,成员函数都是抽象的,必须定义相应的对象,由对象名才能访问。不能直接访问。在C++中所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(baseclass)”或“父类(father class)”。新建立的类称为“派生类(derived class)”或“子类(son class)”。一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和成员函数是
2016-08-15 09:08:33
606
原创 inline函数
在类体中定义的成员函数的规模一般都很小,而系统调用函数的过程所花费的时间开销相对是比较大的。调用一个函数的时间开销远远大于小规模函数体中全部语句的执行时间。为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline)函数来处理。也就是说,在程序调用这些成员函数时,并不是真正地执行函数的调用过程(如保留返回地址等处理),而是把函数代码嵌入程序的调
2016-08-14 20:47:29
496
原创 友元函数
在一个类中可以有公用的(public)成员和私有的(private)成员。在类外可以访问公用成员,只有本类中的函数可以访问本类的私有成员。但有一个例外——友元(friend)。友元可以访问与其有好友关系的类中的私有成员。友元包括友元函数和友元类。 友元函数与一般函数的不同点在于:1. 友元函数必须在类的定义中说明,其函数体可在类内定义,也可在类外定义;2. 它可以访问该类中的所有成
2016-08-14 12:28:36
1214
原创 引用
对一个数据可以使用“引用”(reference),这是C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名。引用的声明方法:类型标识符 &引用名=目标变量名; 注意: 在上述声明中,&是引用声明符,并不代表地址。不要理解为“把a的值赋给b的地址”。声明变量b为引用类型,并不需要另外开辟内存单元来存放b的值。b和a占内存中的同一个存储单元,它们具有同一地址。
2016-08-14 12:14:24
656
原创 C++之类的声明、定义、存储
类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的运算封装在一起的集合体。(所谓运算,也即是一个个函数)类的定义格式:class 类名//命名习惯 首字母大写 //类中方法的编写有两种方式 //1、直接定义 //2、在类中声明在类外定义 一定要加上该方法是属于哪个类的,用类名和::{ private : 成员数据;
2016-08-12 10:33:38
1246
原创 C++之构造函数与析构函数
C++中重要的是类的构造,对一个事物抽象,得到其本质的东西(所谓本质,放之四海而皆准)。类也无非对一些数据与函数的封装。对于类中的构造函数、析构函数有其固有的特点。 故总结如下
2016-08-10 21:34:31
827
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅