ARM学习之S3C2440的bootloader代码分析(1)

发布者:LogicLeaper最新更新时间:2023-09-25 来源: elecfans关键字:ARM  S3C2440  bootloader 手机看文章 扫描二维码
随时随地手机看文章

;===========================================

; NAME: OPTION.A

; DESC: Configuration options for .S files

; HISTORY:

; 02.28.2002: ver 0.0

; 03.11.2003: ver 0.0    attached for 2440.

; jan E, 2004: ver0.03  modified for 2440A01.

;===========================================

;这个Option.inc文件主要是为设置时钟服务的,选择好分频系数

;Start address of each stacks,

_STACK_BASEADDRESS    EQU 0x33ff8000

_MMUTT_STARTADDRESS    EQU 0x33ff8000

_ISR_STARTADDRESS    EQU 0x33ffff00


;定义一个全局的逻辑变量,变初始化为TRUE

        GBLL     PLL_ON_START    

PLL_ON_START    SETL     {TRUE}


;定义一个全局的逻辑变量,变初始化为FALSE

        GBLL    ENDIAN_CHANGE

ENDIAN_CHANGE    SETL    {FALSE}


;定义一个全局的数字变量,变初始化为16

        GBLA    ENTRY_BUS_WIDTH

ENTRY_BUS_WIDTH    SETA    16



;BUSWIDTH = 16,32

        GBLA    BUSWIDTH    ;max. bus width for the GPIO configuration

BUSWIDTH    SETA    32


        GBLA    UCLK

UCLK    SETA    96000000;48000000


        GBLA    XTAL_SEL

        GBLA    FCLK

        GBLA    CPU_SEL


;(1) Select CPU        

;CPU_SEL    SETA    32440000    ; 32440000:2440X.

CPU_SEL    SETA    32440001    ; 32440001:2440A


;(2) Select XTaL

XTAL_SEL    SETA    12000000    

;XTAL_SEL    SETA    16934400


;(3) Select FCLK

;FCLK        SETA    296352000

;FCLK        SETA    271500000

;FCLK        SETA    100000000    

FCLK        SETA    240000000    

FCLK        SETA    280000000    

FCLK        SETA    320000000    

FCLK        SETA    360000000    

FCLK        SETA    400000000    


;(4) Select Clock Division (Fclk:Hclk:Pclk)

;CLKDIV_VAL    EQU    5    ; 0=1:1:1, 1=1:1:2, 2=1:2:2, 3=1:2:4, 4=1:4:4, 5=1:4:8, 6=1:3:3, 7=1:3:6.

;定义时钟比例

;--------------------------------------------

;下面根据外部晶振是12MMhz(else是16.9344Mhz),再根据我们的主时钟是(271.5MHz或304.8MHz),决定分频系数M_MDIV、M_PDIV、M_SDIV

;根据我们的USB时钟(48MHz或者96MHz),决定分频系数U_MDIV、U_PDIV、U_SDIV

;--------------------------------------------

