河北政法职业学院教务处,apec2014,梅林法袍
问题引入:
用一句话回答以下问题:
(本章重点在 1.1.3 和 1.1.4)
(图)
(图)
芯片主要是由内核和外设组成。
内核(主控制器):
外设(从控制器):
总线:
内核与外设通过总线连接,其分为:i(指令)、s(系统)、d(数据)总线。
几个总线同时访问某个外设或者内核,产生竞争的时候,总线矩阵会使用调度算法进行仲裁。
stm32f42xx的总线接口
(图)
存储器本身是不具有地址信息的,地址信息是由用户或者厂商分配的,为存储器重新分配地址的过程即为存储器映射。
cortex - m4内核是32位的,可以寻址2的32次方,也就是4gb(0x0000 0000 - 0xffff ffff)的内存空间,
这4gb的内存空间被分成了8个block,每个block都有特定的功能,每个block大小为512mb。(教程里有每个block的功能划分)
block0用于设计flash,429igt6只用了1mb。
block1用于设计sram,用于存储变量,429igt6用了256kb,被分成了三个部分:sram1为112kb,sram2为16kb,sram3为64kb。
block2用于设计片上外设。外设根据速度不同被分成四条总线进行控制:ahb1、ahb2、apb2、apb1。
(图)
block3是fmc的bank1 - bank2,用于扩展外部存储,一个bank为256mb,板上拓展了一个大小为8mb的sram。
block4是fmc的bank3 - bank4
block7为cortex - m4的内部外设,是由arm公司设计的,如:nvic等。
通过地址和偏移量间接访寄存器。
问题引入:
通过绝对地址访问内存单元:
//gpio端口全部输出高电平 *(unsigned int *)(0x40021c14) = 0xffff;
0x40021c14是输出数据寄存器ocr的地址,如何找到?
(unsigned int *)的作用是什么?
通过寄存器别名方式访问内存单元:
#define gpioh_odr *(unsigned int *)(0x40021c13) gpioh_odr = 0xff;
什么是寄存器?
什么是存储器映射?
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论