跟着vivi学bootloader

话说上回通过LFS把linux的结构学习了一下后,探究出嵌入式的几大组成部分,bootloader,linux内核,根文件系统

得,就从bootloader开始,从cpu加电的那一刻开始

拿出以前买的s3c2440的开发板,经过一番搜索,得知uboot和vivi是这个平台下比较流行的两个bootloader,鉴于vivi比较简单,就从vivi入手,找出head.S即bootloader的入口,逐行分析,从最简单的点灯,到输出UART,到拷贝nand到ram,到跳转到c程序,其间通过《S3C2410完全开发教程》的帮助,基本调通弄明白了,大家有不明白的可以多搜索这篇文章。

我就讲讲几个在调试过程中困扰我比较久的问题:

1:一个是跳到ram的问题,如何实现,即通过ldr pc,=step2 这个伪指令,=step2就是ld的时候设置的运行地址,要注意ldr作为伪指令和加载指令的区别

_start:
    b step1 @b操作都是相对位置
step1:  @标号这都是连接地址,如0x30000000   动态库重定向地址应该也是这个概念,加载的地址不一样
    ldr pc,=step2  @ldr操作则是填入绝对地址,即连接地址,实现跳转
step2:
    b step2

 

2:GPIO口的设置,我这个开发板的灯端口是GPIO_B

    mov    r1, #GPIO_CTL_BASE
    add    r1, r1, #oGPIO_B
    ldr    r2,=0x155555    @设置11个引脚都为输出 ,两位描述一个脚

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值