【嵌入式】从零开始移植U-boot到mini2440(三)——CPU初始化篇

本文详细介绍了如何从零开始将U-boot移植到mini2440平台,重点关注CPU的初始化过程,包括时钟设置、中断向量表和lds文件的作用。同时分享了在没有串口调试时使用AXD和OpenOCD进行调试的方法,旨在深入理解嵌入式系统的启动流程。

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

经过前两节的准备,我们现在可以开始肝u-boot的代码了
U-boot版本:2020/5/2
编译环境:Ubuntu 16.04
arm-none-eabi-gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1)
运行环境:mini2440(s3c2440,arm920t)
代码仓库:[email protected]:JingyeLi/u-boot_2440.git
https://github.com/JingyeLi/u-boot_2440/tree/v0.1

u-boot.lds

这是一个很容易被人忽略的一个文件,包括我自己,以前一般用keil的时候都是自动生成的,但其实想要理解一个芯片的启动代码,最好先从lds文件开始(不过在此之前,希望你能对编译-链接-运行有所理解)。众所周知一个程序会分成对应的几段,而lds文件的用途就是规定好这几段会放在什么地方。

而lds的重点是开头的这几句,与程序入口密切相关,程序虽然还是从_start开始,但与老版的u-boot不同,新版的多了__image_copy_start和vectors,__image_copy_start我们放在后面relocate的时候一起理解,这里可以先忽略。

ENTRY(_start)  /* 表明可执行文件代码从_start开始 */
SECTIONS
{
        . = 0x00000000; /* 指定这个段从0x0开始*/
        . = ALIGN(4); /* 4字节对齐,32位指令* /
        .text : /* 具体TEXT段的结构 */
        {
                *(.__image_copy_start) 
                *(.vectors)
                CPUDIR/start.o (.text*)
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值