mini2440下烧写u-boot后,就可以用u-boot烧写linux内核了。

安装mkimage工具:

apt-get install u-boot-tools

解压缩官方mini2440 linux包:

tar xf linux-2.6.32.2-mini2440-.tar.gz 

然后进入文件夹,并进行编译(配置文件应该选择和自己的lcd对应的配置来进行拷贝,因为我的开发板没有屏幕,所以就随便选取了一个配置):

cd linux-2.6.32.2
cp config_mini2440_n35 .config
make zImage

注: 生成的zImage 大小在2266620左右。有一次我编译出的文件大小只有2077388,执行make distclean后重新编译后才ok。

然后制作uImage镜像:

mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d  arch/arm/boot/zImage  uImage

mkimage的各个参数含义如下:

-n 'mini2440'   指定镜像名称
-A arm 设置为arm架构
-O linux 设置操作系统为linux
-T kernel 设置镜像类型为kernel
-C none  设置压缩类型为none
-a 0x30008000   指定加载地址为0x30008000
-e 0x30008040   执行入口地址为0x30008040
-d arch/arm/boot/zImage 指定镜像数据文件路径
uImage 最终生成的uImage文件名称

linux源码下也有可以直接生成uImage目标,生成的uImage文件可能无法启动,因为默认情况下直接生成的uImage中加载地址和入口地址是一模一样的。

但是因为我们在uImage前添加了0x40个字节的文件头,所以导致真正的入口地址为0x30008040,所以需要用上面的命令来生成uImage

将uImage 拷贝到debian上的tftp文件夹,并root权限重启tftp:

/etc/init.d/tftp-hpa restart

然后root权限执行minicom:

minicom

按下ctrl-A Z键,根据需要配置串口设备名称(我用的usb转ttl,所以为/dev/ttyUSB0,如果电脑上的串口连接,那么可能是/dev/ttyS0)

并将"Hardware flow control"和"Software flow control"都设置为No,波特率设置为115200

重启mini2440,按任意键进入u-boot.

使用tftp将uboot下载到sdram:

tftp  uImage

然后执行:

bootm 

即可启动内核,然后可以看到linux内核成功引导。

重启mini2440,依次执行下列命令将内核镜像从0x30008000烧写到nand flash的0x60000开始0x500000大小的地方:

tftp  uImage
nand erase 60000 500000
nand write 0x30008000 60000 500000
boot

这样就成功烧写了内核镜像。

另外0x60000和0x500000这两个地址来源于arm/arm/mach-s3c2440/mach-mini2440.c中:

static struct mtd_partition friendly_arm_default_nand_part[] = {
[] = {
.name = "supervivi",
.size = 0x00040000,
.offset = ,
},
[] = {
.name = "param",
.offset = 0x00040000,
.size = 0x00020000,
},
[] = {
.name = "Kernel",
.offset = 0x00060000,
.size = 0x00500000,
},
[] = {
.name = "root",
.offset = 0x00560000,
.size = * * , //
},
[] = {
.name = "nand",
.offset = 0x00000000,
.size = * * , //
}
};

可以看到,代码中将nand flash分成了5个分区,其中关于内核的分区偏移地址和大小分别为0x60000和0x500000

另外,也可以用nfs来启动uImage.

将uImage文件复制到nfs对应文件夹下然后使用root权限重新启动nfs服务器

/etc/init.d/nfs-kernel-server  restart

重启mini2440, 按任意空格键进入uboot菜单,按'q'键进入uboot命令行。

可以查看到以前的bootcmd内容如下:

nand read.i 0x30008000  ;bootm

然后执行下面的命令编辑bootcmd(bootcmd是启动内核的参数):

edit bootcmd

然后输入下列内容(将nfs将文件从nfs服务器下载到本地0x30008000,然后从0x30008000启动内核):

nfs  192.168.211.2:/home/host/nfs/mini2440/uImage;bootm 

然后执行saveenv保存该命令,重启mini2440即可看到成功启动linux内核。

