S5PV210-uboot分析与标准uboot2013移植
文章平均质量分 87
wangdapao12138
如果知识就是力量,我曾比牛还壮!
展开
-
官方标准uboot2013移植11之LCD移植
1.背光电路分析1)LCD的背光源有2种设计。一种是简单设计,背光只能点亮和熄灭两种状态,不能调亮度;另一种设计类似手机屏幕可以调节亮度。第一种设计很简单,就是开和关。第二种模式比较复杂,需要一个额外的PWM调光IC来支持,X210的LCD模组上使用MP3202芯片来做调光。2)分析原理图和MP3202的数据手册,可以得出结论:第一:PWMTOUT0(GPD0_0)接在了IC的FB引脚...原创 2018-08-13 20:41:57 · 806 阅读 · 0 评论 -
Uboot29之start.S第二阶段part1
1.start_armboot函数简介1.1一个很长的函数1)这个函数在uboot/lib_arm/board.c的第444行开始到908行结束。2)450行还不是全部,因为里面还调用了别的函数。3)为什么这么长的函数,怎么不分成两三个函数?主要因为这个函数整个构成了uboot启动的第二阶段。1.2一个函数组成uboot第二阶段1.3宏观分析:uboot第二阶段应该做什么1)概括来讲uboot第一...原创 2018-04-21 15:58:17 · 424 阅读 · 0 评论 -
Uboot34之bootm函数
1.uboot是一个裸机程序1)uboot的本质就是一个复杂点的裸机程序。和我们在ARM裸机全集中学习的每一个裸机程序并没有本质区别。2)ARM裸机第十六部分写了个简单的shell,这东西其实就是个mini型的uboot。2.内核本身也是一个"裸机程序"1)操作系统内核本身就是一个裸机程序,和uboot、和其他裸机程序并没有本质区别。2)区别就是操作系统运行起来后在软件上分为内核层和应用层,分层后...原创 2018-05-02 23:35:13 · 794 阅读 · 0 评论 -
Uboot24之时钟初始化
时间:2018.4.6 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载在前面的lowlevel_init文章中,分析了一部分的时钟代码,但是感觉稀里糊涂的。今天专门把时钟的代码拿出来分析一下。/* * system_clock_init: Initialize core clock and bus clock. * void system_clock_init(void)...原创 2018-04-06 20:14:53 · 871 阅读 · 0 评论 -
Uboot23之uart初始化
时间:2018.4.6 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载1: /* for UART */ bl uart_asm_init--------------------------------------- uart_asm_init 代码解析开始--------------------------------------------。。。。。。。。...原创 2018-04-06 18:08:28 · 882 阅读 · 0 评论 -
Uboot32之start.S第二阶段part4
00818: devices_init (); /* get the devices list going. */---------------------------------- devices_init函数解析----------------------------------------------------------------------00162: int devices_ini...原创 2018-04-22 13:47:08 · 451 阅读 · 0 评论 -
Uboot22之led灯调试及刷机
时间:2018.4.6 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载1.Led灯的实验目的:在lowleve_init前后加一个灯。目标:九鼎X210开发板上的三个灯,GPJ0_3,GPJ0_4,GPJ0_5需要的寄存器:GPJ0CON 0xE020_0240GPJ0_DAT 0xE020_0244GPJ0PUD 0xE020_...原创 2018-04-06 11:57:10 · 1100 阅读 · 0 评论 -
Uboot21之DDR初始化
时间:2018.4.5 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载bl mem_ctrl_asm_init2)函数位置在uboot/cpu/s5pc11x/s5pc110/cpu_init.S文件中。3)该函数和裸机中初始化DDR代码是一样的。实际上裸机中初始化DDR的代码就是从这里抄的。配置值也可以从这里抄,但是当时我自己根据理解+抄袭整出来的一份。4)配置值中其他...原创 2018-04-05 20:32:45 · 5990 阅读 · 0 评论 -
Uboot31之start.S第二阶段part3
00531: //******************************//00532: // Board Specific00533: // #if defined(CONFIG_SMDKXXXX)00534: //******************************//00600:#if defined(CONFIG_X210)00601: #if defined(CON...原创 2018-04-22 03:27:05 · 290 阅读 · 0 评论 -
Uboot35之uboot命令集及main_loop
1.Uboot:Start.s -> start_armboot ()-> main_loop () main_loop()会调用abortboot (bootdelay)判断在delay time内有没有键按下,并给出prompt"Hit any key to stop autoboot",若没有键按下则run_command (s, 0)(s为默认的bootcmd)。...原创 2018-05-05 19:16:03 · 603 阅读 · 0 评论 -
Uboot36之uboot环境变量
1.环境变量的作用让我们可以不用修改uboot的源代码,而是通过修改环境变量来影响uboot运行时的一些数据和特性。譬如说通过修改bootdelay环境变量就可以更改系统开机自动启动时倒数的秒数。2.环境变量的优先级1)uboot代码当中有一个值,环境变量中也有一个值。uboot程序实际运行时规则是:如果环境变量为空则使用代码中的值;如果环境变量不为空则优先使用环境变量对应的值。2)譬如machi...原创 2018-05-05 19:55:16 · 256 阅读 · 0 评论 -
官方标准uboot2013之编写自己的uboot
1.由源码到可执行程序的过程1)源码.c->(编译)->elf可执行程序2)源码.c->(编译)->目标文件.o->(链接)->elf可执行程序3)源码.c->(编译)->汇编文件.S->(汇编)->目标文件.o->(链接)->elf可执行程序4)源码.c->(预处理)->预处理过的.i源文件-&a转载 2018-07-18 08:13:11 · 721 阅读 · 0 评论 -
官方标准uboot2013移植10之环境变量和网卡的移植
1.iNand分区表检查-env究竟应该放在哪1)测试环境变量是否可以保存,通过开机set设置环境变量然后save,然后关机后重启来测试环境变量的保存是否成功。2)我们的环境变量究竟保存到哪里去了?这个就要去分析代码中的分区表。3)环境变量应该被放在哪里?虽然无法确定ENV一定要放在哪里,但是有一些地方肯定是不能放的,否则将来会出问题。原则是同一个SD卡扇区只能放一种东西,不能叠加,否...原创 2018-08-13 20:42:23 · 1211 阅读 · 0 评论 -
官方标准uboot2013移植9之SD卡移植
1.uboot2013.10中SD/MMC驱动浏览1.1相关函数和文件drivers/mmc/mmc.c、drivers/mmc/sdhci.cboard/samsung/goni/goni.carch/arm/include/asm/arch-s5pc1xx/mmc.h2.当前错误定位及解决方案分析1)错误发生路径定位board_init_r ...原创 2018-08-13 20:42:29 · 1283 阅读 · 0 评论 -
官方标准uboot2013移植8之串口界面信息打印
1.banner 信息补全从crt0.S看,找到board_init_f,然后找到Board.c (z:\uboot\uboot2013\u-boot-2013.10.bak\arch\arm\lib)。找到init_sequence。看下display_banner.自己定义一个:结果:2.CPU信息补全回到init_sequence。看下...原创 2018-08-13 20:42:34 · 1532 阅读 · 0 评论 -
官方标准uboot2013移植7之DDR初始化
1.分析1)cpu_init_crit函数成功初始化串口、时钟后,转入_main函数,函数在arch/arm/lib/crt0.S文件中。2)在crt0.S中首先设置栈,将sp指向DDR中的栈地址;然后调用board_init_f函数进行板级初始化。函数在arch/arm/lib/board.c中。3)在这个版本的uboot中,把以前uboot的第二阶段start_armboot函数分...原创 2018-08-13 20:42:41 · 1807 阅读 · 0 评论 -
官方标准uboot2013移植6之重定位
1.在重定位代码前加调试信息定位1)逻辑上来说,重定位部分代码应该在DDR初始化之后和uboot第二阶段来临前之间。2)uboot的第一阶段和第二阶段的划分并不是绝对的,唯一必须遵循的原则就是第一阶段不能大于8KB。所以uboot的第一阶段最少要完成DDR初始化和重定位,最多不能超过8KB。在满足这些条件时,第一阶段和第二阶段的接点可以随便挑。3)找到合适的地方来写重定位代码,重定位之...原创 2018-08-13 20:42:47 · 358 阅读 · 0 评论 -
官方标准uboot移植3之Makefile概述
1.烧录步骤bash脚本的编写我们需要更智能化的编写处理程序。2.makefile文件的编写2.1Makefile的作用和意义1)工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。2)uboot和linux kernel本质上都是C语言的项目,都由很多个文件组成,因此都需要通过Makefile来管理。所以要分析uboot必须对Makefi...原创 2018-08-13 20:43:10 · 213 阅读 · 0 评论 -
官方标准uboot2013移植2
1.start.S流程分析1)#define CONFIG_SYS_TEXT_BASE 0x34800000 可以看出我们的uboot的连接地址是在0x34800000位置。2)save_boot_params是个空函数,里面直接返回的。3)cpu_init_cp15这个函数功能是设置MMU、cache等。这个版本的uboot中未使用虚拟地址,因此MMU在这...原创 2018-08-12 20:48:13 · 663 阅读 · 0 评论 -
官方标准uboot2013移植1
1.官方原版uboot的版本 1)版本号。刚开始是1.3.4,后来变成2009.082)新版和旧版的差别。uboot的架构很早就定下来了,然后里面普遍公用的东西(common目录下、drivers目录下、fs目录下等•••)在各个版本之间几乎是完全一样的。差别最大的是board和cpu目录,这两个目录正是单板(开发板)相关的。越新的uboot版本支持越多的开发板(CPU),所以越新的ubo...原创 2018-05-06 10:36:26 · 841 阅读 · 1 评论 -
Uboot30之start.S第二阶段part2
00489: #ifndef CFG_NO_FLASH //我们没有定义,因此执行下面的flash初始化函数00490: /* configure available FLASH banks */00491: size = flash_init ();00492: display_flash_config (size);00493: #endif /* CFG_NO_FLAS...原创 2018-04-21 23:41:08 · 279 阅读 · 0 评论 -
Uboot20之Start.S中lowlevel_init
时间:2018.4.5 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载bl lowlevel_init /* go setup pll,mux,memory */ 17.调用lowlevel_init函数初始化pll memory等与板子相关的内容 函数位于board目录下_TEXT_BASE: .word TEXT_BASE内核加载的地址 ...原创 2018-04-05 11:57:49 · 398 阅读 · 0 评论 -
Uboot9之uboot目录分析
时间:2018.3.18 作者:Tom 工作:HWE 说明:如需转载,请注明出处。说明:本文主要参考朱有鹏老师linux嵌入式,已注明转载。1.X210官方uboot配置编译1.1找到官方移植好的uboot(BSP概念)1)源头的源代码是uboot官网下载的。这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的SoC对应的移植版本。2)SoC厂商在推出一款SoC后,厂...转载 2018-03-18 22:50:46 · 439 阅读 · 0 评论 -
Uboot2之常用命令
时间:2018.3.17 作者:Tom 工作:HWE 说明:如需转载,请注明出处。说明:本文主要参考朱有鹏老师linux嵌入式,已注明转载。Uboot命令行的行缓冲:1)行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认为我们还没有输入完),当我们按下回车键(换行)后系统就认为我们输入完了,然后将缓冲区中所有刚才输入的作为命令...转载 2018-03-17 21:41:22 · 461 阅读 · 0 评论 -
Uboot7之shell语法
1.shell脚本1.1使用shell脚本的原因 ---功能强大 ---节约时间 1.2 shell脚本基本元素 #!/bin/bash1.3注意初学者易犯错误:1) 第一行#不是注释 其他#都是注释;2) echo $mytextA 写错现象;3) #!/bin/bash 写错现象; 4) 脚本如果没有执行权限 chmod 777 hello.sh...原创 2018-03-18 17:39:49 · 1620 阅读 · 0 评论 -
Uboot8之什么是makefile?
时间:2018.3.18 作者:Tom 工作:HWE 说明:如需转载,请注明出处。说明:本文主要参考朱有鹏老师linux嵌入式,已注明转载。1. Makefile基础回顾1.1Makefile的作用和意义1)工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。2)uboot和linux kernel本质上都是C语言的项目,都由很多个文件组成,因此都需要通过M...转载 2018-03-18 17:56:26 · 176 阅读 · 0 评论 -
Uboot6之什么是shell?
时间:2018.3.18 作者:Tom 工作:HWE 说明:如需转载,请注明出处。说明:本文主要参考朱有鹏老师linux嵌入式,已注明转载。1.shell:壳与封装1)shell就是壳的意思,在计算机中经常提到shell是用户操作接口的意思。2)因为计算机程序本身很复杂,里面的实现和外面的调用必须分开。接口本身就是对内部复杂的实现的一种封装,外部只需要通过接口就可以很容易的实现效果,但是却不...转载 2018-03-18 16:33:43 · 405 阅读 · 0 评论 -
Uboot5之S5PV210的启动顺序
时间:2018.3.18 作者:Tom 工作:HWE 说明:如需转载,请注明出处。1.启动所涉及的内存和外存(1)内存:SRAM即静态内存,缺点是容量小、价格高,一般是几十K或几百K;优点是不需要软件初始化直接上电就能使用。DRAM即动态内存,优点是容量大、价格低;缺点是上电后不能直接使用,需要软件初始化后才可以使用。 (2)单片机:内存需求量小,而且希望开发尽量简单,适合全部使用SRAM;...原创 2018-03-18 01:32:47 · 669 阅读 · 0 评论 -
Uboot4之什么是环境变量与存储分区?
时间:2018.3.17 作者:Tom 工作:HWE 说明:如需转载,请注明出处。1.如何理解环境变量uboot 环境变量实现原理:首先我们先要搞清楚uboot中环境变量的作用,uboot中环境变量的作用就是在不改变源码、不用重新编译的情况下,可以使我们通过设置环境变量的值来改变uboot的一些设置,如bootdelay时间、机器码的值等等。u-boot的缺省情况下会有一些基本的环境变量,当...转载 2018-03-17 22:30:19 · 884 阅读 · 0 评论 -
Uboot3之一些基本的网络IP知识
时间:2018.3.17 作者:Tom 工作:HWE 说明:如需转载,请注明出处。1.什么是网关?大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道"关口",这道关口就是网关。顾名思义,网关(Gateway)[1] 就是一个网络连接到另一个网络的"关口"。也就是网络关卡。网关(Gateway)又称网间连接器、协议转换器。默认网关在网...原创 2018-03-17 22:11:06 · 1761 阅读 · 0 评论 -
Uboot11之主Makefile分析2
时间:2018.3.25 作者:Tom 工作:HWE 说明:如需转载,请注明出处。VERSION = 1 //主版本号PATCHLEVEL = 3 //次版本号SUBLEVEL = 4 //再次版本号EXTRAVERSION = //另外附加的版本信息U_BOOT_VERSION = $(VERSION)...原创 2018-03-24 11:51:07 · 572 阅读 · 0 评论 -
uboot10之主Makefile分析1
转载https://www.cnblogs.com/amanlikethis/p/3419858.html。1.uboot Makefile体系组成2.Makefile的目标3.Makefile的依赖OBJS = cpu/$(CPU)/start.oifeq ($(CPU),i386)OBJS += cpu/$(CPU)/start16.oOBJS += cpu/$(CPU)/reset.oen...原创 2018-03-21 21:28:12 · 303 阅读 · 0 评论 -
Uboot15之start.S概要及头文件
1.为什么要首先分析start.S?对于任何程序,入口函数是在链接时决定的,uboot的入口是由链接脚本决定的(入口地址也是由链接器决定的)。uboot下armv7链接脚本默认目录为arch/arm/cpu/u-boot.lds。指定程序的链接地址有2种方法:1)一种是在Makefile中ld的flags用-Ttext 0xc3e00000来指定;2)第二种是在链接脚本u-boot.lds的SEC...原创 2018-03-26 21:35:15 · 749 阅读 · 0 评论 -
Uboot18之为何C需要堆栈而汇编不需要?
时间:2018.4.5 作者:Tom 工作:HWE 说明:如需转载,请注明出处。已注明转载1.ARM 中的寄存器的别名默认的情况下,返些寄存器只是叫做r0,r1,...,r14等,而APCS 对其起了不同的别名。使用汇编器预处理器的功能,你可以定义 R0 等名字,但在你修改其他人写的代码的时候,最好还是学习使用 APCS 名字。一般编程过程中,最好按照其约定,使用对应的名字,这样使得程序可读...转载 2018-04-05 09:38:55 · 641 阅读 · 0 评论 -
Uboot17之start.S-ARM流水线
时间:2018.3.28 作者:Tom 工作:HWE 说明:如需转载,请注明出处。1.pc指针到底在哪里?上面一段是我们uboot.dis反汇编文件,我们继续分析上部分的中断异常调用。它是怎样调用函数的呢?我们可以看出ldr pc, _undefined_instruction这句代码反编译后看到地址为c3e00014。调用函数是pc指向函数,即:ldr pc, [pc, #20]也就...原创 2018-03-28 21:35:13 · 360 阅读 · 0 评论 -
Uboot26之mmu
https://blog.csdn.net/liaoxu02/article/details/46945245.https://blog.csdn.net/ipmux/article/details/19167605.1.什么是虚拟地址、物理地址1)物理地址就是物理设备设计生产时赋予的地址。像裸机中使用的寄存器的地址就是CPU设计时指定的,这个就是物理地址。物理地址是硬件编码的,是设计生产时确定好...转载 2018-04-10 22:53:44 · 557 阅读 · 0 评论 -
Uboot28之start.S汇编语言结束
skip_hw_init: /* Set up the stack */再次设置栈1)第三次设置栈。这次设置栈还是在DDR中,之前虽然已经在DDR中设置过一次栈了,但是本次设置栈的目的是将栈放在比较合适(安全,紧凑而不浪费内存)的地方。2)我们实际将栈设置在uboot起始地址上方2MB处,这样安全的栈空间是:2MB-ubo原创 2018-04-15 23:06:47 · 399 阅读 · 0 评论 -
Uboot16之start.S七种异常模式及向量表
时间:2018.3.22 作者:Tom 工作:HWE 说明:如需转载,请注明出处。#ifndef CONFIG_ENABLE_MMU //首先我们肯定开启了MMU的,所以下面不看了#ifndef CFG_PHY_UBOOT_BASE#define CFG_PHY_UBOOT_BASE CFG_UBOOT_BASE#endif#endif/* *******************...原创 2018-03-27 23:07:23 · 1297 阅读 · 0 评论 -
Uboot27之start.S的MMU操作
#if defined(CONFIG_ENABLE_MMU)enable_mmu: /* enable domain access */ ldr r5, =0x0000ffff mcr p15, 0, r5, c3, c0, 0 @load domain access register使能域访问(cp15的c3寄存器)1)cp15原创 2018-04-15 22:22:48 · 1012 阅读 · 0 评论 -
Uboot19之start.S之CP15协处理器
时间:2018.4.5 作者:Tom 工作:HWE 说明:如需转载,请注明出处。/* ************************************************************************* * Startup Code (reset vector) * do important init only if we don't start from me...原创 2018-04-02 23:30:09 · 387 阅读 · 0 评论