X-022-OTHERS-git操作记录之合并远端分支的更新

作者:wowo 发布于:2017-1-2 22:26 分类:X Project

本文将以“X Project”的开发过程为例,介绍“合并远端分支的更新”的方法。事情的起因如下:

X Project”是一个学习嵌入式Linux开发全过程的小项目,项目开始的时候,u-boot、linux kernel等代码,都是直接从官方仓库的当前状态获取的(具体可参考[2])。以u-boot为例,“X Project”的u-boot[3]是2016年4月23日从u-boot的官方仓库[1]拷贝而来的。

随着时间的推移,官方仓库可能有很多更新,例如修复bug、添加新功能等,在合适的时间点,需要将这些更新合并。下面就以“X Project”的u-boot为例,介绍合并的步骤。

阅读全文>>

标签: git remote u-boot merge denx add

评论(0) 浏览(6263)

基于Hikey的"Boot from USB"调试

作者:wowo 发布于:2016-12-20 22:36 分类:X Project

话说在半年前,乐美客送给蜗窝几块Hikey(乐美客版)开发板[1],不过由于太忙,就一直把它们放在角落里思考人生,因此甚是愧疚。这几天,闲来无事,翻了下Hikey的资料,觉得挺有意思,就想花点时间让“X Project”在这个板子上跑起来。当然,按照“规矩”,先从“【任务1】启动过程-Boot from USB”做起,记录如下。

阅读全文>>

标签: USB boot u-boot spl hikey Hi6220V100

评论(1) 浏览(9689)

X-013-UBOOT-使能autoboot功能

作者:wowo 发布于:2016-10-5 21:51 分类:X Project

通过“X-012-KERNEL-serial early console的移植”,早期的串口控制台已经ready,kernel的printk可以正确输出,“X Project”由此进入“文明”时代。基于此,后续的开发工作将会focus在linux kernel上,而u-boot,可以蜕化为其原始目标:boot kernel。

在之前的测试和调试过程中,都是先进入u-boot的命令行,手动输入bootm命令,boot linux kernel。为了简化这个动作,有必要将u-boot的autoboot功能用起来。

所谓的autoboot,是指u-boot run起来之后,自动加载并执行linux kernel image的 过程。该功能非常简单,之所以写一篇文章,权当“X Project”开发过程的一个记录。

阅读全文>>

标签: boot u-boot bootm autoboot

评论(6) 浏览(10296)

X-011-UBOOT-使用bootm命令启动kernel(Bubblegum-96平台)

作者:wowo 发布于:2016-9-9 22:18 分类:X Project

我们在“X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)”中介绍了使用u-boot booti指令加载并运行ARM64 Image格式kernel的方法。与此同时,我们在“u-boot FIT image介绍”介绍了一种新的uImage(u-boot Image)格式----FIT uImage。本文将基于这两篇文章,介绍FIT uImage的编译、启动等方法,目的有二:

1)作为“u-boot FIT image介绍”的实践篇。

2)以后“X Project”和u-boot有关的image格式,将统一使用FIT uImage。

阅读全文>>

标签: arm64 u-boot uboot bootm fit uImage its itb

评论(8) 浏览(13432)

u-boot FIT image介绍

作者:wowo 发布于:2016-9-2 21:49 分类:u-boot分析

Linux kernel在ARM架构中引入device tree(全称是flattened device tree,后续将会以FDT代称)的时候[1],其实怀揣了一个Unify Kernel的梦想----同一个Image,可以支持多个不同的平台。随着新的ARM64架构将FDT列为必选项,并将和体系结构有关的代码剥离之后,这个梦想已经接近实现:

在编译linux kernel的时候,不必特意的指定具体的架构和SOC,只需要告诉kernel本次编译需要支持哪些板级的platform即可,最终将会生成一个Kernel image,以及多个和具体的板子(哪个架构、哪个SOC、哪个版型)有关的FDT image(dtb文件)。

bootloader在启动的时候,根据硬件环境,加载不同的dtb文件,即可使linux kernel运行在不同的硬件平台上,从而达到unify kernel的目标。

本文将基于嵌入式产品中普遍使用的u-boot,以其新的uImage格式(FIT image,Flattened uImage Tree)为例,介绍达到此目标的步骤,以及背后的思考和意义。

阅读全文>>

标签: u-boot fit uImage its itb

评论(17) 浏览(65670)

X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)

作者:wowo 发布于:2016-8-24 22:34 分类:X Project

X-009-KERNEL-Linux kernel的移植(Bubblegum-96平台)”中介绍了ARM64平台下,配置、编译、生成Linux kernel Image文件的方法。Image文件生成后,我们可以借助DFU工具将它下载到板子的DRAM中,然后借助u-boot boot有关的命令,加载并运行之(这个过程也称作引导)。

针对不同的Kernel image格式,u-boot提供了不同的boot指令,例如:

booti,引导ARM64 kernel image----Image;

bootz,引导ARM kernel image----zImage;

