uboot

根据nxp原厂uboot移植

心已入冬 提交于 2019-12-05 15:34:49
1.首先拿到一个原厂uboot,先编译一下;查找根目录下config目录里自己需要的配置文件,通过在根目录新建如下脚本imx_emmc.sh后,执行 ./imx_emmc.sh后完成编译工作 #!/bin/bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8 2.把编译得到的uboot.bin烧进板子就可以看到那些部分是支持,那些是不支持的,不支持的就需要我们的移植工作了;既然如此,那就新建一套自己板子的uboot,感受一下一整套流程 2.1:添加配置文件 cd configs cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK" CONFIG

mini210s上uboot的移植

五迷三道 提交于 2019-12-05 10:03:09
mini210s是友善之臂公司推出的基于三星s5pv210的cortex a8 平台的开发板,其实很感谢他们对此作出的努力,才使得向我这样的穷孩子能够早些接触a8(当时买的时候不到600)。但是便宜归便宜,有好多东东想仔细的搞明白,还要狠下功夫呀,毕竟知识也是财富呀! uboot是arm平台经常使用的bootloader,友善之臂并没有给用户提供开放的uboot,而且以二进制的形式发布的他们公司自己的superboot,不过说实在的,确实是很好用。但是作为想从底层做起的我来说,熟悉并掌握uboot是我必需要攻克的呀。 万事开头难,关键是找准方法呀。总的来说自己对自己还是有那么的不自信,想在网络上能够找到前辈们留下的财富呀。功夫不负有心人,我在一个git网站上找到了能够移植到mini210的uboot,opencsbc-u-boot-mini210_linaro-2011.10-stable.tar.gz。具体的下载网站我忘记了。 不过大家要注意了,这是移植到mini210的uboot,而不是mini210s上的,起初我编译下载到我的板子上,一直只显示ok,再没有其他信息输出,其中还有好多地方需要修改,我那个晕呀,没办法,自己只能搞个led灯指示程序错误可能出现的地方,结果定位到bl1过程中copy bl2的过程有误,是由于这个版本的uboot中对sdram的配置有误造成的。

uboot_imx_2016浅析

拟墨画扇 提交于 2019-12-05 09:38:05
1.概念:uboot主要用来启动内核,启动内核则是用的命令来的;他有众多命令,如信息查询,环境变量操作,内存操作,网络操作,mmc操作,文件系统操作,nand操作,boot操作,reset, go(到指定地址执行程序),run(运行环境变量中的命令),metest(内存测试) 2.配置:当输入“make xxx_defconfig”的时候就会匹配到%config 目标,目标“%config”依赖于 scripts_basic、outputmakefile 和 FORCE 3.编译:过程如下 4.启动流程 _start 里是reset 和中断向量表 _start: #ifdef CONFIG_SYS_DV_NOR_BOOT_CFG .word CONFIG_SYS_DV_NOR_BOOT_CFG #endif 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  reset 函数跳转到了 save_boot_params 函数, reset: /* Allow the board to save important

rIoTboard学习系列

