从裸跑开始

  一直忙着上课,项目已经落下了很多了。上个月刚拿到新的开发板,看了看,资料太少,门槛太高,有点心寒了。

  真的很怀念用51单片机的时候,一起都可以自由的控制。而现在,加了操作系统这一层,问题反而多了起来。本想先把ARM当个高速单片机来学的,现在完全摸不到硬件层,真是郁闷。

  好了,现在想研究研究X-load的源码,一定先让3530裸跑起来,看看硬件层。。。

x-load本质是一个U-BOOT的精简版。为什么需要x-load这个玩意呢,而不是直接用u-boot呢?那是因为U-boot太大了,塞不进内部的RAM?那为啥要把X-LOAD塞进内部的RAM,而不是load到外部的RAM呢?

问题就在这里了。当OMAP3530上电的时候,memory controller还没有初始化,怎么去读写外部的RAM呢?必须要有人能先初始化memory controller啊。任务就交给x-Load了。它必须负责初始化外部的RAM控制器,把u-boot从NAND或者MMC中读出到外部RAM,然后跳到u-boot的入口处执行。

问题又来了,那么x-load又是由谁来load的呢?OMAP3530里面带了一个内部RAM,大小为64K。当OMAP3530上电后,会从NAND Flash或者MMC中读取x-load到内部的RAM。然后执行x-load,x-load然后执行上面所说的任务,最后把控制入口交给u-boot。

要编译x-load,先安装toolchain。然后

In file include/configs/omap3530beagle.h

/* For X-loader to be flashed on to NAND disable the below macro */
//#define CFG_CMD_MMC

Comiple the x-loader as shown below

make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3530beagle_config
make CROSS_COMPILE=arm-none-linux-gnueabi-

会生成x-loader.bin。然后用SignGP工具生成可以被OMAP3530 load的bin 文件。

./singGP x-load.bin

生成x-load.bin.ift。

这个文件和x-load.bin的区别在于增加了一个4个字节的header。header的内容是4个字节的x-loader的长度和x-load被load到什么地方的地址(4个字节)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值