uboot

uboot启动第一阶段

混江龙づ霸主 提交于 2019-12-03 14:41:18
  s5pv210的irom代码读取sd(mmc通道3)中的16kB(uboot第一阶段代码)到iram的0xd0020010中校验通过后开始执行 第一条指令位于cpu/s5pc11x/start.S 1   _start: b reset(第57行) 2  第149行设置CPU位svc模式禁止irq和fiq 3  200~204设置cache 4  209~211设置TLB和icache 5  216~221设置cp15的c1禁止mmu和cache 6  225~227读启动信息(CORTEXA8将启动信息保留在0xE0000004中) 7  243~278将我们设置的启动标志保存在寄存器中 8  284~286设置栈 9  288 bl lowlevel_init (位于board/samsung/x210) 10  46~52(lowlevel_init) 根据复位状态跳转,冷启动则顺序执行 11  61~64(lowlevel_init)关看门狗 12  100~104(lowlevel_init)锁存上电信号 13  110~115(lowlevel_init)判断当前uboot在sram还是DDR中 14  118 bl system_clock_init初始化时钟系统 15  121 bl mem_ctrl_asm_init 初始化内存 16  125 bl uart

重定位

守給你的承諾、 提交于 2019-12-03 13:40:37
一、链接地址   程序编译时指定的地址,通过-Ttext参数指定的地址,它是理论上程序在运行时所处的地址。 二、加载地址   程序在运行时实际所处理的地址。    注意:链接地址与加载地址不能保障一定一样。 三、位置有关代码   如果程序的链接地址与加载地址不符,程序就无法运行,或运行错误中的代码叫位置有关代码。 四、位置无关代码   如果程序的链接地址与加载地址不符,程序依然能够i有正确运行,这种代码叫位置无关代码。   可以简单的认为使用了BL的代码叫位置有关代码,而没有使用BL的叫位置无关代码。 五、再论S5PV210的启动过程   1.iROM中的固定程序会从SD中拷贝16~96KB的程序先进行环境初始化(设置时钟、初始化内存、开看门狗)。   2.然后再把剩余的程序从SD卡中拷贝到SDRAM中。   3.把开发板上的所有资源都初始化好,为OS的运行做好准备。   4.拷贝OS到SRAM中,启动OS。 六、什么是重定位   uboot为了兼容大多数CPU并不会这样,而先把uboot的前96KB拷贝到SRAM中,然后初始化,再把完整的uboot拷贝到SDRAM中。   因此uboot的前96KB的程序就会在不同的位置运行两次,所以一定会出现链接地址与加载地址不符的情况。   具体的做法是先把uboot拷贝到SRAM中只运行少量的位置无关代码,然后再把程序拷贝到正确位置

TFTP服务器搭建

我的未来我决定 提交于 2019-12-03 04:43:07
TFTP服务器搭建 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。那么怎么搭建TFTP服务器呢?具体步骤如下: 安装服务器、客户端和守护进程 #sudo apt-get install tftp-hpa tftpd-hpa xinetd 服务器配置 首先,在根目录下建一个 tftpboot,并把属性改成任意用户可读性: #cd / #sudo mkdir tftpboot #sudo chmod 777 tftpboot 然后,进入目录 /etc/xinetd.d/,并在其中新建文件tftp ,把指定的内容加入到 tftp文件中: #cd /etc/xinetd.d/ #sudo vi tftp 添加以下内容到 tftp文件 service tftp { disable = no 138 socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot –c per_source = 11 cps = 100 2 } 最后,修改配置文件 /etc

uboot操作指令

匿名 (未验证) 提交于 2019-12-03 00:37:01
用于将内核镜像加载到内存的指定地址处 bootm 0x82000000 常用环境变量列表: bootdelay 执行自动启动(bootcmd中的命令)的等候秒数 baudrate 串口控制台的波特率 bootfile 默认的下载文件名 bootargs 传递给Linux内核的启动参数 bootcmd 自动启动时执行命令 stdin 标准输入设备, 一般是串口 stdout 标准输出, 一般是串口,也可是LCD(VGA) stderr 标准出错,一般是串口,也可是LCD(VGA) serverip TFTP服务器端的IP地址 ipaddr 本地的IP地址 ethaddr 以太网的MAC地址 netmask 以太网的网络掩码 gatewayip 以太网的网关 修改环境变量 第1个参数(setenvname)是环境变量的名称。 第2个参数(value)是要设置的值,如果没有第2个参数,表示删除这个环境变量 setenv serverip 192.168.1.12 //添加环境变量serverip 其值为 192.168.1.12 setenv serverip 192.168.1.20 //在上一行的基础上把环境变量serverip 值重新赋为 192.168.1.20 setenv serverip //把 serverip 变量删除 保存环境变量 查看环境变量 使用该命令返回:

Exynos4412 Uboot 移植(一)―― Uboot 编译流程分析

匿名 (未验证) 提交于 2019-12-03 00:33:02
转载地址: https://blog.csdn.net/zqixiao_09/article/details/50805205 Uboot 所用版本 u-boot-2013.01 u-boot-2013.01 中有上千文件,要想了解对于某款开发板,使用哪些文件、哪些文件首先执行、可执行文件占用内存的情况,最好的方法就是阅读它的Makefile。 根据顶层Readme文件的说明: 可以知道如果使用开发板board/<board_name>,就先执行 “make <board_name>_config” 命令进行配置,然后执行 “make all”, 就可以生成如下3个文件: U-Boot.bin :二进制可执行文件,它就是可以直接烧入eMMC中的文件。 U-Boot : ELF格式的可执行文件。 U-Boot.sre c : 摩托罗拉格式的可执行文件。 对于Exynos4412开发板,这里用的其实是Fs4412,执行 “make fs4412_config" 、“make all"后生成的 u-boot-fs4412.bin 可以烧入eMMC中执行。 一、U-Boot 配置过程 1、在顶层Makefile中可以看到如下代码: 假定在u-boot-2013.01的根目录下编译,则其中的MKCONFIG 就是根目录下的 mkconfig文件(mkconfig是shell脚本文件) 。 %

