ARMBoot-1.1.0 在 mini2440 开发板上的移植

发布者:Meshulun最新更新时间:2024-06-28 来源: elecfans关键字:mini2440  移植 手机看文章 扫描二维码
随时随地手机看文章

和CONFIG_SMDK2410相关的:
[root@www.linuxidc.com armboot-1.1.0]# grep -rHn CONFIG_SMDK2410 *
cpu/arm920t/serial.c:45:#elif defined(CONFIG_SMDK2410)
include/configs/config_smdk2410.h:44:#define CONFIG_SMDK2410            1       /* on an SAMSUNG SMDK2410 Board */

看程序的连接脚本: board/mini2440/armboot.lds
    33          .text      :
    34          {
    35            cpu/arm920t/start.o   (.text)
    36            *(.text)
    37            }
   
知道程序的入口在cpu/arm920t/start.S上(现在U-boot中的该文件还保持着原有的风格)
查看该文件,知道整个程序的主要调用顺序为:
cpu_init_crit-> memsetup(在board/mini2440/memsetup.S中)
->start_armboot (在common/board.c中)
void start_armboot(void)进行了一系列的初始化工作,最后就进入  
 for (;;) {
    main_loop(&bd);
    }
主要是接受串口命令,分析并执行命令的循环中。

*************************************************************************************************************************************************
** 各个相关文件的修改 (为了便于说明,代码加了行号(所有新修改的代码均有snallie字样的注释,以示区别,并在代码段的下方对应中文注释说明)
*************************************************************************************************************************************************

////////////////////////
cpu/arm920t/start.S的修改

     1    /*
     2     *  armboot - Startup Code for ARM920 CPU-core
     3     *
     4     *  Copyright (c) 2001    Marius Gr鰃er
     5     *  Copyright (c) 2002    Alex Z黳ke
     6     *  Copyright (c) 2002    Gary Jennejohn
     7     *
     8     * See file CREDITS for list of people who contributed to this
     9     * project.
    10     *
    11     * This program is free software; you can redistribute it and/or
    12     * modify it under the terms of the GNU General Public License as
    13     * published by the Free Software Foundation; either version 2 of
    14     * the License, or (at your option) any later version.
    15     *
    16     * This program is distributed in the hope that it will be useful,
    17     * but WITHOUT ANY WARRANTY; without even the implied warranty of
    18     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    19     * GNU General Public License for more details.
    20     *
    21     * You should have received a copy of the GNU General Public License
    22     * along with this program; if not, write to the Free Software
    23     * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
    24     * MA 02111-1307 USA
    25     */
    26   
    27   
    28   
    29    #include 'config.h'
    30    #include 'version.h'
    31   
    32   
    33    /*
    34     *************************************************************************
    35     *
    36     * Jump vector table as in table 3.1 in [1]
    37     *
    38     *************************************************************************
    39     */
    40   
    41   
    42    .globl _start
    43    _start:    b       reset
    44        ldr    pc, _undefined_instruction
    45        ldr    pc, _software_interrupt
    46        ldr    pc, _prefetch_abort
    47        ldr    pc, _data_abort
    48        ldr    pc, _not_used
    49        ldr    pc, _irq
    50        ldr    pc, _fiq
    51   
    52    _undefined_instruction:    .word undefined_instruction
    53    _software_interrupt:    .word software_interrupt
    54    _prefetch_abort:    .word prefetch_abort
    55    _data_abort:        .word data_abort
    56    _not_used:        .word not_used
    57    _irq:            .word irq
    58    _fiq:            .word fiq
    59   
    60        .balignl 16,0xdeadbeef
    61   
    62   
    63    /*
    64     *************************************************************************
    65     *
    66     * Startup Code (reset vector)
    67     *
    68     * do important init only if we don't start from memory!
    69     * relocate armboot to ram
    70     * setup stack
    71     * jump to second stage
    72     *
    73     *************************************************************************
    74     */
    75   
    76    /*
    77     * CFG_MEM_END is in the board dependent config-file (configs/config_BOARD.h)
    78     */
    79    _TEXT_BASE:
    80        .word    TEXT_BASE
    81   
    82    .globl _armboot_start
    83    _armboot_start:
    84        .word _start
    85   
    86    /*
    87     * Note: armboot_end is defined by the (board-dependent) linker script
    88     */
    89    .globl _armboot_end
    90    _armboot_end:
    91        .word armboot_end
    92       
    93    // start of snallie   
    94    .globl _bss_start
    95    _bss_start:
    96          .word __bss_start
    97   
    98    .globl _bss_end
    99    _bss_end:
   100          .word armboot_end
   101    // end of snallie
        /*
         *  94~100行 为新加入的代码,定义了2个全局变量,_bss_start和_bss_end,记录未初始化段的起止地址,其中的
         *  __bss_start和armboot_end 是在连接脚本 board/mini2440/armboot.lds 中定义的,后面309~317行用_bss_start
         *  和_bss_end来进行未初始化段数据的初始清零工作。
         */
  
   102   
   103    /*
   104     * _armboot_real_end is the first usable RAM address behind armboot
   105     * and the various stacks
   106     */
   107    .globl _armboot_real_end
   108    _armboot_real_end:
   109        .word 0x0badc0de
   110   
   111    #ifdef CONFIG_USE_IRQ
   112    /* IRQ stack memory (calculated at run-time) */
   113    .globl IRQ_STACK_START
   114    IRQ_STACK_START:
   115        .word    0x0badc0de
   116   
   117    /* IRQ stack memory (calculated at run-time) */
   118    .globl FIQ_STACK_START
   119    FIQ_STACK_START:
   120        .word 0x0badc0de
   121    #endif
   122   
   123   
   124    /*
   125     * the actual reset code
   126     */
   127   
   128    reset:
   129        /*
   130         * set the cpu to SVC32 mode
   131         */
   132        mrs    r0,cpsr
   133        bic    r0,r0,#0x1f
   134        orr    r0,r0,#0xd3
   135        msr    cpsr,r0
   136   
   137    /* turn off the watchdog */
   138    #if defined(CONFIG_S3C2400)
   139    #define pWTCON        0x15300000
   140    /* Interupt-Controller base addresses */
   141    #define INTMSK        0x14400008
   142    /* clock divisor register */
   143    #define CLKDIVN        0x14800014
   144    #elif defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)  // snallie
   /* 144行 S3C2410和S3C2440的Watchdog以及中断屏蔽寄存器的地址相同,所以加入 || defined(CONFIG_S3C2440) 的判断 */

[1] [2] [3] [4]
关键字:mini2440  移植 引用地址:ARMBoot-1.1.0 在 mini2440 开发板上的移植

上一篇:解决mini2440声卡全双工问题 实现同时录音及播放
下一篇:mini2440上移植sqlite3.7.6.2

推荐阅读最新更新时间:2024-11-14 01:19

VR硬件Q1销量出炉:Gear大卖 高端产品潜力难释放
  据外媒报道,手机、平板和智能穿戴设备等产品第一季销量出炉后,又轮到 VR 头戴设备了。由于缺乏丰富的内容支持,高端 VR 头戴设备的潜力依然没能得到有效释放。下面就随嵌入式小编一起来了解一下相关内容吧。   市场研究机构SuperData Research的最新数据显示,三星 Gear   VR 依然固守VR硬件市场销量王宝座,2017年第一季度, Gear  VR共卖出78.2万台,遥遥领先于其他对手。   其他主要的VR头戴设备第一季销量如下:   PlayStation VR:37.5万台   谷歌Daydream:17万台   HTC Vive:9.5万台   Oculus Rift:6.4万台    Gear  V
[嵌入式]
采用纤巧 4A 降压型µModule稳压器 完整解决方案的占板面积不足1cm2
 加利福尼亚州米尔皮塔斯 (MILPITAS, CA) – 2013 年 8 月 19 日 – 凌力尔特公司 (Linear Technology Corporation) 推出 14V、4A 降压型µModule® (微型模块) 稳压器LTM4624。该器件采用 6.25 x 6.25 x 5.01mm BGA 封装,连同一些无源器件,其在采用单面 PCB 时的占板面积在 1cm2内,而采用双面 PCB 时则不超过0.5cm2。类似于其他 µModule 稳压器,LTM4624 在一个封装中内置了 DC/DC 控制器、功率开关、电感器和补偿组件,仅需外置两个陶瓷电容器 (1206 尺寸) 和一个电阻器 (0603 或更小的尺寸)
[模拟电子]
采用纤巧 4A 降压型µModule稳压器 完整解决方案的占板面积不足<font color='red'>1</font>cm2
STM32移植cJson和FreeRTOS时,cjson解析和创建失败问题
一,环境:STM32+cJson+FreeRTOS+Heap_4.c 二,FREERTOS的内存:Heap_4 FreeRTOS8.0.1内存管理的最后一个堆模型Heap_4,貌似是在这一个版本才有的。所以找到的说明几乎没有。代码的开头注释也只是简单地说了一下实现了pvPortMalloc()和vPortFree()两个函数,并且能够对回收的内存块进行合并,减少碎片的出现。(A sample implementation of pvPortMalloc() and vPortFree() that combines (coalescences) adjacent memory blocks as they are free
[单片机]
STM32<font color='red'>移植</font>cJson和FreeRTOS时,cjson解析和创建失败问题
【单片机】【学习日志】51单片机学习日志[Day1、2022.1.09]
第一部分 一、单片机介绍: 1、基础知识 单片机,英文Micro Controller Unit,简称MCU; 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 单片机的任务:信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制 单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。 在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用; 同时,学习使用单片机是了解计算机原理与结构的最佳选择 2、单片机的应用领域 单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、
[单片机]
【单片机】【学习日志】51单片机学习日志[Day<font color='red'>1</font>、2022.1.09]
瑞萨利用新型RZ/N1解决方案套件加快工业以太网应用的开发
电子网消息,全球领先的半导体解决方案供应商瑞萨电子株式会社宣布,推出新型RZ/N1微处理器(MPU)解决方案套件,以支持各种工业网络应用,包括可编程逻辑控制器(PLC)、智能网络交换机、网关、操作员终端和远程I/O解决方案。 新型RZ/N1解决方案套件是一个包括软硬件在内的完整开发包,可加快对领先工业以太网协议的样机开发,包括EtherCAT®、EtherNet/IP™、ETHERNET Powerlink、PROFINET®、Sercos®和CANopen®等,从而加速开发、将工业网络协议整合到客户应用中的工作周期缩短六个月。 新套件包含基于RZ/N1S MPU的CPU开发板。此外,综合软件包内包括所有驱动程序和中间件、
[半导体设计/制造]
51单片机实验——用定时器0实现流水灯,要求每个led轮流显示1s
1.实验题目: 用定时器0实现流水灯,要求每个led轮流显示1s。 2.KEIL代码 #include reg51.h void main() { TMOD &=0X0F; TMOD |=0x01; TH0 = (65536 - 50000)/256;//高四位初值 TL0 = (65536 - 50000)%256;//低四位初值,每隔50ms溢出 EA = 1; //开总中断 ET0 = 1; //T1开时定时器溢出 TR0 = 1; //开启定时器 P1=0xff; while(1); } void Time0(void) interrupt 1 //定时中断 {
[单片机]
51单片机实验——用定时器0实现流水灯,要求每个led轮流显示<font color='red'>1</font>s
s3c2440 LCD及触摸屏的学习笔记(1)
所用的LCD为TopPoly-TD035STED4(TFT)型号,240*320的 其VCLK为6.39MHz。 根据s3c2440手册s3c2440处理LCD的时钟源是HCLK,通过寄存器LCDCON1中的CLKVAL可以调整VCLK频率大小,它的公式为:VCLK=HCLK÷ ,程序的内部分频为FCLK=400MHz、HCLK=100MHz、PCLK=50MHz(MPLLCON=(92 12)|(1 4)|1;),因此得到CLKVAL取整为6。 注:(LCD一般需要三个时序信号:VSYNC、HSYNC和VCLK。VSYNC是垂直同步信号,在每进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确定LCD的场频,即
[单片机]
s3c2440 LCD及触摸屏的学习笔记(<font color='red'>1</font>)
UCGUI在STM32平台移植经验(无操作系统)
ucgui 移植的前提是已经具备了LCD驱动函数,已经能够实现点亮LCD屏幕,并实现画点以及获取指定点颜色值的功能。一般的显示屏供应商会提供对应的驱动函数。主要有初始化函数void LCD_Init(),屏幕画点函数 Void LCD_DrawPoint(u16 x,u16 y,u16 color),以及获取指定点颜色值的U16 LCD_ReadPoint(u16 x,u16 y)函数。移植的关键在于把这三个函数与ucgui提供的接口函数匹配。 打开GUILCDDriver中的LCDDummy.c文件,找到int LCD_L0_Init(void)初始化函数,LCD_L0_SetPixelIndex(int x, int y,
[单片机]
UCGUI在STM32平台<font color='red'>移植</font>经验(无操作系统)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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