mini2440 uboot烧写uImage的更多相关文章

  1. 通过NORFLASH中的uboot烧写uboot到nandFlash

    在mini2440的教程中,在构建nandflash系统的时候是首先通过supervivi借助dnw烧写uboot.bin到nand flash 第零块, 由于我使用的是64位操作系统,usb驱动没安 ...

  2. Linux下USB烧写uImage kernel

    Linux下USB烧写uImage kernel   1.启动开发板,进入u-boot:(如果开发板中没有系统,可以通过用SD卡方式启动开发板进入)   U-Boot 2011.06 (Mar 19 ...

  3. 嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

  4. u-boot烧写Linux及系统整个启动过程

    一.烧写文件 u-boot: u-boot.bin linux kernel: uImage Filesystem: root.bin(yaffs) 二.烧写步骤  1.烧写u-boot tftp 0 ...

  5. Openwrt Uboot烧写

    Openwrt 烧uboot 需要慎重,一般买一个带不死uboot的路由器再折腾会比较安全,因为 openwrt firmware对uboot分区进行了保护,而且带有不死uboot的路由器可以通过we ...

  6. uboot烧写命令--yaffs、jiffs和ubifs

    如果要烧写的镜像的格式是yaffs2或者yaffs格式的,那么在往Nand Flash中烧写该镜像是必须采用nand write.yaffs,而不能采用nand write: nand write.y ...

  7. 用jlink在mini2440上烧写uboot

    首先,附上我安装jlink驱动: http://download.csdn.net/detail/zzmno1/3776716#comment 以及我使用的uboot.bin文件下载地址: http: ...

  8. S5PV210 固件烧写 u-boot烧写

    首先阅读CW210_CD自带光盘中CW210 开发板使用手册.pdf 使用usb 拨码开关置成usb启动.xx可以是ON或OFF.开发板上面也有丝印提示 usb线接好,串口线接好 使用DNW下载 自带 ...

  9. 004使用u-boot烧写裸版程序

随机推荐

  1. 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_three.html 第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实 ...

  2. CentOS6.5环境配置笔记

    CentOS6.5环境配置笔记 一.概述 服务器系统重装,配置应用运行环境 CentOS6.5 x64 二.修改密码 重新设置登录密码 $passwd 或 $passwd root 三.配置端口号及防 ...

  3. Redis性能调优建议

    一. Redis部署结构优化建议 1. Master不做AOF或RDB持久化,Slave做AOF持久化,建议同时做RDB持久化 2. 所有Master全部增加Slave 3. Master挂载Slav ...

  4. Backup and Recovery Basics2

    1.6.Automatic Disk-Based Backup and Recovery: The Flash Recovery Area 创建不同备份和恢复文件的组件对每一个文件系统的大小没有不论什 ...

  5. MySQL 函数笔记

    统计相关函数 COUNT和SUM函数使用小技巧 参考自: MySQL - Conditional COUNT with GROUP BY 在一个 SQL 中统计多个指标的个数: SELECT COUN ...

  6. SVN 服务端、客户端安装及配置、导入导出项目

    http://blog.csdn.net/xcy13638760/article/details/12994923 http://www.cnblogs.com/armyfai/p/3985660.h ...

  7. 【转载】IIS与asp.net管道

    阅读目录 asp.net是什么 HTTP协议 IIS与asp.net asp.net管道 参考资料 我们在基于asp.net开发web程序,基本上都是发布部署到安装了IIS的windows服务器上,然 ...

  8. 深入浅出Attribute(三)

    约定: 1.”attribute”和”attributes”均不翻译 2.”property”译为“属性” 3.msdn中的原句不翻译 4.”program entity”译为”语言元素” Attri ...

  9. Android 繪圖白板元件,有畫筆和板擦的功能 (转)

    package com.example.drawboard; import java.util.ArrayList; import java.util.List; import android.con ...

  10. android 自定义控件View在Activity中使用findByViewId得到结果为null

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...