uboot

Freescale Ltib-MPC8308安装,编译,烧写uboot

此生再无相见时 提交于 2020-11-08 07:24:16
. Freescale-MPC8308/MPC8315 MPC8315E-RDB (Reference-Design-Board) PowerQUICC II Pro Processor; 内置security accelerate; . tlib-MPC8308: 参考: http://www.360doc.com/content/13/1112/16/11948835_328668430.shtml ------------------------------------------------------------------------------- 在VM(Fedroa9)上建立交叉编译环境 . 安装步骤(in Fedora9) (TLIB是Freescale比较早期开发的跨平台交叉编译包, 所以不建议在新近的Linux上运行) (TLIB建议在Redhead系Linux上运行) (故我们最终选择Fedroa9平台 with GCC4.3) 原始文档: ltib-mpc8308erdb-20100413.iso; 首先mount该iso: mount -o loop ltib-mpc8308erdb-20100413.iso /mnt/ltib 安装: cd /mnt/ltib ./install 安装时程序会提示要安装的目录, 本例中设置目录为 ~/WorkShop;

u-boot-1.1.6第2阶段入口函数start_armboot分析

妖精的绣舞 提交于 2020-04-03 17:58:10
学习目标: 1、分析u-boot-1.1.6第2阶段入口函数void start_armboot (void),熟悉该函数所实现的功能 2、为后面能够掌握u-boot-1.1.6如何启动内核过程打下基础 前面通过对uboot第一阶段代码的分析,我们了解的uboot第一阶段所做的一些工作,并且找到了其第二阶段的入口函数void start_armboot(void)。为了能够在清楚理解uboot启动内核的机制,还需要对第二阶段代码进行分析。第二阶段入口函数void start_armboot(void)存放在board.c文件中,该文件位于uboot根目录下的lib_arm文件夹中。 1.gd_t数据结构分配内存 /* Pointer is writable since we allocated a register for it */ gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t)); //为gd_t结构体变量开辟空间 /* compiler optimization barrier needed for GCC >= 3.4 */ //并使得gd指针指向该空间初始位置 __asm__ __volatile__("": : :"memory"); memset ((void*)gd, 0, sizeof (gd

uboot中的命令解析

落爺英雄遲暮 提交于 2020-03-31 15:41:26
最近有点空了,就看了点开发板的UBOOT源码(主要是去分析如何解析命令)。 uboot最开始执行的代码是汇编,在标签 _start处开始,后面有了个中断向量表(主要是为个让这点代码被放有地址0x0处),用汇编程序是它可以保证这点代码就在0X0处。 .globl _start _start: b reset //上电后执行的第一行,跳到reset处。   ldr pc, _undefined_instruction //未定义中断   ldr pc, _software_interrupt //软中断   ldr pc, _prefetch_abort   ldr pc, _data_abort   ldr pc, _not_used   ldr pc, _irq   ldr pc, _fiq 进入到后, 之后设置,CPU工作在SVC32 模式, 对设备要完成很多的设置,这里不详讲。 在汇编的最后 ldr pc, _start_armboot //PC指针指向start_armboot函数,在/lib_arm/board.c中 在这个函数里做了很多数据的初始化工作, start_armboot在最后用了一个for(;;)死循环,之后调用了main_loop();在/common/main.c中。在这里用死循环的主要原因是防止main_loop的调用没有成功执行。 1 在main

uboot的中断向量初始化

柔情痞子 提交于 2020-03-22 07:33:48
第一层引导程序的开始部分如下,正常启动的情况下程序从_start入口执行(config.mk定义,地址为0x00000000)。 但是开始有个疑问:就是_start入口后,第一个指令就执行了b reset,进入了reset标签,正常启动了,对于改指令后的红色部分,并不能有效执行,怎么才能把中断向量正常初始化呢?(中断函数在其他地方也没有执行、或定义过,只有此地方)。 经查,根据s3c2440的定义,中断向量的定义,是固定定义在0x0000000开始的地址上的,比如reset中断的地址是0x00000000,undefined_instruction是0x00000004,.......,这就可以解释了,编译时在固定位置上存储指定的中断处理方式即可(就是直接存储中断函数到pc,进行中断跳转)。而正常情况下是不需要执行的! 之所以执行b reset,是因为在启动时,中断已经发生了(重启)。 .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq _undefined_instruction:

3、将uboot,kernel,rootfs下载到开发板上

心不动则不痛 提交于 2020-03-09 19:05:47
将uboot,kernel,rootfs下载到开发板上 1、为什么要下载 所谓下载,也称烧录,部署。 1.1、什么是u-boot Hi3518EV200 单板的 Bootloader 采用 U-boot。 u-boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。 1.2、什么是kernel 烧录完uboot之后,开始烧录kernel。Kerne是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。操作系统必须要以内核为基础运行,内核提供最基本的对计算机的操作,并且让计算机底层尽量安全和容易管理。 1.3、 什么是rootfs 根文件系统是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中

uboot环境变量实现分析