;[是IF伪操作的同义词,|是ELSE伪操作的同义词,]是ENDIF伪操作的同义词

 [ XTAL_SEL = 12000000

 

    [ FCLK = 271500000

CLKDIV_VAL    EQU    7        ;1:3:6

M_MDIV        EQU    173        ;Fin=12.0MHz Fout=271.5MHz

M_PDIV        EQU    2

        [ CPU_SEL = 32440001

M_SDIV        EQU    2        ; 2440A

           |

M_SDIV        EQU    1        ; 2440X

           ]

    ]

    

    [ FCLK = 100000000

CLKDIV_VAL    EQU    0        ;1:1:1

M_MDIV        EQU    42        ;Fin=12.0MHz Fout=100MHz

M_PDIV        EQU    4

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]


    [ FCLK = 240000000

CLKDIV_VAL    EQU    4        ;1:4:4

M_MDIV        EQU    112        ;Fin=12.0MHz Fout=240MHz

M_PDIV        EQU    4

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]

    

    [ FCLK = 280000000

CLKDIV_VAL    EQU    4        ;1:4:4

M_MDIV        EQU    132        ;Fin=12.0MHz Fout=280MHz

M_PDIV        EQU    4

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]

    

    [ FCLK = 320000000

CLKDIV_VAL    EQU    5        ;1:4:8

M_MDIV        EQU    72        ;Fin=12.0MHz Fout=320MHz

M_PDIV        EQU    1

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]

    

    [ FCLK = 360000000

CLKDIV_VAL    EQU    5        ;1:4:8

M_MDIV        EQU    82        ;Fin=12.0MHz Fout=360MHz

M_PDIV        EQU    1

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]


    [ FCLK = 400000000

CLKDIV_VAL    EQU    5        ;1:4:8

M_MDIV        EQU    127        ;127

M_PDIV        EQU    2        ;2

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]

    

    [ UCLK = 48000000

U_MDIV        EQU    56        ;Fin=12.0MHz Fout=48MHz

U_PDIV        EQU    2

        [ CPU_SEL = 32440001

U_SDIV        EQU    2        ; 2440A

           |

U_SDIV        EQU    1        ; 2440X

           ]

    ]

    [ UCLK = 96000000

U_MDIV        EQU    56        ;Fin=12.0MHz Fout=96MHz

U_PDIV        EQU    2

        [ CPU_SEL = 32440001

U_SDIV        EQU    1        ; 2440A

           |

U_SDIV        EQU    0        ; 2440X

           ]


    ]


  |    ; else if XTAL_SEL = 16.9344Mhz


    [ FCLK = 266716800

M_MDIV        EQU    118    ;Fin=16.9344MHz

M_PDIV        EQU    2

        [ CPU_SEL = 32440001

M_SDIV        EQU    2        ; 2440A

        |

M_SDIV        EQU    1        ; 2440X

        ]

    ]

    

    [ FCLK = 296352000

M_MDIV        EQU    97    ;Fin=16.9344MHz

M_PDIV        EQU    1

        [ CPU_SEL = 32440001

M_SDIV        EQU    2        ; 2440A

        |

M_SDIV        EQU    1        ; 2440X

        ]

    ]

    [ FCLK = 541900800

M_MDIV        EQU    120    ;Fin=16.9344MHz

M_PDIV        EQU    2

        [ CPU_SEL = 32440001

M_SDIV        EQU    1        ; 2440A

        |

M_SDIV        EQU    0        ; 2440X

        ]

    ]

    

    [ UCLK = 48000000

U_MDIV        EQU    60    ;Fin=16.9344MHz Fout=48MHz

U_PDIV        EQU    4

        [ CPU_SEL = 32440001

U_SDIV        EQU    2        ; 2440A

           |

U_SDIV        EQU    1        ; 2440X

           ]

       ]

    [ UCLK = 96000000

U_MDIV        EQU    60    ;Fin=16.9344MHz Fout=96MHz

U_PDIV        EQU    4

        [ CPU_SEL = 32440001

[1] [2]
关键字:ARM  S3C2440  bootloader 引用地址:ARM学习之S3C2440的bootloader代码分析(1)

上一篇:S3C2440串口的基本使用
下一篇:系统时钟和UART的设置

推荐阅读最新更新时间:2024-11-09 11:54

既有X86与ARM,为何RISC-V还能受汽车青睐?
在软件圈有一个梗:十年的老代码,你敢动? 这个故事具体情形是:当新入职的同事被告知维护老产品时,看着代码包就像是在雾里看花,当他去问资历更老的同事就会发现,几经轮回已经没有人懂具体逻辑是什么样的,原作者也不知道已经跳了几家公司,于是他没有办法,只能在外边包一层,交付新功能。   这,就是历史的包袱。    RISC-V 的优势就在于,作为后起之秀,它灵活、精简、开发成本也更低。    现在的 汽车 ,作为“轮子上的计算机”,它需要囊括的已不只是被动安全,信息娱乐已经成为 汽车 制造的新需求,软件定义 汽车 已是它的新方向。    通过对比 X86 、 ARM 与 RISC-V 的应用区别,就可以很清楚的知道为什么在汽车板块
[汽车电子]
既有X86与<font color='red'>ARM</font>,为何RISC-V还能受汽车青睐?
S3C2440_LCD控制器
1、LCD控制器主要有两方面的功能: 1)从framebuffer中取出某个像素的数据; 2)配合其他信号,一起将这个数据发送给LCD 不管是2440,还是其他型号的ARM芯片。它们的LCD控制器的功能都是一样的,只不过存储器的操作稍有区别。 LCDDMA:会从内存中把数据取出来,发送给LCD。 DMA:不需要cpu的参与,只需要把数据填好,它就会自动的取数据,发送给LCD。 怎样去设置极性、时序呢? 需要设置REGBANK,通过这些寄存器控制LCD控制器,让其发出合适的时序。 2、 使用8bpp时,会涉及到一个调色板。 为什么会涉及一个调色板的概念。 可以在framebuffer中,每个像素使用8bit来表
[单片机]
S3C2440_LCD控制器
s3c2440裸机-内存控制器(一、内存控制器的原理)
1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nand控制器等... 1.不同类型的控制器: (1)GPIO控制器属于门电路,不涉及到时序,相对简单。 (2)串口控制器属于协议类接口,类似的协议类接口还有iic、iis、spi等。 (3)前面的GPIO/门电路接口、协议类接口,都不会把地址输出到外部设备,仅仅只是将地址写入到相应的控制器。 接下来的内存类接口,会把地址输出到外部,cpu将地址写入内存控制器,内存控制器还需访问外部设备,比如NorFlash、网卡、SDRAM。 2.
[单片机]
<font color='red'>s3c2440</font>裸机-内存控制器(一、内存控制器的原理)
S3C2440的内存情况在NAND FLASH或者NOR FLASH启动的情况下
1,从NANDFLASH启动时,在ARM上电时,ARM会自动把NANDFLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开始运行。 2,从NOR FLASH启动时,因为NORFLASH接在bank0。地址映射是0X00000000。所以ARM上电后直接运行NORFLASH里的程序。此时S3C2440内部SRAM地址为0X40000000。 3,ARM上电启动都是从0X00000000开始运行。但是对于复位程序入口,ResetEntry的值在ARM上电运行时是0X00000000,在JTAG仿真时是0X30000000。这个值很关键,在拷贝程序
[单片机]
<font color='red'>S3C2440</font>的内存情况在NAND FLASH或者NOR FLASH启动的情况下
porting minicom移植 to S3C2440
本以为网上应该有很多minicom成功移植的文档,找了一通才发现貌似网上还没有成功移植minicom的文档 minicom需要ncurses库的支持 arm-linux-gcc中并没有此库故需要交叉编译ncurses,否则出现很多头文件、库函数找不到。 ncurses的交叉编译 ncurses简单介绍: Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库,我们熟悉的内核配置界面就是用此库函数编写的。 本文要用到的相关文件ncurses-5.5.tar.gz 与minicom-2.3.tar.gz 下载 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都
[单片机]
Arm 计算平台加持,全新 Llama 3.2 LLM实现AI 推理的全面加速和扩展
在 Arm CPU 上运行 Meta 最新 Llama 3.2 版本,其云端到边缘侧的性能均得到显著提升,这为未来 AI 工作负载提供了强大支持 Meta 与 Arm 的合作加快了用例的创新速度,例如个性化的端侧推荐以及日常任务自动化等 Arm 十年来始终积极投资AI领域,并广泛开展开源合作,为 1B 至 90B 的 LLM 实现在 Arm 计算平台上无缝运行 人工智能 (AI) 的迅猛发展意味着大语言模型 (LLM) 的新版本不断推陈出新。要充分发挥 AI 的潜力并抓住其带来的机遇,需要实现 LLM 从云端到边缘侧的广泛部署,而这也伴随着对计算和能源需求的大幅增长。整个生态系统正携手寻找应对这一挑战的解决方
[嵌入式]
S3C2440 开发板实战(3):编译概念 + LED点亮闪烁
基于我原先有STM32等单片机的基础,内容是结合我所新学习到的知识进行书写,所以基础知识可能不会涉及到请见谅。 一、LED点亮 我们直接通过C程序对寄存器进行操作(汇编语言使用尽量少),通过原理图可看出开发板上的LED对应的GPIO口为GPF4、5、6,所以这里首先以GPF4对应的LED进行点亮,从芯片手册寻找GPF4对应的寄存器(I/O port 章节),就可以看到S3C2440芯片控制IO口对应的寄存器为下图所示: GPIO寄存器 然后就是和单片机操作一样,对他进行一一设置,对于LED的电量只要利用GPFCON和GPFDAT寄存器这两就行, 1. 首先对GPFCON进行设置,查找GPFCON表找到GPF4,如下所示
[单片机]
<font color='red'>S3C2440</font> 开发板实战(3):编译概念 + LED点亮闪烁
s3c2440如何设置fclk
  1设置LockTIme变频锁定时间   2设置FCLK与晶振输入频率(Fin)的倍数   3设置FCLK,HCLK,PCLK三者之间的比例   LockTIme 变频锁定时间由LOCKTIME寄存器(见下表)来设置,由于变频后开发板所有依赖时钟工作的硬件都需要一小段调整时间,该时间计数通过设置 LOCKTIME寄存器[31:16]来设置UPLL(USB时钟锁相环)调整时间,通过设置LOCKTIME寄存器 [15:0]设置MPLL调整时间,这两个调整时间数值一般用其默认值即可。   表2-8变频锁定时间寄存器(LOCKTIME)      FCLK与Fin的倍数通过MPLLCON寄存器设置,三者之前有以下关系:   M
[单片机]
<font color='red'>s3c2440</font>如何设置fclk
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved