| | 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 网上商城 | 芯片价格参考 | 留言 | 论坛 | 网络协议 | 驱动设计 | 购买指南-HowtoBuy | | |
![]() |
![]() |
| 您现在的位置: FPGA开发板&SOPC开发板-嵌入式控制研究室 >> ARM >> ARM进阶 >> 文章正文 |
|
|||||
| ARM Boot 示例 | |||||
| 作者:佚名 文章来源:互联网 点击数: 更新时间:2006-8-26 | |||||
|
该程序对学习和理解ARM编程很有帮助.为了便于理解,这里我全部采用实际地址,不用宏定义. 程序语言为 ARM 汇编,具体过程参考ARM编程,具体寄存器接口定义参见ARM硬件手册
AREA |C$$code|, CODE, READONLY ENTRY EXPORT main main MRS r14, CPSR LDR r11, =0x80000000 ;内部寄存器基地址 0x80000000 MOV r0, #0 STR r0, [r11, #0x280] ;disable 所有中断 LDR r0, =0x840100 ;在系统控制寄存器SYSCON1中 LDR r0, =0x03010100 ;在存储控制寄存器MEMCFG1中 ;特别注意: 如设置线宽为16位,由于CPU是32位,CPU会把32位数据分两次操作写入,每次写16位,这样对32位的外设来说是一种浪费 例如: LDR r0, =0x10000000 示波器上观察的情况是一个片选信号/CS低电平范围内,有两个写入信号/WE低电平. 如设置线宽为32位,CPU会把32位数据一次写入,如果外设是16位的话,如ISA网卡,就会造成高16位丢失. 例如: LDR r0, =0x10000000 LDR r0, = 0xff ;DRAM刷新率refresh rate,设置要适当,否则数据丢失 LDR r13, =0xc0020000 ;设置堆栈 Stack, r13 为ARM定义的堆栈指针 BL dram_test ;跳转指令,执行测试DRAM LDR r0, =startloader_cmdmsg BL Beep LDR r0, =0x60005 ;设置波特率 38400, 8位 STR r0, [r12] ;Receive count STR r0, [r12] ;Receive data
MOV r1, #0x31 ;Save it to Flash ROM 把数据写入Flash ROM 写入Flash参见Flash ROM编程 部分 |
|||||
| 文章录入:fengfeiyi 责任编辑:fengfeiyi | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
Copyright © 2005www.21control.com 嵌入式控制技术研究室 版权所有 站长:康草科技 |