U-Boot-2009-03移植笔记(点亮第一展灯)

发布时间:2024-09-04  

在U-Boot-2009-03移植笔记的最后,我们找到了U-boot的启动代码在cpu/arm920t/start.S中,这是一段汇编代码,我们的移植工作从这里开始。


我们定位到reset标签


1 reset:

2     /*

3      * set the cpu to SVC32 mode

4      */

5     mrs    r0,cpsr

6     bic    r0,r0,#0x1f

7     orr    r0,r0,#0xd3

8     msr    cpsr,r0


上面的注释很明白,设置CPU工作模式,不需要修改。


接下来,我们关掉看门狗,并关闭中断


 1     ldr     r0, =pWTCON

 2     mov     r1, #0x0

 3     str     r1, [r0]

 4 

 5     /*

 6      * mask all IRQs by setting all bits in the INTMR - default

 7      */

 8     mov    r1, #0xffffffff

 9     ldr    r0, =INTMSK

10     str    r1, [r0]

11 

12 

13     /*modify by xinna*/

14     ldr    r1, =0x7fff

15     ldr    r0, =INTSUBMSK

16     str    r1, [r0]


我这里直接略过了原有U-boot的宏定义,因为我们只需要支持一款芯片即可,注意第14行,这是因为S3C2440于S3C2410中断控制器不同而修改的,具体原理请参见S3C2440的datasheet。在上面的代码里,我们完成了两件事情,关看门狗,关中断,接下来我们继续看代码,到了这里:


1     /*

2      * we do sys-critical inits only at reboot,

3      * not when booting from ram!

4      */

5 #ifndef CONFIG_SKIP_LOWLEVEL_INIT

6     bl    cpu_init_crit

7 #endif


子过程cpu_init_crit主要工作就是关闭Cache,并且调用lowlevel_init,我们要注意的是lowlevel_init,这里放了初始化SDRAM的代码。


这个low_levelinit位于board/xinna2440/lowlevel_init.S文件中,这里会初始化好你的内存(xinna2440用的是两片16位的SDRAM并联组成32位的SDRAM),我们需要针对不同的芯片,连接方式修改以下这个文件中的寄存器配置。


然后还有很重要的一点,你需要修改board/xinna2440/u-boot.lds文件,将lowlevel_init这段代码放在整个u-boot.bin的前4k代码中,所以我们需要这样修改


1     . = 0x00000000;

3     . = ALIGN(4);

4     .text      :

5     {

6       cpu/arm920t/start.o    (.text)

7       board/xinna2440/lowlevel_init.o (.text)

8       *(.text)

9     }


然后我们在start.S的 bl cpu_init_crit后面增加以下代码,点亮第一盏灯。


1     ldr r4,=0x56000010

2     ldr r5,=( 1 << 10)

3     str r5,[r4]

5     ldr r4,=0x56000014

6     ldr r5,=~( 1 << 5)

7     str r5,[r4]

8 loo:

9     b loo


通过openjtag烧到nandflash上,第一盏LED灯被点亮。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    福音!微星100系主板升级BIOS支持Kaby lake;前些日子,Intel正式发布了Kaby lake系列处理器,但基本上都是移动端的产品,PC版要到明年才能跟我们见面。 Kaby lake处理......
    并轻松开启,即可享受性能提升带来的极致体验。根据微星台北实验室的数据显示,当按DEL进入BIOS,开启X3D模式后,9800X3D的游戏性能可提升高达20%。在热门游戏中,以《地铁:离去》、《古墓丽影》和......
    华擎也良心:100系主板全线支持Intel Kaby Lake;微星、华硕之后,华擎今天也宣布,旗下100系列芯片组主板将全线支持Intel下一代处理器Kaby Lake,只需升级BIOS即可......
    推出部分600/700系列主板推出新版BIOS,可在微星中文官网 https://www.msi.cn/ 下载,在左上角放大镜处点击,可进入搜索模式、随后将自己主板的型号输入其中,比如MAG B660M......
    BIOS是什么?(2024-03-11)
    两张图片展示的是市面上最新的两种不同品牌主板的BIOS界面。 微星主板的BIOS 华硕主板的BIOS 以上展示的两款新的BIOS界面,虽然加入了一些新的功能(比如可以调节风扇转速等),但是......
    主板厂商都未雨绸缪宣布自家产品已经作好迎接新CPU的主板,微星是第一个宣布已经放出新BIOS支持新CPU的主板厂商。 不过中国区的微星官网上的100系列BIOS还是停留在旧版,要想找新BIOS还得去台湾官网找。所以......
    [JZ2440] 第09课第1节 u-boot 分析之编译体验;一、课堂笔记 1. Windows 电脑和嵌入式设备启动流程对比    |-- Windows 上电......
    装机、做系统必备:秒懂MBR和GPT分区表;很多网友询问MBR和GPT的问题,涉及到硬盘操作系统的安装,其实除了MBR和GPT分区表,UEFI BIOS也是和操作系统紧密联系在一起的,下面......
    内容 : BootLoader, Linux Kernel, File System; 烧写流程 :  -- sd卡烧写u-boot并启动 : 首先将 u-boot 烧写到 sd 卡中, 使用 sd 卡的......
    内容 : BootLoader, Linux Kernel, File System; 烧写流程 :  -- sd卡烧写u-boot并启动 : 首先将 u-boot 烧写到 sd 卡中, 使用 sd......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>