mini2440:uboot和内核的移植

之前写了一篇,不知道为什么没保存下来,,在此重新改动一下文章。蛋疼。。。


本文博客地址:

http://blog.csdn.net/b2997215859/article/details/47390053

转载需注明


今天一起床就在研究怎么解决cannotget the kernel和乱码的问题

工具:minitools 、Jlink、superboot 、uboot.bin 、uImage

开发板:mini2440

环境:已经搭建好tftp

一直在尝试各种bootloaderkernel的搭配却从没有认真静下心来仔细研究整个启动过程

 

首先先了解一下nand的分区(mini2440)

第二个分区的起点应该是40000,表上写的是错的


 

具体可以到内核里面去查路径为/arch/arm/mach-s3c2440/mach-mini2440.c

打开可以找到如下代码

源代码如下

  1. static struct mtd_partition friendly_arm_default_nand_part[]= {
  1.          [0]= {
  2.                    .name = "supervivi",
  3.                    .size = 0x00040000,
  4.                    .offset = 0,
  5.          },
  6.          [1]= {
  7.                    .name = "param",
  8.                    .offset = 0x00040000,
  9.                    .size = 0x00020000,
  10.          },
  11.          [2]= {
  12.                    .name = "Kernel",
  13.                    .offset = 0x00060000,
  14.                    .size = 0x00500000,
  15.          },
  16.          [3]= {
  17.                    .name = "root",
  18.                    .offset = 0x00560000,
  19.                    .size = 1024 * 1024 * 1024, //
  20.          },
  21.          [4]= {
  22.                    .name = "nand",
  23.                    .offset = 0x00000000,
  24.                    .size = 1024 * 1024 * 1024, //
  25.          }
  1. };

 

 

 

然后我们通过Jlinksuperboot烧录到norflash里面因为我需要minitoolsuboot.bin烧入nandflash。(当然在这里也可以将通过别的方式将uboot.bin烧入nandflash,限于我手上的资源和之前掉过的各种坑在这里采用的这种方法)。

正如上述那样superboot烧入norflash之后就可以愉快的将uboot.bin通过minitools烧入nandflash里面然后从nandflash启动在倒计时的时候回车即会进入smdk2410的菜单输入命令printenv打印环境变量可以看到其中有一行如下mtdparts=mtdparts=mini2440-0:256k(u-boot),128k(params),5m(kernel),-(rootfs)

这一行显示了分区的参数,u-boot,可以看出分区的参数和内核里面分区是一致的故在此不做改动

 

搭好tftp网络环境之前已经搭过在此不再赘述网上也有很多教程仔细研究一下即可搭好注意硬件是否通畅

 

下面下载uImage到内存然后将内存的内容写入到uImage分区里面命令如下

tftp 0x30008000 uImage

nand erase 0x40000 0x20000

nand write 0x30008000 0x40000 0x20000

之所以不去写uboot.bin,是因为uboot.bin已经在nand分区里面了

 

再进行文件系统的移植文件系统的移植暂时还没弄好等待下次有时间再去研究一下这次的移植出了点问题首先是img文件太大超过了64M(内存大小),故用tftp下载的时候无法显示文件大小如果在范围内的话下载完毕会显示hex十六进制的大小),然后我换用了友善光盘里提供的最小的系统rootfs_rtm_qt4,尝试了一下可以下载完毕并显示大小然后将其移动到第三个分区

执行的命令是

tftp 0x30008000 rootfs_rtm_qt4

nand erase 0x560000 4000000

nand write 30008000 560000 x(x是上面提到的下载完毕提示的大小

然后重启却只能到内核到文件系统的过程中卡在了一个地方所以只能用minitool将文件系统烧入并且可以重新启动过段时间再来研究一下文件系统的移植今晚暂时到这里。hhhhhh。


在这里简单提一下,网上也有人说的用uboot编译产生的mkimage工具来给zImage加个大小为0x40的头生成zImage.img以让uboot来引导。我试了一下,发现uboot识别不了zImage.img,故在此弃用了zImage.img

不过总算是解决了之前各种引导不了内核和乱码的问题。之前乱码是因为选择的bootloader有问题。光盘里带的supervivi和uboot和superboot都会产生乱码,之前还以为是CRT的问题(网上各种找方法改参数),是不是感觉友善略坑啊,有木有。。。orz。。。。。。

不过总算是学习啦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值