sama5d2 米尔核心板 tftp方式 更新 文件系统

匿名 (未验证) 提交于 2019-12-03 00:32:02
在window 7 64位PC 上: 该PC的IP地址为:192.168.99.219 以管理员权限 启动tftpd32.exe: 参考地址: https://www.at91.com/linux4sam/bin/view/Linux4SAM/BuildRootUse 板子需要插上网线: 板子进入uboot模式: 进入uboot:配置tftp服务: setenv serverip 192.168.99.219 setenv ipaddr 192.168.99.53 setenv ethaddr 00:01:02:03:04:05 saveenv 重启板子 再次 进入 UBOOT模式: 1 ,erase the nand flash root file system partition (in our case nand flash size is about 256 MB) U-Boot> nand erase 0x800000 0xF800000 2, download the UBI file system from TFTP to the board RAM (address 0x20000000) tftp 0x20000000 sama5d2x-rootfs .ubi 步骤类似如下: U-Boot> tftp 0x20000000 buildroot_2012 .11

iMX6Q Sabresd Board SPL Mode

匿名 (未验证) 提交于 2019-12-03 00:32:02
uboot 2014以后的版本已经加入了支持快速启动的spl模式,本文用iMX6Q-SDP开发板做个简单讲解 在官方的yocot中下载fsl-L4.9.11_1.0.0-ga版本代码并编译,提取出uboot和kernel做为SPL模式的示范 看一下uboot官方对SPL和过去对比的描述 如下是denx对spl的描述 如下是SPL模式的简易时序图 如下针对iMX6Q Sabresd SD开发板打开SPL模式 uboot部分 开发板对应的配置文件为mx6qsabresd_defconfig 打开SPL模式需要在配置文件加入一个宏CONFIG_SPL=y 但此时还没达到快速启动的目的,需要跳过uboot直达kernel才行:boot_rom --> SPL --> kernel 为此查看uboot/README的SPL framework部分 CONFIG_SPL 此项我们在defconfig中已经打开 CONFIG_SPL_OS_BOOT 有一项说明了从SPL跳转到kernel需要打开此宏 在include/configs/mx6_common.h中加入定义#define CONFIG_SPL_OS_BOOT,然后编译 得到如下明确的错误提示 在uboot/README or 查阅未定义的宏得知具体含义 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR,

从零开始的UBOOT的学习11-为Ubuntu安装合适的交叉编译工具链

匿名 (未验证) 提交于 2019-12-03 00:30:01
从零开始的UBOOT的学习11-为Ubuntu安装合适的交叉编译工具链 参考朱有鹏UBOOT全集 1、我们使用S5PV210的开发板,所以我们需要使用arm-none-linux-gnueabi编译工具链 (1)第一步:获取交叉编译工具链arm-2009q3.tar.bz2 (2)第二步:放置在Ubuntu中的某一个合适的目录下面,这里我们使用/user/local/arm其中里面是没有arm目录的,这里需要我们自己配置和安装arm目录。 (3)安装交叉编译工具链:这里就是使用解压的命令: tar -jxvf arm-2009q3.tar.bz2 此时,已经安装好了交叉编译工具链了,但是此时这个交叉编译工具链仅仅只能在这个目录上面使用。 2、使用自己的安装的交叉编译工具链在Ubuntu的所有的目录下面使用 (1)使用Ubuntu中Linux系统自带的环境变量PATH 此处的环境变量就是说明,Ubuntu在执行应用程序中,查找的应用程序源的目录,如果在这些目录中没有找到相应的应用程序,那么Ubuntu就会上报command not found这类的字样。 (2)将工具链导出到环境变量当中: export PATH=/user/local/arm/arm-2009q3/bin:$PATH 当前不管切换到哪个目录下面,都可以执行这个应用程序。 解决方法就是:~/.bashrc中

IMX6Q(TQIMX6Q_BASEC_V1) kernel

匿名 (未验证) 提交于 2019-12-03 00:26:01
本文转载自girlkoo 大侠的博客,仅仅修改了设备树gpio_cd引脚的状态 以及 uboot参数。 原文链接如下: https://blog.csdn.net/girlkoo/article/details/45439687 前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动。 准备工作 每次移植kernel的时候都会做的工作就是找到与当前开发板接近的config,其实uboot移植的时候也是一样的。由于tqimx6q的芯片是imx6q的,所以,还是以mx6q_sabresd为例。另外,自己动手移植BSP时应该充分使用官方文档,本人以为,以下文档是非常有用的: (1) i.MX 6 BSP Porting Guide: 该文档详细的记载了BSP移植的流程。 在第二份文章中搜索defconfig,就可以找到imx6q使用的config文件是:imx_v7_defconfig,如果直接在arch/arm/configs目录下grep搜索MX6Q的话,可以搜到三个文件,其实也是可以确认使用哪个配置文件比较合适的。 内核移植 确定好了配置文件,接下看就开始内核移植。本文的目前不是移植好所有的驱动,而是先让内核能够在tqimx6q开发板上跑起来,接下来再去慢慢各个击破驱动。 Step1.