大家帮我整理下思路,我彻底想不起来了。谢谢了

[复制链接]
1980|11
 楼主| 许世霞 发表于 2012-5-24 17:07 | 显示全部楼层 |阅读模式
51单片机里的SFR寄存器内容初始化了以后,各个寄存器值变了。掉电后,寄存器里的值是不是又恢复原来状态了。我看51单片机的寄存器属于RAM区,应该是恢复原来状态了。51单片机一上电程序就会自动跑起来,所以寄存器值就会被初始化的。

最近在用ARM搞混了,ARM的系统寄存器是属于RAM 还是ROM?应该也是RAM吧?但是不同的是,ARM程序一上电并没有跑起来,而是要通过指令来让其跑去来。

以上我说的对不?
Tinnal 发表于 2012-5-24 17:17 | 显示全部楼层
寄存器属于CPU内部电路,不属于用户RAM区。但和RAM的质是一样的。复位以后的状态,数据手册都会写得很精楚,自己去看。ARM也一样。

“ARM程序一上电并没有跑起来,而是要通过指令来让其跑去来。”
没有跑起来又怎么去执行你的“指令”呢??
只不过高端的ARM芯片(除M3、M0这种面向单片机应用的CPU),内部都不会带FLASH,特别的,如果外接的是NAND FLASH这种非线性FLASH,启动过程比单片机复杂而已。因此,这种场合都会配上一个BootLoader,负责把应用的代码全部搬到RAM去运行(如果接的是NOR FLASH,就和单片机的用法差不多,编程序-》烧FLASH-》程序直接在FLASH上运行)。
BitFu 发表于 2012-5-24 17:26 | 显示全部楼层
寄存器的性质和RAM是一样的,你可能想知道寄存和RAM是否是同一编址空间
CPU上电都会跑起来,除非没有时钟!
forgot 发表于 2012-5-24 17:27 | 显示全部楼层
ARM有IROM,IROM有段初始化的固化代码

启动时要把考到IRAM里,然后才能进行相应的运行
Tinnal 发表于 2012-5-24 17:35 | 显示全部楼层
ARM有IROM,IROM有段初始化的固化代码

启动时要把考到IRAM里,然后才能进行相应的运行
forgot 发表于 2012-5-24 17:27

这个还真得看具体的CPU而定,ARM公司只做核,只负责从AHB总线取指令。至于怎么把指令喂到ARM嘴里,就得看CPU厂家了。
ATMEL采用的是ROM的方式,里头有最初的启动代码,负责把你前4K的代码拷到内部的4K SRAM运行,至于是4K以后的代码,则需要前4K的你的代码负责了搬运了。这个ROM代码还能通过USB或串口下载程序,是做得比较好的。
而三星的作法是通过硬件把前4K的代码拷到内部的4K SRAM运行,下程序麻,只能通过JTAG接口。
当然,如果你用的是NOR,你可以直接运行你的代码,而完全不用拷贝。
 楼主| 许世霞 发表于 2012-5-24 20:41 | 显示全部楼层
哎呵呵。。。我用的少,确实这方面知道的太少了。
不过,后面那句话是我们的软件人员给我讲的。估计我说的跑起来和你们说的跑起来不是一个意思。
今天遇到一个问题就是关于这个话题的。几个GPIO用作按键控制输入的。但是一开始 没有做初始化的时候,但我上电我测量IO口的电平是不正确的。把IO初始化了以后,电平就正确了。但是掉电,再重新上电我再去测电平又不正确了,按说这个时候它应该自己跑起来执行初始化,然后我就应该测到正确的电平,可是没有。然后软件人员说上电了并不一定跑起来了,得他执行命令让它跑起来。(用的是LINIUX)
这个怎么解释呢?
Tinnal 发表于 2012-5-24 20:56 | 显示全部楼层
本帖最后由 Tinnal 于 2012-5-24 20:57 编辑

呵呵,明白了。
他说的“然后软件人员说上电了并不一定跑起来了”是指那个GPIO并不处于正确的工作状态,结合linux,他应该是在说那个驱动程序没有跑起来。
他说的“得他执行命令让它跑起来”是指初始化命令。对应到Linux,特定的硬件初始化是放在特定的设备驱动程序里头的(型如***.ko),如果你启动linux,但没用insmod ***.ko命令来装载这个驱动,则硬件就没有正确初始化了。(你可以把这条命令加入/etc/init.d/rcS,让他开机就自动执行)。

硬件一上电复位,各位寄存器就会被复位到默认值。是不能保存上电前的状态的。对于GPIO,默认态一般是输入状态。
 楼主| 许世霞 发表于 2012-5-24 22:14 | 显示全部楼层
哦 ,我明白了
就是说一上电,操作系统跑起来了,但是那段执行按键的驱动程序没有跑起来。需要操作系统给一个命令执行。也可以用你最后面说的那个方法默认执行。
应该是这样的。我估计软件人员没有很熟悉命令。不然他应该给我设置一下的。
多谢多谢
Tinnal 发表于 2012-5-24 22:18 | 显示全部楼层
是的。
Tinnal 发表于 2012-5-24 22:21 | 显示全部楼层
所以以后发贴要把一些关键的点写出来,你们用上了LINUX这是一个很关键的点。因为LINUX的开发模型和单片机的开发模型很不一样。我一开始也按单片机的角度去考虑你的问题了。毕竟这个分坛讨论的问题9成9都是单片机的。
forgot 发表于 2012-5-25 09:23 | 显示全部楼层
说的对 5# Tinnal
 楼主| 许世霞 发表于 2012-5-25 10:32 | 显示全部楼层
呵呵。我也是感觉到T说的是按照单片机的思路来的,我就赶紧补上关键点呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

3781

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部