我是研究僧i 提交于 2019-12-05 07:36:01
刚在咸鱼买了块开发板,比较老了14年的,SOC为imx6solo,内核3.10,uboot2009的,准备先移植一个较新的uboot 到nxp的git下获取他们维护的uboot,网址http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git 选择imx_v2016.03_4.1.15_2.0_ga的brance,git太慢了,直接下载rel_imx_4.1.15_1.2.0_ga.tar.bz2源码包。 到Makefile中更改CROSS_COMPILE make riotboard_defconfig make -j8 出现 riotboard/rel_imx_4.1.15_1.2.0_ga/arch/arm/imx-common/cpu.c:199: undefined reference to `uclass_get_device' 查看配置文件是没定义CONFIG_DM相关的就是驱动模型,因为这个板子uboot是维护的,所以就换了个版本 仓库地址 https://gitlab.denx.de/u-boot/u-boot/tree/v2016.09 这次顺利通过编译,下载到tf卡上启动没有反应,串口无输出。中间反复检查了很多方面,到最终成功启动有两个问题 1.烧写命令dd iflag=dsync oflag=dsync if

uboot dcc

社会主义新天地 提交于 2019-12-05 02:43:07
arch\arm\lib crt0.S 1.设置sp为CONFIG_SYS_INIT_SP_ADDR include/configs/xxx.h #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) #define CONFIG_SYS_INIT_RAM_ADDR 0x20000 #define CONFIG_SYS_INIT_RAM_SIZE 0x1000 CONFIG_SYS_INIT_SP_ADDR=0x21000 2.调用board_init_f_alloc_reserve 没有定义SYS_MALLOC_F_LEN,不执行。 3.   r9(gd) = sp = top; gd地址定了。 CONFIG_SYS_INIT_SP_ADDR=0x21000 4.调用board_init_f 注意:串口初始化之后才能打印输出。 setup_dest_addr #ifdef CONFIG_SYS_SDRAM_BASE gd->ram_top = CONFIG_SYS_SDRAM_BASE; #endif gd->ram_top += get_effective_memsize(); gd->ram_top =

ok6410 uboot os 文件系统 流水灯

╄→гoц情女王★ 提交于 2019-12-04 11:08:53
飞凌OK6410 开发板简单教程 安装交叉编译器编译器 cross-4.2.2 -eabi.tar.bz2 mkdir /usr/local/arm chmod 777 /usr/local/arm //赋给最大权限 tar jxvf cross-4.2.2 -eabi.tar.bz2 解压得到文件后 cd /usr/local/arm/4.2.2-eabi/usr/bin 看到编译器所在的目录 进行环境配置 参考 http://my.oschina.net/u/274829/blog/181536 否则会出现: 内核编译出错 arm-linux-gcc: not found 编译uboot tar zxvf uboot1.1.6.tgz //解压源码 得到uboot1.1.6目录 make clean //清除 原来生产的文件和中间文件,不会删除源码和配置文件(可以运行下) gedit Makefile //找到与开发板匹配的配置选项。如forlinux_nand_ram128.config make forlinux_nand_ram128.config //配置环境 make //得到uboot.bin 编译内核 tar zxvf linux-3.0.1.tar.gz -C /forlinux (-C 指定解压目录) //解压 cd linux-3.0.1 //到解压文件目录

uboot initf_dm函数分析

余生长醉 提交于 2019-12-04 09:05:21
initf_dm, static int initf_dm(void) { #if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN) //CONFIG_DM和CONFIG_SYS_MALLOC_F_LEN都有定义 int ret; bootstage_start(BOOTSTATE_ID_ACCUM_DM_F, "dm_f"); uint32_t bootstage_start(enum bootstage_id id, const char *name) { struct bootstage_data *data = gd->bootstage; //data指向gd->bootstage struct bootstage_record *rec = ensure_id(data, id); struct bootstage_record *ensure_id(struct bootstage_data *data,enum bootstage_id id) { struct bootstage_record *rec; rec = find_id(data, id); //去gd->bootstage->record的查找有没有匹配BOOTSTATE_ID_ACCUM_DM_F的记录 /

系统移植中的关键文件

喜欢而已 提交于 2019-12-03 23:36:47
在运行时均可使用make V=1 显示文件的编译过程从而找到链接文件,从中找到入口文件。 uboot:     ../uboot/include/configs/x6818.h 记录开放板的硬件信息。         ../uboot/u-boot.lds 链接脚本记录入口地址。 busybox:     init/init.c 记录了busybox引导根文件系统的过程。 kernel:     /opt/kernel/arch/arm/kernel/vmlinux.lds 链接脚本,记录了kernel的入口文件head.S     arch/arm/mach-s5p6818/cpu.c 相关开发板的硬件信息。      static void __init cpu_init_machine(void) { //S5P6818内部控制器的注册 nxp_cpu_devs_register(); //x6818开发板硬件驱动注册。 nxp_board_devs_register(); } 来源: https://www.cnblogs.com/DXGG-Bond/p/11811480.html

uboot的常用命令及用法

我是研究僧i 提交于 2019-12-03 20:12:37
uboot是bootloader的一种,主要是用于引导内核启动. uboot除此功能外, 还带有很多其它功能. 功能是通过命令来调用. uboot的命令: help //列出当前uboot所有支持的命令 help 命令 //查看指定命令的帮助 reset //重启uboot bootm //用于启动内核 用法: bootm 0x42000000 //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址 printenv //打印所有环境变量的值 printenv 环境变量名 //查看指定的环境变量值 常用环境变量: bootdelay // uboot启动后, 倒计时多少秒后自动执行环境变量bootcmd的语句 bootcmd // 倒计时到0后,自动执行里面的语句 bootargs // 是用于提供给内核的启动参数语句 setenv //设置/修改/删除环境变量的值 用法: setenv 环境变量名 //删除指定的环境变量 setenv myargs "hello" //设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值 saveenv //保存环境变量,环境变量修改过后必须执行此命令才可以保存起来,否则重启后环境变量就恢复了. loady //用于从uart线下载文件到板上内存里(loadb,