末鹿安然 提交于 2020-03-05 08:16:13
u-boot 的环境变量 用来存储一些经常使用的参数变量, uboot 希望将环境变量存储在静态存储器中(如 nand nor eeprom mmc )。 其中有一些也是大家经常使用,有一些是使用人员自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量: bootdelay 执行自动启动的等候秒数 baudrate 串口控制台的波特率 netmask 以太网接口的掩码 ethaddr 以太网卡的网卡物理地址 bootfile 缺省的下载文件 bootargs 传递给内核的启动参数 bootcmd 自动启动时执行的命令 serverip 服务器端的 ip 地址 ipaddr 本地 ip 地址 stdin 标准输入设备 stdout 标准输出设备 stderr 标准出错设备 上面这些是 uboot 默认存在的 环境变量,uboot 本身会使用这些环境变量来进行配置。我们可以自己定义一些环境变量来供我们自己 uboot 驱动来使用。 Uboot 环境变量的设计逻辑是在启动过程中将 env 从静态存储器中读出放到 RAM 中,之后在 uboot 下对 env 的操作(如 printenv editenv setenv )都是对 RAM 中 env 的操作,只有在执行 saveenv 时才会将 RAM 中的 env 重新写入静态存储器中。 这种设计逻辑可以加快对 env

uboot官方nkconfig脚本分析

…衆ロ難τιáo~ 提交于 2020-03-01 21:01:47
1、解析这个文件boards.cfg,把boards.cfg配置的那一行代码弄过来,赋值给line ,指明$1'$2.....$8[25-36] $1 = Active $2 = arm $3 = armv7 $4 = s5pc1xx $5 = samsung $6 = goni $7 = s5p_goni $8 = - 2、给CONFIG_NAME赋值 [52] 3、给变量赋值,使arch=arm,cpu=armv7,board=goni,vendor=samsung,soc=s5pc1xx 4、输出提示信息,配置的时候生成这句话“Configuring fors5p_goni_config board...” 5、创建符号链接 6、创建config.mk [129-143] 7、指明board文件路径 [145-151] 8、创建config.h 来源: https://www.cnblogs.com/zyj23/p/12391833.html

uboot研读笔记 | 09 - 移植uboot 2012.04到JZ2440(设置默认环境变量参数)

╄→尐↘猪︶ㄣ 提交于 2020-03-01 10:40:29
1. 定位环境变量问题 目前移植的uboot支持SDRAM、Nor Flash、Nand Flash、DM9000网卡,但是还有一行警告没有处理: 这行警告的原因是没有设置环境变量参数,所以uboot启动时读取校验参数失败,使用默认的参数。 通过搜索这行日志内容找到所在位置: 在 common/env_common.c 文件中找到该行代码所在函数: 该函数中主要使用的 default_environment 数组,接着查看该数组内容,同样定义在该文件中,该数组的功能是 根据我们定义的宏定义来设置默认环境变量参数 。 2. 设置默认参数 在单板配置文件 include/configs/smdk2440.h 中配置这些相关宏定义: 2.1. 内核启动相关 CONFIG_BOOTARGS 宏定义是启动内核时要传入的参数,添加配置如下: /* 内核启动相关ENV */ # define CONFIG_BOOTARGS "console=ttySAC0,115200 root=/dev/mtdblock3" # define CONFIG_BOOTCOMMAND "nand read 30000000 kernel 0x200000;bootm 30000000" 2.2. 网络相关 /* 网络相关ENV */ # define CONFIG_NETMASK 255.255.255.0 #

嵌入式Linux开发-uboo移植

一世执手 提交于 2020-02-29 02:01:20
0.准备 有一个Exynos 4412的开发板,正好趁着放假,想移植一个新的uboot和一个新的linux内核,说干就干,顺便把遇到的问题记录下来 uboot版本为2020.01,下载地址: ftp://ftp.denx.de/pub/u-boot/ kernel版本为5.4.9,下载地址: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 交叉编译器下载地址: https://www.linaro.org/downloads/ 1.交叉编译器的安装 在/usr/local/下面创建一个arm的文件夹,把交叉编译工具解压到arm文件夹下。 将该路径添加到环境变量中。 执行source命令 查看交叉编译器是否安装成功 查看交叉编译器版本 2.编译uboot 解压uboot源码,在Makefile文件中修改如下内容 首先配置一个config,确认编译环境 编译完成,编译环境没有问题,下面进行Exynos 4412开发板相关的配置,编译Exynos 4412开发板用的uboot 3.uboot的配置 创建板级目录和板级文件 修改目录下的相应文件 修改Makefile文件 修改Kconfig文件 在configs文件夹下创建defconfig文件 修改其内容 在arch/arm/mach-exynos

使用openJTAG调试uboot

无人久伴 提交于 2020-02-28 10:56:36
这里只是简单记录几个openJTAG 的调试命令。 首先将源码反汇编,查看需要调试的位置,比如在lowlevel_init 的地址为0X00000000080000d0 (我编译出的uboot是64位的,所以地址是8个字节): reset 复位 bp 0x80000d0 4 hw 打断点命令 halt 暂停运行 resume 继续运行 mdw 0x0000000030000000 读地址 mww 0x0000000030000000 0x12345678 写地址 来源: CSDN 作者: 朝搴夕揽 链接: https://blog.csdn.net/weixin_43512663/article/details/104550583