bootm,引导u-boot自定义的kernel image----uImage。

由于u-boot自定义的image格式(uImage),有着强大而又复杂的功能,本文暂时不想涉及,因此我们以booti命令为例,介绍u-boot的引导过程。

阅读全文>>

标签: arm64 u-boot dtb bootm booti Image

评论(2) 浏览(25243)

X-008-UBOOT-支持命令行(Bubblegum-96平台)

作者:wowo 发布于:2016-7-27 21:41 分类:X Project

经过前面文章的铺垫,u-boot command line的支持已经成了一个顺理成章的事情了。因此,本文没有太多技术细节,仅仅记录支持命令行的实现过程,权当“X Project” “【任务2】启动到u-boot command line”的一个完结。

阅读全文>>

标签: u-boot cmdline

评论(11) 浏览(12291)

X-007-UBOOT-DDR的初始化(Bubblegum-96平台)

作者:wowo 发布于:2016-7-21 22:47 分类:X Project

到目前为止,“X Project”在Bubblegum-96平台上的代码,都是运行在SRAM中。由于SRAM的size很小(最多也就96KB),如果要做更多的事情,就必须把DDR跑起来。不过,关于Bubblegum-96平台的DDR driver,我和codingbelief同学折腾了很久,试图找出一个最佳的方法,给大家呈现出DDR driver的开发方法和开发步骤。最终,受限于“资源”的短缺,还是失败了。

根据Bubblegum-96公开的资料,只知道它包含了一个2GB的、单bank的LPDDR,除此之外,找不到任何技术有关的细节,如LPDDR的datasheet、S900 DDR controller的说明、DDR时钟的配置等等。没有这些东西,我们根本无法完成DDR的配置,更不用说以此介绍、分析DDR driver了。

但是,虽然困难重重,“X Project”还是要进行下去,既然常规方法走不通,我们就采用一些非常规的手段,无论如何,还是能把DDR成功的初始化起来的。由于是非常规手段,当然就无法开源,也无法给大家讲解了。

因此,本文关于DDR的技术细节不多,主要目的是结合DDR的初始化,进一步介绍嵌入式linux开发的基本过程,包括如下知识点:

嵌入式Linux的启动过程。

u-boot SPL的使用场景。

u-boot启动过程中DDR初始化的流程。

阅读全文>>

标签: SDRAM u-boot spl ddr

评论(4) 浏览(10362)

X-006-UBOOT-pinctrl driver移植(Bubblegum-96平台)

作者:wowo 发布于:2016-7-9 21:47 分类:X Project

wowo觉得,在linux kernel新引入的众多子系统中,pinctrl subsystem是一个特别晦涩难懂的子系统,它所解决的问题,和它所引入的困扰,不相上下。在平时工作的过程中,年轻工程师问的最多的,就是在驱动中要怎么使用pinctrl?这样配置pinctrl到底是什么意思?等等。

对一个子系统来说,如果不能让它的使用者(consumer)很容易的理解和掌握,就宣告了它的失败。更不用说让它的提供者(provider)简单、快速地编写驱动程序了。

为什么会这样呢?通俗一点讲,就是“大炮打蚊子”。从技术的角度看,pinctrl是一个非常优秀的子系统,有着复杂而巧妙的封装和抽象,但它所要解决的问题,实际上非常简单、直白。这就造成了一个落差,从而带来了各种理解上的困惑。

正因为此,u-boot在照搬linux kernel pinctrl的同时,额外提供了一种简洁的方法。本文将借助“X Project” u-boot中pin control driver的移植过程,介绍、分析这种方法,并以此理解pinctrl的本质。

与此同时,我们会基于“X-005-UBOOT-device tree移植(Bubblegum-96平台)”,扩展对device tree的使用,以加深对device tree的理解和掌握。

阅读全文>>

标签: subsystem u-boot porting pinctrl

评论(8) 浏览(11098)

X-005-UBOOT-device tree移植(Bubblegum-96平台)

作者:wowo 发布于:2016-6-29 22:14 分类:X Project

我们在“X-004-UBOOT-串口驱动移植(Bubblegum-96平台)”中,简单介绍了u-boot中serial driver的移植过程。由于serial driver是u-boot移植中的第一个driver,为了方便debug,并没有引入device tree。在serial driver ready之后,基本的console功能已经okay,基于此,我们可以着手增加device tree功能。

很久以前,我们在博客上写了三篇device tree的分析文章(Device Tree(一):背景介绍Device Tree(二):基本概念Device Tree(三):代码分析),这些文章的目的是介绍device tree背后的思想、原理、实现方法、等等,偏重于理论,相信给大家制造了不小的“心里压力”。

因此,本文将以“X Project”为契机,从实践的角度,以使用者的视角,介绍device tree使用方法。相信通过本文,大家对device tree的理解会上一个新台阶,达到化繁为简、随心所欲的境地。

阅读全文>>

标签: dts u-boot porting device_tree dtc dtb

评论(8) 浏览(14983)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog