2017-3-4学习笔记

1.1课:怎么看原理图之GPIO和门电路

(1)GPIO和门电路:输入输出引脚,三极管,上拉下拉电阻,与或非门等等

(2)协议类接口(双方约定信号的协议,双方满足时序要求)

<1>UART:

<2>IIC

<3>SPI

<4>NAND:

怎么设置时序:

(1)看2440手册,确定能设置什么参数;

(2)看外设手册,入nandflash,确定取值;

(3)计算,看2440,看看怎么计算,看看参数的含义;

<5>LCD:

VClock:电子枪 没来一个时钟移动一个信号;

HSYNC:水平方向换行(同步)信号;一行320个点

VSync:垂直方向的同步信号;240行后调回第一行

VD0~VD23:数据,RGB等等;

DE:数据使能;

视频数据从哪来?

分配一个显存SDRAM。将数据扔给信号线,打出来,再去取;不断循环。

怎么设置时序?

1.弄清2440能设置哪些值,这些值得含义是什么。

2.看LCD手册,弄清楚这些值取什么值。

3.计算,这些值是以多少个时钟为单位的,这些值是多少秒,换算成是多少时钟,再将这些时钟也写入2440寄存器中。

<6>总结协议类:

连线,不说了;

理解代码,弄清楚数据怎么传输?各引脚怎么配合;

设置时序:2440发出的各个信号,要让外界的芯片能反应过来;

(1)看2440手册弄清楚能设置哪些参数,这些参数的含义;(以CLK为单位)

(2)看外设芯片手册,弄清楚这些参数的取值范围;(以秒为单位)

(3)根据前两条计算2440的寄存器取值;

注:关于设计时序,通过时序写程序在第二期视频也有详细讲到,后续继续关注,韦老大的书中各个章节也有讲每种硬件的配置等等内容。

(3)类似内存的接口

<1>NOR,SDRAM,网卡,(书第六章讲的很详细,再详细的时序图第二期有讲)

<2>不同位宽外设的接线,访问过程(16或者32位的外设访问时不同)

<3>怎么确定访问地址,设置内存控制器

Q1:地址线,数据线上接有众多的设备,怎么样做到只访问其中一个,其他的不受影响?

A1:每一个芯片都有自己的片选引脚,访问之前,CS信号都设置低电平(低电平有效),其他的芯片CS拉高。

Q2:CS是否需要手工来设置?

A2:不需要。2440内有一个内存控制器,CPU访问某个地址时,CPU发出地址信号给“”“内存控制器”,内存控制器根据该地址决定让哪一个CS输出低电平。见书P88上方的表,访问每个存储器,CPU的内存控制器的寄存器的地址是不同的

时间: 2024-10-09 20:38:36

2017-3-4学习笔记的相关文章

2017/05/05学习笔记

系统中所以的信息包括磁盘文件.内存中的程序.内存中存放的用户数据及网络上传送的数据都是由一串bit表示的.区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文.为了在C程序中做出好的编码选择,我们确实需要了解一些机器代码以及编译器将不同的C语句转化为机器代码的方式.比如一个switch是否总是比一个if-else语句高效的多?一个函数调用的开销有多大?while循环比for循环更有效么?指针引用比数组索引更有效么为什么将循环求和的结果放到一个本地变量中,会比其放到一个通过引用传递过来的参数

Python学习笔记-2017.5.4thon学习笔记-2017.5.14

Python学习过程中的笔记,只做自己参考使用: lambda函数,匿名函数,当我们使用一个函数并且使用完成就删除时,可以使用匿名函数,比如f等于xyz三个之和: f = lambda x,y,z:x+y+z 生成器和迭代器: 生成器,我们常用的列表一般有两种方式生成,例如: 1.直接写出列表 a = [1,2,3,4,5,6,7,8,9] 2.通过列表生成式生成列表 a = [i*i for i in range(10)] 上述两种列表是我们常用的列表方式,调取方便,随便增删改查取值,但是有可

2017/03/31学习笔记

双向链表 单向链表的节点都只有一个指向下一个节点的指针单向链表的数据元素无法直接访问其前驱元素逆序访问单向链表中的元素时极其耗时的操作双向链表在单向链表的基础上增加了指向前驱的指针功能上双向链表可以完全取代单向链表的使用 栈是一种特殊的线性表 栈仅能在线性表的一端进行操作栈顶:允许操作的一端栈底:不允许操作的一端首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系.只不过它是一种特殊的线性表.定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底.他的特殊之处就在于

2017/03/27学习笔记

程序的输入是指从输入文件讲数据传送给程序,程序的输出是指从程序将数据传送输出文件.C++输入输出包含以下三方面内容:对系统指定标准设备的输入和输出.即从键盘输入数据,输出到显示器.这种输入输出称为标准输入输出,简称标准IO.以外出磁盘文件为对象进行输入输出,即从磁盘文件输入数据,将数据输出到文件.以外存为对象的输入输出称为文件的输入输出,简称文件IO.度内存中指定的空间进行输入输出,通常指定一个字符串数组作为储存空间(实际上可以利用该空间储存任何信息).这种输入输出称为字符串输入输出,简称串IO

2017/04/27学习笔记

fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数执行另一个程序.当进程调用一个exec函数时,该进程的用户空间和数据完全被新程序替换,从新程序的启动例程开始执行.调用exec并不创建新进程,所以调用exec前后该进程ID不变.将当前进程的.text .data替换为所要加载程序的.text .data,然后让进程从新的.text第一条指令开始执行,但进程ID不变,换核不换壳. int execl();int execlp();int

2017/03/24学习笔记

类型转换 C语言中的强制类型转换很简单,不管什么类型的转换都是TYPE b=(TYPE)a; C++中类型转换提供了4种类型转换操作符来应对不同场合的应用.static_cast 静态转换.如int转换成charreinterpreter_cast 重新解释类型dynamic_cast 命名上理解是动态类型转换.如子类和父类之间的多态类型转换 (父类转子类,向下转型)const_cast 字面理解就是去const属性. 4种类型转换格式TYPE b=static_cast<TYPE>(a);

2017/03/17学习笔记

智能指针类 指针使用过程中,经常会出现内存泄漏和内存多次被释放.解决方案:boost库的智能指针项目开发中,要求开发者使用预先编写的智能指针类对象代替C语言中原生的指针.智能指针思想工程中的智能指针是一个类模板通过构造函数接管申请的内存通过析构函数确保堆内存被及时释放通过重载指针运算符*和->来模拟指针的行为通过重载比较运算符==和!=来模拟指针的比较 为什么不要重载&&和||操作符 &&和||是C++中非常特殊的操作符&&和||内置实现了短路规则操作

2017/03/11学习笔记

.lib资源模式文件 描述 .dll.dll 动态库(函数二进制码集合,里面有函数的函数体),动态库有规范(win/linux)下不一样. mtrace 是linux C编程内存泄漏检测工具,mtrace是三款工具中最简单易用的,mtrace是一个C函数,在<mckeck.h>里面声明及定义.其实mtrace是类似malloc_hook的malloc handler,只不过mtrace的hander function已由系统为你写好,既然如此,系统又怎么知道您想将malloc/free的记录写

2017/03/03学习笔记

链表 单向链表 非常常用的一种数据结构对于数组,逻辑关系上相邻的两个元素的物理位置也是相邻的,这种结构的优点是随机存储任意位置的元素,但缺点是如果从数组中间删除或插入元素的时候,需要大量的移动元素,效率不高.链表存储结构的特点,元素的存储单元可以是连续的,也可以是不连续的,因此为了表示每个元素a,与其后的元素a+a之间的关系,对于元素a,出了存储其本身的信息外,还需要存储一个指示其后元素的位置,使这两部分数据成为节点.一个节点中存储的数据元素被成为数据域.存储后存储位置的域叫指针域.n个节点(a

2017.3.2学习笔记----------nfs以及根文件系统

根文件系统的制作烧写,nfs,驱动程序的编译 <1> 根文件系统的制作烧写: 类似于前一节,步骤可以参考手册,将补丁文件打入虚拟机,再安装即可. 具体步骤参考开发板应用手册3.4节 <2> 使用flash上的根文件系统启动沪,手工MOUNT NFS: mount -t nfs -o nolock,vers=2 192.168.1.132:/work/nfs_root /mnt ls  /mnt <3>使用nfs作为根文件系统来启动 进入uboot: set bootar