嵌入式Linux开发(devmem、BL0、BL1、BL2)

  • Post author:
  • Post category:linux



一、devmem


devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。

[用法]
Usage: devmem ADDRESS [WIDTH [VALUE]]
读取:在地址0x8000_0000读取32bit值(WIDTH默认等于32, 可选值为[8, 16, 32, 64])
/dev # devmem 0x80000000 
0x11111111
读取:在地址0x80000000读取16bit值
/dev # devmem 0x80000000 16
0x1111
写入:在地址0x80000000写入32bit值0x12345678
/dev # devmem 0x80000000 32 0x12345678
/dev # devmem 0x80000000              
0x12345678


二、BootLoader(BL0、BL1、BL2)


BL是BootLoader的缩写。

一般会把uboot分为两个部分:BL1和BL2,BL1和BL2各有分工,两者相加就是整个uboot。

BL0 文件是存放在CPU内部IROM中的一段固化代码,CPU 上电之后,首先去运行BL0文件。

BL1 文件是一段外部代码,存放在SD卡或者 nandflash上,大小为 8K;

BL2 文件是完整的 U-Boot 代码。

这三个文件之间的关系就是:BL0运行时会将BL1拷贝到CPU的IRAM中,然后执行BL1;BL1文件执行起来之后会先进行内存的初始化,之后将BL2文件拷贝到外部内存中,也就是DDR中。

1、BL1阶段的功能

(1)硬件设备初始化

(2)加载BL2阶段代码到RAM空间

(3)设置好栈

(4)跳转到第二阶段代码入口

2、第二阶段的功能

(1)初始化本阶段使用的硬件设备

(2)检测系统内存映射

(3)将内核从Flash读取到RAM中

(4)为内核设置启动参数

(5)调用内核



版权声明:本文为weixin_45270982原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。