Tiny6410_Uboot移植步骤详解
uboot移植到6410开发板的过程及环境变量的修改
天涯海阁嵌入式linuxu boot移植到6410开发板的过程及环境变量的修改分类: uboot 2012-09-28 11:16 319人阅读 评论(0) 收藏举报一、通过U盘下载uboot.bin到开发板,U盘事先必须用飞凌光盘里的一个快速烧写工具,把mmc.bin烧写进U盘内,但是打开U盘后看不到这个文件。
然后将uboot.bin烧写进U盘。
(ps,如果要直接通过U盘将内核还有文件系统烧写进开发板里,可以直接将zImage跟cramfs文件系统拷进U盘)二、将U盘插入开发板,选择U盘启动模式,1 2 3 off ,其他on;打开终端,启动;之后就开始烧写,由于没有在U 盘内放zImage ,所以烧写的最后一行会提示not found zImage 等。
三、断开电源,选择nand flash启动:1 2 3 6 7 off,其他on;打开电源,在bootdelay计时的时候按下空格键;进入uboot的命令模式;四、查看环境变量:printenv五、修改环境变量:setenv,包括ip地址等,主要是修改bootcmd跟bootargs,我是用tftp下载uImage,用nfs挂载根文件系统:Setenv bootcmd 'tftp c0008000 uImage;bootm c0008000'(如果要设置多个,就要加上''号,如果有多个命令,在两个命令之间加;号)Setenv bootargs ‘console=ttySAC0 root=/dev/nfs nfsroot=172.22.17.20:/nfsroot/rootfsip=172.22.17.21’(consle是设置平台,nfsroot 是设置nfs的挂载地址,172.22.17.21是开发板的ip,172.22.17.20是主机的ip)都设置完再查看环境变量printenv ,如果没问题就保存:saveenv六、重启 ok**************************************************************************************************** 下面对bootargs的设置做一些介绍:bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。
07- Tiny6410 Ubuntu用户手册
(本手册正在不断更新中,建议您到网站下载最新版本) copyright@2010
更新说明:
Step4: 把开发板S2设置为SDBOOT,并插入SD卡,开机上电,即可运行Ubuntu Ubuntu系统开始启动,如下界面。
我们配置的Ubuntu系统,使用了XFCE窗口管理器,而不是
太庞大了,整个系统几乎无法运行。
进入系统之后,你可能看不到有趣的的应用程卡,并在桌面上显示出来。
这是它的一些设置菜单截图。
说明:通过SD卡运行Ubuntu系统,实际上只用到了
- uzImage : 内核文件,对于不同型号的LCD,分别有不同的内核文件(2)解压安装u-boot源代码
在工作目录/opt/FriendlyARM/mini6410/ubuntu中执行:
小一些,这样也可以烧写的更快一些。
S3C6410的u-boot移植
132 .global uboot_cmd_start
133 uboot_cmd_start:
134 .word __u_boot_cmd_start - _start
135 .global uboot_cmd_end
145 "ldr %0, [r0]\n"
146 "ldr r0, =uboot_cmd_end\n"
147 "ldr %1, [r0]\n"
148 "ldr %2, =_start\n"
88 #define DM9000_IO CONFIG_DM9000_BASE
89 #define DM9000_DATA (CONFIG_DM9000_BASE + 4)
90 #define CONFIG_DM9000_BUS16
在114行到117行添加如下,目的在于打开网络支持和ping命令
58 bic r1, r1, r2
59 orr Байду номын сангаас r1, r1, #0x11
60 orr r1, r1, #0x1100
61 str r1, [r0]
62 /* LED ALL ON */
sizeof(cmd_tbl_t));
154 // return find_cmd_tbl(cmd, &__u_boot_cmd_start, len);
155 }
八、修改u-boot-2012.04/include/configs/smdk6400.h
把81到83行注释掉,目的是取消CS8900网卡
tiny6410内核移植
Tiny6410 的内核移植(拿来主义)一、开发环境宿主机: vista+VMware+ fedoral13(win7下虚拟机)编译器: 友善自带arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz开发板: tiny6410,核心板号1106 NAND 2G RAM 256M注意:移植内核时,确保引导文件为u-boot类型,否则到后面下载到开发板使会出现乱码以及不必要的错误二、移植nand_flash1 下载linux-2.6.38的源码ftp:///pub/linux/kernel/v2.6/linux-2.6.38.tar.bz22 解压#tar xvfj /mnt/ubuntu/linux-2.6.38.tar.bz2 -C .3 修改根下的Makefile#vi Makefile191行改为ARCH ?= armCROSS_COMPILE ?= arm-linux- (找到其交叉编译环境)4 生成默认配置文件#cp arch/arm/configs/s3c6400_defconfig .config(如果省略的话,后面会找不到System Type)5 修改配置项(基本配置)#make menuconfigGeneral setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool prefix 我将编译器解压到了/opt/Friendly/toolschain/4.5.1/bin目录(如果第三步中以修改“plier ? = arm-linux- ”此项,这步可以不作)System Type->[*] MINI6410 选上,其他的可以去掉,不确定的可以参考友善之臂的(这样编译出来的内核是可以被uboot引导的,然后是增加nand flash支持)vi arch/arm/mach-s3c64xx/mach-mini6410.c第117行struct mtd_partition mini6410_nand_part[] = {{.name = "Bootloader",.offset = 0,.size = (4 * 128 *SZ_1K),.mask_flags = MTD_CAP_NANDFLASH,},{.name = "Kernel",.offset = (4 * 128 *SZ_1K),.size = (5*SZ_1M) ,.mask_flags = MTD_CAP_NANDFLASH,},{.name = "File System",.offset = MTDPART_OFS_APPEND,.size = MTDPART_SIZ_FULL,}}; //update at 2011-8-26 经过测试发现,这里改完后根本不起作用,甚至将整个注释也无妨,估计分区已经固死在后面的s3c_nand_mlc.fo 中6 拷贝NAND FLASH驱动(将6410内核中的如下文件拷到相应的目录下)需拷贝文件:drivers/mtd/nand/s3c_nand.carch/arm/plat-samsung/include/plat/regs-nand.h 覆盖掉drivers/mtd/nand/s3c_nand_mlc.fo《s3c_nand_mlc.fo友善没有开源的一个驱动之一,所以不用研究了,拷过来就是了。
tiny6410烧写环境
1、准备SD卡uboot需要SD卡烧写器和uboot镜像下载地址为:SD卡烧写器:/detail/songlan0012/7297353sd卡uboot镜像:/detail/songlan0012/73033692、将串口转usb线硬件连接好,串口接到tiny6410开发板,usb口接到电脑,会检查到新usb硬件图一这个是串口转USB驱动没有安装,点击取消,下载安装文件:PL2303_Prolific_DriverInstaller_v110.zip(我使用的是这个硬件)。
usb转串口驱动下载地址:/detail/songlan0012/7303905安装完后在设备管理器其中查看如图(可能需要重新拔掉再插上usb接口)图二图中COM3就是了。
打开dnw(串口界面工具),下载地址:/detail/songlan0012/7297327初始状态如图:图三点击Serial Port 菜单中的Connect选项,状态如下图:图四如果如上图出现COM3,115200bps (COM3是设备管理器中的COM3可能是其他COM口编号)恭喜,至此tiny6410串口驱动安装成功。
2、制作sd卡uboot资源:需要一个大于等于4G的SD卡,格式化成FAT32格式工具:SD-Flasher.exe (SD卡烧写器)工具下载地址:/detail/songlan0012/7297353这个工具不需要安装,直接运行使用。
直接打开界面为下图:图五点击Image file to fuse输入框后面的按钮选择要烧写的superuboot镜像,镜像下载地址为:/detail/songlan0012/7303369然后点击Scan按钮,按钮左侧的显示区会显示sd卡信息,例如下图:图六这说明已经检测到了正确检测到了SD卡点击Fuse按钮烧写会出现如下图信息:图七这说明sd卡uboot烧写成功。
将sd卡插入tiny6410的sd卡插槽内,将选择sd卡或者nand启动的开关拨到SD卡启动,连接好usb转串口线,插上开发板电源线,打开DNW至图四状态,上电,DNW会显示如下图信息:图八恭喜您,sd卡中的Uboot已经启动了。
Uboot_for_mini6410_移植步骤详解
这是u-boot-2010.09 针对友善之臂MINI6410移植的最基础版本,只包含了就基本的系统引导,NAND读写,DM9000网卡等等。
但是这个足够开发的方便使用。
今后会陆续添加原先我为mini2440添加的所有功能。
但是此次移植并非我的功劳,首先基本的移植是由Alex Ling <kasimling at >完成的,你可以在这里看到他提交的补丁,但是编译后无法使用,可能是因为host系统不同,对脚本的解析不同,使得spl部分的生成出现问题,只需修改一下nand_spl目录下目标板目录的中config.mk中的PAD_TO := $(shell expr $$[$(TEXT_BASE) + 4096])即可。
DM9000的驱动没有太大的问题(修改了一点可能出现问题的地方,感谢肖工指教),但是原本的u-boot并没有调整所有SROM控制器的配置(其中包括连接DM9000所使用的bank1的总线),我使用了友善带的u-boot的参数配置了一下就好了。
一:/batch.viewlink.php?itemid=1694ftp://ftp.denx.de/pub/u-boot/去这2个网站随便下载都可以下载得到最新或者你想要的u-boot。
现在我将下载u-boot-2010-09,这个也就是最新的版本啦。
下载后把它解压,然后得到u-boot-2010-09的文件夹,然后进去,并且做下面几件事情:1:进入arch这个文件夹,把出arm外的前部文件夹删掉2:进入board这个文件夹,把除samsung外前部文件夹删掉3:进入include/configs,把除smdk6400.h外的所有文件删除。
4: 把顶层目录下有一个叫onenand_ipl的文件夹删除掉,因为没有用到。
5:进入nand_spl/board,把除samsung外全部文件删除掉。
6:再进入arch/arm/cpu文件夹,把除arm1176外其他文件夹删除掉。
03- Tiny6410刷机指南-20110810
Tiny6410 刷机指南版本:2011-08-09(本手册正在不断更新中,建议您到网站下载最新版本)copyright@2010版权声明本手册版权归属广州友善之臂计算机科技有限公司(以下简称“友善之臂”)所有, 并保留一切权力。
非经友善之臂同意(书面形式),任何单位及个人不得擅自摘录本手册部分或全部,违者我们将追究其法律责任。
敬告:在售开发板的手册会经常更新,请在网站查看最近更新,并下载最新手册,不再另行通知。
更新说明:日期说明2011-08-09 增加了低级格式NAND Flash的说明(1.3.3)2011-07-21 提供全新的Superboot,支持进度显示,无需PC实现多系统烧写。
2011-05-19 SD-Flasher工具增加了Re-format功能,可以把Re-layout重新分区过的SD卡恢复成普通卡。
2011-04-08 1.Superboot增加了对三星2代MLC Nand Flash(以下简称MLC2)的支持a)通过SD卡脱机快速烧写Linux/WinCE/Android/Ubuntu系统b)通过USB下载烧写Linux/WinCE/Android/Ubuntu系统c)自动识别SLC/MLC2 Nand Flash2.U-boot升级:增加了读取MLC2的支持(型号:K9GAG08U0E)2011-1-4 Superboot增加了“Download & Run”功能,也就是把裸机程序下载到内存中运行,示例见“2.4”章节2010-11-26 本手册第一次发布,任何问题请反馈至capbily@目录Tiny6410 刷机指南.........................................................................................................................................- 1 - 第一章 制作SD卡启动盘....................................................................................................................................- 5 -1.1 烧写BIOS到SD卡.................................................................................................................................- 6 -1.1.1 BIOS简介.....................................................................................................................................- 6 -1.1.1 基于WindowsXP烧写BIOS........................................................................................................- 7 -1.1.2 基于Windows7烧写BIOS........................................................................................................- 10 -1.1.2恢复SD卡到原始状态...............................................................................................................- 14 -1.2 体验快速安装、更新、恢复和运行系统...........................................................................................- 15 -1.2.1 通过交互式图形界面安装系统...............................................................................................- 16 -1.2.2 快速安装WindowsCE系统.......................................................................................................- 19 -1.2.3 快速更新为Android系统..........................................................................................................- 20 -1.2.4 快速恢复为Linux系统..............................................................................................................- 21 -1.2.5 在SD卡中直接运行Ubuntu系统(500M)..................................................................................- 21 -1.2.6 关于配置文件FriendlyARM.ini................................................................................................- 22 -1.3 Superboot菜单功能介绍.......................................................................................................................- 26 -1.3.1 安装USB下载驱动....................................................................................................................- 27 -1.3.2 功能主菜单说明.......................................................................................................................- 33 -1.3.3低级格式化NAND Flash...........................................................................................................- 34 - 第二章 安装和更新或运行系统.......................................................................................................................- 36 -2.1 使用USB一键安装系统.......................................................................................................................- 36 -2.1.1一键安装Linux系统(yaffs2或UBIFS格式).............................................................................- 37 -2.1.2 一键安装WinCE系统................................................................................................................- 43 -2.1.3 一键安装Android(yaffs2或UBIFS格式).................................................................................- 48 -2.2 使用SD卡脱机快速安装系统.............................................................................................................- 54 -2.2.1快速安装Linux(UBIFS格式).....................................................................................................- 54 -2.2.2 快速安装WindowsCE6.............................................................................................................- 55 -2.2.3 快速安装Android(UBIFS格式)...............................................................................................- 56 -2.2.4 快速安装Ubuntu(UBIFS格式).................................................................................................- 56 -2.3 从SD卡直接运行各个系统.................................................................................................................- 57 -2.3.1 直接运行SD卡中的Linux.........................................................................................................- 57 -2.3.2 直接运行SD卡中的WindowsCE..............................................................................................- 57 -2.3.3 直接运行SD卡中的Android.....................................................................................................- 58 -2.3.4 直接运行SD卡中的Ubuntu......................................................................................................- 58 -2.4 使用USB下载并运行裸机程序...........................................................................................................- 59 -第一章 制作SD卡启动盘完全空白的SD卡是不能直接启动6410开发板的,必须先在PC上使用特殊的烧写软件把BIOS(也可以称为bootloader)写入SD卡才可以,并且写入的这个BIOS是无法在电脑上直接看到的。
uuboot 移植流程
uuboot 移植流程U-Boot 移植流程介绍U-Boot是一个开源的引导加载程序,常用于嵌入式系统中。
移植U-Boot可以将其适配到不同的硬件平台上,以满足特定需求。
本文将详细说明U-Boot移植的流程。
准备工作1.硬件选型:根据项目需求,选择适合的硬件平台。
2.获取源代码:从U-Boot官方网站或仓库下载最新版本的源代码。
3.安装交叉编译工具链:根据目标硬件平台的指令集架构,选择合适的交叉编译工具链,并进行安装。
4.了解目标硬件平台:熟悉目标硬件平台的架构、引导方式、存储器布局等相关信息。
移植流程1.配置编译环境:设置交叉编译工具链的环境变量,以确保正确编译U-Boot源代码。
2.配置U-Boot:修改U-Boot源代码中的配置文件,根据目标硬件平台的特性和需求进行相应配置。
–配置目标硬件平台的处理器类型、存储器布局等基本信息。
–配置启动方式,如通过网络(TFTP)或存储介质(SD卡、NAND Flash)等进行启动。
–配置启动流程,如引导加载程序的加载顺序、启动脚本等。
3.添加适配代码:根据目标硬件平台的需求,编写适配代码,包括引导加载程序和设备驱动等。
–引导加载程序:为目标硬件平台选择合适的程序入口点,配置启动参数,加载适配的设备驱动等。
–设备驱动:根据目标硬件平台的外设,编写相应的设备驱动代码,以支持外设的初始化和操作。
4.编译U-Boot:使用交叉编译工具链,编译修改后的U-Boot源代码。
–执行make clean清除之前的编译结果。
–执行make命令编译U-Boot源代码。
5.烧录和运行:将编译生成的U-Boot镜像烧录到目标硬件平台,并进行测试。
–根据目标硬件平台的烧录方式(串口、JTAG等),将U-Boot镜像烧录到目标设备。
–启动目标设备,观察U-Boot的启动信息是否正常输出,检查设备驱动是否正常加载。
6.调试和优化:根据实际情况,进行U-Boot的调试和性能优化。
–使用调试工具进行调试,如调试器、串口打印信息等。
【转载】Mini6410启动过程
【转载】Mini6410启动过程 这段时间在尝试使⽤uBoot来替代友善的Superboot,让板⼦⽀持从SD卡启动,所以就仔细研究了⼀下友善提供的内核和它的启动参数,发现友善真的蛮聪明,把电脑的启动⽅式借鉴到它们⾃⼰的开发板上了。
现在就把6410启动的过程分享出来,可能还有不完善的地⽅,希望了解的⼈也能指出我⽂章⾥⾯的不⾜。
initramfs启动以前在X86平台上做过⼀个最⼩的U盘启动⼩系统,⽤的就是initramfs的⽅式,只是在最后阶段不要让它切换根⽬录。
对于initramfs 的启动⽅式⽹上有很多相关的⽂章,Linux内核的⽂档也有相应的介绍。
这⾥只简单说⼀下它的原理,initramfs将归档好的⽂件系统添加到img 中,在启动的时候就只需要指定少量的内核启动参数,在启动过程中的临时⽂件系统所运⾏的脚本都是此⽂件系统中的程序和脚本,当然,这个⽂件系统其实就是⼀个简单的linux系统,可以进⾏简单的操作,如果要扩展功能⼜不想把img做得很⼤,可以考虑⽤mount⽂件系统然后转换的⽅式来做。
这样就将启动过程分成两个阶段,第⼀阶段就是⽤编⼊内核的⽂件系统做初始化,然后⽤定制的⽂件系统来跑应⽤程序。
不仅减少了更新内核的负担,⽽且在更新的时候不需要更新应⽤程序的⽂件系统,⽂件系统和内核的更新可以分开来做,提⾼了效率。
init脚本Linux启动后执⾏的第⼀个程序就根⽬录下的ini,友善通过init脚本来完成启动过程。
其主要⼯作就是声明⼀些环境,加载要运⾏的⽂件系统,然后做⽂件系统的切换。
因为不像X86下那么复杂,所以设备的初始化相对⽽⾔较为简单。
启动脚本和注释如下:001 #! /bin/sh002003 #初始化环境变量004 PATH=/sbin:/bin:/usr/sbin:/usr/bin005 runlevel=S006 prevlevel=N007 umask 022008 export PATH runlevel prevlevel009010 #011 # Trap CTRL-C &c only in this shell so we can interrupt subprocesses.012 #013 trap ":" INT QUIT TSTP014 #设置主机名015 /bin/hostname FriendlyARM016 #mount proc⽂件系统017 /bin/mount -n -t proc proc /proc018019 #获取U-boot启动参数,主要设置⽂件系统内型、根⽬录、init等020 cmdline=`cat /proc/cmdline`021022 #声明初始化启动相关参数,并设置默认值023 ROOT=none024 ROOTFLAGS=025 ROOTFSTYPE=026 NFSROOT=027 IP=028 INIT=/sbin/init029030 #从获取的命令中获取启动参数031for x in $cmdline ; do032case $x in033 root=*)034 ROOT=${x#root=}035 ;;036 rootfstype=*)037 ROOTFSTYPE="-t ${x#rootfstype=}"038 ;;039 rootflags=*)040 ROOTFLAGS="-o ${x#rootflags=}"041 ;;042 init=*)043 INIT=${x#init=}044 ;;045 nfsroot=*)046 NFSROOT=${x#nfsroot=}047 ;;048 ip=*)049 IP=${x#ip=}050 ;;051052esac053done054055if [ ! -z $NFSROOT ] ; then056 #⽹络⽂件系统启动057echo $NFSROOT | sed s/:/\ /g > /dev/x ; read sip dir < /dev/x echo $IP | sed s/:/\ /g > /dev/x; read cip sip2 gip netmask hostname device autoconf < /dev/x058rm /dev/x059060mount -t nfs $NFSROOT /r -o nolock,proto=tcp061062elif [ ! -z $run_fs_image ] ; then063 #制定的⽂件系统启动,这个环境变量还不知道是如何导出的,所以还需要了解,064 #看到友善提供的配置⽂件需要制定启动的⽂件系统,感觉应该是和那个地⽅相关,065 #但是⼜不能确定,⾼⼿可以指点⼀下066 ROOTFSTYPE="-t ext3" #设置⽂件系统类型067 #重复加载SD卡,重复尝试5次068for i in12345 ; do069 /bin/mount -n -o sync -o noatime -o nodiratime -t vfat /dev/mmcblk0p1 /sdcard && break070echo Waiting for SD Card...071sleep1072done073 #加载⽂件系统074 /sbin/losetup /dev/loop0 /sdcard/$run_fs_image075 /bin/mount $ROOTFSTYPE /dev/loop0 /r076mount -o move /sdcard /r/sdcard077else078 #直接⽤指定的启动参数加载⽂件系统079 /bin/mount -n $ROOTFLAGS $ROOTFSTYPE $ROOT /r080fi081082 #检测并设置触摸屏的校正参数,可⽆083 ONE_WIRE_PROC=/proc/driver/one-wire-info084 ETC_BASE=/r/etc085 [ -d /r/system/etc ] && ETC_BASE=/r/system/etc086 [ -e $ETC_BASE/ts.detected ] && . $ETC_BASE/ts.detected087 [ -z $CHECK_1WIRE ] && CHECK_1WIRE=Y088if [ $CHECK_1WIRE = "Y" -a -e $ONE_WIRE_PROC ] ; then089if read lcd_type fw_ver tail < $ONE_WIRE_PROC ; then if [ x$lcd_type = "x0" -a x$fw_ver = "x0" ] ; then TS_DEV=/dev/touchscreen else TS_DEV=/dev/touchscreen-1wire 090mv $ETC_BASE/ts-autodetect.conf $ETC_BASE/friendlyarm-ts-input.conf -f091echo"CHECK_1WIRE=N" > $ETC_BASE/ts.detected092sync093fi094fi095fi096097 [ -e /r/etc/friendlyarm-ts-input.conf ] && . /r/etc/friendlyarm-ts-input.conf098 [ -e /r/system/etc/friendlyarm-ts-input.conf ] && . /r/system/etc/friendlyarm-ts-input.conf099 export TSLIB_TSDEVICE100101 #exec /bin/sh102103 #⽂件系统替换104umount /proc105 exec switch_root /r $INIT /r/dev/console 2>&1被“欺骗”的脚本当初以为ext3的⽂件系统就是实际启动时执⾏的操作,但是那个却是⼀个错误的认识,之所以认为那个是启动的⽂件系统,是因为内核的⼀个配置参数和此⽂件系统包含了⼀些脚本,所以在启动时⾛了不少的弯路。
uboot如何支持6410sd卡启动
uboot如何支持6410 SD卡启动这里使用的uboot并非uboot官方发布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包括了三星的程序员与denx的员工。
这个版本支持SD启动,不过默认是nand启动,使它支持uboot需要做以下事情:1、虽然支持uboot启动,但是uboot代码里不叫SD启动方式,而是叫movinand 启动方式,在incluede/configs/smdk6410.h中就有这个选项,所以在这个文件里关闭nand启动,打开movinand启动就可以了://#define CONFIG_BOOT_NOR//#define CONFIG_BOOT_NAND 注释nand启动#define CONFIG_BOOT_MOVINAND 打开movinand启动//#define CONFIG_BOOT_ONENAND//#define CONFIG_BOOT_ONENAND_IROM#define CONFIG_NAND//#define CONFIG_ONENAND#define CONFIG_MOVINAND 打开movinand选项,使uboot支持movinand 的操作2、如果单纯是做上面的改动,还是不够的,在运行的时候会发现到了一定的时候uboot 就死掉了,其实这是因为uboot中假设SMDK6410在使用SD方式的时候是从CH0启动的,但是手上的这个板子是通过CH1启动,那么在运行被复制到SRAM中的8K代码时候没办法在CH0检测到SD,更没办法将SD 里的代码复制到SDRAM中。
修改办法是在incluede/movi.h中HSMMC_CHANNEL修改为1。
3、然后如果将上述修改后编译出来的u-boot.bin通过IROM_Fusing_tools直接烧写到SD中也是没办法启动的,需要运行以下的命令进行处理:cat u-boot.bin >> tempcat u-boot.bin >> tempsplit -b 256k tempmv xaa u-boot_256k.binsplit -b 8k u-boot.binmv xaa u-boot_8k.bincat u-boot_256k.bin >> u-boot_mmc.bincat u-boot_8k.bin >> u-boot_mmc.bin经过这些处理,实际上是将u-boot.bin内容重复一次后(为了保证达到256K,如果这个bin更小,那么可能需要重复3次、4次,直到超过256K 为止),将前256K制成u-boot_256k.bin,再将前8K制成u-boot_8k.bin,最后将u-boot_256k.bin+u-boot_8k.bin合并成一个256K+8K大小的文件u-boot_mmc.bin,这个文件前256K 就是u-boot_256k.bin 而后8K就是u-boot_8k.bin。
real210-Tiny6410刷机
3.点scan,如果Available是no,则点ReLayout分割SD卡,再次scan.(点ReFormat恢复原来的分区)
4.点Fuse开始烧写
5.把光盘镜像的目录copy到sd卡的images目录下
6.设置FriendlyARM.ini,LCD-Mode = Yes,LCD-Type = N43
7.S2拨到SD卡启动,(可连接串口线到COM0查看信息,速率115200,用超级终端或者DNW看,SecureCRT不行).开机.K1/K2可前后选择要安装的系统,K8开始烧写
8.完成后S2拨到Nand,开机
sdfuse flash system system.img //烧写Android 的system 分区,system 分区需要较长时间
sdfuse erase cache //格式化Android 的cache 分区
sdfuse flash userdata userdata.img //烧写Android 的userdata 分区
real210刷机
1.winpm
2.选择sd卡
3.删除sd卡分区
4.点右键,创建,在"在此之前的空间"设置10M,选择格式化FAT32分区
5.winpm上点应用,完成sd卡分区
6.moviNAND_Fusing_Tool,SD/MMC drive选择sd卡的分区,bootloader点Browse,选择uboot.bin,点START.
11.命令行模式Bootloader,nand erase格式化NandFlash,sdfuse flashall烧写所有image
UBoot移植详解
u-boot 移植步骤详解1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。
就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。
其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。
从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。
当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
U_Boot在Mini6410上的移植_宋耀华
随着嵌入式技术的普及,专门为嵌入式产品开发的操作系统也层出不穷,如Android ,WindowsCE ,Pocket PC ,Vx-Works ,Linux 等。
因此,如何引导嵌入式操作系统成为越来越多讨论的热点———这就是引导与加载内核镜像代码bootloader的讨论范畴。
嵌入式系统常用的Boot Loader 有ARM-Boot 、RedBoot 、U-Boot 等。
U-Boot (全称Universal Boot Loader )是当前比较流行的遵循GPL 条件的开放源码项目。
U-Boot 具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核。
本文针对S3C6410处理器,将u-boot-2011.06移植到该平台上。
1开发环境的建立1.1宿主机-目标板开发模式由于嵌入式Linux 的开发板资源有限,不可能在开发板上运行开发和调试,通常采用“宿主机+目标板(开发板)”的形式。
宿主机和目标板一般通过串口、USB 或网线连接,如图1所示。
图1宿主机-目标板开发模式大部分嵌入式系统在宿主机(PC )大多都采用Telnet 或Minicom 实现与目标板的通信,本系统采用Minicom 。
Minicom 是Linux 下一个类似于Windows 超级终端的友好串口通信程序。
在终端输入bash#minicom-s 进入Minicom 设置画面,设置串口波特率、有效数据位、停止位以及奇偶校验位分别为115200、8bit 、1位停止位、无奇偶校验位以及无流控制等。
1.2建立交叉编译环境开发环境:宿主机系统Windows XP SP3系统;虚拟机采用的是VMware Workstation ACE 版本;虚拟机内采用的Linux 系统是UBUNTU10.10版本;交叉编译工具(动手制作)。
交叉编译是在一个架构下编译另外一个架构的目标文件。
要从http://ymorin.is-a-geek.org /download /crosstool-ng /处下载crosstool-ng ,用crosstool-ng 建立arm-linux 交叉工具链,使用的交叉编译器和交叉调试器分别是gcc-4.3.2和gdb-6.8,Linux 内核为linux-2.6.33。
一步步教你移植uboot(超精华版)
#make gec2440_config #make 编译完成时最后两句如下:
arm-linux-objcopy -O srec u-boot u-boot.srec arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin 表示编译成功。
# if defined(CONFIG_S3C2410)
ldr r1, =0x7ff //0x3ff,根据 2410 芯片手册,INTSUBMSK 有 11 位可用,vivi 也是 0x7ff, u-boot 则是 0x3ff,不过芯片复位后所有中断都被屏蔽,故这无影响
ldr r0, =INTSUBMSK
>> 2
广州广嵌电子科技有限公司
u-boot移植要点 我们可以总结出bootloader的两大功能:
1 是下载功能,既通过网口、串口或者USB口下载文件到RAM中。 2 是对flash芯片的读写功能。 u-boot对S3C2440已经有了很好的支持,在移植过程中主要是完善u-boot对nand flash 的读写功能。 u-boot移植前的准备工作 1.下载源码 Uboot的源码可以从以下网址下载: /u-boot/u-boot-2009.11.tar.bz2?modtime=1134 752480&big_mirror=0 我们这里下载的是u-boot-2009.11.tar.bz2 工具链使用cross-4.1.2
samsung: 开发者/或经销商(vender)。
s3c24x0: 片上系统(SOC)。 板子起名叫gec2440,可以依自己的喜好修改
UBOOT移植操作
UBOOT移植操作1. 确定目标平台和硬件:首先需要了解目标平台的硬件架构、处理器类型、存储设备(如 Flash 或者 SD 卡)等重要信息。
同时需要获取目标平台的硬件参考手册或者相关文档。
2.设置交叉编译工具链:UBOOT是使用C和汇编语言编写的,因此需要使用交叉编译工具链来生成可在目标平台上运行的二进制可执行文件。
交叉编译工具链包括交叉编译器、链接器和调试器等工具,这些工具需要针对目标平台进行配置。
4. 配置 UBOOT 环境:进入 UBOOT 源代码目录,运行 `make menuconfig` 命令来配置 UBOOT 的环境。
这个命令会打开一个图形界面,可以在其中选择需要的功能、驱动程序和选项。
根据目标平台的硬件特性和需求,选择适当的选项。
5. 修改配置文件:UBOOT 需要一个配置文件(通常是`include/configs/<target.h>`),在这个文件中需要将目标平台的硬件配置信息填入。
这些信息包括芯片型号、Flash 存储器地址等。
还需要设置启动参数,如内核地址、根文件系统地址等。
6. 编译 UBOOT:运行 `make` 命令来编译 UBOOT。
根据配置和硬件平台的不同,可能需要选择不同的编译选项。
编译过程会生成一个 UBOOT 头文件(u-boot.bin)和其他必要的文件。
7.将UBOOT烧录到目标平台:使用烧录工具(如JTAG烧录器、USB烧录器或者SD卡等)将编译好的UBOOT烧录到目标平台的存储设备中。
具体的烧录方法和工具依赖于目标平台的配置。
8.测试和调试:将烧录好的UBOOT安装到目标平台后,通过串口或者网络连接到目标平台,使用终端工具进行测试和调试。
可以通过串口输出来查看启动过程中的日志和错误信息,或者使用调试工具来分析程序执行的问题。
9.优化和定制:根据需求对UBOOT进行优化和定制。
可以修改配置文件、增加功能模块或者修改代码,以达到更好的性能和适应特定需求的目的。
在Tiny6410上安装Android系统的详细说明文档
在Tiny6410上安装Android系统的详细说明文档2011年8月1日一.SD卡Bootloader的制造1.Bootloader的简介在这就不多说了这个是开源的的,在移植启动引导程序时,我们会用到,现在只要了解即可。
想了解详情的可以进入下面的网站:/view/1223454.htm1.1 U-boot三星公司为6410 系统提供了带有 USB下载功能的U-boot,有善之臂公司在此基础上增强和改进了它的功能,并把它完全开源出来,以供广大嵌入式爱好者学习研究使用,主要特性如下:1. 增加了下载菜单,类似 Superboot 的 USB下载菜单2. 增加了 SD卡启动配置3. 支持直接下载烧写 yaffs2 文件系统映像4. 支持烧写WindowsCE BootLoader之 Nboot5. 支持烧写WindowsCE映像的功能6. 支持烧写单文件映像文件,就是通常所说的裸机程序7. 支持返回原始shell说明:大部分声称完全开源 Bootloader 的 6410 开发板,也都是从三星提供的 U-boot稍作改动而来的,所有开源的 U-boot 目前均无法烧写到 SDHC 卡(超过 2G 的大容量 SD 卡)中使用。
1.2 Superboot除了完全开源的 U-boot,友善之臂还为企业用户设计了功能超强的Superboot,它需要被烧写入 SD 卡中使用,关于它的 USB 下载功能,如果你使用过 mini2440,那么在 mini6410开发板上,你也会得心应手,因为它们的功能菜单和命令都几乎是完全相同的,你甚至不用重新安装 USB下载驱动和 dnw下载软件。
2. SD卡Bootloader的制造Step1: 打开光盘\tools\中的 SD-Flasher.exe 烧写软件,如图请注意,此时软件中的eLayout”和“ReFormat”按钮是失效的,因为我们特意在 WindowsXP 系统中关闭了此功能。
UBoot移植详细教程
u-boot 移植步骤详解(必会)1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。
就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。
其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。
从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。
当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
uboot内核移植和裁剪详细步骤
uboot内核移植和裁剪详细步骤-U-boot内核移植步骤:Linux 3.3.5系统移植1. 将arch/arm/mach-s3c6410/下的,mach-smdk6410.c cp为mach-my6410.c;2. 打开arch/arm/mach-s3c6410/下的Kconfig,仿照MACH_SMDK6410做一个菜单项:config MACH_MY6410bool "MY6410"select CPU_S3C6410select SAMSUNG_DEV_ADCselect S3C_DEV_HSMMCselect S3C_DEV_HSMMC1select S3C_DEV_I2C1select SAMSUNG_DEV_IDEselect S3C_DEV_FBselect S3C_DEV_RTCselect SAMSUNG_DEV_TSselect S3C_DEV_USB_HOSTselect S3C_DEV_USB_HSOTGselect S3C_DEV_WDTselect SAMSUNG_DEV_BACKLIGHTselect SAMSUNG_DEV_KEYPADselect SAMSUNG_DEV_PWMselect HAVE_S3C2410_WATCHDOG if WATCHDOGselect S3C64XX_SETUP_SDHCIselect S3C64XX_SETUP_I2C1select S3C64XX_SETUP_IDEselect S3C64XX_SETUP_FB_24BPPselect S3C64XX_SETUP_KEYPADhelpMachine support for the Pillar MY64103. 打开arch/arm/tools/mach-types文件,这里面存的是机器ID必须要和uboot里面的ID保持一致,将其283行复制添加在后面并修改为: smdk6410MACH_SMDK6410 SMDK6410 1626 xx6410 MACH_XX6410 XX6410 1626 这个机器ID和UBOOT里的机器ID相同时才能启动内核;1. 修改BSP文件mach-my6410.c,内容如下:将mach-mach-my6410.c文件中的所有smdk6410改成my6410(不要改大写SMDK6410的)MACHINE_START(MY6410, "MY6410")//这个要和Kconfig里的MACH-MY6410匹配 2. 在当前目录的Makefile最后一行加上 obj-$(CONFIG_MACH_MY6410) += mach-my6410.o3. 修改顶层的Makefile:ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux- 4. 复制arch/arm/configs/下的s3c6400-defconfig文件,然后将其保存为.config,配置内核支持EABI,再选中XX6410 board这一项,保存退出;5. 执行make menuconfig对内核进行配置:执行make编译执行make zImage生成zImage将uboot根目录下的mkimage拷贝到/user/bin目录下执行make uImage生成uImage通过以上几步linux内核移植完了,剩下就移植驱动了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <config.h> #include <asm/arch/s3c6400.h>
.globl mem_ctrl_asm_init mem_ctrl_asm_init:
/* DMC1 base address 0x7e001000 */ ldr r0, =ELFIN_DMC1_BASE
#tar xzvf u-boot-gxb.tar.gz
二:在顶层的目录下找到 Makefile 文件,并用 gedit
打开
在 Makefile 中找到下面代码进行修改
########################################################################
else
\
echo
"RAM_TEXT
=
0xc7e00000"
$(obj)board/samsung/tiny6410/config.tmp;\
fi
@$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
ldr r1, =DMC_DDR_t_RFC ldr r2, =DMC_DDR_schedule_RFC orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RFC]
ldr r1, =DMC_DDR_t_RP ldr r2, =DMC_DDR_schedule_RP orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RP]
## ARM1176 Systems
#########################################################################
smdk6400_noUSB_config \
smdk6400_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/smdk6400
#==================================================================
then >>
>>
三: arch/arm/cpu/arm1176/s3c64xx/cpu_init.S
#gedit arch/arm/cpu/arm1176/s3c64xx/cpu_init.S
二、 设计方案 1. 硬件资源 1) ARM 处 理 器 : ARM11 芯 片 (Samsung S3C6410A) , 基 于 ARM1176JZF-S 核 设 计 , 运 行 频 率 533Mhz, 最 高 可 达 667Mhz 2) 存储器: 128M DDR RAM ,可升级至 256M;MLC NAND Flash(2GB) 3) 其他资源:具有三 LCD 接口、 4 线电阻 触摸屏接口、100M 标准网络接口、标准 DB9 五线串口、Mini USB 2.0 接口、USB Host 1.1、3.5mm 音频输入输出口、标准 TV-OUT
ldr r1, =DMC_DDR_32_CFG str r1, [r0, #INDEX_DMC_USER_CONFIG]
/* DMC0 DDR Chip 0 configuration direct command reg */ ldr r1, =DMC_NOP0 str r1, [r0, #INDEX_DMC_DIRECT_CMD]
/* MRS */ ldr r1, =DMC_mDDR_EMR0 str r1, [r0, #INDEX_DMC_DIRECT_CMD]
/* Mode Reg */ ldr r1, =DMC_mDDR_MR0 str r1, [r0, #INDEX_DMC_DIRECT_CMD]
/* Enable DMC1 */ mov r1, #0x0 str r1, [r0, #INDEX_DMC_MEMC_CMD]
ldr r1, =DMC_DDR_t_RC str r1, [r0, #INDEX_DMC_T_RC]
ldr r1, =DMC_DDR_t_RCD ldr r2, =DMC_DDR_schedule_RCD orr r1, r1, r2 str r1, [r0, #INDEX_DMC_T_RCD]
tiny6410_noUSB_config \
tiny6410_config :
unconfig
@mkdir -p $(obj)include $(obj)board/samsung/tiny6410
@mkdir -p $(obj)nand_spl/board/samsung/tiny6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
// 4clk
address holding time
// 6clk
page mode access cycle
// normal(1data)page mode configuration
接口、SD 卡座、红外接收等常用接口;另外 还引出 4 路 TTL 串口,另 1 路 TV-OUT、 SDIO2 接口(可接 SD WiFi)接口等;在板的 还有蜂鸣器、I2C-EEPROM、备份电池、AD 可调电阻、8 个中断式按键等。 2. 软件资源 1) arm-linux-gcc-4.5.1(交叉编译) 2) u-boot-2010.09.tar.gz arm-linux-gcc-4.5.1-v6-vfp-20101103.t gz 三、 移植过程 1. 环境搭建 1) 建立交叉编译环境 2)去这 2 个网站随便下载都可以下载得到最
ldr r1, =DMC_DDR_t_XP str r1, [r0, #INDEX_DMC_T_XP]
ldr r1, =DMC_DDR_t_XSR str r1, [r0, #INDEX_DMC_T_XSR]
ldr r1, =DMC_DDR_t_ESR str r1, [r0, #INDEX_DMC_T_ESR]
#define SROM_BC1_REG_Tacs #define SROM_BC1_REG_Tcos #define SROM_BC1_REG_Tacc
(0x0) (0x4) (0xE)
// 0clk // 4clk // 14clk
address set-up chip selection set-up access cycle
ldr r1, =DMC_DDR_t_RRD str r1, [r0, #INDEX_DMC_T_RRD]
ldr r1, =DMC_DDR_t_WR str r1, [r0, #INDEX_DMC_T_WR]
ldr r1, =DMC_DDR_t_WTR str r1, [r0, #INDEX_DMC_T_WTR]
新 或 者 你 想 要 的 u-boot 。 ( /batch.viewl ink.php?itemid=1694 ftp://ftp.denx.de/pub/u-boot/ )
下面是具体的对 u-boot…的修改
一: 下载并解压 u-boot-gxb.tar.gz。
ldr r1, =0x4 str r1, [r0, #INDEX_DMC_MEMC_CMD]
ldr r1, =DMC_DDR_REFRESH_PRD str r1, [r0, #INDEX_DMC_REFRESH_PRD]
ldr r1, =DMC_DDR_CAS_LATENCY str r1, [r0, #INDEX_DMC_CAS_LATENCY]
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring tiny6410_noUSB_config,$@)" ];
\
echo
"RAM_TEXT
=
0x57e00000"
$(obj)board/samsung/tiny6410/config.tmp;\
Uboot_for_Tiny6410_移植步骤详解 一、 设计要求
1. 目的 1) 掌握 U-boot 剪裁编写 2) 掌握交叉编译环境的配置 3) 掌握 U-boot 的移植
2. 实现的功能 1) U-boot 编译成功 2) 移 植 U-boot , 使 系 统 支 持 从 NAND FLASH 启动
ldr r1, =DMC1_MEM_CFG str r1, [r0, #INDEX_DMC_MEMORY_CFG]
ldr r1, =DMC1_MEM_CFG2 str r1, [r0, #INDEX_DMC_MEMORY_CFG2]
ldr r1, =DMC1_CHIP0_CFG str r1, [r0, #INDEX_DMC_CHIP_0_CFG]
check_dmc1_ready: ldr r1, [r0, #INDEX_DMC_MEMC_STATUS] mov r2, #0x3 and r1, r1, r2 cmp r1, #0x1 bne check_dmc1_ready
nop 添加下面红色的代码 /*===========================更改部分=============================*/ #if defined(COj)nand_spl/board/samsung/smdk6400
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h