📄 44b0ѧϰ.txt
字号:
arm7tdmi 共有7总模式
thumb状态是发生异常后 处理器自动切换到arm状态
bl(进入系统模式) swi(进入管理模式) udef (进入未定义模式) 指令在引发异常时
在预取指阶段就发生中断,即当pc中是该指令时但还没到执行
的时候就会产生中断.所以此时lr(R14连接寄存器)中的值就是
bl或swi指令的下一条指令,因此在异常处理结束时,lr中的
值直接赋给pc而不需要做任何的加减运算.
对于异常向量:arm采取的措施比较有意思,它为了是在异常处理结束后,无论在进入
异常前是arm状态还是thumb状态,返回的操作都是一样的,在异常处理程序中,arm
处理器自动进入到arm状态.这样我们就可以用统一的返回接口.
对于预取指和预取数据异常,在异常处理结束后pc中的值是产生异常的指令的地址和
产生数据异常的指令的地址.而对于其它异常则异常返回后中pc中的值是这些异常指令
产生后未被执行的下一条指令.
其采用操作数地址的最低为来实现thumb和arm状态的切换 因为thumb和arm的字节数
都是2字节的倍数,所以其地址都是2的倍数,因此在二进制表示中最低位不用,所以
对这个不用的位加以利用,来作为两中状态的切换标志.
对于中断位的禁止只能在特权模式下面通过在cpsr中来设定,用户态下边是不能设定的
abort异常主要是为了存储器管理部件和cpu间通信,而应用程序则不用管地址,当发生
错误地址时发生abort异常,进入异常处理程序进行地址的调整,然后继续刚才的指令.
软中断指令则是进入超级用户的手段.
未定义指令主要用于仿真器设置一些陷进指令用于调试.
中断优先级 复位 数据abort fiq irq 预取指abort 未定义和软件中断
内存芯片有fp(快页模式)darm edo(扩展数据输出)dram sdram(同步dram)
s3c44b0存储器的特点:有8个BANK 6个可用作rom sdram 2个可用作fp/edo/s dram
7个的起始地址是固定的 但大小是可编程的
1个起始地址可变 大小可编程
寄存器的含义:
BWSCON 除BANK0外7个BANK的总线宽度 等待状态等设置
BANKCONn 共8个分别针对每个BANK的操作时序的设置
REFRESH 刷新控制器
BANKSIZE 定义了BANK的大小
对于cache 读有两种 贯穿读出 旁路读出 写有写穿 回写
第一种读先到cache 在到主存 第二种读同时到两个那个
第一种写同时写到cache和主存 第二个先写到cache等有必要写
到主存时再写
s3c44b0 0x01c0 0000 到 0x0200 0000为特殊功能寄存器的位置
bank6和bank7的大小必须是一样的 由于bank6的大小2M 4M 8M 16M 32M
而bank7的起始地址则是在bank6的结尾开始 所以bank7的起始地址是变动的
其它的bank的起始地址都是固定的
对于类似于王康板子上hy57v641620HG ram存储器芯片的ldqm udqm表示屏蔽低字节和高字节
因为它是以4BANK*1M*16bit来组织的 所以当arm指令要求字节读取是可以屏蔽到16bit中的高
字节或者低字节.以此来到达字节 半字的读取
对于王康这块板子 D12被映射在BANK1 ROM别映射在BANK0 ATA_IDE被映射在BANK2 RT8019被映射
在BANK3 SDRAM被映射在BANK6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -