mini2440使用uboot(详细)

mini2440使用uboot(详细)
文章出处:blog.csdn/swgshj/archive/2010/04/20/5502121.aspx
文章写于2010.4.17,总结了友善之臂的mini2440开发板使用自带uboot的具体方法,希望能对正在使用mini2440开发板,而且又想使用uboot引导系统的朋友们有所帮助。
Google一下会发现网上类似的帖子不少,但是对mini2440开发板是哪一个版本都没有具体的说明,个人感觉mini2440开发板的版本是经常更新的,可能不同的版本的开发板在移植uboot时会稍有不同,因此这里我把自己使用的开发板的详细信息都罗列一下,希望网友少走弯路。
另外,要感谢illidan和Martin两位的文章:
www.martinliu.info/2009/05/mini2440使用u-boot/
www.ardendev/bbs/viewthread.php?tid=14
使用的mini2440开发板的详细信息:
kernel:linux-2.
gcc:arm-linux-gcc-4.
uboot:(该压缩包内含有u-boot-1.1.6)
roots:root_qtopia-64M.img
问题源于:
(1)使用128M NAND Flash mini2440开发板的用户都知道,此时开发板附带的supervivi-64M和supervivi-128M都不再支持“空格”进入supervivi的menu菜单,而是改成了使用开发板上的k1~k6任何一个按键触发进入menu(而我需要空格键触发menu的方式);
(2)开发板附带的supervivi不支持网络下载kernel和root(文件系统)。
具体的修改步骤如下:
1arm-linux-gcc的安装方法见《mini2440-um-20090817.pdf》第5.3小节。
2mini2440开发板附带的uboot源码已经是经过移植的,适用s3c2440处理器,我们只需要修改一些uboot参数即可。
一、修改uboot洪福子源码
1)解压出源码
创建工作目录
补铁剂mkdir /tmp/workspace
cd /tmp/workspace
解压mini2440开发板光盘附带的uboot源码,同时包含了u-boot-1.1.6和vivi的源码
tar -
cd u-boot-1.1.6
2)修改u-boot-1.1.6/include/configs/open24x0.h文件
修改NAND FLASH MTD分区表:
56 /*
57 #define MTDPARTS_DEFAULT "mtdparts=nandflash0:2m@0(kernel)," \
58                            "8m(jffs2)," \
59                            "-(yaffs)"
里德60 */
61 #define MTDPARTS_DEFAULT "mtdparts=nandflash0:" \
62                          "256k@0(boot)," \
63                          "64k(env)," \
64                          "2m(kernel)," \
65                          "-(yaffs)"
注:该分区表一定要与内核中的分区表一致,后面我会给出kernel中分区表的修改。
修改内核启动参数:
把“mtdblock2” 改为“ mtdblock3
133 //#define CONFIG_BOOTARGS      "noinitrd root=/dev/mtdblock2上海柯达电影世界 init=/linuxrc console=ttySAC0"
134 #define CONFIG_BOOTARGS        "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0"
注:此处一定要改,否则文件系统会加载失败(此处是让我最痛苦的地方,费了大量时间才到这个症结所在)
修改env参数保存位置:
221 //#define      CFG_ENV_IS_IN_FLASH    1
222 #define CFG_ENV_IS_IN_NAND  1
223 #define CFG_ENV_OFFSET          0x40000
224 #define CFG_ENV_SIZE            0x10000 /* Total Size of Environment Sector */
注1:env是uboot引导系统时用到的一系列参数,是可修改的,如果不改动此处,env修改后,即使执行saveenv命令,断电后也会丢失。
注2:注意一下223和224行,这两行定义了env保存在nand flash的具体位置,与MTD分区表中的"64k(env)," 是对应的(64K=0x40000 - 0x10000)。
3)修改u-boot-1.1.6/include/asm-arm/mach-types.h文件
修改machine ID
377 //#define MACH_TYPE_S3C2440              362
378 #define MACH_TYPE_S3C2440              1999
1:查看linux-2.6.29/include/asm/mach-types.h会发现machine ID1999
1985 #define MACH_TYPE_MINI2440            1999
2:对于此处的修改Martin给出了他的经验:
水龙头oem“查看u-boot-1.1.6/board/open24×0/open24×0.c与linux-2.6.29/include/asm/mach-types.h,发现Machine ID果然设置的不对。mini2440的ID是1999,而u-boot中设置的是三星官方的362。改完,刷写,重启。
依然不灵。
这就有点土了。没有仿真器,没有打印信息,我和mini2440之间又不能通过脑电波交流…冥思苦想中,我进入了准无意识状态,大脑在迷惘,手指在不停地用NOR或者NAND启动mini2440。突然,我感到有什么东西不对。隐隐约约的,我似乎看到了什么东西,不应该出现的东西。定定神,一行一行地翻看串口console日志,貌似每一行都很正常,但最后我停在了SuperVIVI启动的一行语句上面:”Machine ID: 782″。
782?为什么会是782?我grep了一下linux-2.6.29/include/asm/mach-types.h,782是MACH_TYPE_PNX4008。先不想那么多,改成782试试。改完,刷写,重启。
Kernel成功启动了。
回过头研究782,不由哑然失笑。原来是这个linux-2.6.29移植的有点潦草,defconfig中的宏定义前后不一致,使得Machine ID没有设置为预想的值。好吧,这个问题就留在这里吧,也是一种不和谐美。”
3Martin用的可能是较老的mini2440开发板,我这一版已经解决了他提的这个问题,如果跟我的kernel一样,应该改为1999
4)修改uboot功能菜单,增加tftp下载功能选项
修改u-boot-1.1.6/common/cmd_menu.c文件,
在原文件中添加146~149行:
142 void main_menu_usage(void)
143 {
144    printf("\r\n> uboot for mini2440 >\r\n");
145
146    printf("[1] TFTP Install U-boot\r\n");
147    printf("[2] TFTP Install Linux kernel\r\n");
148    printf("[3] TFTP Install JFFS2 root\r\n");
149    printf("[4] TFTP Install YAFFS root\r\n");
150    printf(" Download u-boot\r\n");
151
152 #ifdef CONFIG_SURPORT_WINCE
153        printf("[e] Download Eboot\r\n");
154 #endif
155    printf("[k] Download Linux kernel\r\n");
156 #ifdef CONFIG_SURPORT_WINCE
157    printf("[w] Download WinCE NK.bin\r\n");纽约时报
158 #endif
159    printf("[j] Download JFFS2 image\r\n");
160    printf("[y] Download YAFFS image\r\n");
161    printf("[d] Download to SDRAM & Run\r\n");
162    printf(" Boot the system\r\n");
163    printf("[f] Format the Nand Flash\r\n");
164    printf("[s] Set the boot parameters\r\n");

本文发布于:2024-09-21 10:29:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/128127.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:开发板   修改   东西   使用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议