uboot

uboot前传

久未见 提交于 2020-02-15 12:33:37
1. uboot到底是干嘛的 uboot主要作用是用来启动操作系统内核。 uboot还要负责部署整个计算机系统。 uboot中还有操作 Flash等板子上硬盘的驱动。 uboot还得提供一个命令行界面供人来操作。 2.uboot 必须解决哪些问题 自身可开机直接启动 能够引导操作系统内核启动并给内核传参: uboot的终极目标就是启动内核,uboot事先把要传递的参数放在特定的位置,这些参数将被用来指导 linux内核的启动过程 能提供系统部署功能 能进行 soc级和板级硬件管理 3.uboot的 “生命周期 ” uboot的入口就是开机自动启动, uboot的唯一出口就是启动内核,启动内核命令一旦执行就回不来了。 4. uboot 的工作方式 uboot的本质就是一个裸机程序,由若干个 .c文件和 .h文件组成,配置编译之后会生成一个 uboot.bin,这就是 uboot这个裸机程序的镜像文件。然后这个镜像文件被合理的烧录到启动介质中拿给 SoC去启动 uboot启动后大部分时间和工作都是在 shell下完成的(譬如 uboot要部署系统要在 shell下输命令、要设置环境变量也得在命令行地下,要启动内核也要在命令行底下敲命令) uboot的环境变量和操作系统的环境变量工作原理和方式几乎完全相同,环境变量可以被认为是系统的全局变量,环境变量名都是系统内置的

【JokerのZYNQ7020】Vxworks 6.9。

坚强是说给别人听的谎言 提交于 2020-02-11 01:31:21
软件环境:vivado 2017.4 硬件平台:XC7Z020 基本全程参考的官方xapp1158-zynq-7000-vxworks-bsp.pdf,但我感觉主要难度不在移植上,因为pdf里面写的已经非常详细了,而在于你是否有license能装vxworks,除了xapp1158之外,xapp1258-vxworks-7-bsp.pdf,也是一个相关的将vxworks移植到zynq的指导手册。接下来以xapp1158为例,简单说下移植过程。 手册一打开刚开始就介绍了zynq启动的一个流程,总共分为3个阶段。 阶段0时候会根据外管脚电平状态来选择启动模式,并将FSBL从外管脚配置的boot设备复制到片上RAM中; 阶段1时候FSBL从片上RAM启动,加载比特流文件将PL部分配置好,然后将UBoot加载到DDR启动; 阶段2时候UBoot启动,进一步引导kernel和ramdisk,最终系统运行。 接下来提到了,安装workbench时候不要忘记勾选zynq-7000的BSP。 一切装好之后,file---new---project,选择vxworks image project。 填写工程名后,下一步,不要忘记勾选Enable WDB Target Agent。 下一步之后,选择PROFILE_DEVELOPMENT。 finish之后,在左侧工程下方有个kernel

uboot移植

半世苍凉 提交于 2020-02-09 00:15:50
总体分析:你的目的是什么? 你的计划是什么? 你会碰到什么问题? 你怎么解决的问题? 你今天做了该做的事情了吗? 你今天能把该做的事情做完吗? 修改注意事项有什么? 注意:Toodir 中的Makefile 中的路径nand_spl/board/samsung/smdk6410 未作更改 出现nand BUG 测检查nand_spl/board/samsung/oko6410 下面的config.mk 你对S3C6410 的了解到了什么程度? 给数据手册制作书签,方便查询……一个一个找太累了!!! 调试技巧:将修改的部分做Mark by xcc 方便调试。 启动成功,flash 初始化问题。 增加一个任务:移植一个Linux ,内核版本暂定为3.1 吧。 第一步:建立开放环境 碰到的问题:交叉编译环境在AMD平台的虚拟机上面出现硬件编译环境不支持的问题。Arm-linux-gcc:souch file cannot found 解决办法:自建交叉编译环境 第二步:分析 实现目标: 本次移植的功能特点包括: 支持Nand Flash读写 支持从Nor/Nand Flash启动 支持CS8900或者DM9000网卡 支持Yaffs文件系统 支持USB下载(还未实现) 1, 了解u-boot主要目录结构和启动流程,阅读代码 2, 生成了基本的uboot.bin,烧写到开发板上

启动时间优化,内核裁剪

假装没事ソ 提交于 2020-02-08 03:34:28
linux系统启动优化5个部分: 1,开机时钟时序优化; 2,Uboot优化; 3,Kernel优化; 4,Rootfs优化; 5,应用程序优化; ROM Code : NAND内固化好的一段代码,主要作用是初始化CPU、DDR等硬件。 U-Boot : 初始化串口、网口等硬件设备,并引导系统加载内核镜像到DDR中执行。 Kernel : 负责内核子系统初始化,挂载根文件系统,加载各模块的驱动程序。 Rootfs : linux内核外围的一个应用环境。 Apps : 包括图丁系统以及图丁系统下开发的所有应用程序。 1,ROM code基本动不了,涉及到硬件时序,修改的话可能影响系统稳定性。 2,Uboot优化:删除部分命令;禁止启动延迟;禁止内核镜像校验;修改内核镜像加载方式;优化U盘升级文件扫描时间 Uboot拥有较多命令: 如环境变量设置命令setenv、跳转至内存物理地址的命令bootm等等。 在非调试状态下,可以通过裁剪部分命令来加快uboot的启动速度。(实际上,想通过裁剪命令加快启动速度,就是扯淡) 启动过程用到的命令: 【bootcmd : mmc,run loadimage/mmcboot,bootm】 【loadimage : fatload】 【mmcboot : echo,run mmcargs,test,bootz】 【mmcargs : setenv】

硬改 WR340G+ ubnt 路由器中继

爱⌒轻易说出口 提交于 2020-02-07 10:44:26
8M 的 Flash,32M 的 RAM, ar2317/88e6060,某宝上搜索一大把。电源机子邮费一共 30 个大洋,虽然只有 54M,仅上网的话绰绰有余,如果用作 wlan 共享或下载建议用更大带宽的路由。天气好的话,隔两堵墙,20米,速度能跑满; 环境嘈杂还是会丢包,要求不极端也能用。 一般卖家会刷入带有 uboot 的固件。个人理解这是一个很小的 bootloader,提供一个刷固件的界面,还能在启动时调整 CPU 的时钟参数,之后将控制权转到真正的系统,比如 OpenWrt,dd-wrt,ubnt等。 按住路由器 RESET 键,接通电源,连接电脑,设置电脑 IP 为 192.168.1.22 , 192.168.1.1 就是 uboot 的控制台。 要刷固件,到 固件更新 选项卡,点 编程器固件 标签,选择固件文件,并勾选 保留现有 U-Boot 即可。这里固件的要求的「编程器」固件,并且要带有 uboot。我也搞不清楚所谓「带 uboot 的编程器固件」到底是什么意思,姑且认为是覆盖整个 Flash 的镜像吧,而带有 uboot 表明该固件的头 250K 是 uboot 的代码和配置,之后才是路由系统的代码。刷的时候 保留现有 U-Boot 就跳过了镜像的头 250K,这样就保留了原来的设置。 dd-wrt 和 ubnt 固件: http://pan.baidu

RP-PX30平台uboot编译脚本分析二:prepare 执行的make动作(1)

