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灯被点亮。


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

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

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

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

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

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

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

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