3.3.Uboot的使用

?

解压uboot的压缩包得到uboot的工程文件uboot,进入uboot,打开Makefile文件,搜索自己的开发板的类型。我的是OK6410 256的。

然后执行配置文件:

接着执行一下的命令进行编译:

?

?

?

编译完成的截图:

完成之后,我们会在我们的uboot的目录看待生成uboot.bin文件,这就是要烧写到开发板的映像文件。

烧写uboot.bin 到OK6410开发板

首先烧写我们的辅助安装程序mmc_256.bin到SD卡。设置开发板从SD卡启动。在启动的瞬间按住空格进入选择菜单。

?

首先是选择1,格式化我们的Nand flash。

?

接着选3,Burn image from USB.

接着选择1,我们现在烧写的是uboot:

由于我的usb驱动有点问题,改成SD烧写:

烧写完成,设置开发板从nand flash启动,重启开发板:

如上面的显示,我们的uboot可以工作了。Uboot通常会有上面的选择菜单。但是,我们现在是要看uboot下的命令。所以选择的是6,进入命令行:

接下来就是uboot下的命令详解:

?

?

?

?

?

?

?

?

?

2.u-boot命令详解

?

?

?

?

?

?

?

?

?

?

2.1帮助命令:

?

Uboot的命令是很丰富的,是在开发阶段实现的。现在我们是使用,所以没有涉及到如何增加命令的知识,我们只管用就好了。

我们可以使用help来查看所支持的命令:

上面可以看到uboot支持的命令是很丰富的。前面是命令,后面是解释命令。

?

?

?

?

?

?

2.2查看环境变量:

环境变量的设置:

?

现在我们执行setenv Myboard OK6410去增加一个环境变量:

看到,我们的环境变量添加成功了。至于修改,跟增加一样的。例如我们可以setenv Myboard 6410.这样就修改了Myboard的值了。

最后是删除环境变量:命令:setenv Myboard。后面不要跟参数,就会删除掉该环境变量。

?

2.3变量的保存:

我们前面的操作的结果是保存在内存的,一断电就会消失,如果想要重启后还能保留,必须使用saveenv命令,将在内存的环境变量保存到我们的flash里面去。开发板上电回去flash里面读取环境变量。

2.4文件的下载;

?

?

?

?

?

?

首先是设置开发板和主机虚拟机的ip地址:

Saveenv保存之后,记得重启,才能够ping通:

从上面的显示知道已经ping通的。

接着使用tftp来下载我们的uImage:

?

?

?

?

?

?

?

?

?

?

2.4执行程序:

?

执行了上面的命令之后,我们的内核就启动起来了:

?

我们可以看到上面就是我们熟悉的linux的目录了。

设置自启动linux内核:

然后重启:

?

?

?

Tftp的配置文件:/etc/xinetd.d/tftp:

Server_args是tftp服务器文件夹。

Tftp的设置:重启服务:

?

?

所谓固定格式的2进制程序是指系统的类型,例如wince等。

2.5.查看内存内容:

?

?

2.6.修改内存内容。

?

?

?

?

?

?

如果你不想修改了,就空格回车,就会退出了的。

2.7.擦除nand flash的内容。

?

?

?

下面就是执行的效果。

?

?

?

?

?

?

2.8.写、读nand flash。

?

下面通过tftp传入linux内核,再把它写入:

?

?

上面,我们写入了一个linux内核,现在我们来把它读出来,如果读得出来,就是写入成功了。进行验证。

下面是读的操作:

因为前面是烧写一个内核,现在已经读到内存当中。现在检验能不能启动它。Bootm c0008000

?

可以看到我们可以去启动它,说明前面的操作是正确的。

?

?

最后设置自启动:

?

?

?

?

  1. 是出厂的产品,实现的自启动的命令。记得设置完后要saveenv,再重启。
  2. 是我们在调试内核的时候的命令。记得设置完后要saveenv,再重启。

    ?

    ?

    ?

时间: 2024-09-30 16:51:30

3.3.Uboot的使用的相关文章

2.4、uboot配置和编译过程详解

2.4.1.uboot主Makefile分析1 2.4.1.1.uboot version分析 (1)uboot版本号分为3个级别: VERSION:主版本号 PATCHLEVEL:次版本号 SUBLEVEL:再次版本号 EXTRAVERSION:另外附加的版本信息 这四个用.隔开共同构成了最终的版本号. (2)Makefile中版本号最终生成了一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号 (3)include/version_autogenerated.h

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