旧城冷巷雨未停 提交于 2020-02-03 00:42:06
prepare() { local absolute_path cmd dir count # Parse output directory 'O=<dir>' cmd=${OUTDIR%=*} if [ "${cmd}" = 'O' ]; then OUTDIR=${OUTDIR#*=} OUTOPT=O=${OUTDIR} else case $BOARD in #Help --help|-help|help|--h|-h) echo "HELP--" help exit 0 ;; # Parse from exit .config ''|elf*|trust|loader|uboot|map|sym) count=`find -name .config | wc -l` dir=`find -name .config` echo "BOARD = " $BOARD # Good, find only one .config if [ $count -eq 1 ]; then dir=${dir%/*} OUTDIR=${dir#*/} echo "dir = " $dir echo OUTDIR= $OUTDIR # Set OUTOPT if not current directory if [ $OUTDIR != '.' ]; then OUTOPT=O=$

嵌入式Linux系统:基础知识

試著忘記壹切 提交于 2020-02-01 20:51:06
1、计算机系统=运算器+控制器+存储器+输入设备+输出设备; CPU(中央处理器)=运算器+控制器+寄存器+内部总线; MPU(微处理器)=CPU; MCU(微控制器)=CPU+存储器+外围电路; MPU 通常代表一个 CPU(中央处理器),而 MCU 则强调把中央处理器、存储器和外围电路集成在一个芯片中。 早期,微控制器被称为单片机,意思是把计算机集成在一个芯片内。嵌入式微控制器也常被称作片上系统(SoC),含义是在一个芯片上设计了整个系统。 举个例子, Intel 的 80386 属于微处理器,而内部集成了 80386 处理器、片选单元、中断控制、定时器、看门狗、定时器、串行 I/O、 DMA、总线仲裁、 DRAM 控制器等的 386EX 则是 80386 微处理器的微控制器版本。嵌入式微控制器一般由一个 CPU 核和多个外围电路集成。 2、单片机属于微控制器(MCU),高端的arm(ARM9、ARM11、A8、A9)属于微处理器(MPU)。两者的区别在于MPU多了两个部件高速缓存(CACHE)、内存管理单元(MMU)。 3、裸机程序就是直接对CPU进行编程,Linux编程是基于Linux操作系统进行的编程。 4、Exynos4412启动流程:iROM→BL1→BL2→uboot→zImage(linux 内核)→挂接文件系统。 0地址就是iROM,iROM在4412内部

系统移植-官方Uboot编译

醉酒当歌 提交于 2020-01-27 01:06:24
资料来源:正点原子嵌入式Linux 开发板烧写: 工具:mfgtool uboot文件:Mfgtool2-eMMC-ddr512-eMMC 何为Uboot? uboot就是一个bootloader,作用就是用于启动Linux或其他系统。Uboot最主要的工作就是初始化DDR。因为Linux是运行在DDR里面的。一般Linux镜像zImage(uImage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI FLASH等等外置存储区域。Uboot的主要目的就是为系统的启动做准备,将Linux镜像从外置flash拷贝到DDR中。Uboot与linux不是一一对应的,uboot还可以启动其他操作系统,linux也可以用其他bootloader启动。 烧写Uboot 编译指令: #!/bin/bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12 编译完成生成u-boot.imx,将imx文件拷贝到PC,利用mfgtool烧写 u

开发板刷系统

给你一囗甜甜゛ 提交于 2020-01-26 14:08:12
自从学习Linux,这是我第二次拿出开发板了,果然嵌入式Linux的学习相比但单片机的学习更漫长且复杂,我也不知道自己最终会如何,刚好今天是大年初一,写笔记前顺便写个随笔小愿望: 2020,武汉加油!中国加油!愿人们早日战胜病魔,迎来美好的春天, 也祝父母:身体健康,开心快乐每一天 baby:2020也是爱你的一年,祝这个开心果越来越美腻,感谢我能遇到对的人。 自己:Linux小白成长之路一切顺利! 下面开始切入正题了 依旧参考朱老师的PPT和笔记 一、什么是刷系统 刷系统就是利用刷机工具,向开发板中烧录预先编译好的系统镜像,使之在开发板上运行起来。 二、串口输出的意义(做系统控制台) 串口是一种硬件通信口,很多年前的时候串口是CPU之间进行通信的主要接口。但是现在因为串口通信的速度很低,所以现在串口主要是用来做程序输出监控、调试。 桌面电脑可以打开一个虚拟控制台,嵌入式系统一般是用串口来做控制台的。一般是用一根串口线连接开发板的串口和我们笔记本电脑的串口,然后在电脑上打开一个串口监视,这样开发板上的串口输出内容就可以在电脑上看到。还可以通过监视终端向开发板输入一些控制命令由开发板执行。常用的串口监视软件有:超级终端、SecureCRT、minicom 三、安装USB转串口线的驱动 本来电脑都是有串口的(DM9接口),但是现在大家都用笔记本没有串口了,所以这种串口连接线用不了

uboot引导过程

我只是一个虾纸丫 提交于 2020-01-26 08:07:13
u-boot源代码的目录结构 1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。 2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。 3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。 4、Doc是文档目录,有u-boot非常完善的文档。 5、Drivers中是u-boot支持的各种设备的驱动程序。 6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。 7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。 8、lib_xxx与体系结构相关的库文件。如ARM相关的库放在lib_arm目录下。 9、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。 10、Tooles是生成U-boot的工具。 start.S -> start_armboot () -> main_loop () main_loop()会调用abortboot (bootdelay)判断在delay time内有没有键按下,并给出“Hit any key to stop autoboot”,若没有键按下则run_command (s, 0)(s为默认的bootcmd)。这里默认的bootcmd需要根据内核的位置设置