uboot下支持shell_uboot shell - CSDN
精华内容
参与话题
  • uboot的作用和功能

    万次阅读 多人点赞 2019-02-27 10:57:35
    uboot是用来干什么的,有什么作用? uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核 所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力...

    uboot是用来干什么的,有什么作用?

    uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核

    所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力。

    uboot是怎样引导启动内核的?

    uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把kernel部分代码也拷到内存中,并且启动,内核启动后,挂着根文件系统,执行应用程序。

    uboot启动的大过程是怎么样的?

    uboot启动主要分为两个阶段,主要在start.s文件中,第一阶段主要做的是硬件的初始化,包括,设置处理器模式为SVC模式,关闭看门狗,屏蔽中断,初始化sdram,设置栈,设置时钟,从flash拷贝代码到内存,清除bss段等,bss段是用来存储静态变量,全局变量的,然后程序跳转到start_arm_boot函数,宣告第一阶段的结束。

    第二阶段比较复杂,做的工作主要是1.从flash中读出内核。2.启动内核。start_arm_boot的主要流程为,设置机器id,初始化flash,然后进入main_loop,等待uboot命令,uboot要启动内核,主要经过两个函数,第一个是s=getenv("bootcmd"),第二个是run_command(s...),所以要启动内核,需要根据bootcmd环境变量的内容启动,bootcmd环境变量一般指示了从某个flash地址读取内核到启动的内存地址,然后启动,bootm。

    uboot启动的内核为uImage,这种格式的内核是由两部分组成:真正的内核和内核头部组成,头部中包括内核中的一些信息,比如内核的加载地址,入口地址。

    uboot在接受到启动命令后,要做的主要是,1,读取内核头部,2,移动内核到合适的加载地址,3,启动内核,执行do_bootm_linux

    do_bootm_linux主要做的为,1,设置启动参数,在特定的地址,保存启动参数,函数分别为setup_start_tag,setup_memory_tag,setup_commandline_tag,setup_end_tag,根据名字我们就知道具体的段内存储的信息,memory中为板子的内存大小信息,commandline为命令行信息,

    2,跳到入口地址,启动内核

    启动的函数为the_kernel(0,bd->bi_arch_number,bd->bi_boot_param)

    bd->bi_arch_number为板子的机器码,bd->bi_boot_param为启动参数的地址

     

    总结:uboot到底是干嘛的,对应下面uboot必须要解决哪些问题!

    1)uboot主要作用是用来启动操作系统内核。体现在uboot最后一句代码就是启动内核。

    2)uboot还要负责部署整个计算机系统。体现在uboot最后的传参。

    3)uboot中还有操作Flash等板子上硬件的驱动。例如串口要打印,ping网络成功,擦除、烧写flash是否成功等。

    4)uboot还得提供一个命令行界面供人来操作。很简单,至少你能看到。

    计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)。而一般的PC机启动过程为:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了)。

    嵌入式系统和PC机的启动过程几乎没有两样,只是BIOS成了uboot,硬盘成了Flash。

    3 uboot必须解决哪些问题?

    3.1自身可开机直接启动

    1)一般的SoC都支持多种启动方式,譬如SD卡启动、NorFlash启动、NandFlash启动等•••••uboot要能够开机启动,必须根据具体的SoC的启动设计来设计uboot

    2)uboot必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。uboot中第一阶段的start.S文件中具体处理了这一块。

    3.2能够引导操作系统内核启动并给内核传参

    1)uboot的终极目标就是启动内核。

    2)linux内核在设计的时候,设计为可以被传参。也就是说我们可以在uboot中事先给linux内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取uboot传给他的参数,然后在内核中解析这些参数,这些参数将被用来指导linux内核的启动过程。

    3.3能提供系统部署功能

    1)uboot必须能够被人借助而完成整个系统(包括uboot、kernel、rootfs等的镜像)在Flash上的烧录下载工作。

    2)裸机教程中刷机(ARM裸机第三部分)就是利用uboot中的fastboot功能将各种镜像烧录到iNand中,然后从iNand启动。

    3.4 能进行soc级和板级硬件管理

    1)uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显示进度条就必须能驱动LCD,譬如uboot能够通过串口提供操作界面就必须驱动串口。譬如uboot要实现网络功能就必须驱动网卡芯片。

    2)SoC级(譬如串口)就是SoC内部外设,板级就是SoC外面开发板上面的硬件(譬如网卡、iNand)

    3.5 uboot的"生命周期"

    1)uboot的生命周期就是指:uboot什么时候开始运行,什么时候结束运行。

    2)uboot本质上是一个裸机程序(不是操作系统),一旦uboot开始SoC就会单纯运行uboot(意思就是uboot运行的时候别的程序是不可能同时运行的),一旦uboot结束运行则无法再回到uboot(所以uboot启动了内核后uboot自己本身就死了,要想再次看到uboot界面只能重启系统。重启并不是复活了刚才的uboot,重启只是uboot的另一生)

    3)uboot的入口和出口。uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

    总结:uboot的一切都是为了启动内核。

    4.S5PV210的uboot与架构

    5 uboot的工作方式

    5.1 从裸机程序镜像uboot.bin说起

    1)uboot的本质就是一个裸机程序,和我们裸机全集中写的那些裸机程序xx.bin并没有本质区别。如果非说要有区别,那就是:我们写的大部分小于16KB,而uboot大于16KB(一般uboot在180k-400k之间)

    2)uboot本身是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生成一个uboot.bin,这就是uboot这个裸机程序的镜像文件。然后这个镜像文件被合理的烧录到启动介质中拿给SoC去启动。也就是说uboot在没有运行时表现为uboot.bin,一般躺在启动介质中。

    3)uboot运行时会被加载到内存中然后一条指令一条指令的拿给CPU去运行。

    5.2 uboot的命令式shell界面

    1)普通的裸机程序运行起来就直接执行了,执行时效果和代码有关。

    2)有些程序需要和人进行交互,于是乎程序中就实现了一个shell(shell就是提供人机交互的一个界面,回想ARM裸机全集第十六部分),uboot就实现了一个shell。

    注意:shell并不是操作系统,和操作系统一点关系都没有。linux中打开一个终端后就得到了一个shell,可以输入命令回车执行。uboot中的shell工作方式和linux中的终端shell非常像(其实几乎是一样的,只是命令集不一样。譬如linux中可以ls,uboot中ls就不识别)。

    4.3掌握uboot使用的2个关键点:命令和环境变量

    1)uboot启动后大部分时间和工作都是在shell下完成的(譬如uboot要部署系统要在shell下输命令、要设置环境变量也得在命令行地下,要启动内核也要在命令行底下敲命令)。

    2)命令就是uboot的shell中可以识别的各种命令。uboot中有几十个命令,其中有一些常用另一些不常用(我们还可以自己给uboot添加命令),后面会用几节课时间来依次学习uboot中常用命令。

    3)uboot的环境变量和操作系统的环境变量工作原理和方式几乎完全相同。uboot在设计时借助了操作系统的设计理念(命令行工作方式借鉴了linux终端命令行,环境变量借鉴了操作系统的环境变量,uboot的驱动管理几乎完全照抄了linux的驱动框架)。

    4)环境变量可以被认为是系统的全局变量,环境变量名都是系统内置的(认识就认识,不认识就不认识,这部分是系统自带的默认的环境变量,譬如PATH;但是也有一部分环境变量是自己添加的,自己添加的系统就不认识但是我们自己认识)。系统或者我们自己的程序在运行时可以通过读取环境变量来指导程序的运行。这样设计的好处就是灵活,譬如我们要让一个程序更改运行方法,不用去重新修改程序代码再重新编译运行,而只要修改相应的环境变量就可以了。

    5)环境变量就是运行时的配置属性。

    展开全文
  • uboot脚本(类似于shell

    千次阅读 2017-11-27 17:38:07
    uboot启动时,通常可以中断uboot启动,进入uboot命令行界面。进入后可以设置环境变量,使用一些命令行。除此之外,还可以使用命令行脚本。
    uboot启动时,通常可以中断uboot启动,进入uboot命令行界面。进入后可以设置环境变量,使用一些命令行。除此之外,还可以使用命令行脚本。

    在环境变量中,会遇到以下的一些语法,这些语法结构是uboot中支持的。
    "if test ${ip_dyn} = yes; then " \
    "setenv get_cmd dhcp; " \
    "else " \
    "setenv get_cmd tftp; " \
    "fi; " \
    除了通常的命令外,uboot还支持以下语法:
    1.流程控制
    if <list>; then <command list>; [ elif <list>; then <list>; ] ... [ else <list>; ] fi
    while <list> ; do <list> ; done
    until <list> ; do <list> ; done
    for <name> in <word list> ; do <list> ; done
    2.环境变量显示
    通常使用类似命令行 env print ipaddr来显示一个环境变量
    其实,还可以通过另一种方式
    echo ${ipaddr}
    3.支持 ; && || 等分隔符和运算符
    echo "this will be printed" && echo "this will also be printed" && false && echo "this will not be printed"
    4.支持 test 命令
    test命令用来比较两个环境变量,比如
    if test ${ip_dyn} = yes;
    判断ip_dyn变量是否为yes
    5 使用source 命令来运行脚本
    制作脚本文件:
    mkimage -T script -C none -n 'My Script File' -d script_file.txt myscript.img
    运行脚本:
    source <memory address>
    展开全文
  • uboot移植之前的工作

    千次阅读 2016-04-23 18:33:08
    1.1计算机系统的主要部件:计算机系统是有cpu来做核心进行运行的系统。典型的计算机系统有:pc机,嵌入式设备(手机、平板电脑、游戏机),单片机(家用电器)。 1.2计算机系统组件部件非常多,不同的计算机系统组成...
    1.1计算机系统的主要部件:计算机系统是有cpu来做核心进行运行的系统。典型的计算机系统有:pc机,嵌入式设备(手机、平板电脑、游戏机),单片机(家用电器)。
    1.2计算机系统组件部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:cpu+外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)。
    1.3pc机的启动过程:(1)典型的pc部署:BIOS程序部署在pc机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,cpu在掉电时不工作。(2)启动过程:pc上电后先执行BIOS程序(实际上pc的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了)。

    1.4典型嵌入式linux系统启动过程:(1)嵌入式系统的部署和启动都是参考PC机的。只是设备上有一些差别。(2)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的flash)上、OS部署在Flash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用、CPU掉电不工作。(3)启动过程:嵌入式系统上电后先执行uboot、然后uboot复制初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就成了Flash)。

    总结:嵌入式系统和pc机的启动过程几乎没有两样,只是BIOS成了uboot,硬盘成了Flash。

    1.4android系统启动过程:(1)android系统的启动和linux系统(前面讲的典型的嵌入式系统启动)几乎一样。只是在内核启动后加载根文件系统后就不同了。
    (1)可以认为启动分为2个阶段:第一个阶段是uboot到OS启动;第二个阶段是OS启动后到rootfs加载到命令行执行;现在主要研究第一阶段,android的启动和linux的差别在第二阶段。

    总结:uboot到底干嘛?
    Uboot主要作用是用来启动操作系统内核
    Uboot还要负责部署整个计算机系统
    Uboot中还有操作Flash等板子上硬盘的驱动。
    Uboot还痛一个命令行界面供人来操作。



    为什么是uboot?

    1. uboot从哪里来?
    Uboot是sourceforge上的开源项目。
    http://www.denx.de/wiki
    uboot项目的作者,一个德国人最早发起的项目。
    Uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来得一个bootloader。
    2. uboot发展历程:
    自己使用的小开源项目;被更多人认可使用;被soc厂商默认支持。Uboot经过多年发展,已经成为事实上的业内bootloader标准。现在大部分的嵌入式设备都会默认使用uboot来做为bootloader。
    3. uboot版本号问题
    早期的uboot的版本号类似于这样:uboot1.3.4。后来版本号便成了类似uboot-2010.6
    Uboot的核心部分几乎没有什么变化,越新的版本支持的开发板越多而应,对于一个老版本的芯片来说,新旧版本的uboot并没有差异。
    4.uboot移植:uboot就是universal bootloader(通用的启动代码),通用的意思就是在各种地方都可以用。所有说uboot具有可移植性。Uboot具有在源代码级别的移植能力,可以针对多个开发板进行移植,移植后就可以在这个开发板上使用了。
    总结:uboot的出现时一种必然,如果没有uboot也会有另一个ubootloader。
    ftp://ftp.denx.de/pub/u-boot/

    uboot必须解决那些问题?
    1. 自身可开机直接启动:一般的soc都支持多种启动方式,sd启动,norflash启动,nandflash启动等。。。uboot要开机启动,必须根据具体的soc的启动设计来设计uboot 。uboot必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。Uboot中第一阶段start.S文件中具体处理了这一块。
    2. 能够引导操作系统内核启动并给内核传参:uboot终极目标就是启动目标。Linux在设计为可以被传参。我们可以在uboot中事先给linux内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后回到这个特定位置去取uboot传给他的参数,然后在内核中解析这些参数,这些参数将被用来指导linux内核的启动过程。
    3. 能够提供系统部署功能:uboot必须能够被人借助而完成整个系统在Flash上烧录下载工作。裸机中刷机就是利用uboot中的fastboot功能将各种镜像烧录到inad中,然后从inad启动。
    4. 能进行soc级和版级硬件管理:uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动INand,譬如uboot要在刷机是LCD上显示进度条就必须能驱动LCD,譬如uboot能够通过串口提供操作界面就必须驱动串口。譬如uboot要实现网络功能必须驱动网卡芯片。 SOC级(串口)就是soc内部外设,板级就是soc外面开发板上面的硬件(譬如网卡,inand)。
    5. uboot的生命周期:uboot的生命周期就是指:uboot什么时候开始运行,什么时候结束运行。Uboot本质上是一个裸机程序,一旦uboot开始soc就会淡村运行uboot.(就是uboot运行的时候别的程序是不可能同时运行的),一旦uboot结束运行则无法再回到uboot.(所以uboot启动了内核后uboot自身就死了,要想再次开到uboot界面只能重启系统。重启并不是复活了刚才的uboot,重启只是uboot的另一生 。)uboot的入口和出口。入口就是开机自动启动,uboot的唯一出口就是启动内核。Uboot还可以执行很多别的任务,但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。
    6. 总结:一切都是为了启动内核。

    Uboot工作方式:
    1. 从裸机长须镜像uboot.bin说起
    a) Uboot的本质就是一个裸机程序,和我们裸机全集中写的那些裸机程序xx.bin并没有本质区别。如果非要说要有区别,那就是:我们写的大本分小于16kb,而uboot大于16kb(一般uboot在180kb-400kb之间)
    b) Uboot本身是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生产一个uboot.bin,这就是uboot这个裸机程序的镜像文件。然后这个镜像文件被合理的烧录到启动介质中拿给soc去启动。也就是说uboot在没有运行时表现为uboot.bin,一般趟在启动介质中。
    c) Uboot运行时会被加载到内存中然后一条指令一条指令的拿给cpu去运行。
    2. uboot命令式shell界面
    a) 普通的裸机程序运行起来就直接执行了。执行时效果和代码有关。
    b) 有些程序需要和人进行互动,于是程序中就实现了一个shell,uboot就实现了一个shell。
    注意:shell不是操作系统,和操作系统一点关系都没有,linux中打开一个终端后就得到了一个shell,可以输入命令回车执行。Uboot中的shell工作方式和linux中终端shell非常像。

    3. 掌握uboot使用的2个关键点:命令和环境变量
    Uboot启动后大部分时间和工作都是在shell下完成的(譬如uboot要不是系统要在shell下输命令,要设置环境变量也得在命令行底下,要启动内核也要在命令行底下敲命令)。
    命令就是uboot中shell中可以识别的各种命令。Uboot中由几十个命令,其中一些常用另一些不常用。Uboot环境变量和操作系统的环境变量工作原理和方式几乎完全相同。Uboot在设计时借助了操作系统的设计理念。(命令行工作方式借鉴了linux终端命令行哦,环境变量借鉴了操作系统的环境变量,uboot的驱动管理几乎完全照抄了linux的驱动框架)。
    环境变量可以被认为是系统的全局变量,环境变量名都是系统内置的(认识就认识,不认识就不认识,这部分是系统自带的默认的环境变量,譬如PATH:但是也有一部分环境变量时自己添加了,自己添加的系统就不认识但我们自己认识)。系统和哦我们自己的程序在运行时可以通过读取环境变量来知道程序的运行。这样设计的好处就是灵活,譬如我们要让一个程序更改运行方法,不用去重新修改程序代码再重新编译运行,而只要修改想要的环境变量就可以了。
    环境变量就是运行时的配置属性。

    结合arm裸机部分进行理解和印证:
    及时复习arm裸机中和现在降到的相关知识点,在复习中巩固arm裸机中学到的。这过程中原来记了笔记非常容易。以及对照原来arm裸机中讲到的相关部分,可以帮助理解当前讲到的知识点。结合arm裸机中和现在讲的,好好总结,思考。
    Uboot常用命令1:类似linux终端的行缓冲命令行
    行缓冲的意思:我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区,当我们按下回车键后系统就认为我们输入完了,然后将缓冲区中所有刚才输入的作为命令拿去分析处理。
    Linux终端设计有3种缓冲机制:无缓冲,行缓冲,全缓冲。

    譬如:printenv 命令可以简化print setenv 简化为set

    Uboot的每个命令都有事先规定好的各种格式。有些命令不带参数,譬如:printenv/print命令:有些命令带可选的参数(可以带,也可以不带,)有些就必须带参数。(setenv命令)。

    命令中的特殊符号:(单引号)uboot的有些命令带的参数非常长,为了告诉uboot这个非常长而且中间有好多个空格的东西是给他的一整个参数,所以用单引号将这个很长且中间有空格隔开的参数引起来。别的符号也许也有,而且有特殊依稀,当碰到uboot的命令行有特殊符号是要注意不是弄错了,而可能又特别的含义。
    命令族:好多个命令开头都是用同一个命令关键字的,但是后面的参数不一样,这些命令的功能和作用也不同。这就叫一个命令族。
    同一个命令族中所有的命令都有极大的管理,譬如movi 开头的命令族都和moviNand(emmc,inand)操作有关。

    movi init - Initialize moviNAND and show card info
    movi read {u-boot | kernel} {addr} - Read data from sd/mmc
    movi write {fwbl1 | u-boot | kernel} {addr} - Write data to sd/mmc
    movi read rootfs {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size
    movi write rootfs {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size
    movi read {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc read"
    movi write {sector#} {bytes(hex)} {addr} - instead of this, you can use "mmc write"
    第一个命令:printenv print
    作用是打印出系统中所有的环境变量。
    环境变量就好像程序的全局变量一样。程序中任何地方都可以根据需要去调用或者更改环境变量(一般都是调用),环境变量和全局变量不同之处在于:全局变量的生命周期是在程序的一次运行当中,开始运行时诞生程序结束时死亡,下次运行程序时从头开始;但是环境变量被存储在Flash的另一块专门区域,一旦我们在程序中保存了该环境变量,那么下次开机时该环境变量的值将维持上一次更改保存后的值。

    printenv
    - print values of all environment variables
    printenv name ...
    print value of environment variable 'name'
    setenv name value ...
    - set environment variable 'name' to 'value ...'
    setenv name
    - delete environment variable 'name'

    网络测试指令:ping
    命令用法:ping ip地址
    注意:ping是测试开发板和主机之间的网络连接,注意以下步骤:
    1. 首先要插上网线。
    2. 先试图ping通主机windows。注意windows中有线网卡的地址设置(设置本地连接)。设置主机windows的本地连接IPv4地址为192.168.1.10
    3. 第三步确认开发板中uboot里几个网络相关的环境变量的值对不对。最重要的是ipaddr(这个环境变量是开发板的ip地址)。这个地址必须和主机window在同一个网段。

    主机地址(由子网掩码来区分那一部分是网段地址,那一部分是ip地址)。在子网掩码是255.255.255.0的情况下,192.168.1.10这个ip地址的前三部分(192.168.1)属于网段地址,第4部分(10)属于主机地址。
    展开全文
  • uboot-2008-10之支持命令行历史记录、命令补全   1、描述  之前有做Uboot移植实验时,是从最小系统做起的,当时未能移植命令行历史记录、命令补全功能。每次只要输入一个单词错误,uboot就提示未定义指令。按...

    uboot-2008-10之支持命令行历史记录、命令补全

     

    1、描述

              之前有做Uboot移植实验时,是从最小系统做起的,当时未能移植命令行历史记录、命令补全功能。每次只要输入一个单词错误,uboot就提示未定义指令。按下向上键都跑到输出结果的那行了。这样子只得按复位键重启,然后小心翼翼的输入指令。后来看了下友善之臂官网的uboot移植手册,才知道其实很简单。

            u-boot的shell使用的是HUSH shell,来自busybox的那个HUSH shell。hush.h在./include/里面,hush.c在./common里面,对比busybox那个hush.c发现u-boot的这个少很多(单从文件大小来看,具体没能力研究),应该是减少很多功能了。再去查busybox用了哪些shell,结果有msh shell、ash shell、hush shell,看busybox的配置(make menuconfig命令)时,

     2、做法: 

    只要在开发板相关的头文件,如mini2440.h定义下面两个宏,就能实现命令自动补齐、命令历史功能。 

    #define CONFIG_CMDLINE_EDITING
    #define CONFIG_AUTO_COMPLETE

    展开全文
  • Uboot 中的hush shell

    千次阅读 2017-06-16 15:36:37
    今天有一个要求,要在uboot启动后不断的执行一些命令。方法记录一下: 1.直接改代码,比较麻烦。...3.还有一个方法是使用hush shelluboot中定义了CONFIG_SYS_HUSH_PARSE就可以支持, 网上有资料说uboot中的hush shel
  • 使用Buildroot制作Uboot&Kernel&Rootfs

    千次阅读 2020-02-04 12:38:34
    一开始接触Buildroot的时候是参考的N厂大佬的文章,经过各种填坑,终于算是能够熟练使用Buildroot了。下面介绍常用使用流程工具链,欢迎fork!! 一、工具链的构建 首先选择芯片类型,然后进入Toolchain选项配置...
  • Exynos4412 Uboot 移植(一)—— Uboot 编译流程分析

    万次阅读 多人点赞 2016-03-04 22:33:11
    Uboot 所用版本 u-boot-2013.01  u-boot-2013.01 中有上千文件,要想了解对于某款开发板,使用哪些文件、哪些文件首先执行、可执行文件占用内存的情况,最好的方法就是阅读它的Makefile。 根据顶层Readme文件的...
  • uboot菜单实现全过程

    千次阅读 2012-07-31 23:30:23
    这个菜单其实就是一个uboot中的命令,uboot启动时,如果进入下载模式,就先运行这个命令。 命令的执行内容就是通过串口打印出一个菜单,等待用户输入,再执行相应的动作。 先自己写一个cmd_menu.c的文件,放到...
  • 烧写uboot

    千次阅读 2019-09-07 12:50:21
    uboot烧写1/在裸板上烧写uboot 通过jtag接口H-Jtag软件,针对PC并口 JLINK套件jlink软件//testwspeed //speed 115200 jflash软件//配置/connect program 烧写器反正我用的烧写器可以,不推荐使用什么烧写器芯片厂商...
  • 嵌入式linux之Uboot和系统移植--基础

    千次阅读 2016-10-04 17:27:16
    uboot和系统移植-第1部分-uboot学习前传》 (观看朱友鹏老师视频后整理的笔记)   1.为什么要有uboot 2.为什么是uboot 3.uboot必须解决哪些问题 4.uboot的工作方式 5.uboot的常用命令1 6.uboot的常用命令...
  • Uboot 和 Linux启动流程

    万次阅读 2014-04-07 19:58:43
    Uboot启动流程 第一阶段:关闭看门狗,设置系统时钟,初始化RAM,复制第二阶段的代码到内存中,设置好栈,跳转到第二阶段的C语言入口点。 第二阶段:检测内存映射,将内核映像和要传给内核的参数从flash复制到内存中...
  • uboot 内存布局及启动过程

    千次阅读 2017-01-29 10:42:56
    该布局由uboot.lds 文件定义,在链接时候生成相应的二进制映像。 首先定义起始地址为 0xc3e00000,接下来是中断向量表(Vector),大小为256字节,按每个中断向量占用4个字节的跳转地址算,做多可以有64
  • 说是移植,其实就是编译,不管怎样,u-boot 2016.05已经成功的支持stm32f429i-Discovery了!!因为我在编译最新的Linux 4.5内核时,发现已经支持:stm32f429i-Discovery,并且编译成功并能生成uImage xipimage等!!...
  • u-boot配置挂载NFS根文件系统

    千次阅读 2014-09-03 08:57:28
    一、在linux系统主机安装NFS服务器  在ubuntu10.04安装命令为:  sudoapt-get install nfs-kernel-server 二、配置nfs服务器  在ubuntu安装完ssh服务器后默认开机启动,其他linux发行版具体安装与启动...
  • 什么是ubootuboot有什么用?

    千次阅读 2019-10-17 09:11:19
    一、为什么要有uboot 1.1、计算机系统的主要部件        (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑...
  • 硬件平台:tiny4412系统:linux-3.5-20151029文件系统:busybox-...本文将记录从零使用uboot在tiny4412上搭建linux系统的。由于之前只是学了2440,完成这个流程也遇到各种,现在总结如下。其中参考了多篇博客才得以
  • C-Kermit在linux 的安装和使用

    万次阅读 2012-05-03 11:08:33
    1. 到... 版本:0.9 因为较低的版本不支持波特率921600 2.编译ckermit tar xzvf x.tar.gz -C ckermit cd ckermit make linux 编译成功后, 会产生可执行文件wermit 3.描述 |--
  • 内核编译直接生成uImage----make uImage

    千次阅读 2013-09-24 21:31:21
    在编译内核的时候,一般直接使用make uImage是不可以的,会出现时一下错误 UIMAGE arch/arm/boot/uImage "mkimage" command not found - U-Boot images will not be built Image arch/arm/boot/...
  • 02. Uboot配置与编译

    千次阅读 2018-07-02 09:26:38
    1. uboot源码目录分析 x210 uboot目录结构如图所示 说明1:x210使用的uboot版本相对较早(2008年8月版本),目前较新的uboot目录结构有所调整 ① 增设了arch目录,统一管理不同架构的cpu和lib_arch目录 ② 将...
  • 欢迎扫码关注微信公众号:柒零玖嵌入式,更多嵌入式软硬件相关分享!硬件平台:自制imx6ul(详见http://blog.csdn.net/fengyuwuzu0519/article/details/79133851)系统:linux-4.1.15文件系统:busybox-1.22.1.tar....
1 2 3 4 5 ... 20
收藏数 2,585
精华内容 1,034
关键字:

uboot下支持shell