1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候最好使用“%x”,以为我不知道指针或者字符串中是否包含不可见字符,如果有不可见字符会导致错误,而且错误不好查找 3.对于uboot中的环境变量,其实是放在uboot里面的,也就是环境变量占用的是uboot的空间,如果不需要去实时修改环境变量的值那么就可以不用env这个分区:但是如果需要修改环境变量,

(六)uboot引导启动内核

U-BOOT 给linux 内核传递合适参数的定义,在include/configs/mini2440.h #define CONFIG_SETUP_MEMORY_TAGS 1 #define CONFIG_INITRD_TAG 1 #define CONFIG_CMDLINE_TAG 1 制作uImage 添加变量 设置TFTP 启动

uboot的介绍

uboot的介绍 1.1 uboot的介绍Uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统.UBoot除了支持PowerPC系列的处理器外,还能支持MIPS. x86.ARM.NIOS.XScale等诸多常用系列的处理器.1.2 uboot的体系结构目录树|--board|--common|--cpu|

U-Boot移植之前期分析(上)

老是看别人移植uboot,用别人移植好的uboot,今天终于下定决心自己移植一个uboot来玩玩,好歹我也是个软件开发人员啊. 第一步:去ftp://ftp.denx.de/pub/u-boot/网站下载个uboot工程源码,为了防止环境出问题,我决定用个老一点的,于是就下了:u-boot-1.1.6.tar.bz2. 第二步:解压源码:tar  jxvf  u-boot-1.1.6.tar.bz2. 第三步:建立source insight工程 好了完成以上三步之后,我们需要的前提条件都准备好

U-Boot移植之前期分析(下)

接U-Boot移植之前期分析(上): 2. 顶层目录下mkconfig的分析过程 在上面的分析中知道了语句:"@$(MKCONFIG) $(@:_config=) arm arm920t MY_JZ2440 sumsung s3c24x0"对应于执行顶层目录下的mkconfig文件并传递了六个参数 ($0-$6):100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0.下面分析这句话的到底做了什么事情,具体可以阅读源码,由于比较简单这里直接列出具体

u-boot命令行调试LCD简单记录

一般来说,调试uboot最好的方式是使用openjtag,因为uboot说到底就是一段裸机程序,只不过比较复杂.但是受实际环境限制,实际工作中使用较多的调试技巧主要有两种:打印和直接在命令行测试,打印比较常见也比较简单,直接使用printf即可,这里就以最近这段时间调试uboot下面lcd为例,简单说说命令行调试. 平台: am335x,u-boot 2010.09,linux 3.10 问题: 由于此版本u-boot比较旧,没有整套framebuffer子系统框架,所以采取的是移植好官方裸机驱

u-boot下延时程序失效的bug调试

最近在工作中的一个项目中,大概是将两块板卡相连(一块STM32跑裸机程序,另一块AM335x跑Linux系统),但是发现在u-boot有时无法启动成功,需要通过一个GPIO的状态来判断,具体来说就是本来上电后端口默认高阻抗,先利用程序先拉低大概100ms,然后在使用程序拉高100ms,然后STM32程序检测这段电平跳变,从而确定系统正确启动,否则会进行软件复位使AM335X的单板能够正常启动,程序本身并不难,但是调试时遇到了一个奇怪的bug,简单记录下. 平台:am335x,u-boot v20

嵌入式 uboot引导kernel,kernel引导fs【转】

转自:http://www.cnblogs.com/lidabo/p/5383934.html#3639633 1.uboot引导kernel: u-boot中有个bootm命令,它可以引导内存中的应用程序映像(Kernel),bootm命令对应 common/cmd_bootm.c中的do_bootm()函数,此函数实现下面几个功能: 1)读flash中的内核映像文件 2)解压内核 3)校验内核 4)跳到内核执行(调用do_bootm_linux()函数) { 1.Stage1 start.S

uboot移植之start_armboot()函数分析

/******************************** uboot的第二阶段就是初始化剩下的还没在第一阶段初始化的硬件.主要是SoC外部硬件(譬如 iNand 网卡芯片....... )uboot本身的一些东西(uboot的命令 环境变量等.....).然后最终初始化完必要的东西后进入到uboot的命令行准备接受命令. ***********************************/ void start_armboot (void)       //这个函数构成了uboot