非常实用的Bootloader程序为ARM S3C44b0(公版) ,实现了系统引导和支持Xmodem协议文件传输并下载到本址存储器运行

这篇博客详细介绍了针对ARM S3C44b0处理器的Bootloader程序,包括启动代码、中断向量表和系统配置。代码实现了系统引导流程,并支持Xmodem协议进行文件传输至本址存储器运行。内容涵盖汇编语言编程、中断处理和存储器配置等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分: 启动代码

;==================================================================
;文件: startup.s                        
;修改: 李光祥 chenfengmcu@126.com
;日期: 2008/10/9
;描述: 基于ARM处理器S3C44b0X C语言启动代码
;      初始化ISP,栈,C变量

;版本历史记录  V1.0 
;==================================================================
;外设和存器空间信息

;nGCS0 :ROM  HY29LV160        0x0000_0000~0x001f_ffff
;nGCS1 :USB  PDIUSBD12         0x0200_0000~0x03ff_ffff
;nGCS2 :ATA                                0x0400_0000~0x05ff_ffff
;nGCS3 :NET  RTL9019AS         0x0600_0000~0x07ff_ffff
;nGCS4 :--                                     0x0800_0000~0x09ff_ffff
;nGCS5 :--                                     0x0a00_0000~0x0bff_ffff
;nGCS6 :RAM  HY57V641620   0x0c00_0000~0x0dff_ffff
;nGCS7 :--                                     0x0c80_0000~0x0fff_ffff  

;APP                                             RAM=0xc000000~0xc7effff
;44BMON                                    RAM=0xc7f0000~0xc7fffff
;STACK                                        RAM=0xc7ffa00
;==================================================================
_ISR_STARTADDRESS   EQU   0xc7fff00      

    GBLA    BUSWIDTH
BUSWIDTH SETA    16

     GBLL   PLLONSTART
PLLONSTART  SETL    {TRUE}

     GBLA PLLCLK
PLLCLK  SETA 64000000

        [ PLLCLK = 64000000 
M_DIV     EQU 8 
P_DIV     EQU 2
S_DIV     EQU 1
         ]
;==================================================================
                                         ;看门狗定时器预定义
WTCON     EQU 0x01d30000  
                                         ;系统时钟预定义
PLLCON     EQU 0x01d80000
CLKCON     EQU 0x01d80004
LOCKTIME    EQU 0x01d8000c
                                         ;存储器控制预定义
REFRESH     EQU 0x01c80024
                                         ;BDMA目的寄存器
BDIDES0     EQU 0x1f80008
BDIDES1     EQU 0x1f80028 

;==================================================================
                                         ;中断控制预定义
INTPND     EQU 0x01e00004
INTMOD     EQU 0x01e00008
INTMSK     EQU 0x01e0000c
I_ISPR     EQU 0x01e00020
I_CMST     EQU 0x01e0001c
                                         ;预定义常数(常量)
USERMODE    EQU 0x10
FIQMODE     EQU 0x11
IRQMODE     EQU 0x12
SVCMODE     EQU 0x13
ABORTMODE   EQU 0x17
UNDEFMODE   EQU 0x1b
MODEMASK    EQU 0x1f
NOINT     EQU 0xc0
I_BIT     EQU 0x80
F_BIT  EQU 0x40
T_BIT  EQU 0x20

;==================================================================
    GBLL    THUMBCODE                    ;定义指定状态逻辑变量
    [ {CONFIG} = 16                      ;判定汇编器在Thumb汇编
THUMBCODE SETL {TRUE}          
    CODE32                               ;指示代码为ARM指令
    |  
THUMBCODE SETL {FALSE}
    ]

    [ THUMBCODE                          ;启动在Thumb时转向RAM
    CODE32                       
    ]
;------------------------------------------------------------------
    MACRO                                ;中断向量宏定义 
$HandlerLabel HANDLER $HandleLabel

$HandlerLabel                           
    sub     sp,sp,#4            ;减SP指针为存跳转地址
    stmfd   sp!,{r0}            ;将ro入栈<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值